Was ist eine PE-Datei?
PE (Portable Executable) ist das Dateiformat von Windows-Programmen: .exe, .dll, .sys-Treiber, .scr, .cpl, .ocx und EFI-Binärdateien. Es beginnt mit einem MS-DOS-Header („MZ“), dann folgen eine PE-Signatur, ein COFF-Dateiheader, ein optionaler Header mit 16 Datenverzeichnissen und eine Section-Tabelle, die die Abbildung in den Speicher beschreibt.
Statische Analyse liest diese Struktur, ohne etwas auszuführen: was die Datei importiert, wann und womit sie gebaut wurde, ob sie signiert ist, was sie in Ressourcen und Overlay mitführt. Sie ist der erste, sichere Schritt der Malware-Triage.
Was dieses Werkzeug liest
- Header: DOS, COFF und optionaler Header (PE32 und PE32+), Datenverzeichnisse, Section-Tabelle mit Datei- und virtuellen Größen, Attributen und Entropie je Section, neu berechnete Prüfsumme.
- Importe (Ordinale von ws2_32, wsock32 und oleaut32 mit Namen), verzögerte und gebundene Importe, Exporte und Weiterleitungen, Imphash.
- Ressourcen: Versionsinformationen, Manifest, Symbole, String-Tabellen, Dialoge, eingebettete Dateien; Overlay-Erkennung.
- Rich Header übersetzt in Visual-Studio-Versionen, Debug-Verzeichnis (PDB-Pfad, GUID, Age), TLS-Callbacks, Ladekonfiguration (CFG, SafeSEH), Relocations.
- Authenticode: Signierer, Zertifikate, Zeitstempel, Datei-Hash gegen signierten Digest und Prüfung der RSA-Signatur. .NET: CLR-Header, Metadaten-Streams, Assembly, Referenzen, P/Invoke, Typen.
- Strings (ASCII und UTF-16LE) mit Kategorien, MD5 / SHA-1 / SHA-256 / TLSH, Heuristiken für Packer und Compiler sowie eine Stapeltabelle zum Erkennen von Familien.
- Entpacken: Mit UPX gepackte Dateien werden mit ihren ursprünglichen Importen rekonstruiert, und in einer Datei versteckte ausführbare Dateien (unverändert gespeichert, XOR-kodiert oder mit LZNT1, aPLib, zlib, gzip oder LZMA komprimiert) werden extrahiert und als Kind-Dateien analysiert.
Warum das in Ermittlungen zählt
- Hashes und Imphash erlauben Abfragen in Threat Intelligence und das Gruppieren von Varianten desselben Werkzeugs; TLSH misst, wie ähnlich sich zwei Dateien sind.
- Kompilier-, Debug- und Signaturzeiten datieren ein Werkzeug — und Widersprüche zwischen ihnen verraten Manipulation.
- Importe und Strings zeigen Fähigkeiten (Netzwerk, Injektion, Persistenz) und Indikatoren (URLs, IPs, Pfade, Registry-Schlüssel).
- Versionsinformationen, PDB-Pfade und der Rich Header verweisen auf die Umgebung des Autors; eine Signatur sagt, wer für die Datei bürgt.
Grenzen
- Rein statisch: UPX wird im Browser entpackt, andere Packer, Protektoren und verschlüsselter Code müssen aber anderswo entpackt werden, bevor ihre echten Importe und Strings sichtbar werden.
- Zertifikatsketten werden nicht validiert (kein Zertifikatsspeicher, keine Sperrprüfung): Das Werkzeug prüft Integrität, nicht Vertrauen.
- Die Packer-Erkennung beruht auf wenigen Heuristiken, nicht auf einer Signaturdatenbank wie der von Detect It Easy.
- Keine Disassemblierung oder Emulation; kein ssdeep (keine permissiv lizenzierte Implementierung).
So kommen Sie an die Dateien
- Von Ausführungsartefakten (Prefetch, Amcache, Dienste, Aufgaben) zu den exakten Pfaden gehen und diese Dateien kopieren, ohne sie zu starten.
- Auf einem laufenden System beschreibbare Ordner per PowerShell durchsuchen oder laufende Programme mit Velociraptors Windows.Triage.Targets (_Live) sammeln.
- Ordnerstruktur beibehalten und vor der Analyse alles hashen.
FAQ
Wird die Datei hochgeladen oder ausgeführt?
Weder noch. Der Analyzer ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser. Er liest nur Bytes: keine Emulation, keine Sandbox, kein Upload-Endpunkt.
Kann es sagen, ob eine Datei Malware ist?
Kein Werkzeug kann das allein anhand statischer Daten. Es zeigt Fakten (Importe, Signatur, Packer, Zeitstempel) und verständlich erklärte Indikatoren, die einen Blick wert sind. Kombinieren Sie sie mit Kontext, Threat Intelligence und bei Bedarf einer dynamischen Analyse in einer Sandbox.
Prüft es Signaturen wie Windows?
Teilweise. Es berechnet den Authenticode-Hash neu, vergleicht ihn mit dem signierten Digest und prüft die RSA-Signatur des Signierers mit dem eingebetteten Zertifikat. Ob die Kette bei einer vertrauenswürdigen Wurzel endet oder ein Zertifikat gesperrt wurde, prüft es nicht — dafür braucht es einen Zertifikatsspeicher und Online-Daten.
Kann es UPX entpacken und versteckte Payloads extrahieren?
Ja, statisch. Mit UPX gepackte EXE- und DLL-Dateien (32 und 64 Bit, alle Kompressionsmethoden, auch mit manipuliertem Header, an dem upx -d scheitert) werden als Daten dekomprimiert und mit ihren ursprünglichen Importen rekonstruiert, sodass der Imphash zum Original-Build passt. In einer Datei versteckte ausführbare Dateien, unverändert gespeichert, XOR-kodiert oder mit LZNT1, aPLib, zlib, gzip oder LZMA komprimiert, werden ebenfalls extrahiert. Jede wird als Kind-Datei hinzugefügt und kann als ZIP mit dem Passwort infected gespeichert werden.
Wie wird der Imphash berechnet?
Genau wie in pefile: „dll.funktion“-Paare in Kleinbuchstaben (Endung .dll, .ocx oder .sys entfernt, Ordinale von ws2_32, wsock32 und oleaut32 über die Tabellen von pefile benannt, andere als ordN), mit Kommas verbunden, dann MD5. Verzögert geladene Importe zählen nicht mit.
Worin unterscheidet es sich von pestudio, PE-bear oder Detect It Easy?
Es bündelt die meistgenutzten Ansichten dieser Werkzeuge auf einer Seite ohne Installation, verarbeitet einen ganzen Stapel auf einmal (Hashes, Imphash-Familien, Zeitraum, Vergleich) und das Sample muss nie auf eine Analyse-VM. Diese Werkzeuge gehen in ihren Spezialgebieten tiefer: Disassemblierung, Signaturdatenbanken, Bearbeitung.