Duqu é um matryoshka malicioso

Introdução

Em 1º de setembro de 2011, um arquivo chamado ~DN1.tmp foi enviado da Hungria para o site VirusTotal. Naquela época, o arquivo foi detectado como malicioso por apenas dois mecanismos antivírus - BitDefender e AVIRA. Foi assim que começou a história de Duqu. Olhando para o futuro, deve-se dizer que a família de malware Duqu recebeu o nome deste arquivo. No entanto, este arquivo é um módulo de spyware completamente independente com funções de keylogger, instalado, provavelmente, usando um downloader-dropper malicioso, e só pode ser considerado como uma “carga útil” carregada pelo malware Duqu durante sua operação, e não como um componente ( módulo) do Duqu. Um dos componentes do Duqu foi enviado ao serviço Virustotal apenas no dia 9 de setembro. Seu diferencial é um driver assinado digitalmente pela C-Media. Alguns especialistas imediatamente começaram a fazer analogias com outro exemplo famoso de malware - o Stuxnet, que também usava drivers assinados. O número total de computadores infectados com Duqu detectados por várias empresas de antivírus em todo o mundo está na casa das dezenas. Muitas empresas afirmam que o Irão é novamente o alvo principal, mas a julgar pela distribuição geográfica das infecções, isto não pode ser afirmado com certeza.
Duqu é um matryoshka malicioso
Nesse caso, você deve falar com segurança apenas sobre outra empresa com uma palavra moderna APT (Ameaça persistente avançada).

Procedimento de implementação do sistema

Uma investigação conduzida por especialistas da organização húngara CrySyS (Laboratório Húngaro de Criptografia e Segurança de Sistemas da Universidade de Tecnologia e Economia de Budapeste) levou à descoberta do instalador (dropper) através do qual o sistema foi infectado. Era um arquivo do Microsoft Word com uma exploração da vulnerabilidade do driver win32k.sys (MS11-087, descrita pela Microsoft em 13 de novembro de 2011), responsável pelo mecanismo de renderização de fontes TTF. O shellcode da exploração usa uma fonte chamada ‘Dexter Regular’ incorporada no documento, com a Showtime Inc. listada como a criadora da fonte. Como você pode ver, os criadores de Duqu conhecem bem o senso de humor: Dexter é um serial killer, o herói da série de televisão de mesmo nome, produzida pela Showtime. Dexter mata apenas (se possível) criminosos, ou seja, infringe a lei em nome da legalidade. Provavelmente, desta forma, os desenvolvedores do Duqu são irônicos ao dizer que estão envolvidos em atividades ilegais para bons propósitos. O envio de e-mails foi feito propositalmente. A remessa provavelmente usou computadores comprometidos (hackeados) como intermediários para dificultar o rastreamento.
O documento Word continha, portanto, os seguintes componentes:

  • conteúdo do texto;
  • fonte integrada;
  • explorar shellcode;
  • motorista;
  • instalador (biblioteca DLL).

Se for bem-sucedido, o shellcode de exploração executou as seguintes operações (no modo kernel):

  • foi feita uma verificação de reinfecção; para isso, foi verificada a presença da chave 'CF4D' no registro no endereço 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones1'; se correto, o shellcode concluiu sua execução;
  • dois arquivos foram descriptografados - o driver (sys) e o instalador (dll);
  • o driver foi injetado no processo services.exe e lançou o instalador;
  • Finalmente, o shellcode apagou-se com zeros na memória.

Devido ao fato de win32k.sys ser executado sob o usuário privilegiado 'Sistema', os desenvolvedores do Duqu resolveram elegantemente o problema de inicialização não autorizada e escalonamento de direitos (execução sob uma conta de usuário com direitos limitados).
Após receber o controle, o instalador descriptografou três blocos de dados nele contidos na memória, contendo:

  • driver assinado (sys);
  • módulo principal (dll);
  • dados de configuração do instalador (pnf).

Um intervalo de datas foi especificado nos dados de configuração do instalador (na forma de dois carimbos de data e hora - início e fim). O instalador verificou se a data atual estava incluída nele e, caso contrário, concluiu sua execução. Também nos dados de configuração do instalador estavam os nomes sob os quais o driver e o módulo principal foram salvos. Neste caso, o módulo principal foi salvo em disco de forma criptografada.

Duqu é um matryoshka malicioso

Para iniciar automaticamente o Duqu, foi criado um serviço usando um arquivo de driver que descriptografou o módulo principal em tempo real usando chaves armazenadas no registro. O módulo principal contém seu próprio bloco de dados de configuração. Quando foi lançado pela primeira vez, foi descriptografado, a data de instalação foi inserida nele, após o que foi criptografado novamente e salvo pelo módulo principal. Assim, no sistema afetado, após a instalação bem-sucedida, três arquivos foram salvos - o driver, o módulo principal e seu arquivo de dados de configuração, enquanto os dois últimos arquivos foram armazenados no disco de forma criptografada. Todos os procedimentos de decodificação foram realizados apenas na memória. Este complexo procedimento de instalação foi utilizado para minimizar a possibilidade de detecção por software antivírus.

O módulo principal

Módulo principal (recurso 302), conforme informação empresa Kaspersky Lab, escrito usando MSVC 2008 em C puro, mas usando uma abordagem orientada a objetos. Essa abordagem não é característica no desenvolvimento de código malicioso. Via de regra, esse código é escrito em C para reduzir o tamanho e eliminar as chamadas implícitas inerentes ao C++. Há uma certa simbiose aqui. Além disso, foi usada uma arquitetura orientada a eventos. Os funcionários da Kaspersky Lab estão inclinados à teoria de que o módulo principal foi escrito usando um complemento de pré-processador que permite escrever código C em um estilo de objeto.
O módulo principal é responsável pelo procedimento de recebimento de comandos dos operadores. Duqu fornece vários métodos de interação: usando os protocolos HTTP e HTTPS, bem como usando pipes nomeados. Para HTTP(S), foram especificados nomes de domínio de centros de comando e foi fornecida a capacidade de trabalhar por meio de um servidor proxy - um nome de usuário e uma senha foram especificados para eles. O endereço IP e seu nome são especificados para o canal. Os dados especificados são armazenados no bloco de dados de configuração do módulo principal (em formato criptografado).
Para usar pipes nomeados, lançamos nossa própria implementação de servidor RPC. Ele suportava as seguintes sete funções:

  • retorne a versão instalada;
  • injete uma dll no processo especificado e chame a função especificada;
  • carregar dll;
  • inicie um processo chamando CreateProcess();
  • leia o conteúdo de um determinado arquivo;
  • gravar dados no arquivo especificado;
  • exclua o arquivo especificado.

Pipes nomeados podem ser usados ​​em uma rede local para distribuir módulos atualizados e dados de configuração entre computadores infectados pelo Duqu. Além disso, o Duqu poderia atuar como servidor proxy para outros computadores infectados (que não tinham acesso à Internet devido às configurações de firewall no gateway). Algumas versões do Duqu não possuíam funcionalidade RPC.

"Cargas úteis" conhecidas

A Symantec descobriu pelo menos quatro tipos de cargas baixadas sob comando do centro de controle Duqu.
Além disso, apenas um deles era residente e compilado como arquivo executável (exe), que era salvo em disco. Os três restantes foram implementados como bibliotecas DLL. Eles foram carregados dinamicamente e executados na memória sem serem salvos em disco.

A "carga útil" residente era um módulo espião (ladrão de informações) com funções de keylogger. Foi enviando para o VirusTotal que começou o trabalho de pesquisa do Duqu. A principal funcionalidade de espionagem estava no recurso, cujos primeiros 8 kilobytes continham parte de uma foto da galáxia NGC 6745 (para camuflagem). Deve-se lembrar aqui que em abril de 2012, alguns meios de comunicação publicaram informações (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506) de que o Irã foi exposto a algum software malicioso “Stars”, enquanto detalhes de o incidente não foi divulgado. Talvez tenha sido apenas uma amostra da “carga útil” Duqu que foi descoberta então no Irã, daí o nome “Estrelas”.
O módulo espião coletou as seguintes informações:

  • lista de processos em execução, informações sobre o usuário e domínio atuais;
  • lista de unidades lógicas, incluindo unidades de rede;
  • capturas de tela;
  • endereços de interface de rede, tabelas de roteamento;
  • arquivo de registro de teclas digitadas;
  • nomes de janelas de aplicativos abertas;
  • lista de recursos de rede disponíveis (compartilhamento de recursos);
  • uma lista completa de arquivos em todos os discos, inclusive os removíveis;
  • uma lista de computadores no “ambiente de rede”.

Outro módulo espião (ladrão de informações) era uma variação do já descrito, mas compilada como uma biblioteca dll; dela foram retiradas as funções de keylogger, compilar lista de arquivos e listar computadores incluídos no domínio.
Próximo módulo (reconhecimento) informações coletadas do sistema:

  • se o computador faz parte de um domínio;
  • caminhos para diretórios do sistema Windows;
  • versão do sistema operacional;
  • nome de usuário atual;
  • lista de adaptadores de rede;
  • sistema e hora local, bem como fuso horário.

Último módulo (extensor de vida útil) implementou uma função para aumentar o valor (armazenado no arquivo de dados de configuração do módulo principal) do número de dias restantes até que o trabalho seja concluído. Por padrão, esse valor foi definido como 30 ou 36 dias, dependendo da modificação do Duqu, e diminuiu um a cada dia.

Centros de comando

No dia 20 de outubro de 2011 (três dias após a divulgação da informação sobre a descoberta), os operadores do Duqu realizaram um procedimento para destruir vestígios de funcionamento dos centros de comando. Os centros de comando estavam localizados em servidores hackeados em todo o mundo – no Vietnã, Índia, Alemanha, Cingapura, Suíça, Grã-Bretanha, Holanda e Coreia do Sul. Curiosamente, todos os servidores identificados estavam executando as versões 5.2, 5.4 ou 5.5 do CentOS. Os sistemas operacionais eram de 32 e 64 bits. Apesar de todos os arquivos relacionados à operação dos centros de comando terem sido excluídos, os especialistas da Kaspersky Lab conseguiram recuperar algumas informações dos arquivos LOG do espaço livre. O fato mais interessante é que os invasores nos servidores sempre substituíram o pacote OpenSSH 4.3 padrão pela versão 5.8. Isso pode indicar que uma vulnerabilidade desconhecida no OpenSSH 4.3 foi usada para hackear servidores. Nem todos os sistemas foram usados ​​como centros de comando. Alguns, a julgar pelos erros nos logs sshd ao tentar redirecionar o tráfego para as portas 80 e 443, foram usados ​​​​como servidores proxy para conexão aos centros de comando finais.

Datas e módulos

Um documento do Word distribuído em abril de 2011, que foi examinado pela Kaspersky Lab, continha um driver de download do instalador com data de compilação de 31 de agosto de 2007. Um driver semelhante (tamanho - 20608 bytes, MD5 - EEDCA45BD613E0D9A9E5C69122007F17) em um documento encontrado nos laboratórios CrySys tinha data de compilação de 21 de fevereiro de 2008. Além disso, os especialistas da Kaspersky Lab encontraram o driver de execução automática rndismpc.sys (tamanho - 19968 bytes, MD5 - 9AEC6E10C5EE9C05BED93221544C783E) com a data de 20 de janeiro de 2008. Nenhum componente marcado como 2009 foi encontrado. Com base nos carimbos de data e hora da compilação de partes individuais do Duqu, o seu desenvolvimento pode remontar ao início de 2007. Sua manifestação mais antiga está associada à detecção de arquivos temporários do tipo ~DO (provavelmente criados por um dos módulos de spyware), cuja data de criação é 28 de novembro de 2008 (artigo "Duqu & Stuxnet: uma linha do tempo de eventos interessantes"). A data mais recente associada ao Duqu foi 23 de fevereiro de 2012, contida em um driver de download do instalador descoberto pela Symantec em março de 2012.

Fontes de informação usadas:

série de artigos sobre Duqu da Kaspersky Lab;
Relatório analítico da Symantec "W32.Duqu O precursor do próximo Stuxnet", versão 1.4, novembro de 2011 (pdf).

Fonte: habr.com

Adicionar um comentário