Che qualcosa di strano era nell’aria con l’update straordinario annunciato da Microsoft lo si era capito. Solitamente Microsoft non sgarra neanche di un’ora con il rilascio delle patch al secondo Martedì del mese, così questo annuncio improvviso di rilascio di una patch lasciava presagire qualcosa di non troppo entusiasmante.

Con il rilascio poi del bollettino identificato come MS08-067 e della successiva patch KB958644 il tutto è risultato molto più chiaro. Una grave falla in stile Blaster e Sasser è stata individuata nel processo nel quale Windows gestisce le richieste RPC, una falla che avrebbe potuto potenzialmente aprire le porte al ritorno del Worm, con la W maiuscola, nel vero senso del termine.

Ma come mai tutta questa fretta nel rilasciare l’aggiornamento? La cosa è ben presto spiegata. Oltre, ovviamente, ad essere una grave falla, è stata silenziosamente utilizzata per alcuni attacchi mirati attraverso del malware.

Microsoft, accortasi dell’exploit analizzando alcuni malware, ha ritenuto opportuno rilasciare un aggiornamento “fuori ciclo” (out-of-band release).

La vulnerabilità, purtroppo, affligge tutti i sistemi operativi Microsoft al momento esistenti: Microsoft Windows 2000 SP4, XP SP2 e SP3, Server 2003 SP1 e SP2, Vista SP1, Server 2008 e, ironia della sorte, anche il nuovo Windows 7 Pre-Beta.

In tutti i sistemi operativi precedenti a Windows Vista (per cui Windows 2008 e Windows 7 esclusi) la vulnerabilità permette l’esecuzione di codice da remoto. Per poter sfruttare questa vulnerabilità nei sistemi operativi Windows Vista, Windows Server 2008 e Windows 7 è necessario che l’attacco provenga da un utente autenticato.

Tradotto in soldoni: chiunque da remoto potrebbe inserire del codice malevolo all’interno del PC sul quale gira il sistema operativo vulnerabile.

Ho usato il condizionale, “potrebbe“, per un motivo ben preciso: Blaster nel 2003 e Sasser nel 2004 hanno ben insegnato che per poter sfruttare la falla, il servizio incriminato (quello vulnerabile) deve poter essere raggiunto dall’esterno. Ma, chiunque possieda un firewall – anche configurato di default – avrà le porte 139 e 445 filtrate, mitigando così la possibilità di attacco. Chiunque navighi dietro router, dietro NAT, non sarà direttamente raggiungibile dall’esterno (a meno di regole specifiche).

Ugualmente, chi è in un’azienda, è difficile che possa ricevere un attacco di questo genere dall’esterno. In questa situazione, tuttavia, il rischio è molto più alto all’interno della LAN locale, dove i PC spesso sono raggiungibili l’un l’altro, piuttosto che dall’esterno verso l’interno.

Ma veniamo alle discussioni più tecniche e vediamo in dettaglio il funzionamento del malware che è stato utilizzato per attacchi mirati.

Il malware, denominato Gimmiv.A, è diviso in molteplici parti.

Il file principale del dropper è chiamato n[x].exe, dove [x] è un numero da 1 a 9. Una volta eseguito, il dropper crea il file sysmgr.dll all’interno della directory %windows%system32wbem. Questa dll è il vero cuore del malware.

Per autoeseguirsi, il malware crea un nuovo servizio

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicessysmgr

facendo eseguire la dll al processo generico svchost.exe.

Una volta eseguito, il malware effettua un ICMP Echo Request verso gli indirizzi IP 202.108.22.44 e 64.233.189.147 inviando la stringa abcde12345fghij6789.

ICMP Echo Request

Effettuato questo step, inizia la routine vera e propria del malware – che a questo punto si può definire trojan.

Il trojan controlla la presenza nel PC infetto di alcuni software di sicurezza verificando l’esistenza delle chiavi di registro dei seguenti software:

  • Kaspersky
  • TrendMicro
  • Symantec
  • BitDefender
  • Microsoft
  • Kingsoft
  • Rising
  • Jiangmin

Inoltre, il malware effettua un controllo dei processi alla ricerca del processo denominato avp.exe o di un processo che contenga la stringa ‘avp‘.

Viene poi individuata la versione del sistema operativo utilizzata.

Dopo di che inizia la vera e propria routine che ruba le informazioni presenti nel sistema operativo della vittima.

Tra i dati collezionati sono presenti le credenziali di Outlook Express, password e credenziali collezionate all’interno del Windows Protected Storage, credenziali di accesso di MSN Messenger, patch installate nel sistema, software installati enumerando la lista dei CLSID (HKEY_LOCAL_MACHINESOFTWAREClassesCLSID), file recentemente utilizzati (attraverso l’analisi della chiave di registro HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersRecent).

MSN password decrypt routine

Tutte le informazioni vengono poi criptate con algoritmo AES e uploadate su un sito web remoto.

Il trojan può creare all’interno della directory %windows%system32wbem anche i file inetproc[n]x.cab (dove [n] è lo stesso numero del nome del dropper n[x]) e scm.bat.

Infine, il trojan scarica, sempre all’interno della directory %windows%system32wbem, i seguenti file:

basesvc.dll, syicon.dll, winbase.dll.

Basesvc.dll in particolare è molto interessante perché è la componente del trojan che sfrutta l’exploit MS08-067 per installare il trojan Gimmiv.A all’interno dei PC vulnerabili.

In dettaglio, la funzione NetPathCanonicalize, fornita dalla libreria netapi32.dll, è risultata vulnerabile ad un attacco di tipo stack overflow. Inviando, dunque, una richiesta RPC malformata con una specifica lunghezza di path è possibile causare uno stack overflow istruendo poi il servizio attaccato ad eseguire codice arbitrario.

Da notare come il malware sembra sia una sorta di ‘test build‘. Il codice è in alcuni punti non ottimizzato, ridondante e usa spesso messaggi di debug. Tutte caratteristiche che lasciano pensare come il malware sia stato scritto ma non totalmente testato e questa release sia più una debug release.

Prevx CSI riconosce e rimuove l’infezione.

È immediatamente necessario installare la patch rilasciata da Microsoft. Se non si utilizza Windows Update o Microsoft Update, l’aggiornamento è scaricabile manualmente da qui.