Due settimane e molti messaggi dopo, i tecnici di Kaspersky Lab dicono di aver risolto il dilemma: il misterioso linguaggio di programmazione in cui sono scritte alcune parti del malware noto come Duqu, un trojan parente stretto di Stuxnet, altro non è che un dialetto del notissimo linguaggio C. Niente di totalmente esotico, non foss’altro che si tratta di un paradigma di solito appannaggio di Mac OS e traslato per l’occasione in casa Windows. Con molti ringraziamenti a tutti coloro che hanno fornito spunti e indizi per venire a capo della questione.
Stando a quanto raccontato dai ricercatori del laboratorio russo, tra i molti consigli arrivati ce n’erano diversi che riscuotevano più consenso di altri: LISP e tutte le sue varianti, Delphi, vecchi compilatori C++ e persino il neonato Google Go sembravano tutti probabili candidati. Alla fine, tra i vari commenti ce ne sono stati un paio che hanno avvicinanto la risposta: uno in cui si è citato espressamente SOO , Simple Object Orientation for C (le cui specifiche sono state pubblicate dopo la diffusione di Duqu), l’altro che suggeriva l’utilizzo di MSVC versione 2008 per la complilazione.
Dopo un po’ di tentativi, i Kaspersky Lab hanno ristretto il cerchio: il codice del payload di Duqu, la parte che collega il malware ai suoi centri di comando & controllo , sarebbe scritto in un dialetto del C noto ai più come “OO C” (Object Oriented C), compliato nella release 2008 di Microsoft Visual Studio con le opzioni “/O1” ( minimize size ) e “/Ob1” ( expand only __inline ) attive. Gli esperimenti in tal senso sembrano aver dato riscontro positivo, confermando con un buon grado di attendibilità questa ipotesi: un certo numero di macro sembra essere stato inglobato nel framework per velocizzare la scrittura del codice, e cercando di evitare scientemente l’uso del C++ pur volendo lavorare con un linguaggio a oggetti. L’idea del meccanismo ad eventi alla base di OO C , a ogni modo, è tipico dell’ObjectiveC, linguaggio principe di OS X.
Le conclusioni di Kaspersky sono le seguenti: Duqu, come anche Stuxnet, gode di un’attenzione al modo in cui è stato realizzato piuttosto singolare, di certo non usuale per un malware. Dietro la costruzione di Duqu si intravede un design dell’architettura del software ricercato, così come insolita è la scelta del linguaggio di programmazione del payload: il fatto che una porzione del binario sia stata realizzata in questo modo fa pensare o al coinvolgimento di diverse entità che hanno collaborato, più o meno consapevolmente, alla realizzazione di un malware complesso quale è Duqu, o comunque almeno al contributo di almeno uno sviluppatore professionista (non uno studente alle prime armi) con una cultura e un’esperienza in fatto di programmazione non indifferente.
La decisione da parte degli autori di Duqu di ricorrere a una soluzione insolita per creare il proprio malware non è così rara, ma pone alcune difficoltà in più agli analisti che devono a posteriori analizzare i binari in cerca di indicazioni sul comportamento del trojan. A differenza di Stuxnet, in ogni caso, che pure condivide con Duqu la cura con cui è stato confezionato, il malware in questione non è stato pensato per la massima viralità: mentre Stuxnet ha avuto un’ampia diffusione globale, per il momento Duqu rimane abbastanza confinato geograficamente a Europa e Medioriente, e non sono presenti nel codice indicazioni specifiche per rintracciarne gli autori o dedurne la nazionalità.
Luca Annunziata