F Sharp, Iron Python, CPLEX LIB, High-Level Assembly, LISP, Erlang son sólo algunos nombres de lenguajes de programación en los que podría ser escrito el marco de Duqu. Sin embargo, es incierto cuál de ellos es, pero una cosa está clara, el marco del malware es diferente de cualquier otra cosa previamente analizada por los expertos de Kaspersky.
Los investigadores determinaron que la biblioteca Payload de Duqu (DLL) parece un DLL PE común de Windows compilado en Microsoft Visual Studio 2008.
"El código de punto de entrada es absolutamente estándar y hay una función exportada por el número ordinal 1 que también se parece a MSVC++", dijo el experto Igor Soumenkov de Kaspersky Lab.
"Esta función es llamada desde la DLL PNF y es de hecho la función 'principal' que implementa todas las lógicas de contactar con los servidores C&C, recibiendo módulos de carga adicionales y ejecutándolos".
Sin embargo, la forma en que fue programada esta lógica y las herramientas que se utilizaron son alucinantes. La única cosa segura es que es un lenguaje de programación orientado a objetos.
La mayoría de las secciones de código que componen el archivo DLL Payload parecen haber sido compiladas en C++, pero el código de interacción de comando y control (C&C), que representa la mayor parte, es diferente.
En el código de Duqu Framework, como lo llaman los expertos, todo está envuelto en objetos y no hay distinción entre el código escrito por el programador y las clases de utilidad. Además, se utiliza la API nativa de Windows en lugar de las referencias a funciones de la biblioteca de tiempo de ejecución.
Los objetos, que son cada uno una instancia de una de las 60 clases, son construidos utilizando las funciones de "constructor" y destruidos mediante funciones de "destructor", pero el diseño de cada objeto depende de su clase.
"Algunas clases parecen tener tablas de funciones binarias compatibles pero no hay ninguna indicación de que tienen alguna clase pariente común (como en otros lenguajes OO). Además, la ubicación de la tabla de funciones no es fija: algunas clases la tienen en la posición 0 de la instancia, pero algunas no", explicó Soumenkov.
En comparación con el marco de su predecesor, Stuxnet, Duqu es diferente y Kaspersky incluso insinúa que un equipo independiente puede ser responsable de la creación de esta parte del proyecto.
Los que quieran mirar el código más de cerca y tal vez incluso ayudar a Kaspersky a identificar el lenguaje de programación de Duqu Framework pueden visitar
Securelist.