
Windows-Tool zum Auslagern von Schadsoftware-PE-Dateien aus dem Speicher zurück auf die Festplatte zur Analyse.
Process Dump ist ein Windows-Reverse-Engineering-Kommandozeilen-Tool zum Auslagern von Malware-Speicherkomponenten zur Analyse auf die Festplatte. Oft sind Malware-Dateien vor der Ausführung gepackt und obfuskiert, um AV-Scanner zu umgehen. Wenn diese Dateien jedoch ausgeführt werden, entpacken oder injizieren sie häufig eine saubere Version des Malware-Codes im 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 speichern, um ihn mit AV-Produkten zu scannen oder mit statischen Analysetools wie IDA zu analysieren.
Process Dump funktioniert unter Windows 32- und 64-Bit-Betriebssystemen und kann Speicherkomponenten aus bestimmten Prozessen oder aus allen derzeit ausgeführten Prozessen speichern. Process Dump unterstützt die Erstellung und Verwendung einer Datenbank mit sauberen Hashes, sodass das Speichern aller sauberen Dateien wie kernel32.dll übersprungen werden kann. Die Hauptfunktionen umfassen:
Ich unterhalte eine offizielle kompilierte Version auf meiner Website: https://split-code.com/processdump.html
Sie können die neueste kompilierte Version von Process Dump hier herunterladen:
Dies ist für Visual Studio 2019 konzipiert und funktioniert mit der kostenlosen Community Edition. Öffnen Sie einfach die Projektdatei mit VS2019 und kompilieren Sie – so einfach ist das!
Process Dump kann verwendet werden, um unbekannten Code aus dem Speicher zu speichern (Flag „-system“), bestimmte Prozesse zu speichern oder in einem Überwachungsmodus zu laufen, der alle Prozesse kurz vor ihrer Beendigung speichert.
Vor der ersten Verwendung dieses Tools kann auf der sauberen Workstation die ausschließende Datenbank mit sauberen Hashes generiert werden, indem Sie entweder:
Beispielnutzung:
Die Kommandozeilenargumente können wie folgt gruppiert werden:
Allgemeine Dump-Optionen
| Option | Beschreibung |
|---|---|
| -system | Speichert alle Module, die nicht mit der Clean-Hash-Datenbank übereinstimmen, aus allen zugänglichen Prozessen in das Arbeitsverzeichnis. |
| -pid <pid> | Speichert alle Module, die nicht mit der Clean-Hash-Datenbank übereinstimmen, aus der angegebenen PID in das aktuelle Arbeitsverzeichnis. Verwenden Sie ein „0x“-Präfix, um eine hexadezimale PID anzugeben. |
| -closemon | Läuft im Überwachungsmodus. Wenn Prozesse beendet werden, speichert Process Dump zuerst den Prozess. |
| -p <Regex-Prozessname> | Speichert alle Module, die nicht mit der Clean-Hash-Datenbank übereinstimmen, aus dem Prozessnamen, der auf den Filter passt, in die angegebene PID in das aktuelle Arbeitsverzeichnis. |
| -a <Modul-Basisadresse> | Speichert ein Modul an der angegebenen Basisadresse aus dem Prozess. |
| -o <Pfad> | Legt den Standard-Ausgabe-Stammordner für gespeicherte Komponenten fest. |
Optionen für die Clean-Hash-Datenbank
| Option | Beschreibung |
|---|---|
| -db gen | Verarbeitet automatisch einige übliche Ordner sowie alle derzeit laufenden Prozesse und fügt die gefundenen Modul-Hashes zur Clean-Hash-Datenbank hinzu. Es fügt alle Dateien rekursiv hinzu in: %WINDIR%, %HOMEPATH%, C:\Program Files\, C:\Program Files (x86)\, sowie alle Module in allen laufenden Prozessen. Diese sauberen Hashes werden der Datei clean.hashes im Anwendungsverzeichnis hinzugefügt. Bei zukünftigen Process-Dump-Befehlen werden diese bekannten Module nicht gespeichert. Es wird empfohlen, diesen Befehl einmal auf einem sauberen System vor der Verwendung des Tools auszuführen, damit nicht zu viele Module aus dem Speicher gespeichert werden. |
| -db genquick | Wie oben, aber fügt nur die Hashes aller Module in allen Prozessen zur Clean-Hash-Datenbank hinzu. Dies ist eine viel schnellere Methode, um die Clean-Hash-Datenbank aufzubauen, aber sie wird weniger vollständig sein. |
| -db add <Verz> | Fügt alle Dateien im angegebenen Verzeichnis rekursiv zur Clean-Hash-Datenbank hinzu. |
| -db rem <Verz> | Entfernt alle Dateien im angegebenen Verzeichnis rekursiv aus der Clean-Hash-Datenbank. |
| -nr | Deaktiviert Rekursion bei Add- oder Remove-Befehlen der Hash-Datenbank. |
| -db clean | Löscht die Clean-Hash-Datenbank. |
| -db ignore | Ignoriert die Clean-Hash-Datenbank beim diesmaligen Speichern eines Prozesses. Alle Module werden gespeichert, auch wenn eine Übereinstimmung gefunden wird. |
| -cdb <Dateipfad> | Vollständiger Dateipfad zur Clean-Hash-Datenbank, die für diesen Lauf verwendet werden soll, wenn Sie den Standard clean.hashes überschreiben möchten. |
| -edb <Dateipfad> | Vollständiger Dateipfad zur Entrypoint-Hash-Datenbank, die für diesen Lauf verwendet werden soll. |
| -esdb <Dateipfad> | Vollständiger Dateipfad zur Entrypoint-Kurz-Hash-Datenbank, die für diesen Lauf verwendet werden soll. |
Ausgabeoptionen
| Option | Beschreibung |
|---|---|
| -v | Ausführlicher Modus, bei dem weitere Details zum Debuggen ausgegeben werden. |
| -nh | Es wird kein Header in der Ausgabe gedruckt. |
Erweiterte Optionen
| Option | Beschreibung |
|---|---|
| -g | Erzwingt die Erstellung von PE-Headern von Grund auf, vorhandene Header werden ignoriert. |
| -eprec | Erzwingt die Rekonstruktion des Eintrittspunkts, auch wenn ein gültiger zu existieren scheint. |
| -ni | Deaktiviert die Import-Rekonstruktion. |
| -nc | Deaktiviert das Speichern von losen Code-Regionen. |
| -nt | Deaktiviert Multithreading. |
| -nep | Deaktiviert Entrypoint-Hashing. |
| -t <Thread-Anzahl> | Legt die Anzahl der zu verwendenden Threads fest (Standard 16). |
| Befehl | Beschreibung |
|---|---|
pd64.exe -db genquick | Schnell eine saubere Moduldatenbank basierend auf derzeit laufenden Prozessen erstellen. Process Dump wird in späteren Aufgaben nur nicht erkannte Module speichern. |
pd64.exe -system | Alle Module und versteckten Blöcke aus allen Prozessen speichern, dabei saubere Module ignorieren. |
pd64.exe -closemon | Im Terminate-Überwachungsmodus ausführen. Dies speichert alle Prozesse, wenn sie zu beenden versuchen. |
pd64.exe -pid 0x18A | Module und versteckte Blöcke aus einer bestimmten Prozess-ID speichern. |
pd64.exe -p .\*chrome.\* | Module und versteckte Blöcke nach Prozessnamen speichern. |
pd64.exe -db gen | Eine Clean-Hash-Datenbank bekannter Module erstellen. Dies wird verwendet, um das Speichern bekannter guter Module in späteren Aufgaben zu vermeiden. |
pd64.exe -pid 0x1a3 -a 0xffb4000 | Code von einer bestimmten Adresse in PID speichern. Dies erzeugt zwei Dateien zur Analyse, mit rekonstruierten 32-Bit- und 64-Bit-PE-Headern: notepad_exe_x64_hidden_FFB40000.exe und notepad_exe_x86_hidden_FFB40000.exe. |
Hier ist eine gestrafftere Version der Informationen: