mercoledì 20 ottobre 2010

Murofet, il nuovo worm ruba password


Nel corso degli ultimi giorni si sta diffondendo in rete un nuovo malware chiamato Murofet che per molti versi ricorda il purtroppo ancora molto attivo worm Conficker. Stando alle informazioni riportate sul blog di PrevX, la sua pericolosità sta nel fatto che è in grado di infettare altri file memorizzati sul computer dell’utente e di rubarne le password per inviarle ad apposito server remoto. Per infettare il PC, Murofet “inietta” circa 2.000 byte di codice binario all’interno di un file eseguibile che, quando viene avviato, scarica sul disco rigido il worm.

Quando il file infetto viene eseguito, il codice inserito importa alcune API utilizzate dal malware per creare un nuovo thread virale e quindi consentire l'esecuzione dell'applicazione infetta. La routine di importazione API utilizza un trucco ben noto per nascondere il nome delle API che saranno importate. La tabella della routine di esportazione della libreria analizza e crea un hash di tutti i nomi delle API utilizzando un semplice ROR / ADD loop

Poi il malware confronta il nuovo hash generato con quella che si sta cercando. Questa tecnica è ampiamente usata in molte shellcode in quanto rende il lavoro di importazione API più veloce e più piccolo in termini di dimensioni. Poi si stabilisce un nuovo thread con una chiamata attraverso l'API CreateThread, lasciando il software originale in esecuzione. Il filo virale creato è davvero interessante perchè il codice iniettato non cerca semplicemente di scaricare il malware da uno o più indirizzi (URL) prefissati, ma genera domini in modo dinamico-casuale, attraverso un generatore pseudo-random, basandosi sull'ora locale del PC infettato. 

Questo ricorda chiaramente la famigerato routine di Conficker che era in grado di generare migliaia di nuovi domini, utilizzati per scaricare malware addizionali sulla macchina infetta. Nell'arco di una giornata il codice è potenzialmente in grado di generare fino a 1020 domini unici da verificare. La routine inizia a provare a collegarsi al primo dominio generato e in caso di risposta negativa, attende per un secondo prima di rigenerare un secondo indirizzo; il ciclo viene ripetuto 800 volte, oppure termina non appena il codice iniettato riesce a scaricare il malware sul sistema. 


La routine di generazione di dominio è basata sul corrente anno, mese, giorno e il minuto esatto in cui è eseguito. Poi, il loop per 800 volte, aumenta il valore derivato dal primo minuto corrente. Questo significa che in un giorno potrebbe potenzialmente generare fino a 48.000 domini - 800 volte per ogni minuto - anche se non sono tutti domini unici. Ci sono circa 1.020 domini unici ogni giorno, che vengono verificati in un ciclo.

All'inizio il malware controlla l'ora di sistema chiamando la funzione GetSystemTime API. Questo è il valore di base che verrà utilizzato per la generazione della routine di dominio pseudo-casuale. Il valore dei minuti è poi moltiplicato per 17 (0x11). Questo potrebbe essere definito come il valore derivato, sarà una parte molto importante del ciclo di generazione. Il ciclo inizia adesso: il valore derivato è diviso per 0x3FC, il resto viene salvato come nuovo valore di derivazione e il malware viene allocato in un nuovo buffer che contiene 8 byte. 

Il primo byte è il byte inferiore dell'anno aumentato di 0x30. Il secondo byte è il mese. Il terzo byte è il giorno. Il quarto byte è impostato su 0. Il valore DWORD derivato 'and' è l'assembly 0xFFFFFFFE ed è posto al quinto byte del buffer. Il buffer riempito è ora pronto per essere 'xor' con la chiave 0xD6D7A4BE. Il buffer finale è poi l'hash calcolato utilizzando le API di Windows Crypto e il relativo MD5. Dopo alcune operazioni matematiche sul valore 128 bit MD5, l'hash viene convertito in stringa e diventa il dominio generato. Solo i bytes che sono minori o uguali a 0x7A ('z') sono usati per il nome di dominio. 

Poi, il malware sceglie il dominio di primo livello generico da utilizzare tra .biz, .info, .org, .com e .net. La routine sceglie il dominio di primo livello a destra, analizzando il valore derivato. Se può essere diviso per 5, saranno utilizzati .Biz. Invece se può essere diviso per 3, sarà scelto .Org. Se il byte inferiore 'and' con 3 è uguale a 0 sarà utilizzato .Info. In caso contrario saranno scelte .Com e .Net. Il dominio generato è pronto per essere controllato con una chiamata a UrlDownloadToFileA. Se il dominio non risponde, il filo virale viene letto per 1 secondo, aumenta il valore derivato da 1 ed esegue nuovamente il generatore di dominio. Questo ciclo viene eseguito 800 volte, dopo che è terminato il thread.


La cosa interessante è che non esiste alcun controllo mutex, ciò significa che se più file infetti vengono eseguiti sullo stesso sistema, ognuno di questi eseguirà il ciclo di generazione 800 volte. Questo potrebbe costituire un serio problema per i sistemi DNS. Per verificare se il sistema è già infetto, basta individuare il codice downloader guardando il valore "Microsoft", sotto la chiave

HKEY_CURRENT_USER \ Software \ Microsoft chiave di registro.

Se il valore presente è impostato su 1, il sistema è già infettato da Murofet e lo stub downloader del file infetto in esecuzione terminato. Se il malware viene scaricato correttamente, il loop di generazione del dominio termina e il malware viene installato sul sistema. E 'in grado di rubare dati sensibili (user name, password, ecc.) dalle applicazioni browser agganciando le API specifiche. Tutti i dati rubati vengono crittografati e inviati a un server specifico. 

Per rimanere invisibile al sistema, il trojan inietta il suo codice all'interno dei processi explorer.exe e ctfmon.exe. Potrebbe infettare anche altri file eseguibili, iniettando in essi il codice downloader descritto sopra. Il codice principale del malware è offuscato e criptato. Al momento ci sono solo alcuni link attivi e funzionanti. La maggior parte di essi puntano all'IP 195.189.226.107, ma è altamente probabile che l'indirizzo verrà variato più spesso non appena il worm riuscirà ad infettare un maggior numero di sistemi. 

Questo malware potrebbe diventare un altro caso Conficker, rubando dati sensibili dal PC e sovraccaricando i server DNS, causando grossi problemi - come è successo in Italia alcuni anni fa a causa delle attività di spam pesanti causate dal rootkit Rustock. I metodi di propagazione sono molteplici: quando si scarica per esempio una fantomatica crack o un allegato di una email, si lancia l'.exe e si riceve il virus.

Nessun commento:

Posta un commento