DanaBot e la consegna di pacchetti “multi-fase” per Natale

Per Natale DanaBot ha ricevuto qualcosa che solo un hacker potrebbe apprezzare: una nuova botnet, consegnata in tanti piccoli pacchetti “multi-fase” che possono far volare il tempo.

La recente campagna malspam di DanaBot ha rivelato alcuni fatti interessanti sui meccanismi di consegna del suo trojan bancario. Per rimanere inosservati il più a lungo possibile mentre costruiscono una nuova botnet, i criminali informatici hanno pensato di suddividere la consegna del malware in varie fasi. Se poi una fase finisce dove non dovrebbe, ad esempio nel paese sbagliato o in una piattaforma di analisi del malware di un ricercatore della sicurezza, i cyber-criminali accelereranno i tempi per inserire il destinatario sospetto nella loro lista “no go”. È un’ottima strategia degna di un Babbo Natale cattivo.

Un sacco di regalini

Suddividere il processo di distribuzione dei malware in una serie di fasi appositamente create potrebbe sembrare più problematico che consegnare il payload in un unico pacchetto. Ma questa strategia punta a lasciare un’impronta minima sul disco colpito, specialmente nel caso di un ambiente sandbox speciale con una macchina virtuale. I ricercatori, tra cui Avira, utilizzano varie piattaforme automatizzate di analisi del malware per effettuare la classificazione iniziale dei campioni in entrata, e i criminali lo sanno. Riducendo le possibilità dei ricercatori di ottenere campioni nuovi e completi, i pirati informatici mirano a mantenere i tassi di rilevamento i più bassi possibili per le versioni attuali e future delle loro creazioni.

Questo primo pacchetto è solo per voi

Il primo pacchetto è un’email di spear-phishing con un allegato costituito da un VBScript racchiuso in un archivio. Queste email sono state inviate a persone in Polonia e poi in Italia, Germania, Austria, Francia, Finlandia e forse anche altri paesi europei.

Al di là della lingua localizzata, ogni destinatario riceve una variante distinta e offuscata di questo script, che tuttavia ha la stessa funzionalità:

Il secondo pacchetto proviene dal server C&C

Il collegamento al payload della seconda fase, che sfrutta anche il linguaggio di scripting Visual Basic, viene effettuato eseguendo in modo dinamico batch di istruzioni ricevute da uno dei server C&C. Sembra che a questo scopo i criminali abbiano registrato molti nomi di dominio di primo livello a basso costo, come “.club” o “.science”, e abbiano optato per l’hosting dell’infrastruttura di back-end su server compromessi e/o acquistati in modo fraudolento.

La seconda fase di consegna sembra dipendere da diverse variabili, come il geo-IP del destinatario e un confronto dell’intervallo di indirizzi IP con l’elenco degli IP vietati. Se al C&C non “piace” l’indirizzo IP di origine, produrrà un comando di sleep o qualche altra sciocchezza. Il metodo del richiamo wrapper sta gestendo correttamente questa operazione tramite l’istruzione “On Error Resume Next”.

Per il pacchetto della terza fase conta la posizione

Se stiamo “chiamando” da Germania, Austria o Italia, riceviamo anche il payload della terza fase:

L’esecuzione di questo payload sfrutta un metodo di bypass del controllo dell’account utente, manomettendo il registro di Windows e avviando un processo ad alto livello di integrità: eventvwr.exe (che a sua volta tenta di aprire evenvwr.msc chiamando la funzione ShellExecute).

Le operazioni di scrittura del registro mirano al comando di apertura della shell associato al tipo di file msc. Questo dovrebbe essere aperto da mmc.exe (Microsoft Management Console). Tuttavia, qui gli hacker passano a rundll32.exe per caricare ed eseguire con privilegi elevati il payload dannoso incluso nella DLL lanciata:

Il primo dato interessante sulla DLL utilizzata come componente della terza fase è che la funzione f1 eseguita da rundll32.exe non è presente nella struttura della directory delle esportazioni PE:

Questo viene poi corretto durante l’esecuzione nella routine DllMain, in modo da essere trovato dal processo rundll quando si chiama GetProcAddress:


Oltre a ciò, DllMain è anche responsabile della decrittografia delle stringhe crittografate, del caricamento dinamico delle DLL richieste e della costruzione di una tabella di importazione personalizzata nella sezione “.bss“:

Decodificazione della connessione a Est

La prima azione di f1 è analizzare la riga di comando e cancellare un file specifico che può essere passato come argomento opzionale: rundll32.exe [path to dll], f1 [path to file].

Ciò rimanda a un componente usato in precedenza, un PE dropper collegato a una vecchia campagna di malspam presumibilmente indirizzata all’Ucraina. Se osserviamo il componente corrispondente della prima fase utilizzato allora (un JS dropper), notiamo un fatto interessante: è stato progettato per funzionare solo se il mese attuale è settembre. Questa stranezza significa che non infetterà altri sistemi in quel momento. Sembra che i criminali stessero sperimentando questo metodo di consegna e pare lo abbiano abbandonato.

Il passo successivo consiste nel rilevare le impronte digitali del sistema, ottenendo le informazioni relative alla data e all’ora associate alla shell di Windows (explorer.exe) e interrogando alcuni valori del registro in HKLM\HARDWARE\DESCRIPTION e HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion:
– HKLM\HARDWARE\DESCRIPTION\CentralProcessor\0\Identifier
– HKLM\HARDWARE\DESCRIPTION\CentralProcessor\0\ProcessorNameString
– HKLM\HARDWARE\DESCRIPTION\System\Identifier
– HKLM\HARDWARE\DESCRIPTION\System\SystemBiosDate
– HKLM\HARDWARE\DESCRIPTION\System\VideoBiosVersion
– HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId
– HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
Tutte queste informazioni sono concatenate: le stringhe di caratteri sono unite tra loro da un’estremità all’altra e una serie di 3 hash MD5 è calcolata con l’API CryptHashData. Il primo hash è calcolato sulla base della stringa concatenata originale, mentre gli altri sono i corrispondenti MD5 di quella precedente. Questi sono utilizzati all’interno di un protocollo personalizzato per comunicare con il server C&C:

433 è la porta preferita per le chiamate

Un altro aspetto interessante della comunicazione con l’infrastruttura C&C è che vengono effettuati tentativi di connessione a indirizzi IP casuali sulla porta 443. Questa porta viene regolarmente utilizzata da HTTP su TLS (HTTPS), ma qui abbiamo a che fare con uno speciale protocollo di comunicazione personalizzato. Probabilmente usano questa porta perché non è bloccata dalla maggior parte delle regole di firewall per le connessioni in uscita.

Tenendo conto del fatto che a partire dal settembre 2018 un plug-in Remote Desktop Protocol è stato aggiunto a DanaBot e che tutti gli host contattati con esito positivo sembrano essere host Windows con questa porta RDP aperta, esistono elementi di prova per ritenere che stia prendendo forma una botnet peer-to-peer. Invece del solito set di server C&C, sembra che il payload principale e i suoi plug-in siano forniti da altre macchine infette che non si trovano dietro un firewall router/NAT.

Gli hacker possono far volare il tempo

La ciliegina sulla torta per quanto riguarda il meccanismo di consegna è il modo in cui evita di distribuire il payload quando viene eseguito in un ambiente sandbox (come una piattaforma di analisi del malware), sfruttando un componente responsabile dell’automazione e della funzione di monitoraggio del comportamento (accelerazione temporale).

Lo fa dapprima agganciando l’invio dell’API winsock2:

L’invio agganciato prima ripristina i byte originali non riparati e poi chiama WSAIoctl con un codice di controllo SIO_KEEPALIVE_VALS.

Dopodiché, viene creato un nuovo thread che ha come parametro il socket handle. Questo thread cercherà di eseguire il comando sleep per 20 secondi e poi chiudere il socket.

Nel frattempo, il thread principale chiama l’invio originale. Prevedendo che il back-end sarà correlato con la chiamata di sleep, il closesocket sarà chiamato prima nel caso di un ambiente sandbox, dove viene messa in atto l’accelerazione del tempo (quindi la chiamata di sleep richiede molto meno tempo). Di conseguenza, il back-end riceverà una notifica con un segmento TCP RST e avrà anche l’opportunità di aggiungere l’ID hardware inviato a un elenco di ID hardware vietato, proibendo così alla sandbox di ricevere eventuali “aggiornamenti” futuri.

Dalle nostre conclusioni emerge che i criminali dietro DataBot stanno costruendo con cura la loro infrastruttura di consegna, probabilmente in collaborazione con elementi di altre famiglie di malware. Avira rileva e blocca tutti i componenti che fanno parte di questa struttura di distribuzione con i nomi di rilevamento elencati nella seguente sezione IOC:

ComponenteSHA256Nome di rilevamento
VBS Downloader4a0e84e57709e85b019459daac005e343230

ed6b4b6aabeb910be2638c863bd8

VBS/Dldr.Agent
JS Dropper6b3102f414cb80197598ea82c2502b2eb8b08

a0c9ecf3226961fd7687cf50516

JS/Dldr.Agent
PE Downloader1cc53453be89506bfd42b4d94ccaae0b0e0595

e36fb6e223bdf08231d032a9de

TR/Dldr.Danabot
PE Dropper21b5e1330e5f768da01c235efbeacb284b0376

c9c7bd6d874f55550fc09ca31e

TR/Drop.Danabot
Modulo principale82edc6bc8f5e2a3cefc0d317350e10b884d0e40

ec8e3fd406ad750637e7344db

TR/Spy.Danabot

 

Questo articolo è disponibile anche in: IngleseTedescoFrancese