Skip to content

MZ.exe · .dll · .sys

PE Parser

Header, Sections, Importe, Ressourcen, Rich Header, Authenticode, .NET-Metadaten, Strings und Hashes von Windows-Programmen — mit verständlich erklärten Indikatoren. Statische Analyse im Browser mit WebAssembly: Die Datei wird nie hochgeladen und nie ausgeführt.

FIG. 0wartet auf Präparat

.exe-, .dll- oder .sys-Dateien hier ablegen

Eine Datei oder ein ganzer Stapel: Ordner und ZIP-Sammlungen (Velociraptor, gezippter Ordner) funktionieren direkt. Dateien werden am MZ-Header erkannt, umbenannte Payloads also auch. Nichts wird ausgeführt — die Bytes werden nur gelesen.

Fünf harmlose PE-Dateien aus einem fiktiven Angriff: vier von Hand gebaute, deren Code ein einzelnes `ret` ist, und wupd.exe, ein echter mit UPX gepackter Build eines Programms, das nur eine Begrüßung ausgibt. Tipp: Vergleichen Sie die beiden m64.exe-Builds, öffnen Sie die signierte DLL und dann wupd.exe, um das Entpacken zu sehen.

100 % lokal und statisch: Die Dateien werden per WebAssembly im Browser analysiert, nie hochgeladen, nie ausgeführt.

So kommen Sie an die Dateien

Vollständige Sammelanleitung

Holen Sie die verdächtigen Programme vom System, ohne sie auszuführen, und behalten Sie ihren Ordner bei, damit jede Datei zugeordnet bleibt. Legen Sie dann die Dateien, den Ordner oder ein ZIP hier ab. Nichts muss installiert werden.

  1. Programme kopieren (nie ausführen)
  2. Dateien, Ordner oder ZIP hier ablegen
  3. Im Browser analysiert, nie hochgeladen

Datei schon da? Ziehen Sie sie direkt auf diese Seite: Sie wird gelesen, nicht ausgeführt.

Um ein laufendes System zu durchsuchen, fügen Sie dies in Windows PowerShell als Administrator ein. Es kopiert Programme (.exe, .dll, .sys, .scr, .cpl, .ocx), die in den letzten 14 Tagen unter ProgramData, Users und Windows\Temp geschrieben wurden, samt Pfad. Passen Sie Ordner und Tage an Ihren Fall an.

PowerShell · Admin
$dst = 'C:\triage\pe'
$roots = 'C:\ProgramData', 'C:\Users', 'C:\Windows\Temp'
Get-ChildItem -Path $roots -Recurse -Force -File -Include *.exe, *.dll, *.sys, *.scr, *.cpl, *.ocx -ErrorAction SilentlyContinue |
  Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) -and $_.Length -lt 200MB } |
  ForEach-Object {
    $to = Join-Path $dst $_.FullName.Substring(3)
    New-Item -ItemType Directory -Force -Path (Split-Path $to) | Out-Null
    Copy-Item -LiteralPath $_.FullName -Destination $to -Force
  }

Ergebnis: C:\triage\pe\ProgramData\…, C:\triage\pe\Users\<Benutzer>\… Legen Sie den Ordner C:\triage\pe hier ab (hineinziehen oder Ordner wählen).

Analyse auf einem anderen Rechner? Packen Sie alles mit dem in Windows 10 1803 und neuer enthaltenen tar.exe in ein ZIP. Der Virenschutz kann Dateien beim Kopieren in Quarantäne verschieben: Legen Sie eine Ausnahme für C:\triage an oder sammeln Sie aus einem Abbild.

PowerShell / cmd
tar -a -c -f C:\triage\pe.zip -C C:\triage pe

Stolperfallen

  • Der Virenschutz kann Samples beim Sammeln löschen oder in Quarantäne verschieben. Zielordner ausnehmen oder mit einem Abbild arbeiten.
  • Passwortgeschützte ZIPs (die üblichen „infected“-Archive) lassen sich im Browser nicht öffnen: erst entpacken, dann den Ordner ablegen.
  • Dateien über 512 MB werden übersprungen: Der Browser liest jede Datei komplett in den Speicher.

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.

Statische Triage von Windows-Executables mit dem kostenlosen PE Parser: Dateien oder ZIP laden, Indikatoren lesen, Builds vergleichen, exportieren.
Verdächtige EXE-, DLL- und SYS-Dateien von einem Windows-Host oder Image finden und kopieren, ohne sie auszuführen: PowerShell, Velociraptor, Images.
Statische Hinweise auf gepackte Windows-Executables – Section-Namen, Entropie, W+X, Entry Point, Importe, Overlay – und ihre Fallstricke.