Il 28 maggio scorso l'Iranian National CERT (MAHER) ha annunciato di aver individuato un nuovo malware, battezzato con il codename Flame a causa della presenza ripetuta di questo termine all'interno di uno dei moduli di cui è composto. Quasi contemporaneamente sia Kaspersky Lab che CrySys hanno pubblicato un'analisi del malware, classificandolo con altri nomi come sKyWIper o Flamer, ma si tratta comunque sempre dello stesso oggetto. In Fig. 1 è riportato uno screenshot del sito iraniano che ha segnalato il rilevamento.
Per quanto sia stato rilevato solo ora, si ritiene che il malware sia attivo almeno dal 2010 (se non dal 2007) e che in questi anni abbia sottratto consistenti quantità di dati, colpendo soprattutto sistemi localizzati in Iran, ma un po' in tutto il Medio Oriente, Israele compresa. In Fig. 2 è visibile la diffusione geografica del malware, così come rilevato dai ricercatori iraniani:
La complessità di Flame, la sua modularità, il linguaggio utilizzato per realizzarlo, l'infrastruttura messa in piedi e tanti altri fattori rendono il virus un vero e proprio toolkit per il cyber-espionage. Secondo quanto riportato dai vari centri di ricerca, per la costruzione della rete di C&C server (command-and-control servers, tipici delle botnet) sono stati utilizzati almeno 86 domini, la cui risoluzione DNS ha portato all'individuazione di 24 indirizzi IP distribuiti tra Germania, Polonia, Malesia, Lituania, Svizzera, Turchia, Olanda, Hong Kong e altre aree geografiche.
Il meccanismo di scambio dati (criptati) è anche tipico delle botnet: ogni volta che un host compromesso da Flame stabilisce una connessione con uno dei domini utilizzati per condurre l'attacco, inizia ad effettuare l'upload di dati in forma compressa e criptata. I pacchetti di dati inviati comprendono anche dei log che registrano l'intera attività condotta dal malware sulla macchina "ospite", compresa la lista dei file inviata agli attacker. Una delle particolarità è che la password ("LifeStyle2") utilizzata dagli host per farsi riconoscere dai server, è scritta direttamente nel codice di Flame, anche se può essere cambiata. Un altro aspetto interessante è il fatto che, per ottimizzare la quantità di dati da inviare ai server C&C, il malware estrae solo un 1 kb di dati da ogni documento (PDF, DOC, XLS, etc.) trovato sui computer infetti, dopodiché se il documento viene ritenuto interessante, il malware ne effettua l'upload completo.
Flame: trojan, worm o backdoor?
Dalle varie analisi effettuate si è subito compreso che non si trattava di un semplice worm, ma di qualcosa di molto più sofisticato e complesso. Innanzitutto Flame presenta una struttura modulare e, per questo motivo, alcuni lo hanno paragonato a Duqu. In realtà Flame è un prodotto molto più articolato, "pesa" circa 20 MB e contiene al suo interno un vero e proprio "arsenale" costituito da molte librerie (tra cui quelle necessarie alla compressione dei dati, come zlib, libbz2, ppmd), moduli per la manipolazione dei dati (sqlite3), DLLs, algoritmi di encryption, script e una macchina virtuale contenente un'implementazione Lua. Lua è un linguaggio di programmazione facilmente interfacciabile a moduli scritti in C e in C++. Sembra che la logica seguita dagli sviluppatori sia stata quella di scrivere i moduli top-level in Lua e interfacciarli con librerie compilate in C++. Si tenga presente, per comprendere la complessità del sistema, che le sole righe di codice della porzione scritta in Lua ammontano ad oltre 3000 righe.
Flame presenta, in sintesi, le seguenti caratteristiche:
- si propaga attraverso supporti removibili o reti locali;
- effettua attività di network sniffing, rilevando risorse di rete disponibili e collezionando liste di password vulnerabili;
- effettua una scansione dei dischi dei sistemi infettati alla ricerca di specifici tipi di file;
- crea una serie di screenshots del desktop dell'utente quando sono in esecuzione determinati processi o finestre attive;
- interagisce anche con l'hardware della macchina pilotando il microfono per registrare suoni provenienti dall'ambiente circostante (una sorta di intercettazione ambientale...) o registrando i keystroke della tastiera;
- trasferisce i dati raccolti ad una serie di C&C servers, utilizzando più di 10 domini e attraverso connessioni cifrate (via SSH e HTTPS);
- non viene rilevato dalla maggior parte degli antivirus e antimalware (in realtà tutti i maggiori produttori stanno ora rilasciando removal tools e aggiornamenti);
- colpisce Windows Xp, Vista e Windows 7.
Il meccanismo di infezione
Flame utilizza vari vettori di attacco per infettare i propri target: siti web (eventualmente compromessi), e-mail di phishing, USB drives, computer già infettati. In particolare sono stati individuati un paio di moduli, denominati "Autorun Infector" ed "Euphoria", che sarebbero responsabili dell'infezione di dischi USB. Per quanto riguarda invece la diffusione nelle LAN, Flame sfrutterebbe la vulnerabilità del print spooler di Microsoft, classificata con il codice MS10-061. Questa vulnerabilità, che consente la remote code execution, era già stata sfruttata da Stuxnet nel 2010. In sostanza, quando viene eseguito da utente con privilegi di amministratore su un domain controller, Flame attacca gli altri host della rete creando degli user accounts "backdoor" con una password predefinita, che viene utilizzata per autocopiarsi sulle macchine da infettare. In Fig. 3 è schematizzato il meccanismo di infezione.
Il MAHER ha pubblicato anche una lista di componenti (essenzialmente .ocx e .sys) che vengono installati e utilizzati da Flame e che possono essere ritrovati all'interno del sistema "ospite", nonchè la chiave di registro che dimostra l'avvenuta infezione. In Fig. 4 sono visibili questi elementi:
Come accennavamo sopra, tutti i produttori di antivirus/antimalware stanno rilasciando tools e patch "anti-Flame". Il primo a farlo è stato ovviamente lo stesso MAHER, il cui removal tool è scaricabile qui. Anche Bitdefender ne ha rilasciato uno ed è scaricabile sia nella versione a
32-bit che a
64-bit. A ruota, Microsoft ha pubblicato un Security Advisory in cui spiega come i creatori di Flame abbiano utilizzato certificati digitali (utilizzati da Microsoft per il trust dell'infrastruttura di licensing del Terminal Server e derivati dalla Microsoft Certification Authority) per firmare digitalmente il malware. A seguito di ciò, Microsoft ha quindi revocato i seguenti certificati digitali:
- Microsoft Enforced Licensing Intermediate PCA (2 certificates)
- Microsoft Enforced Licensing Registration Authority CA (SHA1)
Nel contempo sono stati apportati una serie di cambiamenti al sistema di licensing del Terminal Server per evitare che simili problemi possano verificarsi in futuro. Un'analisi completa è disponibile qui. Consigliamo quindi di procedere immediatamente ad effettuare un Microsoft Update.
Alcune considerazioni
Chi c'è dietro Flame? Si tratta dello stesso gruppo responsabile della diffusione di Duqu e/o Stuxnet? Flame è almeno 20 volte più "grosso" di Duqu e non utilizza la piattaforma Tilded, utilizzata per lo sviluppo di Duqu. Molte invece sarebbero le analogie tra Flame e Stuxnet. Un recente studio di Kaspersky ha dimostrato come Stuxnet, nelle varianti del 2009, abbia usato un modulo creato dagli autori di Flame, salvo poi rimuoverlo nelle versioni successive che hanno preso strade diverse rispetto a Flame. Certamente si tratta di un gruppo di top developers che hanno agito su commissione (forse del governo degli Stati Uniti come dimostrato da un articolo del New York Times). Esistono infatti 3 categorie di sviluppatori di malware: cybercriminals, attivisti ("hacktivists") e Stati Nazionali. I primi lo fanno esclusivamente per sottrarre denaro, i secondi per motivi politico-sociali e i terzi finanziano dei gruppi di sviluppo, con skill di programmazione molto elevati, per ottenere informazioni su Stati nemici o potenzialmente tali. Poiché Flame non è né progettato per rubare denaro né somiglia lontanamente ai tools (generalmente più "semplici") utilizzati dagli attivisti (come Anonymous) per condurre le proprie azioni, resta solo la terza ipotesi.
È stato inoltre notato un particolare interesse per i file contenenti progetti e disegni realizzati in AutoCAD, il che porterebbe a supporre che Flame venga utilizzato anche per l'information gathering di dati relativi a infrastrutture critiche, in modo tale da prepare il terreno per un successivo e mirato attacco.