
Windows-Tool zum Auslagern von Schadsoftware-PE-Dateien aus dem Speicher zurück auf die Festplatte zur Analyse.
Process Dump ist ein Windows-Kommandozeilenwerkzeug für Reverse Engineering, mit dem Speicherkomponenten von Malware zur Analyse zurück auf die Festplatte geschrieben werden können. Häufig werden Malware-Dateien gepackt und obfuskiert, bevor sie ausgeführt werden, um AV-Scanner zu umgehen; bei der Ausführung entpacken oder injizieren diese Dateien jedoch oft eine saubere Version des Malware-Codes in den Speicher. Eine häufige Aufgabe für Malware-Forscher bei der Analyse von Malware ist es, diesen entpackten Code aus dem Speicher zurück auf die Festplatte zu schreiben, um ihn mit AV-Produkten zu scannen oder mit statischen Analysewerkzeugen wie IDA zu analysieren.
Process Dump funktioniert unter 32- und 64-Bit-Windows-Betriebssystemen und kann Speicherkomponenten aus bestimmten Prozessen oder aus allen aktuell laufenden Prozessen dumpen. Process Dump unterstützt die Erstellung und Nutzung einer Clean-Hash-Datenbank, sodass das Dumpen bekannter Dateien wie kernel32.dll übersprungen werden kann. Zu den Hauptfunktionen gehören:
-closemon) ausgeführt werden, in dem gehookte Prozesse pausiert und unmittelbar vor ihrer Beendigung gedumpt werden.Ich pflege eine offizielle kompilierte Version auf meiner Website hier: https://split-code.com/processdump.html
Sie können die neueste kompilierte Version von Process Dump hier herunterladen:
Verwenden Sie pd64.exe unter 64-Bit-Windows (empfohlen) oder pd32.exe unter 32-Bit-Windows. Beide Binärdateien sind eigenständig; es wird kein Microsoft Visual C++ Redistributable benötigt.
Process Dump kann den gesamten unbekannten Code aus dem Speicher dumpen (-system), bestimmte Prozesse dumpen oder Prozesse überwachen und sie vor ihrer Beendigung dumpen.
Generieren Sie auf einer sauberen Workstation eine Baseline-Datenbank mit einem der folgenden Befehle:
pd64.exe -db genquickpd64.exe -db genFühren Sie die Datenbankgenerierung und das Dumpen als separate Befehle aus. Für den besten Zugriff führen Sie die Befehle als Administrator aus. Die Standardanzahl der Worker beträgt 16.
Beispielverwendung:
pd64.exe -systempd64.exe -pid 419pd64.exe -pid 0x1a3pd64.exe -pid 0x1a3 -a 0x401000 -o C:\dumpspd64.exe -p "chrome[.]exe"pd64.exe -p ".*chrome.*"pd64.exe -closemonAllgemeine Dumping-Optionen
| Option | Beschreibung |
|---|---|
-system | Dumpt Module und losen Code, die nicht mit der Clean-Hash-Datenbank übereinstimmen, aus allen zugänglichen Prozessen. |
-pid <pid> | Dumpt einen bestimmten Prozess. Verwenden Sie eine Dezimalzahl oder ein 0x-Präfix für eine hexadezimale PID. |
-closemon | Hookt die Prozessbeendigung und dumpt vor dem Beenden. Verwenden Sie dies in einer kontrollierten Umgebung; drücken Sie Ctrl+C zum Beenden. |
-p <regex> | Dumpt Prozesse, deren vollständiger Name einem groß-/kleinschreibungssensitiven regulären Ausdruck entspricht. Bei mehreren Treffern wird eine Bestätigung angefordert. |
-a <address> | Dumpt an der angegebenen Basisadresse. Erfordert -pid; akzeptiert Dezimalzahlen oder Hexadezimalzahlen mit 0x-Präfix. |
-o <path> | Legt den Ausgabeordner fest (Standard: aktuelles Arbeitsverzeichnis). Erstellen Sie den Ordner zuerst; vorhandene Dateien werden niemals überschrieben. |
Optionen für die Clean-Hash-Datenbank
Datenbankdateien befinden sich standardmäßig im Anwendungsverzeichnis: clean.hashes, entrypoints.hashes und shortentrypoints.hashes.
| Option | Beschreibung |
|---|---|
-db gen | Fügt Hashes aus laufenden Prozessen und PE-Dateien rekursiv in %WINDIR%, %USERPROFILE%, C:\Program Files und C:\Program Files (x86) hinzu. |
-db genquick | Fügt Hashes nur aus laufenden Prozessen hinzu. Schneller als gen, aber weniger vollständig. |
-db add <dir> | Fügt PE-Datei-Hashes aus dem angegebenen Verzeichnis rekursiv hinzu, einschließlich Entrypoint-Signaturen. |
-db remove <dir>, -db rem <dir> | Entfernt passende Clean-Module-Hashes rekursiv aus dem Verzeichnis. Entrypoint-Signaturen bleiben erhalten. |
-nr | Deaktiviert die Rekursion für Datenbank-Hinzufügen/Entfernen-Befehle. Hat keine Auswirkung auf -db gen. |
-db clean | Löscht alle drei Datenbanken, einschließlich der Entrypoint-Signaturen. |
-db ignore | Ignoriert alle drei geladenen Datenbanken für diesen Dump, ohne die Dateien zu ändern. Wiederholte Module können innerhalb des Laufs dennoch übersprungen werden. |
-cdb <filepath>, -c <filepath> | Legt den Pfad der Clean-Hash-Datenbank fest. |
-edb <filepath> | Legt den Pfad der Entrypoint-Hash-Datenbank fest. |
-esdb <filepath> | Legt den Pfad der Short-Entrypoint-Hash-Datenbank fest. |
Ausgabeoptionen
| Option | Beschreibung |
|---|---|
-v | Gibt ausführliche Diagnoseinformationen aus. |
-nh | Unterdrückt das Versions-/Copyright-Banner. |
--help, -help, -h, --h | Gibt die Hilfe aus und beendet das Programm. Auch der Aufruf ohne Argumente gibt die Hilfe aus. |
Erweiterte Optionen
| Option | Beschreibung |
|---|---|
-g | Erzwingt die Generierung sowohl von 32-Bit- als auch 64-Bit-PE-Headern und ignoriert vorhandene Header. |
-eprec | Erzwingt die Entrypoint-Wiederherstellung, auch wenn ein gültiger Entrypoint existiert. Die Wiederherstellung ist heuristisch; eine erfolglose Suche lässt den alten Wert unverändert. |
-ni | Deaktiviert die aggressive Import-Rekonstruktion (standardmäßig aktiviert). |
-nc | Deaktiviert das Dumping und Hashing von Loose-Code (standardmäßig aktiviert). |
-nep | Deaktiviert die Entrypoint-Wiederherstellung und das Live-Entrypoint-Hashing und überschreibt -eprec. Die Dateidatenbank-Generierung sammelt weiterhin Entrypoint-Signaturen. |
-reexec | Experimentelle Vorbereitung für das erneute Ausführen von Dumps. Verwirft einen Teil des erfassten Zustands und geht vom ursprünglichen Section-Layout aus; führt den Dump nicht aus und garantiert nicht, dass er funktioniert. Standardmäßig deaktiviert. |
-nt | Verwendet einen Worker, entspricht -t 1. Die Close-Überwachung hat weiterhin einen separaten Überwachungsthread. |
-t <count> | Legt die Anzahl der Worker fest (Standard 16, Minimum 1) für System-Dumping, Datenbankgenerierung und Close-Überwachung. Direkte PID-/Namens-Dumps bleiben synchron. Das letzte -t/-nt gewinnt. |