O trojan modular de evolução rápida conhecido como DanaBot passou por outras mudanças e, em sua última versão, passou a contar com um protocolo de comunicação completamente novo. O protocolo, introduzido ao DanaBot no final de janeiro de 2019, adiciona várias camadas de criptografia à comunicação com o C&C da ameaça.

Além das mudanças na comunicação, a arquitetura do DanaBot e os IDs das campanha também foram modificados.

A evolução do DanaBot

Desde que foi descoberto, em maio de 2018, como parte de uma campanha de spam direcionada à Austrália, muitos incidentes causados pelo DanaBot, como em campanhas de spam na Polônia, Itália, Alemanha, Áustria e Ucrânia, bem como nos Estados Unidos. Em campanhas européias, foi possível ver como esse trojan expandiu suas capacidades com novos plugins e funcionalidades para o envio de spam.

Em 25 de janeiro de 2019, notamos na telemetria da ESET diferentes executáveis relacionados ao DanaBot. Depois de analisá-los, foi possível descobrir que esses binários eram, na verdade, variantes do DanaBot, mas que eles usavam um protocolo de comunicação diferente para se comunicar com o servidor C&C. Desde 26 de janeiro de 2019, os operadores do DanaBot pararam de criar binários com o protocolo anterior.

No momento de produção deste texto, a nova versão da ameaça estava sendo distribuída em dois cenários:

  • Como "atualizações" enviadas para vítimas do DanaBot.
  • Através de spam malicioso na Polônia.

O novo protocolo de comunicação

No protocolo de comunicação usado antes de 25 de janeiro, os pacotes não estavam criptografados de nenhuma forma, como pode ser visto na Figura 1.

Figura 1 - Captura do pacote que mostra o protocolo anterior com dados de texto simples.

Após as alterações mais recentes, o DanaBot passou a usar os algoritmos de criptografia AES e RSA em suas comunicações com a C&C. O novo protocolo de comunicação é complexo, pois utiliza várias camadas de criptografia. A figura 2 descreve o processo de criptografia.

Figura 2 - Um diagrama do novo protocolo de comunicação do DanaBot.

Essas mudanças quebram as assinaturas existentes baseadas em rede e dificultam a criação de novas regras para os sistemas de detecção de intrusão (IDPS, sigla em inglês). Além disso, sem acesso às chaves RSA correspondentes, é impossível decodificar pacotes enviados ou recebidos. Portanto, arquivos PCAP de sistemas de análise baseados em nuvem (como ANY.RUN) tornam-se inutilizáveis ​​para os pesquisadores.

Figura 3 - Estrutura de um pacote com o novo protocolo de comunicação.

O cabeçalho de cada pacote enviado pelo cliente tem um byte em tamanho e seu valor é 24 (0x18):

Offset Size (bytes) Meaning
0x0 0x8 Size of the data after this header
0x8 0x8 Random value
0x10 0x8 Sum of first two fields

Para cada pacote, o cabeçalho é seguido por pacotes de dados criptografados em AES, os próximos 4 bytes indicam o tamanho do preenchimento do AES e, finalmente, a chave AES criptografada em RSA. Cada pacote é criptografado com uma chave AES diferente.

A resposta do servidor usa o mesmo formato. Ao contrário das versões anteriores, os pacotes de dados nas respostas do servidor não seguem nenhum design específico (com algumas exceções).

Design de pacote de dados

O design anterior de pacote de dados foi detalhado pelo Proofpoint em outubro de 2018. Na versão mais recente do DanaBot, o design foi ligeiramente modificado, como pode ser visto na Figura 4.

Figura 4 - Comparação do design de pacote de dados entre as versões anterior e a mais recente do DanaBot.

Mudanças na arquitetura do DanaBot

Junto com a mudança no protocolo de comunicação, o DanaBot também fez algumas alterações em sua arquitetura. Versões anteriores do DanaBot incluíam um componente que baixava e executava o módulo principal. Ou seja, este módulo baixava e executava plugins e configurações.

A versão mais recente usa um novo componente loader para baixar todos os plug-ins junto com o módulo principal. A persistência é obtida ao registrar o componente loader como um serviço.

Figura 5 - Comparação da arquitetura das versões anterior e atual do DanaBot.

Comandos

De acordo com nossa análise, o componente loader usa os seguintes comandos:

  • 0x12C - Olá. Primeiro comando enviado pelo cliente para o servidor.
  • 0x12D - Baixar o componente que executa a ameaça de 32/64 bits.
  • 0x12E – Solicitar lista de plugins e arquivos de configuração.
  • 0x12F - Baixar arquivos de configuração/plugin.

Os plugins e os arquivos de configuração baixados são criptografados usando as chaves AES do ID do cliente. Além disso, os plug-ins são compactados no formato ZIP usando a compactação LZMA, enquanto os arquivos de configuração são compactados com o zlib.

Comandos com números de ID 0x130 - 0x134 são enviados pelo módulo principal:

  • 0x130 - Carregar informações coletadas no servidor C&C (por exemplo: capturas de tela do computador da vítima, informações do sistema).
  • 0x131 - Carregar informações coletadas no servidor C&C (por exemplo: lista de arquivos no disco rígido da vítima).
  • 0x132 - Solicitar comandos adicionais ao servidor C&C. Há cerca de 30 comandos backdoor típicos disponíveis, incluindo plugins em execução, coleta de informações detalhadas do sistema e modificação de arquivos no sistema do cliente.
  • 0x133 - Atualizar a lista do servidor C&C através do proxy do Tor.
  • 0x134 - Propósito exato desconhecido - usado principalmente para comunicação entre plugins e o C&C.

Alterações nos IDs da campanha

Pesquisas anteriores sugeriram que o DanaBot é distribuído sob vários códigos de "afiliados" ou "campanhas". Na versão anterior do DanaBot, pelo menos 20 diferentes IDs de campanha foram usados.

Na versão mais recente, os IDs da campanha foram modificados ligeiramente. Em 5 de fevereiro de 2019, observamos os seguintes IDs ativos:

  • ID = 2 parece ser uma versão de teste, oferecendo um número limitado de arquivos de configuração e nenhum webinject.
  • ID = 3 foi propagado de forma ativa, destinado a usuários tanto na Polônia quanto na Itália, fornecendo todos os arquivos de configuração e webinjects para alvos poloneses e italianos.
  • ID = 5 fornece arquivos de configuração para alvos australianos.
  • ID = 7 está sendo distribuído apenas na Polônia, fornecendo webinjects para alvos poloneses.
  • ID = 9 parece ser outra versão de teste, com uma distribuição limitada e sem um destino específico, fornecendo um número limitado de arquivos de configuração e sem webinject.

Conclusão

Em 2018, vimos o DanaBot se expandir tanto em propagação quanto em funcionalidades. Durante o início de 2019, foi possível ver como esse trojan foi submetido a alterações "internas", o que indica um desenvolvimento ativo por parte de seus criadores. As atualizações mais recentes sugerem que os criadores dessa ameaça estão se esforçando para evitar a detecção no nível de rede e, possivelmente, prestando atenção às pesquisas publicadas e fazendo alterações para evitar a detecção.

Os sistemas da ESET detectam e bloqueiam todos os componentes e plug-ins do DanaBot sob os nomes de detecção listados na seção IoCs.

Esta investigação realizada por Kaspars Osis, Tomáš Procházka e Michal Kolář.

Indicadores de Comprometimento (IoCs)

Servidores C&C usados ​​pela nova versão do DanaBot

  • 84.54.37[.]102
  • 89.144.25[.]243
  • 89.144.25[.]104
  • 178.209.51[.]211
  • 185.92.222[.]238
  • 192.71.249[.]51

Webinject e servidores redirecionados

  • 47.74.249[.]106
  • 95.179.227[.]160
  • 185.158.249[.]144

Exemplo de hashes 

Observe que desde que os novos componentes do DanaBot foram lançados regularmente, compartilhamos apenas uma amostra de hashes.

Component SHA-1 ESET detection name
Dropper 98C70361EA611BA33EE3A79816A88B2500ED7844 Win32/TrojanDropper.Danabot.O
Loader (x86), campaign ID=3 0DF17562844B7A0A0170C9830921C3442D59C73C Win32/Spy.Danabot.L
Loader (x64), campaign ID=3 B816E90E9B71C85539EA3BB897E4F234A0422F85 Win64/Spy.Danabot.G
Loader (x86), campaign ID=9 5F085B19657D2511A89F3172B7887CE29FC70792 Win32/Spy.Danabot.I
Loader (x64), campaign ID=9 4075375A08273E65C223116ECD2CEF903BA97B1E Win64/Spy.Danabot.F
Main module (x86) 28139782562B0E4CAB7F7885ECA75DFCA5E1D570 Win32/Spy.Danabot.K
Main module (x64) B1FF7285B49F36FE8D65E7B896FCCDB1618EAA4B Win64/Spy.Danabot.C

Plugins

Plugin SHA-1 ESET detection name
RDPWrap 890B5473B419057F89802E0B6DA011B315F3EF94 Win32/Spy.Danabot.H
Stealer (x86) E50A03D12DDAC6EA626718286650B9BB858B2E69 Win32/Spy.Danabot.C
Stealer (x64) 9B0EC454401023DF6D3D4903735301BA669AADD1 Win64/Spy.Danabot.E
Sniffer DBFD8553C66275694FC4B32F9DF16ADEA74145E6 Win32/Spy.Danabot.B
VNC E0880DCFCB1724790DFEB7DFE01A5D54B33D80B6 Win32/Spy.Danabot.D
TOR 73A5B0BEE8C9FB4703A206608ED277A06AA1E384 Win32/Spy.Danabot.G