
Toolkit per Sandbox Hardware

Kit di Sandbox Hardware
Il malware impiega frequentemente tecniche anti-VM, che possono variare per difficoltà di rilevamento e contrasto. Sebbene integrare misure anti-rilevamento nei nostri laboratori sia un'opzione spesso utilizzata, dovremmo anche considerare l'uso di una sandbox hardware reale, anche se sembra strano. Sfruttando il fantastico progetto PCILeech e l'accesso hardware DMA, XenoboxX fornisce una suite di strumenti per attività di analisi, come il dump della memoria allocata dinamicamente e la ricerca di IoC. Questi strumenti ci permettono di iniettare codice a livello kernel tramite DMA, rendendo il rilevamento significativamente più difficile e offrendo una nuova prospettiva all'analisi.
XenoboxX è attualmente focalizzato su Windows a 64 bit, ma in futuro potrebbe essere esteso anche ad altre piattaforme.
Lo strumento è stato presentato ai DEFCON 32 Demo Labs: qui
Ovviamente stiamo parlando di ambienti fisici, quindi:
installa la Scheda DMA sul PC target. Collega la scheda al tuo PC host
installa PCILeech sul tuo PC host: se non hai intenzione di sviluppare o apportare modifiche, puoi semplicemente installare i binari (penso sia l'opzione più comune) disponibili nella pagina delle release
installa XenoboxX sul tuo PC host: come per il punto precedente, potresti volere solo i binari precompilati (nella cartella pcileech)
inietta il modulo PCILeech:
./pcileech kmdload -kmd WIN10_X64_3
questo restituirà un indirizzo di memoria che userai per eseguire gli shellcode (es 0x7ffff000)
esegui gli shellcode XenoboxX:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
Attualmente XenoboxX ha 3 wx64 shellcode:
wx64_dumpalloc: si attacca a un PID specifico e scarica tutte le allocazioni di memoria effettuate dal processo. Se i flag di protezione di una memoria esistente vengono modificati, la regione viene scaricata di nuovo (a volte il malware cambia le protezioni per evitare ispezioni)wx64_memgrep: cerca stringhe definite dall'utente nella memoria allocata da un PID. Può essere attaccato al processo per un periodo di tempo specifico.wx64_strings: cerca tutte le stringhe nella memoria allocata da un PID. Può essere attaccato al processo per un periodo di tempo specifico.Nota: come approccio sperimentale, Xenobox attualmente evita del tutto l'hooking, e tutti i rilevamenti sono fatti tramite polling. Ovviamente questo ha alcuni svantaggi, ma per ora è una scelta progettuale, per essere il più stealth possibile.
Esempio:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
-0 PID a cui attaccarsi in formato esadecimale (obbligatorio)-1 tempo di monitoraggio del processo. Default impostato a 0x20-s cartella di output, dove verranno salvati i dump di memoria e il logEsempio:
./pcileech wx64_memgrep -0 0x564 -1 0x80 -s "Hello, 123" -2 1 -kmd 0x7ffff000
-0 PID a cui attaccarsi in formato esadecimale (obbligatorio)-1 tempo di monitoraggio del processo. Default impostato a 0x20-2 cerca stringa ASCII (0x0) o WIDE (0x1). Default impostato a 0x0-3 ricerca case sensitive (0x1) o case insensitive (0x0). Case sensitive è più veloce. Default impostato a 0x0-4 cerca solo pagine di memoria scrivibili (0x0) o tutte (0x01). Default impostato a 0x0-s stringa di ricerca (tra doppi apici)Esempio:
./pcileech wx64_strings -0 0x19e0 -1 0x100 -3 0x15 -kmd 0x7ffff000
-0 PID a cui attaccarsi in formato esadecimale (obbligatorio)-1 tempo di monitoraggio del processo. Default impostato a 0x20-2 cerca stringa ASCII (0x0) o WIDE (0x1). Default impostato a 0x0-3 lunghezza minima della stringa. Default impostato a 0xA-4 cerca solo pagine di memoria scrivibili (0x0) o tutte (0x01). Default impostato a 0x0Se vuoi modificare o ricostruire gli script XenoboxX, ricorda che hai bisogno di alcuni file dal repository PCILeech, in particolare:
wx64_common.hwx64_common.cshellcode64.exeNei commenti di ogni file .c troverai le istruzioni di compilazione. Ad esempio:
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 non è lo strumento di analisi definitivo: questo è un approccio molto specifico che trovo utile per analisi molto specifiche: non credo che questo strumento sostituirà il tuo flusso di lavoro attuale, ma forse lo troverai utile per quel nasty malware specifico.
Contributi e suggerimenti sono più che benvenuti. Apri un issue se hai domande o una pull request se vuoi contribuire. Grazie!