Duqu è una matrioska maligna

Introduzione

Il 1 settembre 2011, un file denominato ~DN1.tmp è stato inviato al sito Web VirusTotal dall'Ungheria. A quel tempo, il file veniva rilevato come dannoso solo da due motori antivirus: BitDefender e AVIRA. Così è iniziata la storia di Duqu. Guardando al futuro, va detto che la famiglia di malware Duqu prende il nome da questo file. Tuttavia, questo file è un modulo spia completamente indipendente con funzioni di keylogger, probabilmente installato con l'aiuto di un downloader dropper dannoso, e può essere considerato solo come un "carico utile" scaricato dal malware Duqu nel corso del suo funzionamento, ma non come parte integrante parte (modulo) di Duqu . Uno dei componenti Duqu è stato inviato al servizio Virustotal solo il 9 settembre. La sua caratteristica distintiva è un driver firmato con firma digitale di C-Media. Alcuni esperti hanno immediatamente iniziato a tracciare analogie con un altro noto esempio di malware: Stuxnet, che utilizzava anch'esso driver firmati. Il numero totale di computer infettati da Duqu, rilevati da varie società di antivirus in tutto il mondo, è nell'ordine delle decine. Molte aziende sostengono che l’Iran sia ancora una volta l’obiettivo principale, ma a giudicare dalla geografia della distribuzione dei contagi, questo non si può dire con certezza.
Duqu è una matrioska maligna
In questo caso, si dovrebbe parlare con sicurezza solo di un'altra azienda con una parola nuova APT (minaccia persistente avanzata).

Procedura di implementazione nel sistema

Un'indagine condotta da specialisti dell'organizzazione ungherese CrySyS (Laboratorio ungherese di crittografia e sicurezza dei sistemi dell'Università di tecnologia ed economia di Budapest) ha portato alla scoperta di un installer (dropper) attraverso il quale il sistema è stato infettato. Si trattava di un file Microsoft Word con un exploit per la vulnerabilità del driver win32k.sys (MS11-087, descritto da Microsoft il 13 novembre 2011), responsabile del motore di rendering dei caratteri TTF. Lo shellcode dell'exploit utilizza un carattere incorporato nel documento chiamato "Dexter Regular" e Showtime Inc. è accreditato come il creatore del carattere. Come puoi vedere, i creatori di Duqu non sono estranei al senso dell'umorismo: Dexter è un serial killer, l'eroe dell'omonima serie televisiva, filmata da Showtime. Dexter uccide (se possibile) solo i criminali, cioè infrange la legge in nome della legge. Probabilmente, in questo modo, gli sviluppatori di Duqu ironizzano sul fatto di essere impegnati in attività illegali per buoni scopi. L'invio di lettere via e-mail è stato effettuato intenzionalmente. Per l'invio, molto probabilmente, sono stati utilizzati come intermediari computer compromessi (hackerati) per rendere difficile il tracciamento.
Il documento Word conteneva quindi i seguenti componenti:

  • contenuto testuale;
  • carattere incorporato;
  • sfruttare Silkcode;
  • autista;
  • programma di installazione (DLL).

In caso di esecuzione riuscita, lo shellcode dell'exploit eseguiva le seguenti operazioni (in modalità kernel):

  • è stato eseguito un controllo per la reinfezione, per questo è stata verificata l'esistenza della chiave 'CF4D' nel registro in 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones1', se era vera, lo shellcode ha completato la sua esecuzione;
  • sono stati decrittografati due file: driver (sys) e programma di installazione (dll);
  • il driver è stato inserito nel processo services.exe e avviato il programma di installazione;
  • alla fine, lo shellcode si è cancellato con degli zeri in memoria.

Eseguendo win32k.sys come utente root "Sistema", gli sviluppatori di Duqu hanno risolto elegantemente il problema sia del lancio che dell'elevazione non autorizzati (esecuzione con un account utente con privilegi limitati).
L'installatore, dopo aver ricevuto il controllo, ha decifrato tre blocchi di dati in memoria contenenti:

  • driver firmato (sys);
  • modulo principale (dll);
  • dati di configurazione installatore (pnf).

Nei dati di configurazione dell'installatore è stato specificato un intervallo di date (sotto forma di due timestamp: inizio e fine). Il programma di installazione ha controllato se la data corrente rientra in essa, in caso contrario ha completato la sua esecuzione. Inoltre, nei dati di configurazione installatore, sono stati indicati i nomi con cui sono stati salvati il ​​driver e il modulo principale. In questo caso il modulo principale è stato salvato su disco in forma crittografata.

Duqu è una matrioska maligna

Per avviare automaticamente Duqu, è stato creato un servizio che utilizza un file driver che decrittografa al volo il modulo principale, utilizzando le chiavi memorizzate nel registro. Il modulo principale contiene il proprio blocco dati di configurazione. Al primo avvio è stato decrittografato, è stata inserita la data di installazione, dopodiché è stato nuovamente crittografato e salvato dal modulo principale. Pertanto, nel sistema interessato, durante l'installazione riuscita, sono stati salvati tre file: il driver, il modulo principale e il file dei dati di configurazione, mentre gli ultimi due file sono stati archiviati su disco in forma crittografata. Tutte le procedure di decrittazione sono state eseguite solo in memoria. Questa complessa procedura di installazione è stata utilizzata per ridurre al minimo la possibilità di rilevamento da parte del software antivirus.

Il modulo principale

Modulo principale (risorsa 302), a cura di информации di Kaspersky Lab, scritto utilizzando MSVC 2008 in puro C, ma utilizzando un approccio orientato agli oggetti. Questo approccio è insolito quando si sviluppa codice dannoso. Di norma, tale codice è scritto in C per ridurre le dimensioni ed eliminare le chiamate implicite inerenti al C ++. Anche qui c'è una simbiosi. Inoltre, è stata utilizzata un'architettura orientata agli eventi. I dipendenti di Kaspersky Lab sono propensi alla teoria secondo cui il modulo principale è stato scritto utilizzando un componente aggiuntivo del preprocessore che consente di scrivere codice in C in uno stile oggetto.
Il modulo principale è responsabile della procedura di ricezione dei comandi dagli operatori. Duqu offre diversi modi per interagire: utilizzando i protocolli HTTP e HTTPS, nonché utilizzando pipe denominate (pipe). Per HTTP(S) vengono specificati i nomi di dominio dei centri di comando, mentre era possibile lavorare tramite un server proxy: veniva loro assegnato un nome utente e una password. Al canale viene assegnato un indirizzo IP e un nome di canale. I dati indicati vengono memorizzati nel blocco dati di configurazione del modulo principale (crittografati).
Per utilizzare le pipe denominate, è stata avviata un'implementazione personalizzata del server RPC. Supportava le seguenti sette funzioni:

  • restituire la versione installata;
  • iniettare dll nel processo specificato e chiamare la funzione specificata;
  • caricare la DLL;
  • avviare un processo chiamando CreateProcess();
  • leggere il contenuto del file specificato;
  • scrivere i dati nel file specificato;
  • eliminare il file specificato.

Le named pipe potrebbero essere utilizzate all'interno della rete locale per distribuire moduli aggiornati e dati di configurazione tra i computer infetti da Duqu. Inoltre Duqu poteva fungere da server proxy per altri computer infetti (che non avevano accesso a Internet a causa delle impostazioni del firewall sul gateway). Alcune versioni di Duqu non disponevano della funzionalità RPC.

"Carichi utili" conosciuti

Symantec ha identificato almeno quattro "carichi utili" caricati su comando dal centro di controllo Duqu.
Tuttavia, solo uno di essi era residente e compilato come file eseguibile (exe), che veniva salvato su disco. I restanti tre sono stati implementati come librerie dll. Sono stati caricati dinamicamente ed eseguiti in memoria senza essere salvati su disco.

Il "carico utile" residente era un modulo spia (Infostealer) con funzioni di keylogger. È stato con l'invio a VirusTotal che è iniziato il lavoro sulla ricerca Duqu. La principale funzionalità di spionaggio era nella risorsa, i primi 8 kilobyte della quale contenevano parte della foto della galassia NGC 6745 (per mascheramento). Va ricordato che nell'aprile 2012 alcuni media hanno pubblicato informazioni (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506) secondo cui l'Iran era stato esposto a una sorta di malware Stars, mentre i dettagli di l'incidente non è stato divulgato. È possibile che proprio un campione del genere del "carico utile" Duqu sia stato scoperto allora in Iran, da cui il nome "Stars" (stelle).
Il modulo spia ha raccolto le seguenti informazioni:

  • elenco dei processi in esecuzione, informazioni sull'utente corrente e sul dominio;
  • elenco delle unità logiche, comprese quelle di rete;
  • screenshot;
  • indirizzi delle interfacce di rete, tabelle di routing;
  • file di registro delle sequenze di tasti della tastiera;
  • nomi delle finestre delle applicazioni aperte;
  • elenco delle risorse di rete disponibili (risorse di condivisione);
  • un elenco completo di file su tutte le unità, comprese quelle rimovibili;
  • elenco dei computer nell'"ambiente di rete".

Un altro modulo spia (Infostealer) era una variante di quella già descritta, ma compilata come libreria dll, da essa furono rimosse le funzioni del keylogger, la compilazione di un elenco di file e l'enumerazione dei computer inclusi nel dominio.
Modulo successivo (ricognizione) informazioni di sistema raccolte:

  • se il computer fa parte di un dominio;
  • percorsi alle directory di sistema di Windows;
  • versione del sistema operativo;
  • nome dell'utente corrente;
  • elenco degli adattatori di rete;
  • sistema e l'ora locale, nonché il fuso orario.

Ultimo modulo (prolungamento della durata della vita) implementata una funzione per incrementare il valore (memorizzato nel file dati di configurazione del modulo principale) del numero di giorni rimanenti alla fine del lavoro. Per impostazione predefinita, questo valore è stato impostato su 30 o 36 giorni a seconda della modifica di Duqu e diminuito di uno ogni giorno.

centri di comando

Il 20 ottobre 2011 (tre giorni dopo la pubblicazione della scoperta), gli operatori Duqu hanno condotto una procedura per distruggere le tracce dell'attività dei centri di comando. I centri di comando erano ospitati su server hackerati in tutto il mondo: in Vietnam, India, Germania, Singapore, Svizzera, Gran Bretagna, Olanda, Corea del Sud. È interessante notare che tutti i server identificati eseguivano le versioni CentOS 5.2, 5.4 o 5.5. I sistemi operativi erano sia a 32 bit che a 64 bit. Nonostante tutti i file relativi al funzionamento dei centri di comando siano stati cancellati, gli specialisti di Kaspersky Lab sono riusciti a recuperare alcune informazioni nei file LOG dallo spazio vuoto. Il fatto più interessante è che gli aggressori sui server hanno sempre sostituito il pacchetto OpenSSH 4.3 predefinito con la versione 5.8. Ciò potrebbe indicare che una vulnerabilità sconosciuta in OpenSSH 4.3 è stata utilizzata per hackerare i server. Non tutti i sistemi sono stati utilizzati come centri di comando. Alcuni, a giudicare dagli errori nei log sshd durante il tentativo di reindirizzare il traffico per le porte 80 e 443, sono stati utilizzati come server proxy per connettersi ai centri di comando finali.

Date e moduli

Un documento Word distribuito nell'aprile 2011, esaminato da Kaspersky Lab, conteneva un driver di download del programma di installazione con una data di compilazione pari al 31 agosto 2007. Un driver simile (dimensione - 20608 byte, MD5 - EEDCA45BD613E0D9A9E5C69122007F17) nel documento arrivato al laboratorio CrySys aveva una data di compilazione del 21 febbraio 2008. Inoltre, gli esperti di Kaspersky Lab hanno trovato il driver di esecuzione automatica rndismpc.sys (dimensione - 19968 byte, MD5 - 9AEC6E10C5EE9C05BED93221544C783E) datato 20 gennaio 2008. Non è stato trovato alcun componente contrassegnato con 2009. Sulla base dei timestamp di compilazione delle singole parti di Duqu, il suo sviluppo potrebbe risalire agli inizi del 2007. La sua prima manifestazione è associata al rilevamento di file temporanei del tipo ~DO (probabilmente creati da uno spyware), la cui data di creazione è il 28 novembre 2008 (articolo "Duqu & Stuxnet: una cronologia di eventi interessanti"). La data più recente relativa a Duqu è il 23 febbraio 2012, contenuta in un driver di download del programma di installazione scoperto da Symantec nel marzo 2012.

Fonti di informazione utilizzate:

serie di articoli su Duqu di Kaspersky Lab;
Rapporto degli analisti Symantec "W32.Duqu Il precursore del prossimo Stuxnet", versione 1.4, novembre 2011 (pdf).

Fonte: habr.com

Aggiungi un commento