Duqu - muñeco de anidación malicioso

introducción

El 1 de septiembre de 2011, se envió un archivo llamado ~DN1.tmp al sitio web de VirusTotal desde Hungría. En ese momento, el archivo fue detectado como malicioso sólo por dos motores antivirus: BitDefender y AVIRA. Así empezó la historia de Duqu. De cara al futuro, hay que decir que la familia de malware Duqu recibió su nombre del nombre de este archivo. Sin embargo, este archivo es un módulo de software espía completamente independiente con funciones de registrador de pulsaciones de teclas, instalado probablemente mediante un descargador-dropper malicioso, y sólo puede considerarse como una "carga útil" cargada por el malware Duqu durante su funcionamiento, y no como un componente ( módulo) de Duqu. Uno de los componentes de Duqu se envió al servicio Virustotal recién el 9 de septiembre. Su característica distintiva es un controlador firmado digitalmente por C-Media. Algunos expertos inmediatamente comenzaron a establecer analogías con otro ejemplo famoso de malware: Stuxnet, que también utilizaba controladores firmados. El número total de computadoras infectadas con Duqu detectadas por varias compañías antivirus en todo el mundo es de decenas. Muchas empresas afirman que Irán vuelve a ser el objetivo principal, pero a juzgar por la distribución geográfica de las infecciones, no es posible afirmarlo con seguridad.
Duqu - muñeco de anidación malicioso
En este caso, debe hablar con confianza solo de otra empresa con una palabra novedosa. APT (Amenaza Persistente Avanzada).

Procedimiento de implementación del sistema.

Una investigación realizada por especialistas de la organización húngara CrySyS (Laboratorio Húngaro de Criptografía y Seguridad de Sistemas de la Universidad de Tecnología y Economía de Budapest) condujo al descubrimiento del instalador (dropper) a través del cual se infectaba el sistema. Era un archivo de Microsoft Word con un exploit para la vulnerabilidad del controlador win32k.sys (MS11-087, descrito por Microsoft el 13 de noviembre de 2011), que es responsable del mecanismo de representación de fuentes TTF. El código shell del exploit utiliza una fuente llamada 'Dexter Regular' incrustada en el documento, con Showtime Inc. como creador de la fuente. Como puedes ver, los creadores de Duqu no son ajenos al sentido del humor: Dexter es un asesino en serie, el héroe de la serie de televisión del mismo nombre, producida por Showtime. Dexter mata sólo (si es posible) a criminales, es decir, infringe la ley en nombre de la legalidad. Probablemente, de esta manera, los desarrolladores de Duqu se burlan de que se dediquen a actividades ilegales con buenos fines. El envío de correos electrónicos se realizó a propósito. Lo más probable es que el envío utilizara ordenadores comprometidos (pirateados) como intermediarios para dificultar el seguimiento.
Por tanto, el documento de Word contenía los siguientes componentes:

  • contenido del texto;
  • fuente incorporada;
  • explotar el código shell;
  • conductor;
  • instalador (biblioteca DLL).

Si tiene éxito, el código shell del exploit realizó las siguientes operaciones (en modo kernel):

  • se realizó una verificación de reinfección, para esto se verificó la presencia de la clave 'CF4D' en el registro en la dirección 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones1', si era correcta, el shellcode completó su ejecución;
  • se descifraron dos archivos: el controlador (sys) y el instalador (dll);
  • el controlador se inyectó en el proceso services.exe y lanzó el instalador;
  • Al final, el código shell se borró con ceros en la memoria.

Debido al hecho de que win32k.sys se ejecuta bajo el usuario privilegiado 'Sistema', los desarrolladores de Duqu han resuelto elegantemente el problema tanto del inicio no autorizado como de la escalada de derechos (ejecutándose bajo una cuenta de usuario con derechos limitados).
Después de recibir el control, el instalador descifró en la memoria tres bloques de datos contenidos en él, que contienen:

  • controlador firmado (sys);
  • módulo principal (dll);
  • datos de configuración del instalador (pnf).

Se especificó un rango de fechas en los datos de configuración del instalador (en forma de dos marcas de tiempo: inicio y finalización). El instalador comprobó si la fecha actual estaba incluida en él y, en caso contrario, completó su ejecución. También en los datos de configuración del instalador estaban los nombres con los que se guardaron el controlador y el módulo principal. En este caso, el módulo principal se guardó en el disco de forma cifrada.

Duqu - muñeco de anidación malicioso

Para iniciar automáticamente Duqu, se creó un servicio utilizando un archivo de controlador que descifraba el módulo principal sobre la marcha utilizando claves almacenadas en el registro. El módulo principal contiene su propio bloque de datos de configuración. Cuando se inició por primera vez, se descifró, se ingresó la fecha de instalación, después de lo cual se volvió a cifrar y el módulo principal lo guardó. Así, en el sistema afectado, tras una instalación exitosa, se guardaron tres archivos: el controlador, el módulo principal y su archivo de datos de configuración, mientras que los dos últimos archivos se almacenaron en el disco de forma cifrada. Todos los procedimientos de decodificación se llevaron a cabo únicamente en la memoria. Este complejo procedimiento de instalación se utilizó para minimizar la posibilidad de detección por parte del software antivirus.

El módulo principal

Módulo principal (recurso 302), según информации empresa Kaspersky Lab, escrito utilizando MSVC 2008 en C puro, pero utilizando un enfoque orientado a objetos. Este enfoque no es característico cuando se desarrolla código malicioso. Como regla general, dicho código se escribe en C para reducir el tamaño y eliminar las llamadas implícitas inherentes a C++. Hay una cierta simbiosis aquí. Además, se utilizó una arquitectura basada en eventos. Los empleados de Kaspersky Lab se inclinan por la teoría de que el módulo principal se escribió utilizando un complemento de preprocesador que permite escribir código C en un estilo de objeto.
El módulo principal es responsable del procedimiento para recibir comandos de los operadores. Duqu proporciona varios métodos de interacción: utilizando los protocolos HTTP y HTTPS, así como utilizando canalizaciones con nombre. Para HTTP(S), se especificaron los nombres de dominio de los centros de comando y se proporcionó la capacidad de trabajar a través de un servidor proxy; se les especificó un nombre de usuario y una contraseña. La dirección IP y su nombre se especifican para el canal. Los datos especificados se almacenan en el bloque de datos de configuración del módulo principal (en forma cifrada).
Para utilizar canalizaciones con nombre, lanzamos nuestra propia implementación de servidor RPC. Admitía las siguientes siete funciones:

  • devolver la versión instalada;
  • inyectar un dll en el proceso especificado y llamar a la función especificada;
  • cargar dll;
  • iniciar un proceso llamando a CreateProcess();
  • leer el contenido de un archivo determinado;
  • escribir datos en el archivo especificado;
  • eliminar el archivo especificado.

Las canalizaciones con nombre podrían usarse dentro de una red local para distribuir módulos actualizados y datos de configuración entre computadoras infectadas con Duqu. Además, Duqu podría actuar como servidor proxy para otros ordenadores infectados (que no tenían acceso a Internet debido a la configuración del firewall en la puerta de enlace). Algunas versiones de Duqu no tenían funcionalidad RPC.

"Cargas útiles" conocidas

Symantec descubrió al menos cuatro tipos de cargas útiles descargadas bajo comando desde el centro de control de Duqu.
Además, sólo uno de ellos era residente y compilado como un archivo ejecutable (exe), que se guardaba en el disco. Los tres restantes se implementaron como bibliotecas dll. Se cargaron dinámicamente y se ejecutaron en la memoria sin guardarse en el disco.

La "carga útil" residente era un módulo espía (infosteler) con funciones de registrador de teclas. Fue enviándolo a VirusTotal que comenzó el trabajo de investigación de Duqu. La principal funcionalidad de espionaje estaba en el recurso, cuyos primeros 8 kilobytes contenían parte de una fotografía de la galaxia NGC 6745 (para camuflarse). Cabe recordar aquí que en abril de 2012, algunos medios publicaron información (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506) de que Irán estaba expuesto a algún software malicioso “Stars”, mientras que los detalles de El incidente no fue revelado. Quizás fue precisamente una muestra de la "carga útil" de Duqu que se descubrió entonces en Irán, de ahí el nombre "Estrellas".
El módulo espía recopiló la siguiente información:

  • lista de procesos en ejecución, información sobre el usuario y dominio actual;
  • lista de unidades lógicas, incluidas unidades de red;
  • capturas de pantalla;
  • direcciones de interfaz de red, tablas de enrutamiento;
  • archivo de registro de pulsaciones de teclas del teclado;
  • nombres de ventanas de aplicaciones abiertas;
  • lista de recursos de red disponibles (recursos compartidos);
  • una lista completa de archivos en todos los discos, incluidos los extraíbles;
  • una lista de computadoras en el “entorno de red”.

Otro módulo espía (infosteler) era una variación de lo ya descrito, pero compilado como una biblioteca dll; se eliminaron las funciones de un keylogger, compilar una lista de archivos y enumerar las computadoras incluidas en el dominio.
Siguiente módulo (reconocimiento) información del sistema recopilada:

  • si la computadora es parte de un dominio;
  • rutas a los directorios del sistema de Windows;
  • versión del sistema operativo;
  • nombre de usuario actual;
  • lista de adaptadores de red;
  • sistema y hora local, así como la zona horaria.

Último módulo (extensor de vida útil) implementó una función para aumentar el valor (almacenado en el archivo de datos de configuración del módulo principal) del número de días restantes hasta que se complete el trabajo. De forma predeterminada, este valor se estableció en 30 o 36 días según la modificación de Duqu y se redujo en uno cada día.

Centros de mando

El 20 de octubre de 2011 (tres días después de que se difundiera la información sobre el descubrimiento), los operadores de Duqu llevaron a cabo un procedimiento para destruir rastros del funcionamiento de los centros de mando. Los centros de comando estaban ubicados en servidores pirateados en todo el mundo: en Vietnam, India, Alemania, Singapur, Suiza, Gran Bretaña, Holanda y Corea del Sur. Curiosamente, todos los servidores identificados ejecutaban las versiones de CentOS 5.2, 5.4 o 5.5. Los sistemas operativos eran tanto de 32 como de 64 bits. A pesar de que se eliminaron todos los archivos relacionados con el funcionamiento de los centros de comando, los especialistas de Kaspersky Lab pudieron recuperar parte de la información de los archivos LOG del espacio disponible. El hecho más interesante es que los atacantes en los servidores siempre reemplazaron el paquete predeterminado OpenSSH 4.3 por la versión 5.8. Esto puede indicar que se utilizó una vulnerabilidad desconocida en OpenSSH 4.3 para piratear servidores. No todos los sistemas se utilizaron como centros de mando. Algunos, a juzgar por los errores en los registros sshd al intentar redirigir el tráfico a los puertos 80 y 443, se utilizaron como servidor proxy para conectarse a los centros de comando finales.

Fechas y módulos

Un documento de Word distribuido en abril de 2011, que fue examinado por Kaspersky Lab, contenía un controlador de descarga del instalador con fecha de compilación del 31 de agosto de 2007. Un controlador similar (tamaño - 20608 bytes, MD5 - EEDCA45BD613E0D9A9E5C69122007F17) en un documento encontrado en los laboratorios CrySys tenía una fecha de compilación del 21 de febrero de 2008. Además, los expertos de Kaspersky Lab encontraron el controlador de ejecución automática rndismpc.sys (tamaño - 19968 bytes, MD5 - 9AEC6E10C5EE9C05BED93221544C783E) con fecha 20 de enero de 2008. No se encontraron componentes marcados con 2009. Según las marcas de tiempo de la compilación de partes individuales de Duqu, su desarrollo podría remontarse a principios de 2007. Su primera manifestación está asociada con la detección de archivos temporales del tipo ~DO (probablemente creados por uno de los módulos de software espía), cuya fecha de creación es el 28 de noviembre de 2008 (artículo "Duqu & Stuxnet: una cronología de eventos interesantes"). La fecha más reciente asociada con Duqu fue el 23 de febrero de 2012, contenida en un controlador de descarga del instalador descubierto por Symantec en marzo de 2012.

Fuentes de información utilizadas:

serie de artículos sobre Duqu de Kaspersky Lab;
Informe analítico de Symantec "W32.Duqu El precursor del próximo Stuxnet", versión 1.4, noviembre de 2011 (pdf).

Fuente: habr.com

Añadir un comentario