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.
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.
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.
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.
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.
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 |