Die Methoden und Kniffe, auf die Cyberkriminelle setzen, um Daten zu stehlen, Netzwerke lahmzulegen und so manches Unternehmen in enorme Schwierigkeiten zu bringen, entwickeln sich stetig weiter. Attacken werden immer raffinierter, das Schadenspotenzial wächst im gleichen Maße.
Deshalb benötigen Security-Experten neue Werkzeuge, mit denen sie Firmen, Mitarbeiter und Verbraucher besser schützen können. Das Reverse Engineering von Malware kann hierbei wichtige Schützenhilfe leisten. Die Krux bei der Sache: Reverse Engineering kostet sehr viel Zeit und Aufwand. Softwareprogramme müssen in einigen Fällen viele Stunden disassembliert und manchmal sogar dekonstruiert werden. Das kostenlose Open-Source-Tool PE Tree hilft, Reverse Engineering-Abläufe zu beschleunigen.
Cyberkriminelle mit eigenen Waffen schlagen
Reverse Engineering ermöglicht es Entwicklern, einen umfassenden und ganzheitlichen Überblick über den Code und die Daten zu erhalten, die in einer Portable Executable (PE)-Datei enthalten sind. Sie erhalten hierdurch einen Wettbewerbsvorteil, da sie den Hackern einen Schritt voraus sein können, indem sie Anomalien im Code frühzeitig erkennen und ihn stoppen können. PE Tree eröffnet in diesem Zusammenhang einen Weg, PE-Dateien zu analysieren, indem die Informationen in einer Baumansicht unter Verwendung von Pefile und PyQt5 dargestellt werden. PE Tree adressiert speziell die wachsende Reverse-Engineering-Community und lässt sich auch in den IDA Pro-Decompiler von HexRays integrieren, um eine einfache Navigation in PE-Strukturen zu ermöglichen, PE-Dateien zu speichern und Importrekonstruktion durchzuführen.
PE Tree auf den Zahn gefühlt
PE Tree ist in Python entwickelt und unterstützt Windows-, Linux- und Mac-Betriebssysteme. Es lässt sich entweder als Standalone-Anwendung oder als IDAPython-Plugin installieren und ausführen. Die PE-Dateien werden mithilfe des Pefile-Moduls von Ero Carrera analysiert und anschließend in einer Baumansicht dargestellt, die eine Zusammenfassung der folgenden Oberkategorien bietet: MZ-Header, DOS-Stub, Rich Headers, NT/File/Optional Headers, Datenverzeichnisse (Data Directories), Abschnitte (Sections), Importe, Exporte, Debug Information, Load Config, TLS, Ressourcen, Versionsinformationen, Zertifikate, Overlays (Überlagerungen). Effektives Reverse Engineering liefert dabei wertvolle Details zu Problemen, die das Pefile während des Aufgliederns (Parsing) erkennt. Innerhalb der PE-Tree-Plattform kann ein User mit der Maus über das Warnsymbol fahren, um weitere Details zu erhalten. Darüber hinaus können Anwender weitere hervorgehobene Links anklicken, um eine Suche in VirusTotal durchzuführen, einschließlich File Hashes, PDB-Pfad, Timestamps, Ausschnittsname (Section Hash / Name), Import Hash / Name, Resource Hash sowie Certificate Serial.
IDA-Python-Plugin
Die Zeitstempel IMAGE_DIRECTORY_ENTRY_DEBUG und IMAGE_EXPORT_DESCRIPTOR werden oft vom Compiler gesetzt, aber nicht von Malware-Autoren „zeitkompiliert“, was sich für weitere Pivot-Suchen als nützlich erweisen kann. Darüber hinaus lassen sich bestimmte Teile der PE-Datei speichern oder zur weiteren Verarbeitung in CyberChef exportieren, etwa DOS Stub, Sections, Ressourcen oder Zertifikate. Die „Regenbogenansicht” auf der linken Seite bietet einen Überblick über die Struktur der PE-Datei auf hoher Ebene und gibt Aufschluss über Offset, Größe und Verhältnis der einzelnen Abschnitte.
Zertifikate sichern oder exportieren
Jeder Abschnitt lässt sich in der Baumansicht anklicken, um zu ihr zu springen, oder mit Klicken der rechten Maustaste als Datei gespeichert oder nach CyberChef exportiert zu werden. Die Regenbogenkarte kann außerdem eine nützliche visuelle Unterstützung bei der Verarbeitung eines Verzeichnisses von PE-Dateien sein, da sie es erleichtert, ähnliche Dateizusammensetzungen zu erkennen und mögliche Beziehungen zwischen Mustern zu bestimmen.
IDAPython
HeyRays‘ IDA Pro-Integration erfolgt über ein IDAPython-Plugin und bietet erweiterte Funktionen, wie beispielsweise die Option, PE-Dateien aus einer IDA-Datenbank (IDB) herauszufiltern und zu dumpen oder Importe zu rekonstruieren. Beim Dumping von In-Memory-PE-Dateien fügt PE Tree der IDB grundlegende Kommentare zu Dateistrukturen hinzu und benennt Offsets in IAT-Funktionen um. Das erleichtert es, injizierte oder entpackte PEs von einer einzigen IDB aus zu untersuchen und zu analysieren. PE Tree lässt sich aber auch nutzen, um PE-Dateien zu dumpen und Importe auf ähnliche Weise wie OllyDumpEx/ImpRec zu rekonstruieren. Ein Beispiel ist das Entpacken von MPRESS.
Wird „Importe neu aufbauen“ (Rebuild imports) ausgewählt, durchsucht PE Tree die IDA-Disassemblierung nach allen möglichen IAT-Referenzen und baut eine neue IAT-, IDT- und Hinweisnamentabelle (empfohlen für entpackte oder dynamisch geladene PEs). Wird hingegen „Vorhandene Importe verwenden“ (Use existing imports) angeklickt, versucht PE Tree, Importe auf der Grundlage der über DIRECTORY_ENTRY_IMPORT angegebenen IAT zu rekonstruieren (dies ist der Standardmodus und wird normalerweise für die meisten PEs und System-DLLs empfohlen).
Blick in die Zukunft
PE Tree wird nach wie vor stetig weiterentwickelt, so dass häufig neue Funktionen zu erwarten sind. Die nächste Hauptversion wird sich auf die Unterstützung von Rekall konzentrieren und die Möglichkeit bieten, Prozesse entweder von einem Speicherauszug oder einem Live-System aus anzuzeigen und zu dumpen.
Tom Bonner, Distinguished Threat Researcher bei BlackBerry, www.blackberry.com/de/de