G Data Presentation 2011 Redesign SK2
Transcrição
G Data Presentation 2011 Redesign SK2
Ein generischer Unpacking-Ansatz Robert Michel 6. Juli 2012 Ruhr-Universität Bochum, G Data Aufbau Einführung: • • • • PE-Files Imports Hooking Laufzeitpacker Contribution • Unpacking mit Fokus auf Imports Crimeware als Businessmodell Konfigurieren Packen Programmieren Signatur Verteilen Erkennung? Contribution: • Generischer und schneller Unpacker mit Fokus auf Imports „Zuhause“ in Analyseumgebung Das Packerproblem Statisches Entpacken benötigt Algorithmus Generische Unpacker existieren bereits • • • • • OmniUnpack Eureka PolyUnpack PandorasBochs Renovo • … Wozu noch einen Unpacker? • Existierende Unpacker in zwei Klassen: 1. Anwendbarkeit von Signaturen 2. Lauffähige entpackte Binary • Zu 1. (OmniUnpack, PolyUnpack, Renovo, …) • Malware in gesicherter Umgebung ausführen • Zeitpunkt abpassen, wenn Malware entpackt ist Virenscanner anwenden(OmniUnpack) • Zu 2. (PandorasBochs, Eureka, …) • Malware in gesicherter Umgebung ausführen • Zeitpunkt abpassen, wenn Malware entpackt ist Dumpen der Datei im lauffähigen Zustand Generischer Unpacker mit Fokus auf Imports Ziele: • Gepackte Binaries entpacken und lauffähig dumpen • Mindestens die .text-Section soll lesbar sein Schritte zum Entpacken: • Sandboxumgebung anpassen • Binary starten • Direkt am OEP anhalten Schritte zum Dumpen: • PE-Header rekonstruieren und dumpen • Sections identifizieren und dumpen • IAT finden, daraus Imports reproduzieren, an PE anhängen GetProcAddress() • Auflösen eines Funktionsnamens zu Adresse ReverseGetProcAddress() • Pseudofunktion: Adresse zu Funktionsnamen auflösen Anti ReverseGetProcAddress() • Einfache Packer legen in IAT die erwarteten Adressen (wie Windows-Loader) • Aufwändigere Packer legen Pointer auf eigenen Code dazwischen Lösung: Export-Hooks in jeder DLL Jede Auflösung von Imports führt auf UnpackCode IAT IAT UnpackCode Packer Code UnpackCode DLL UnpackCode? If (marker) return DllName, Funktionsname else jmp <Funktion> • Jede potentielle Importadresse kann mit Marker aufgerufen werden (Call kommt nie in Dll an!) • Für Caller transparent Fragen? Kontakt: [email protected] [email protected] @flxp0c