Duqu é unha matrioshka maliciosa

Introdución

O 1 de setembro de 2011, un ficheiro chamado ~DN1.tmp foi enviado ao sitio web de VirusTotal desde Hungría. Nese momento, só dous motores antivirus detectaron o ficheiro como malicioso: BitDefender e AVIRA. Así comezou a historia de Duqu. De cara ao futuro, hai que dicir que a familia de malware Duqu recibiu o nome deste ficheiro. Non obstante, este ficheiro é un módulo de spyware completamente independente con funcións de keylogger, instalado, probablemente, mediante un contagotas de descarga malicioso, e só pode considerarse como unha "carga útil" cargada polo malware Duqu durante o seu funcionamento, e non como un compoñente ( módulo) de Duqu . Un dos compoñentes de Duqu foi enviado ao servizo Virustotal só o 9 de setembro. A súa característica distintiva é un controlador asinado dixitalmente por C-Media. Algúns expertos inmediatamente comezaron a debuxar analoxías con outro exemplo famoso de malware: Stuxnet, que tamén utilizaba controladores asinados. O número total de ordenadores infectados por Duqu detectados por varias compañías de antivirus en todo o mundo é de decenas. Moitas empresas afirman que Irán volve ser o obxectivo principal, pero a xulgar pola distribución xeográfica das infeccións, non se pode dicir con certeza.
Duqu é unha matrioshka maliciosa
Neste caso, debes falar con confianza só sobre outra empresa cunha palabra nova APT (ameaza persistente avanzada).

Procedemento de implantación do sistema

Unha investigación realizada por especialistas da organización húngara CrySyS (Laboratorio Húngaro de Criptografía e Seguridade do Sistema da Universidade de Tecnoloxía e Economía de Budapest) levou ao descubrimento do instalador (goper) a través do cal se infectaba o sistema. Tratábase dun ficheiro de Microsoft Word cun exploit para a vulnerabilidade do controlador win32k.sys (MS11-087, descrita por Microsoft o 13 de novembro de 2011), responsable do mecanismo de representación de fontes TTF. O shellcode do exploit usa unha fonte chamada "Dexter Regular" incrustada no documento, con Showtime Inc. listado como o creador da fonte. Como vedes, os creadores de Duqu non son alleos ao sentido do humor: Dexter é un asasino en serie, o heroe da serie de televisión do mesmo nome, producida por Showtime. Dexter mata só (se é posible) criminais, é dicir, incumpre a lei en nome da legalidade. Probablemente, deste xeito, os desenvolvedores de Duqu ironizan con que se dediquen a actividades ilegais con fins útiles. O envío de correos electrónicos realizouse a propósito. O envío probablemente utilizou ordenadores comprometidos (pirateados) como intermediarios para dificultar o seguimento.
Así, o documento de Word contiña os seguintes compoñentes:

  • contido de texto;
  • tipo de letra incorporado;
  • explotar o shellcode;
  • Chofer;
  • instalador (biblioteca DLL).

Se ten éxito, o shellcode de explotación realizou as seguintes operacións (en modo kernel):

  • realizouse unha comprobación de reinfección; para iso comprobouse a presenza da chave ‘CF4D’ no rexistro no enderezo ‘HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones1’; se esta era correcta, o shellcode completou a súa execución;
  • descifráronse dous ficheiros: o controlador (sys) e o instalador (dll);
  • inxectouse o controlador no proceso services.exe e lanzou o instalador;
  • Finalmente, o shellcode borrouse con ceros na memoria.

Debido ao feito de que win32k.sys execútase en nome do usuario privilexiado "Sistema", os desenvolvedores de Duqu resolveron con elegancia o problema do lanzamento non autorizado e da escalada de dereitos (executándose baixo unha conta de usuario con dereitos limitados).
Despois de recibir o control, o instalador descifrou tres bloques de datos contidos nel na memoria, que conteñen:

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

Especificouse un intervalo de datas nos datos de configuración do instalador (en forma de dúas marcas de tempo: inicio e fin). O instalador comprobou se nel estaba incluída a data actual e, se non, completou a súa execución. Tamén nos datos de configuración do instalador estaban os nomes cos que se gardaban o controlador e o módulo principal. Neste caso, o módulo principal gardouse no disco en forma cifrada.

Duqu é unha matrioshka maliciosa

Para iniciar Duqu automaticamente, creouse un servizo mediante un ficheiro de controlador que descifraba o módulo principal ao voo mediante as claves almacenadas no rexistro. O módulo principal contén o seu propio bloque de datos de configuración. Cando se lanzou por primeira vez, descifrouse, introduciuse nel a data de instalación, despois de que volveuse a cifrar e gardar o módulo principal. Así, no sistema afectado, tras unha instalación exitosa, gardáronse tres ficheiros: o controlador, o módulo principal e o seu ficheiro de datos de configuración, mentres que os dous últimos ficheiros gardáronse no disco en forma cifrada. Todos os procedementos de decodificación realizáronse só na memoria. Este procedemento de instalación complexo utilizouse para minimizar a posibilidade de detección polo software antivirus.

O módulo principal

Módulo principal (recurso 302), segundo información empresa Kaspersky Lab, escrito usando MSVC 2008 en C puro, pero utilizando un enfoque orientado a obxectos. Este enfoque non é característico cando se desenvolve código malicioso. Como regra xeral, este código está escrito en C para reducir o tamaño e desfacerse das chamadas implícitas inherentes a C++. Aquí hai certa simbiose. Ademais, utilizouse unha arquitectura impulsada por eventos. Os empregados de Kaspersky Lab están inclinados á teoría de que o módulo principal foi escrito mediante un complemento de preprocesador que lle permite escribir código C nun estilo de obxecto.
O módulo principal é o responsable do procedemento de recepción de ordes dos operadores. Duqu ofrece varios métodos de interacción: utilizando os protocolos HTTP e HTTPS, así como o uso de canalizacións con nome. Para HTTP(S), especificáronse os nomes de dominio dos centros de comando e proporcionouse a posibilidade de traballar a través dun servidor proxy: especificáronse para eles un nome de usuario e un contrasinal. O enderezo IP e o seu nome especifícanse para a canle. Os datos especificados gárdanse no bloque de datos de configuración do módulo principal (en forma cifrada).
Para usar canalizacións con nome, lanzamos a nosa propia implementación do servidor RPC. Soportaba as seguintes sete funcións:

  • devolver a versión instalada;
  • inxectar un dll no proceso especificado e chamar á función especificada;
  • cargar dll;
  • iniciar un proceso chamando a CreateProcess();
  • ler o contido dun ficheiro determinado;
  • escribir datos no ficheiro especificado;
  • eliminar o ficheiro especificado.

As canalizacións con nome poderían usarse dentro dunha rede local para distribuír módulos actualizados e datos de configuración entre ordenadores infectados por Duqu. Ademais, Duqu podería actuar como servidor proxy para outros ordenadores infectados (que non tiñan acceso a Internet debido á configuración do firewall da pasarela). Algunhas versións de Duqu non tiñan a funcionalidade RPC.

"Cargas útiles" coñecidas

Symantec descubriu polo menos catro tipos de cargas útiles descargadas baixo o mando do centro de control de Duqu.
Ademais, só un deles era residente e compilado como un ficheiro executable (exe), que foi gardado no disco. Os tres restantes implementáronse como bibliotecas dll. Cargáronse de forma dinámica e executáronse na memoria sen gardarse no disco.

A "carga útil" residente era un módulo espía (roubo de información) con funcións keylogger. Foi enviándoo a VirusTotal cando comezou o traballo na investigación de Duqu. A principal funcionalidade espía estaba no recurso, cuxos primeiros 8 kilobytes contiñan parte dunha foto da galaxia NGC 6745 (para camuflaxe). Cómpre lembrar aquí que en abril de 2012, algúns medios publicaron información (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506) de que Irán estaba exposto a algún software malicioso "Stars", mentres que os detalles de o incidente non foron divulgados. Quizais fose só unha mostra da "carga útil" de Duqu que se descubriu entón en Irán, de aí o nome de "Estrelas".
O módulo de espionaxe recolleu a seguinte información:

  • lista de procesos en execución, información sobre o usuario e dominio actual;
  • lista de unidades lóxicas, incluíndo unidades de rede;
  • capturas de pantalla;
  • enderezos de interface de rede, táboas de enrutamento;
  • ficheiro de rexistro das pulsacións do teclado;
  • nomes das fiestras de aplicacións abertas;
  • lista de recursos de rede dispoñibles (recursos para compartir);
  • unha lista completa de ficheiros en todos os discos, incluídos os extraíbles;
  • unha lista de ordenadores no “entorno de rede”.

Outro módulo espía (roubo de información) era unha variación do que xa estaba descrito, pero compilado como unha biblioteca dll; as funcións dun keylogger, a compilación dunha lista de ficheiros e a lista de ordenadores incluídos no dominio foron eliminadas del.
Próximo módulo (recoñecemento) información do sistema recollida:

  • se o ordenador forma parte dun dominio;
  • rutas aos directorios do sistema de Windows;
  • versión do sistema operativo;
  • nome de usuario actual;
  • lista de adaptadores de rede;
  • sistema e hora local, así como a zona horaria.

Último módulo (prolongador de vida útil) implementou unha función para aumentar o valor (almacenado no ficheiro de datos de configuración do módulo principal) do número de días restantes ata que se complete o traballo. De forma predeterminada, este valor estableceuse en 30 ou 36 días, dependendo da modificación de Duqu, e diminuíu un cada día.

Centros de mando

O 20 de outubro de 2011 (tres días despois da difusión da información sobre o descubrimento), os operadores de Duqu levaron a cabo un procedemento para destruír vestixios do funcionamento dos centros de mando. Os centros de mando estaban situados en servidores pirateados de todo o mundo: en Vietnam, India, Alemaña, Singapur, Suíza, Gran Bretaña, Holanda e Corea do Sur. Curiosamente, todos os servidores identificados executaban as versións de CentOS 5.2, 5.4 ou 5.5. Os sistemas operativos eran de 32 e 64 bits. A pesar de que todos os ficheiros relacionados co funcionamento dos centros de comando foron eliminados, os especialistas de Kaspersky Lab puideron recuperar parte da información dos ficheiros LOG do espazo libre. O feito máis interesante é que os atacantes dos servidores sempre substituíron o paquete predeterminado de OpenSSH 4.3 pola versión 5.8. Isto pode indicar que se utilizou unha vulnerabilidade descoñecida en OpenSSH 4.3 para piratear servidores. Non todos os sistemas foron utilizados como centros de mando. Algúns, a xulgar polos erros nos rexistros sshd ao tentar redirixir o tráfico para os portos 80 e 443, utilizáronse como servidor proxy para conectarse aos centros de comando finais.

Datas e módulos

Un documento de Word distribuído en abril de 2011, que foi examinado por Kaspersky Lab, contiña un controlador de descarga do instalador cunha data de compilación do 31 de agosto de 2007. Un controlador similar (tamaño - 20608 bytes, MD5 - EEDCA45BD613E0D9A9E5C69122007F17) nun documento atopado nos laboratorios CrySys tiña a data de compilación do 21 de febreiro de 2008. Ademais, os expertos de Kaspersky Lab atoparon o controlador de execución automática rndismpc.sys (tamaño - 19968 bytes, MD5 - 9AEC6E10C5EE9C05BED93221544C783E) coa data do 20 de xaneiro de 2008. Non se atoparon compoñentes marcados como 2009. Baseándose nas marcas de tempo da compilación de partes individuais de Duqu, o seu desenvolvemento podería remontarse a principios de 2007. A súa manifestación máis temperá está asociada á detección de ficheiros temporais do tipo ~DO (probablemente creados por algún dos módulos de spyware), cuxa data de creación é o 28 de novembro de 2008 (artigo "Duqu & Stuxnet: A Timeline of Interesting Events"). A data máis recente asociada a Duqu foi o 23 de febreiro de 2012, contida nun controlador de descarga do instalador descuberto por Symantec en marzo de 2012.

Fontes de información utilizadas:

serie de artigos sobre Duqu de Kaspersky Lab;
Informe analítico de Symantec "W32.Duqu O precursor do próximo Stuxnet", versión 1.4, novembro de 2011 (pdf).

Fonte: www.habr.com

Engadir un comentario