Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!
Bypass_AV — Elude AV e sandbox su Windows utilizzando controlli anti-sandbox, unhooking di ntdll, risoluzione dinamica delle API e offuscamento shellcode multistrato (XOR/RC4/Base64/MAC). | Kitploit
Elude AV e sandbox su Windows utilizzando controlli anti-sandbox, unhooking di ntdll, risoluzione dinamica delle API e offuscamento shellcode multistrato (XOR/RC4/Base64/MAC).
Questo è un campione di trojan in grado di bypassare la stragrande maggioranza dei software antivirus e delle sandbox
Di seguito illustrerò le tecnologie coinvolte nel trojan, spiegandole sia dal lato dello shellcode che da quello del loader.
Sezione Loader
1. Anti-sandbox
Come è risaputo, il rilevamento anti-sandbox convenzionale si concentra su operazioni relative a CPU, memoria, disco rigido, ecc. dell'host. Tuttavia, personalmente ritengo che questo approccio non sia opportuno, perché alcuni software antivirus o sandbox cloud rilevano le funzioni anti-sandbox e monitorano alcune API sensibili, finendo così per essere scoperti. Perciò la mia idea è di rilevare i collegamenti sul desktop, come quelli dei software di uso comune quali QQ, WeChat e DingTalk, per eludere le sandbox cloud.
Ricaricamento di ntdll e chiamata dinamica delle API
In generale, il meccanismo di rilevamento dei software antivirus consiste nell'innescare ganci su alcune API sensibili. Quindi, grazie alle tecniche di ricaricamento di ntdll e di chiamata dinamica delle API, possiamo aggirare i ganci e realizzare le funzionalità. Per quanto riguarda il ricaricamento di ntdll, si carica la ntdll.dll originale dalla directory di sistema e si sostituisce il segmento di codice ntdll agganciato (segmento .text) nel processo corrente con il codice originale. La chiamata dinamica delle API consiste nell'attraversare la tabella delle esportazioni della DLL di destinazione, abbinare il nome della funzione tramite hash per ottenere l'indirizzo della funzione di destinazione ed eseguirla tramite un puntatore.
3. Separazione di shellcode e loader
Oltre alla codifica per bypassare i software antivirus, lo shellcode può anche essere separato dal loader: se lo shellcode non si trova nel file exe, per i software antivirus è piuttosto difficile rilevare eventuali problemi.
Sezione shellcode
La parte dello shellcode viene sottoposta principalmente a un offuscamento multi-livello, utilizzando l'elaborazione combinata XOR+RC4+base64+MAC; il risultato finale è in formato indirizzo MAC, poiché Windows ha una certa tolleranza verso le stringhe in formato MAC.
Metodo di utilizzo
Innanzitutto, usare encode.cpp per crittografare lo shellcode. Se si scrive lo shellcode nel file exe, inserirlo nell'array mac_shellcode in Unseparation_shellcode.cpp. Se si desidera ottenere la separazione dei parametri, è sufficiente eseguire l'exe che ho compilato insieme allo shellcode.
Grazie per la lettura
Versione inglese
Questo è un campione di trojan in grado di bypassare la stragrande maggioranza dei software antivirus e delle sandbox. Di seguito spiegherò le tecnologie coinvolte nel trojan, concentrandomi sia sullo shellcode che sul loader.
Sezione Loader
1. Anti-sandbox
È risaputo che il rilevamento convenzionale delle funzioni anti-sandbox si basa su operazioni relative a CPU, memoria, disco rigido, ecc. dell'host. Tuttavia, personalmente ritengo che questo approccio non sia ideale, perché alcuni software antivirus o sandbox cloud monitorano le funzioni anti-sandbox e tengono d'occhio le API sensibili, il che può portare al rilevamento. Pertanto, la mia idea è di rilevare i collegamenti sul desktop, come quelli dei software di uso comune come QQ, WeChat e DingTalk, per eludere le sandbox cloud.
2. Ricaricamento di ntdll e chiamata dinamica delle API
Il meccanismo di rilevamento dei software antivirus generici consiste nell'agganciare alcune API sensibili. Pertanto, possiamo aggirare i ganci e ottenere le funzionalità utilizzando le tecniche di ricaricamento di ntdll e di chiamata dinamica delle API. La parte di ricaricamento di ntdll prevede il caricamento della ntdll.dll originale dalla directory di sistema e la sostituzione del segmento di codice ntdll agganciato (segmento .text) nel processo corrente con il codice originale. La chiamata dinamica delle API consiste nell'attraversare la tabella delle esportazioni della DLL di destinazione, abbinare il nome della funzione tramite hash, ottenere l'indirizzo della funzione di destinazione ed eseguirla tramite un puntatore.
3. Separazione di shellcode e loader
Oltre alla codifica per bypassare i software antivirus, lo shellcode può anche essere separato dal loader. Se lo shellcode non è incluso nel file exe, per i software antivirus diventa piuttosto difficile rilevare eventuali problemi.
La sezione dello shellcode viene sottoposta principalmente a un'elaborazione di offuscamento a più livelli, che coinvolge XOR, RC4, base64 e MAC. L'output finale è in formato indirizzo MAC, sfruttando la tolleranza di Windows per le stringhe in formato MAC.
Metodo di utilizzo
Innanzitutto, usare encode.cpp per crittografare lo shellcode. Se si scrive lo shellcode in un file exe, inserirlo nell'array mac_shellcode in Unseparation_shellcode.cpp. Se si desidera ottenere la separazione dei parametri, è possibile eseguire direttamente l'exe compilato insieme allo shellcode.