
Hardware-Sandbox-Toolkit

Hardware-Sandbox-Toolkit
Malware setzt häufig Anti-VM-Techniken ein, deren Erkennung und Gegenmaßnahmen unterschiedlich schwierig sein können. Während die Integration von Anti-Erkennungsmaßnahmen in unseren Laboren eine häufig genutzte Option ist, sollten wir auch die Verwendung einer echten Hardware-Sandbox in Betracht ziehen, auch wenn dies seltsam klingt. Durch die Nutzung des großartigen PCILeech-Projekts und des DMA-Hardwarezugriffs bietet XenoboxX eine Reihe von Werkzeugen für Analyseaufgaben, wie das Dumpen dynamisch alloziierten Speichers und die Suche nach IoCs. Diese Werkzeuge ermöglichen es uns, Code auf Kernel-Ebene über DMA zu injizieren, was die Erkennung erheblich erschwert und eine neue Perspektive auf die Analyse eröffnet.
XenoboxX konzentriert sich derzeit auf 64-Bit-Windows, könnte aber in Zukunft auch auf andere Plattformen erweitert werden.
Das Tool wurde auf den DEFCON 32 Demo Labs vorgestellt: hier
Offensichtlich sprechen wir über physische Umgebungen, also:
Installieren Sie das DMA-Board im Ziel-PC. Verbinden Sie das Board mit Ihrem Host-PC.
Installieren Sie PCILeech auf Ihrem Host-PC: Wenn Sie keine Entwicklung oder Änderungen vornehmen möchten, können Sie einfach die Binärdateien installieren (ich denke, das ist die häufigste Option), die auf der Release-Seite verfügbar sind.
Installieren Sie XenoboxX auf Ihrem Host-PC: Wie beim vorherigen Punkt möchten Sie vielleicht nur die vorkompilierten Binärdateien (im pcileech-Ordner).
Injizieren des PCILeech-Moduls:
./pcileech kmdload -kmd WIN10_X64_3
Dies gibt eine Speicheradresse zurück, die Sie zum Ausführen der Shellcodes verwenden (z. B. 0x7ffff000).
Führen Sie die XenoboxX-Shellcodes aus:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
Derzeit hat XenoboxX 3 wx64-Shellcodes:
wx64_dumpalloc: Hängt an eine bestimmte PID an und dumped alle Speicherbelegungen, die von dem Prozess vorgenommen wurden. Wenn die Schutzflags eines vorhandenen Speichers geändert werden, wird die Region erneut gedumpt (manchmal wechselt Malware die Schutzmaßnahmen, um Inspektionen zu vermeiden).wx64_memgrep: Sucht nach benutzerdefinierten Zeichenfolgen im Speicher, der von einer PID belegt wurde. Kann für eine bestimmte Zeit an den Prozess angehängt werden.wx64_strings: Sucht nach allen Zeichenfolgen im Speicher, der von einer PID belegt wurde. Kann für eine bestimmte Zeit an den Prozess angehängt werden.Hinweis: Als experimenteller Ansatz vermeidet Xenobox derzeit jegliches Hooking, und alle Erkennungen erfolgen durch Polling. Offensichtlich hat dies einige Nachteile, aber dies ist derzeit eine Designentscheidung, um so versteckt wie möglich zu sein.
Beispiel:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
-0 PID, an die angehängt werden soll, im Hex-Format (erforderlich)-1 Prozessüberwachungszeit. Standardmäßig auf 0x20 gesetzt-s Ausgabeordner, in dem Speicherdumps und Log gespeichert werdenBeispiel:
./pcileech wx64_memgrep -0 0x564 -1 0x80 -s "Hello, 123" -2 1 -kmd 0x7ffff000
-0 PID, an die angehängt werden soll, im Hex-Format (erforderlich)-1 Prozessüberwachungszeit. Standardmäßig auf 0x20 gesetzt-2 Suche nach ASCII (0x0) oder WIDE (0x1) Zeichenfolge. Standardmäßig auf 0x0 gesetzt-3 Groß-/Kleinschreibung beachten (0x1) oder nicht (0x0). Groß-/Kleinschreibung beachten ist schneller. Standardmäßig auf 0x0 gesetzt-4 Nur beschreibbare Speicherseiten durchsuchen (0x0) oder alle (0x01). Standardmäßig auf 0x0 gesetzt-s Suchzeichenfolge (in doppelten Anführungszeichen)Beispiel:
./pcileech wx64_strings -0 0x19e0 -1 0x100 -3 0x15 -kmd 0x7ffff000
-0 PID, an die angehängt werden soll, im Hex-Format (erforderlich)-1 Prozessüberwachungszeit. Standardmäßig auf 0x20 gesetzt-2 Suche nach ASCII (0x0) oder WIDE (0x1) Zeichenfolge. Standardmäßig auf 0x0 gesetzt-3 Minimale Zeichenfolgenlänge. Standardmäßig auf 0xA gesetzt-4 Nur beschreibbare Speicherseiten durchsuchen (0x0) oder alle (0x01). Standardmäßig auf 0x0 gesetztWenn Sie die XenoboxX-Skripte ändern oder neu erstellen möchten, denken Sie daran, dass Sie einige Dateien aus dem PCILeech-Repository benötigen, und zwar:
wx64_common.hwx64_common.cshellcode64.exeIn den Kommentaren jeder .c-Datei finden Sie Kompilieranweisungen. Als Beispiel:
cl.exe /O1 /Os /Oy /FD /MT /GS- /J /GR- /FAcs /W4 /Zl /c /TC /kernel wx64_common.c
cl.exe /O1 /Os /Oy /FD /MT /GS- /J /GR- /FAcs /W4 /Zl /c /TC /kernel wx64_dumpalloc.c
ml64.exe wx64_common_a.asm /Fewx64_dumpalloc.exe /link /NODEFAULTLIB /RELEASE /MACHINE:X64 /entry:main wx64_dumpalloc.obj wx64_common.obj
shellcode64.exe -o wx64_dumpalloc.exe "DUMP ALLOCATED MEMORY \n===============================================================\nREQUIRED OPTIONS: \n -0 : Process PID to open. Example '-0 0x0fe0'. \nOPTIONAL OPTIONS: \n -1 : Process monitoring timeout Default: 0x20. Example: '-1 0x100'. \n -s : Specify output folder/file for dumps. Example: \"\\??\C:\temp\test\"\n===== RESULT OF DUMPALLOC OPERATION ======================%s\nNTSTATUS : 0x%08X \n===============================================================\n"
XenoboxX ist nicht das definitive Analysetool: Dies ist ein sehr spezifischer Ansatz, den ich für sehr spezifische Analysen nützlich finde: Ich glaube nicht, dass dieses Tool Ihren aktuellen Arbeitsablauf ersetzen wird, aber vielleicht werden Sie es für diese spezielle bösartige Malware nützlich finden.
Beiträge und Vorschläge sind mehr als willkommen. Bitte öffnen Sie ein Issue, wenn Sie Fragen haben, oder einen Pull Request, wenn Sie beitragen möchten. Danke!