
Debugga rapidamente lo shellcode estratto durante l'analisi malware
BlobRunner è uno strumento semplice per eseguire rapidamente il debug del codice shell estratto durante l'analisi di malware.
BlobRunner alloca memoria per il file target e salta all'indirizzo base (o offset) della memoria allocata. Questo consente a un analista di eseguire rapidamente il debug degli artefatti estratti con il minimo overhead e sforzo.

Per utilizzare BlobRunner, è possibile scaricare l'eseguibile compilato dalla pagina delle releases o crearne uno proprio seguendo i passaggi seguenti.
La compilazione dell'eseguibile è semplice e relativamente indolore.
Requisiti
Passaggi di compilazione
cl blobrunner.c
La compilazione della versione x64 è praticamente identica a quella sopra, ma utilizza semplicemente gli strumenti x64.
cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c
Per eseguire il debug:
BlobRunner.exe shellcode.bin
Esegui il debug del file a un offset specifico.
BlobRunner.exe shellcode.bin --offset 0x0100
Esegui il debug del file senza mettere in pausa prima del salto. Attenzione: Assicurati di aver impostato un breakpoint prima del salto.
BlobRunner.exe shellcode.bin --nopause
Il parametro opzionale --jit può essere utilizzato per eseguire il debug del codice shell con il debugger Just-In-Time (JIT) configurato.
Per attivare il debugger - BlobRunner rimuove l'accesso in esecuzione dalla regione di memoria appena allocata. Questo causa al programma di sollevare
un'eccezione AccessViolation (0xC0000005) quando tenta di eseguire il codice shell caricato.
Le istruzioni per configurare il debugger JIT su Windows si trovano qui. Per x64Dbg vedi setjit o setjitauto.
Esempio:
BlobRunner.exe shellcode.bin --jit
Una volta caricato il debugger, concedi l'accesso eseguibile alla regione. Utilizzando x64Dbg puoi eseguire il comando setpagerights usando l'indirizzo restituito da BlobRunner.
setpagerights <region>, ExecuteReadWrite
L'assembly inline non è supportato dal compilatore x64, quindi per supportare il debug del codice shell x64 il loader crea un thread sospeso che ti consente di posizionare un breakpoint all'ingresso del thread, prima che il thread venga ripreso.
Il processo è praticamente identico al debug del codice shell in locale - con l'eccezione che è necessario copiare il file del codice shell sul sistema remoto. Se il file viene copiato nello stesso percorso da cui esegui win32_remote.exe, devi utilizzare il nome del file per il parametro. Altrimenti, dovrai specificare il percorso del file del codice shell sul sistema remoto.
Puoi generare rapidamente esempi di codice shell utilizzando lo strumento Metasploit msfvenom.
Generazione di un payload exec di Windows semplice.
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -o test2.bin