
Schnelles Debuggen von Shellcode, der während der Malware-Analyse extrahiert wurde.
BlobRunner ist ein einfaches Werkzeug, um Shellcode, der während der Malware-Analyse extrahiert wurde, schnell zu debuggen.
BlobRunner reserviert Speicher für die Zieldatei und springt zur Basis (oder einem Offset) des reservierten Speichers. Dies ermöglicht
es einem Analysten, mit minimalem Aufwand schnell in die extrahierten Artefakte einzusteigen.

Um BlobRunner zu verwenden, kannst du die kompilierte ausführbare Datei von der Releases-Seite herunterladen oder mit den folgenden Schritten selbst erstellen.
Das Erstellen der ausführbaren Datei ist unkompliziert und relativ schmerzlos.
Anforderungen
Erstellungsschritte
cl blobrunner.c
Das Erstellen der x64-Version ist praktisch identisch, verwendet jedoch die x64-Tools.
cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c
Zum Debuggen:
BlobRunner.exe shellcode.bin
Debuggen in Datei an einem bestimmten Offset.
BlobRunner.exe shellcode.bin --offset 0x0100
Debuggen in Datei ohne Pause vor dem Sprung. Warnung: Stelle sicher, dass du einen Haltepunkt vor dem Sprung gesetzt hast.
BlobRunner.exe shellcode.bin --nopause
Der optionale Parameter --jit kann verwendet werden, um den Shellcode mit dem konfigurierten Just-In-Time (JIT)-Debugger zu debuggen.
Um den Debugger auszulösen, entzieht BlobRunner dem neu zugewiesenen Speicherbereich die Ausführungsberechtigung. Dies führt dazu, dass das Programm
eine AccessViolation-Ausnahme (0xC0000005) auslöst, wenn versucht wird, den geladenen Shellcode auszuführen.
Anleitungen zur Konfiguration des JIT-Debuggers unter Windows findest du hier. Für x64Dbg siehe setjit oder setjitauto.
Beispiel:
BlobRunner.exe shellcode.bin --jit
Sobald der Debugger geladen ist, gewähre dem Bereich Ausführungsberechtigung. Mit x64Dbg kannst du den Befehl setpagerights unter Verwendung der von BlobRunner zurückgegebenen Adresse ausführen.
setpagerights <region>, ExecuteReadWrite
Inline-Assembler wird vom x64-Compiler nicht unterstützt. Um das Debuggen von x64-Shellcode zu unterstützen, erstellt der Loader einen angehaltenen Thread, der es dir ermöglicht, einen Haltepunkt am Thread-Eintritt zu setzen, bevor der Thread fortgesetzt wird.
Der Prozess ist praktisch identisch mit dem lokalen Debuggen von Shellcode – mit dem Unterschied, dass du die Shellcode-Datei auf das entfernte System kopieren musst. Wenn die Datei in denselben Pfad kopiert wird, von dem aus du win32_remote.exe ausführst, musst du den Dateinamen als Parameter verwenden. Andernfalls musst du den Pfad zur Shellcode-Datei auf dem entfernten System angeben.
Du kannst schnell Shellcode-Beispiele mit dem Metasploit-Tool msfvenom generieren.
Generieren einer einfachen Windows-Exec-Payload.
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -o test2.bin