Kaspersky e il mistero di Duqu

I laboratori della software house moscovita non si danno pace. Cercano di svelare i misteri dietro il malware che fa la spia. Con delle scoperte interessanti: è scritto in un linguaggio sconosciuto

Roma – Si tratta di una novità non da poco, che se confermata getterebbe nuova luce sulla portata dell’affaire Duqu. Stando a quanto sostenuto da Kaspersky, azienda produttrice del software di sicurezza omonimo, parti del codice del malware analizzato in questi mesi alla ricerca di indizi su autori e mandanti del trojan sarebbe stato scritto in un linguaggio di programmazione sconosciuto . Duqu sarebbe il prodotto di uno sforzo di sviluppo e progettazione non indifferente: ora tutto sta a capire chi abbia movente e mezzi per mettere in piedi un’operazione del genere.

Duqu, da più parti definito come “figlio” di Stuxnet, è un malware di cui parecchio si è parlato attorno alla fine del 2011. In circolazione pare dal oltre 12 mesi, a lungo era riuscito a scansare i radar degli antivirus fino a quando Symantec e altri ne avevano rivelato l’esistenza . A differenza di Stuxnet, tuttavia, Duqu sembra un prodotto pensato per attacchi mirati più che per la diffusione indiscriminata: attacchi volti a carpire informazioni riservate e trasmetterle a un server remoto, probabilmente a scopo di spionaggio. A farne le spese pare sia stata soprattutto l’infrastruttura informatica dell’Iran. Particolarità di Duqu: i suoi autori sono stati molto abili a coprire le proprie tracce.

Secondo i tecnici Kaspersky, nel complesso il codice di Duqu è piuttosto normale : si tratta per lo più di un prodotto in C++ elaborato in un Visual Studio 2008 e ivi compilato. Niente di esotico. Più interessante è il meccanismo con cui è stato costruito: moduli indipendenti in grado di funzionare singolarmente, e dunque aperti ad aventuali aggiornamenti di uno solo degli elementi senza che gli altri debbano essere modificati di conseguenza. Su uno di questi però si è concentrata l’attenzione di Kaspersky nell’ultimo periodo: analizzando la DLL del payload scaricato dall’eseguibile base, i tecnici hanno notato che la sezione della libreria dedicata alla comunicazione tra il malware e il centro di comando e controllo remoto ( C&C ), fin qui uno dei segmenti più oscuri della vicenda, non sarebbe frutto di una normale programmazione C++, ma sarebbe stata sviluppata in un linguaggio fino a questo punto non identificato.

Scrivono i ragazzi di Kaspersky: “Il codice della DLL è piuttosto consueta per un binario composto da diversi pezzi di codice. È composta di fette di codice che sono state compilate in un primo tempo in oggetti separati, quindi linkati in una singola DLL. Alcune fette sono comuni a quasi tutti i programmi in C++, come la funzione Standard Template Library (STL), funzioni in runtime e codice originale, eccetto la fetta relativa al codice di interazione con il C&C”. Nel codice analizzato non c’è alcun riferimento a funzioni standard del C++, anche se sembra evidente si tratti del risultato di un linguaggio orientato agli oggetti. Ai tecnici non è rimasta altra scelta che denominarlo “Duqu Framework”, e appellarsi all’intelligenza collettiva della Rete per cercare di scoprirne l’origine.

un esempio di codice del payload dll di duqu

Le cinque caratteristiche principali del framework sono così riassunte:

– tutto è racchiuso in oggetti;
– la function table è piazzata direttamente nella istanza di classe e può essere modificata a posteriori;
– non c’è distinzione tra classi di utility e codice scritto a mano;
– gli oggetti comunicano tramite chiamate definite in dei metodi, esecuzioni differite e callback attivate da eventi;
– non ci sono riferimenti a funzioni delle librerie di runtime, vengono invocate direttamente le API di Windows native.

Ci sono poi altre particolarità realtive a come sono definite le classi e gli oggetti, a come i parametri vengono passati alle funzioni (al contrario di quanto accade solitamente nei linguaggi più conosciuti, i parametri oggetto sono trasferibili alle classi sia in stack che per registro senza apparente preferenza o esclusiva per uno dei due meccanismi). Nel complesso il framework sembra essere guidato da un meccanismo di attivazione ad eventi, generati da chiamate delle API native di Windows o messo in moto durante l’esecuzione di alcuni brani di codice. Un meccanismo per certi versi simile a quello dell’Objective C, secondo Kasperksy: ma stando alle verifiche effettuate non sarebbe scritto in quel linguaggio (non è stato trovato alcun riferimento a funzioni conosciute), nè sarebbe compilato con un software noto.

Kaspersky sta tentando da qualche settimana di venire a capo del mistero: fino a questo punto sembrerebbe escluso che si tratti di codice C++, Objective C, Python, Ada, Lua, Java . I tecnici aggiungono di aver anche indagato oltre, esplorando alternative piò o meno esotiche: nessuno è stato in grado fino a questo punto di ricondurre il codice ricavato dal reverse engineering della DLL a un contesto conosciuto. Addirittura “vista la dimensione del Progetto Duqu, è possibile che un team diverso da quello che ha sviluppato il malware fosse responsabile solamente per la creazione del framework”. Un lavoro di squadra coordinato, frutto evidentemente di un team organizzato, in cui addirittura il codice potrebbe essere stato partorito da gruppi di sviluppatori diversi e divisi in compartimenti stagni, senza una visione complessiva dell’intero quadro.

L’ipotesi più accreditata fino a questo punto è che sia stato sviluppato un framework originale che facesse da intermediario per la creazione di codice C : una modalità di lavoro inusuale e poco economica sotto il profilo tecnico, e che suscita più domande di quante risposte fin qui sia stato possibile fornire. “Facciamo un’appello alla comunità degli sviluppatori – concludono i tecnici Kaspersky – Chiediamo a chiunque riconosca framework, toolkit o il linguaggio di programmazione in grado di generare quel tipo di costrutto di codice di contattarci”. Potrebbe trattarsi di un lavoro sperimentale o di un suo derivato, e rintracciarne l’origine aiuterebbe a circoscrivere il perimetro entro cui alimentare le ricerche per individuare gli autori del malware.

Luca Annunziata

La tua email sarà utilizzata per comunicarti se qualcuno risponde al tuo commento e non sarà pubblicato. Dichiari di avere preso visione e di accettare quanto previsto dalla informativa privacy

  • brain scrive:
    le capacità algoritmiche...
    Una nuova e potentissima funzione rand() :D
  • diego scrive:
    Ummm e poi cosa SkyNET???
    come da oggetto, nn è che mi piaccia molto la piega che stà prendendo questa faccenda, lo so posso sembrare esagerato,ma preferisco mille volte un omino, ad una fredda macchina. E poi conoscendo quanto l'essere umano tenda a fare XXXXXXX, non vorrei che nel futuro deleghiamo tutto ad una sola entità solo perchè fà le cose meglio. lasciando che sfugga di mano il controllo.Se non mi sbaglio nel concorso di jeopardy, gli stessi sviluppatori alcune volte avevano dei dubbi su come avrebbe risposto, perchè avevano leggermente perso il punto di vista della macchina stessa.
    • iRoby scrive:
      Re: Ummm e poi cosa SkyNET???
      Indipendentemente dalle implicazioni fantascientifiche, dell'applicazione di queste macchine mi preoccupa l'implicazione etica ed economica.Cioè questi computer+programmi analizzano e consigliano speculazioni finanziarie, indipendentemente da quante vite umane e posti di lavoro quelle transazioni possano costare.Parlo di speculazioni sul cibo, sull'energia, sull'acqua, sui mutui ipotecari. E quindi quanta gente perde la casa o il lavoro e si suicida. Oppure ancora quanti moriranno di fame per la speculazione sui prezzi di cereali ed altri generi alimentari.L'unico utilizzo buono che ho visto di questi supercomputer è nella società cibernetica teorizzata da Jacues Fresco nel suo Progetto Venere.Dove si toglie agli uomini il controllo sulle risorse del pianeta e si affida ad un mainframe a sorgente aperto. Che calcoli quali e quante risorse il pianeta può rinnovare ogni anno, e provveda a calcolare lo sfruttamento e la divisione equa alle popolazioni del pianeta.Parlo di legname, minerali, pesce, cereali, energie rinnovabili, ecc.Lì è un uso etico, il computer non farà differenza tra chi è più o meno meritevole di quelle risorse e le dividerà in parti uguali dopo avere calcolato quanto se ne può prelevare dalle varie regioni della terra.
      • krane scrive:
        Re: Ummm e poi cosa SkyNET???
        - Scritto da: iRoby
        Indipendentemente dalle implicazioni
        fantascientifiche, dell'applicazione di queste
        macchine mi preoccupa l'implicazione etica ed
        economica.
        Cioè questi computer+programmi analizzano e
        consigliano speculazioni finanziarie,
        indipendentemente da quante vite umane e
        posti di lavoro quelle transazioni possano
        costare.
        Parlo di speculazioni sul cibo, sull'energia,
        sull'acqua, sui mutui ipotecari. E quindi quanta
        gente perde la casa o il lavoro e si suicida.
        Oppure ancora quanti moriranno di fame per la
        speculazione sui prezzi di cereali ed altri
        generi alimentari.Nulla che non si faccia gia' senza macchine, stiamo rapinando l'africa mentre facciamo morire di fame la gente, con gli usa bombardiamo in allegria i paesi arabi dopo aver fomentato rivolte.Insomma dubito che le macchine siano in grado di inventarsi qualcosa che un essere umano non abbia gia' pensato.
      • pedro scrive:
        Re: Ummm e poi cosa SkyNET???
        già l'omino della banca è lì, istituzionalmente per fregarti dei soldi. Non esiste un solo promotore finanziario che non abbia quello scopo e quell'obbligo, è il suo lavoro c'è poco da fare. Il supercomputer potrà gestire in contemporanea un potenziale infinito di clienti online, senza bisogno di metterci la faccia, né personale preposto. Credo sia comunque un vantaggio per tutti, perché i promotori, come i venditori porta a porta, i callcenteristi (venditori), sono la feccia dell'umanità.. meglio un pc
Chiudi i commenti