Durante los últimos días, los investigadores de malware han dedicado mucho tiempo al nuevo código malicioso identificado por ESET como Win32/Duqu. Los investigadores de nuestro laboratorio Aleksandr Matrosov, Eugene Rodionov y David Harley han analizado su código a fondo y han extraído información más que interesante.
Una de las características que hacen de este malware un ejemplar singular es que se parece bastante a Stuxnet, uno de los gusanos más sofisticados (si no el que más) de los detectados en los últimos años. Ahora nos encontramos en el proceso de diseccionar los binarios de Duqu.
Tras unos primeros análisis preliminares es evidente que Duqu está basado en el código fuente de Stuxnet. Desde el punto de vista de la arquitectura del malware, Duqu es prácticamente idéntico a Stuxnet: en esencia, hay un driver en modo kernel que inyecta una librería DLL en procesos específicos del sistema. Esta DLL incluye la carga maliciosa en su interior y exporta una serie de rutinas que realizan unas acciones específicas. Además de las similitudes en la arquitectura, los módulos de Duqu son muy similares a Stuxnet desde un punto de vista binario: se usaron las mismas clases y estructuras para compilar tanto Stuxnet como Duqu. Obviamente, estos módulos no son 100% idénticos, pero hemos encontrado patrones idénticos de código.
Desde que los investigadores empezaron a analizar Duqu se han formulado muchas preguntas, muchas de las cuales permanecen sin respuestas. En concreto, no tenemos ninguna información (pública) sobre el archivo que descargaba Duqu ni de cómo y cuándo se instaló en las máquinas infectadas. Esta información es vital a la hora de realizar un análisis forense. Con respecto a la fecha en la que este malware fue instalado, esta puede encontrarse en el archivo de configuración. Debido a que Duqu tiene especificado permanecer en el sistema solo durante un periodo de tiempo (después del cual se elimina del sistema), creemos razonable asumir que la fecha de la infección se almacenaba en algún lugar del archivo de configuración. No fue difícil averiguar el código responsable de implementar este almacenamiento y, por tanto, determinar qué ubicación se usaba en los datos de configuración para almacenar la fecha de la instalación.
La fecha en la que Duqu se ejecuta por primera vez en el sistema infectado se almacena en format UTC, en el offset 0x123 desde el principio del archivo de configuración. Basándose en estos datos, es posible determinar la fecha en la que Duqu penetró en el sistema.
En el informe “Duqu: el precursor del siguiente Stuxnet”, el autor menciona que una de las modificaciones de Duqu que ellos analizaron tiene una esperanza de vida de 36 días y, cuando alcanza esa fecha, el malware se elimina a si mismo del sistema.
Para obtener este valor necesitamos descifrar el archivo de configuración con el siguiente criptoalgoritmo personalizado:
Resulta interesante destacar que el array gamma usado para descifrar los datos consiste en 8 elementos, de los cuales solo los 7 primeros son usados. A pesar de que esto puede ser intencionado, consideramos que es más probable que se trate de un pequeño error en su implementación.
Basándonos en el análisis de varias muestras, observamos que la esperanza de vida es diferente según la muestra analizada. Este valor se define en los datos de configuración (palabra en el offset 0x124E). En las imágenes mostradas a continuación se pueden ver fragmentos de archivos de configuración mostrando información acerca de la esperanza de vida.
- Datos de configuración resaltando la fecha en la que infectó el sistema: 11/08/2011 a las 07:50:01 y con una esperanza de vida de 36 días.
- Datos de configuración resaltando la fecha en la que infectó el sistema: 18/08/2011 a las 07:29:07 y con una esperanza de vida de 30 días.
Existe muchos más detalles técnicos más que interesantes en el código de Duqu que iremos publicando conforme avance nuestra investigación.
Asimismo, nos gustaría añadir un par de útiles herramientas disponibles desde los siguientes enlaces:
- script de python para descifrar los archivos de configuración de Duqu
- configuraciones de Duqu descifradas, como las que hemos mostrado en este post.
Aleksandr Matrosov, Eugene Rodionov, David Harley