Dridex tem sido um pesadelo para muitos usuários de computadores, empresas e instituições financeiras por vários anos, tanto que, tornou-se a primeira coisa que vem à mente quando se fala de trojans bancários.

Uma recente pesquisa da ESET mostra que os criadores do trojan bancário Dridrex também estão por trás de outra família de malware de alto perfil - um sofisticado ransomware detectado pelos produtos da ESET como Win32/Filecoder.FriedEx e Win64/Filecoder.FriedEx, também conhecido como BitPaymer.

Dridex

O trojan bancário Dridex apareceu pela primeira vez em 2014 como um bot relativamente simples inspirado em projetos antigos, mas rapidamente os autores transformaram este bot em um dos trojans bancários mais sofisticados do mercado. O desenvolvimento parece ser estável, com novas versões do bot sendo lançadas todas as semanas, com pausas ocasionais incluindo pequenas correções e atualizações. De vez em quando, os criadores apresentam uma atualização importante que adiciona algumas funcionalidades cruciais ou grandes mudanças. A última grande atualização da versão 3 para a versão 4, lançada no início de 2017, ganhou atenção ao adotar a técnica de injeção do Atom Bombing e, posteriormente, no mesmo ano, introduzindo um novo exploit MS Word zero-day, que ajudou a propagar o trojan entre milhões de vítimas.

No momento da produção deste post, a versão mais recente do Dridex é a 4.80 e inclui suporte para webinjects no Chrome - versão 63. O Dridex 4.80 foi lançado em 14 de dezembro de 2017.

Nota: No ano passado, lançamos uma ferramenta para identificar hooks maliciosos em buscadores conhecidos. A ferramenta está projetada para ajudar aqueles usuários afetados por um incidente ao descobrir possíveis infecções por trojans bancários, incluindo o Dridex.

FriedEx

Inicialmente chamado BitPaymer, com base em texto em seu site de reivindicação de resgate, este ransomware foi descoberto no início de julho de 2017 por Michael Gillespie. Em agosto, foi novamente o centro das atenções e ganhou as manchetes de vários jornais depois de infectar hospitais do Serviço Nacional de Saúde (NHS, sigla em inglês) na Escócia.

FriedEx se enfoca em alvos e empresas de alto perfil, em vez de usuários finais, e geralmente é propagado através de um ataque de força bruta usando o Remote Desktop Protocol (RDP). O ransomware criptografa cada arquivo com uma chave RC4 gerada aleatoriamente, que em seguida é criptografada com uma chave pública codificada 1024 bits RSA e armazenada no .readme_txt file correspondente.

Em dezembro de 2017, observamos de perto uma das amostras do FriedEx e quase instantaneamente percebemos as semelhanças do código com o Dridex. Intrigados com as descobertas iniciais, nos aprofundamos nas amostras do FriedEx e descobrimos que a ameaça usava as mesmas técnicas que o Dridex para esconder a maior quantidade de informações possíveis sobre seu comportamento. O que essa ameaça faz? Resolve todas as chamadas feitas na Interface de Programação de Aplicativos (API, sigla em inglês) do sistema no momento através da função hash, armazena todas as sequencias de caracteres em um formato criptografado, procura chaves de registro e valores através de hash, etc. O binário resultante é de baixo perfil em termos de funções estáticas, e é difícil saber o que o malware está fazendo sem uma análise mais profunda.

Esta análise, rápida, mas detalhada, revelou uma série de atributos adicionais que confirmaram nossas suspeitas iniciais - as duas famílias de malware foram criadas pelos mesmos desenvolvedores.

Semelhanças entre códigos

Imagem 1: Comparação entre a função GetUserID presente nas amostras do Dridex e FriedEx.

Na imagem 1 podemos ver parte de uma função usada para gerar o ID do usuário que pode ser encontrado ao longo de todos os binários do Dridex (tanto loaders como módulos bot). Como podemos ver, a mesma função específica do Dridex também é usada nos binários FriedEx. A função produz os mesmos resultados - gera uma cadeia de diversos atributos da máquina da vítima que servem como o único identificador da vítima em questão, independentemente de ser a botnet no caso do Dridex, ou o ransomware no caso do FriedEx. Na verdade, as capturas servem para um bom jogo de "encontre as diferenças"!

Este tipo de semelhança com o Dridex pode ser percebida ao longo dos binários FriedEx e apenas algumas funções que correspondem principalmente à funcionalidade específica do ransomware não são encontradas na amostra do Dridex (por exemplo, o loop de criptografia de arquivos e o criação de arquivos com mensagens de resgate).

Imagem 2: Comparação da ordem das funções nas amostras do Dridex e FriedEx. As funções que faltam na outra amostra estão destacadas na cor correspondente.

Outra característica compartilhada é a ordem das funções nos binários, que ocorre quando a mesma base de código ou biblioteca estática é usada em vários projetos. Como podemos ver na Imagem 2, enquanto a amostra do FriedEx parece não ter algumas das funções presentes na amostra do Dridex e vice-versa (o que é causado pela omissão de funções não utilizadas/sem referência do compilador), a ordem é mantida.

Nota: A função de geração automática gera pares, com base em endereços de código (sub_CA5191 e sub_2A56A2, etc.), o que, obviamente, não corresponde, mas o código a que se referem sim. Também deve ser mencionado que Dridex e FriedEx usam o mesmo pacote de malware.

No entanto, uma vez que o pacote é muito popular atualmente (provavelmente devido à eficácia em evitar a detecção e a obstrução da análise) e usado por outras famílias conhecidas, como QBot, Emotet ou Ursnif, não consideramos que apenas isso seja uma evidência suficiente.

Caminho PDB

Ao criar um executável do Windows, o vinculador pode incluir um caminho PDB (Programa de Base de Dados) apontando para um arquivo que contenha símbolos de depuração que ajudem o desenvolvedor a remover falhas e identificar quedas. O arquivo PDB atual geralmente não está presente no malware, porque é um arquivo separado que não entra na propagação. No entanto, às vezes, apenas o caminho, se incluído, pode fornecer informações valiosas, porque os arquivos PDB estão localizados no mesmo diretório que o executável compilado por padrão e geralmente também tem o mesmo nome de base seguido da extensão .pdb .

Como podemos adivinhar, os caminhos PDB geralmente não são incluídos nos binários do malware, já que os atacantes não querem revelar informações. Felizmente, algumas amostras de ambas as famílias incluem caminhos PDB.

Imagem 3: Lista de todos os caminhos PDB encontrados nos projetos Dridex e FriedEx.

Como você pode ver na Imagem 3, os binários de ambos os projetos estão sendo criados no mesmo diretório, com seu nome distintivo. Com base em uma pesquisa ao longo de todos os metadados da nossa amostra de malware, concluímos que o caminho S:\Work\_bin\ é exclusivo para os projetos Dridex e FriedEx.

Marcas de tempo

Encontramos vários casos do Dridex e do FriedEx com a mesma data de compilação. Isso poderia, com certeza, ser uma coincidência, mas depois de observar mais de perto, descartamos rapidamente a teoria de "apenas uma coincidência".

As compilações com a mesma data não têm apenas diferenças de tempo de alguns minutos no máximo (o que sugere que aqueles que estão por trás do Dridex provavelmente compilarão ambos os projetos simultaneamente), mas que as constantes geradas aleatoriamente também são idênticas nesses testes. Essas constantes mudam com cada compilação como um tipo de polimorfismo, para tornar a análise mais difícil e evitar a detecção.

Isso pode ser completamente aleatório em cada compilação ou estar baseado em alguma variável, como a data atual.

Imagem 4: Funções GetAPIB e Hash nas amostras do Dridex com compilação de diferença de horário de 3 dias. A constante destacada é diferente.

Na Imagem 4, temos a comparação de duas amostras do loader do Dridex com uma diferença de três dias entre as marcas temporárias da compilação. Enquanto os loaders são praticamente idênticos, com a única diferença nos dados codificados, como as chaves criptografadas e os IPs do C&C, as constantes são diferentes, assim como todos os hashes baseados neles. Por outro lado, na imagem 5, podemos ver a comparação do loader do FriedEx e do Dridex do mesmo dia (na verdade, com marcas de tempo com diferença de apenas dois minutos). Aqui, as constantes são as mesmas, o que significa que ambos provavelmente foram projetados durante a mesma sessão de compilação.

Imagem 5: Funções GetAPIB e Hash nos binários do Dridex e FriedEx compilados no mesmo dia. A constante destacada é a mesma em ambas amostras.

Informações do compilador

As informações do compilador só ajudam a reforçar a evidência que encontramos até agora - tnato os binários do Dridex como do FriedEx são compilados no Visual Studio 2015. Isso foi confirmado pela versão do vinculador encontrada nos dados do PE Header e Rich Header.

Imagem 6: Rich header data encontrado nas amostras do Dridex e FriedEx.

Além das claras semelhanças com o Dridex, encontramos uma variante de 64 bits do ransomware não relatada anteriormente. Como a versão comum de 32 bits do ransomware pode apontar para os sistemas x86 e x64, consideramos essa variante como algo curioso.

Conclusão

Com todas essas evidências, confirmamos com confiança que o FriedEx é, sem dúvida, um trabalho dos desenvolvedores do Dridex. Esta descoberta nos dá uma imagem mais clara das atividades do grupo - podemos ver que o grupo ainda está ativo e não só atualiza constantemente o seu trojan bancário para manter seu suporte de webinject para as versões mais recentes do Chrome e para introduzir novos recursos como Atom Bombing, mas que também acompanha as últimas "tendências" do malware, criando seu próprio ransomware.

Só resta adivinhar o que o futuro trará, mas podemos ter certeza de que o grupo do Dridex não irá a nenhum outro lugar no futuro e que continuará inovando em seus projetos antigos e, possivelmente, estenda o seu portfólio com novas peças de vez em quando.

Por um longo tempo, acreditamos que o grupo Dridex tinha apenas um truque na manga e que estavam enfocados em seu trojan bancário. Agora, descobrimos que este não é o caso e que eles podem se adaptar facilmente às novas tendências e criar um tipo diferente de malware, capaz de competir com od mais avançados de sua categoria.

IoCs

Win32/Dridex.BE C70BD77A5415B5DCF66B7095B22A0DEE2DDA95A0
Win64/FriedEx.A CF1038C9AED9239B6A54EFF17EB61CAB2EE12141
Win32/FriedEx.A 8AE1C1869C42DAA035032341804AEFC3E7F3CAF1