Malware TrickBot mira clientes da Amazon, Google, Microsoft, PayPal e outras 54 gigantes

Desde novembro de 2020, máquinas de pelo menos 140 mil clientes da Amazon, Microsoft, Google e outras 55 corporações multinacionais — do setor financeiro (incluindo de moedas criptográficas) e da tecnologia — têm sido infectadas pelo trojan TrickBot.

Trata-se de um malware sofisticado com mais de 20 módulos que se espalham sob demanda e são capazes de executar todos os tipos de atividades maliciosas, de acordo a Check Point Research. Países como Brasil, Rússia, Portugal, Espanha, Índia e China aparecem entre os países com maior número de infecções registradas.

Mapa de calor com a porcentagem de organizações que foram afetadas pelo Trickbot em cada país em 2021. Imagem: CPR Research

A tabela abaixo mostra a porcentagem de organizações afetadas pelo TrickBot em cada região do mundo.

Regiões | Organizações afetadas | Porcentagem
Mundo | 1 de cada 45 | 2.2%
Ásia Pacífico | 1 de cada 30 | 3.3%
América Latina | 1 de cada 47 | 2.1%
Europa | 1 de cada 54 | 1.9%
África | 1 de cada 57 | 1.8%
América do Norte | 1 de cada 69 | 1.4%

Lista completa das empresas visadas

As marcas abaixo não são as vítimas, mas seus clientes podem ser os alvos.

Companhia | Setor
Amazon | E-commerce
AmericanExpress | Serviço de Cartão de Crédito
AmeriTrade | Serviços Financeiros
AOL | Fornecedor de Serviços Online
Associated Banc-Corp | Holding Bancária
BancorpSouth | Banco
Bank of Montreal | Banco de Investimento
Barclays Bank Delaware | Banco
Blockchain.com | Serviços Financeiros em Moeda Criptográfica
Canadian Imperial Bank of Commerce | Serviços Financeiros
Capital One | Holding Bancária
Card Center Direct | Banco Digital
Centennial Bank | Holding Bancária
Chase | Bancos de Consumo
Citi | Serviços Financeiros
Citibank | Banco Digital
Citizens Financial Group | Banco
Coamerica | Serviços Financeiros
Columbia Bank | Banco
Desjardins Group | Serviços Financeiros
E-Trade | Serviços Financeiros
Fidelity | Serviços Financeiros
Fifth Third | Banco
FundsXpress | Gerenciamento de serviços de TI
Google | Tecnologia
GoToMyCard | Serviços Financeiros
HawaiiUSA Federal Credit Union | Cooperativa de Crédito
Huntington Bancshares | Holding Bancária
Huntington Bank | Holding Bancária
Interactive Brokers | Serviços Financeiros
JPMorgan Chase | Banco de Investimento
KeyBank | Banco
LexisNexis | Mineração de dados
M&T Bank | Banco
Microsoft | Tecnologia
Navy Federal | Cooperativa de Crédito
PayPal | Tecnologia Financeira
PNC Bank | Banco
RBC Bank | Banco
Robinhood | Comércio de Ações
Royal Bank of Canada | Serviços Financeiros
Schwab | Serviços Financeiros
Scotiabank Canada | Banco
SunTrust Bank | Holding Bancária
Synchrony | Serviços Financeiros
Synovus | Serviços Financeiros
T. Rowe Price | Gestão de Investimentos
TD Bank | Banco
TD Commercial Banking | Serviços Financeiros
TIAA | Seguros
Truist Financial | Holding Bancária
U.S. Bancorp | Holding Bancária
UnionBank | Banco Comercial
USAA | Serviços Financeiros
Vanguard | Gestão de Investimentos
Wells Fargo | Serviços Financeiros
Yahoo | Tecnologia
ZoomInfo | Software como serviço

Além dos autores da ameaça serem altamente seletivos quanto à escolha dos alvos, o trojan de infraestrutura descentralizada reaproveita técnicas evasivas, como antianálise e anti-desofuscação, implementados dentro dos módulos, para usar persistência nos dispositivos infectados. De acordo com os pesquisadores, isso mostra o histórico altamente técnico dos autores e explica a razão por trás da alta e contínua prevalência da família de malwares TrickBot.

O relatório produzido pelos pesquisadores da Check Point Research foca em três módulos-chave — injectDll, tabDll e pwgrabc — e descreve as técnicas antianálise do malware.

InjectDll: módulo web-injects

Esses módulos roubam os dados bancários e credenciais, além de causarem grandes danos financeiros às vítimas. Eles também realizam injeções de JavaScript no navegador, visando os clientes das empresas das empresas listadas.

Os pesquisadores afirmam que anteriormente a outubro de 2020, o módulo InjectDll tinha uma configuração construída a partir de dois tipos de configurações “sinj” e “dinj” (localizado no final do módulo):

Configuração do módulo injectDLL em 2020. Imagem: CPR Research

Configuração do módulo injectDLL em 2021. Imagem: CPR Research

Web-inject a partir do módulo injectDLL. Imagem: CPR Research

O payload injetado na página é minificado — o tamanho do código é reduzido até ficar ilegível —, ofuscado, além de conter técnicas anti-desofuscação. “Estas técnicas se baseiam na representação de cadeia de funções JavaScript e sua comparação com uma Regular Expression codificada, que deve combinar com o código de função ofuscado. Se a representação da função não coincidir com o navegador, o processo de tabulação trava”, explicam os pesquisadores.

Caso todas as verificações sejam bem sucedidas no processo, o script constrói a URL da segunda etapa do web-inject:

https://myca.adprimblox.fun/E4BFFED4E95C646B0EB2072FB593CA3D/dmaomzs1e5cl/6vpixf7ug8h5sli7gqwj/jquery-3.5.1.min.js

Ela é criada a partir de %BOTID%, e duas constantes decodificadas e verificada pelo C2 se ela a URL termina com ‘6vpixf7ug8h5sli7gqwj/jquery-3.5.1.min.js’. Além disso, caso o cliente acesse qualquer endpoint inexistente, o servidor bloqueará por um tempo os pacotes de rede do IP externo do usuário.

Para não levantar qualquer suspeita, o nome do script se disfarça como uma biblioteca JavaScript jQuery legítima bem conhecida. O estágio seguinte do web-inject é carregado somente pela página de destino — uma página da Amazon ou de algum banco, por exemplo — para não revelar os servidores C2. O payload também é minificado e ofuscado, contendo algumas técnicas anti-desofuscação e um código que copia as teclas da vítimas e ações de formulários web.

Nesse estágio, que visa um site legítimo como exemplificado anteriormente, o web-inject vai coloetar informações de login e salvar os campos “ap_email” e “ap_password” para uma carga útil do C2. Posteriormente, esse conteúdo será enviado a outro servidor C2, que vai descriptografar (como outras strings no script) usando o RC4: https://akama.pocanomics.com/ws/v2/batch

Exemplo das cargas úteis preparadas. Imagem: CPR Research

Nos campos “login” e “pass”, nas quais as credenciais são capturadas, os pesquisadores afirmaram não ter certeza sobre as finalidades dos campos “b” — %BOT_ID% — e “v” (e provavelmente “w”) é a versão. Em seguida, esta carga útil é criptografada usando XOR com a chave “ahejHKuD5H83UpkQgJK“. O pseudocódigo do algoritmo de criptografia da carga útil é mostrado abaixo:

let to_send = b64encode(xor_with(unescape(encodeURIComponent(payload)), ‘ahejHKuD5H83UpkQgJK’));

Técnica Anti-desofuscação

Ao utilizar ferramentas como JavaScript Beautifiers e desofuscadores como de4js, para tentar analisar o código JavaScript minificado, os pesquisadores perceberam que, apesar de o código ter se tornado mais legível, ele também parou de funcionar.

Truques anti-desobstrução no código. Imagem: CPR Research

Função desofuscada. Imagem: CPR Research

Função ofuscada. Imagem: CPR Research

Técnica Antianálise

Outra técnica antianálise encontrada pela Check Point foi o bloqueio de envio de pedidos automatizados aos servidores de Comando e Controle para obter novos web-injects. Segundos os pesquisadores, o pedido deve conter necessariamente um cabeçalho “Referer”, caso contrário, o servidor não responderá com um web-inject válido.

Exemplo de uma solicitação bem sucedida a um servidor de Comando e Controle a partir do módulo injectDLL. Imagem: CPR Research

Resposta recebida de um servidor de Comando e Controle do módulo injectDLL. Imagem: CPR Research

Módulo tabDLL

Em cinco etapas, esta DLL captura as credenciais do usuário-alvo e espalha o malware pela rede compartilhada.

Permite armazenar as informações das credenciais do usuário no aplicativo LSASS.

Injeta o módulo “Locker” no aplicativo “explorer.exe”.

A partir do “explorer.exe” infectado, força o usuário a inserir as credenciais de login no aplicativo e, em seguida, bloqueia a sessão do usuário.

As credenciais são agora armazenadas na memória do aplicativo LSASS.

Pega as credenciais da memória da aplicação LSASS usando a técnica mimikatz.

As credenciais são então reportadas ao C2. Por fim, ele usa a exploração EternalRomance para se espalhar através do compartilhamento de rede SMBv1.

Imagem: CPR Research

Os pesquisadores notaram que o nível de ofuscação diminui quando o operador usa uma chave aleatória para um algoritmo de criptografia de string — como visto com a string “GetCurrentProcess” abaixo.

Baixo nível de ofuscação. Imagem: CPR Research

Nenhuma chave é usada para a ofuscação. Imagem: CPR Research

Módulo pwgrabc

Já este módulo rouba credenciais de várias aplicações. Abaixo, as aplicações específicas e bem conhecidas da maioria do público.

Chrome

ChromeBeta

Edge

EdgeBeta

Firefox

Internet Explorer

Outlook

Filezilla

WinSCP

VNC

RDP

Putty,

TeamViewer

Precious

Git

OpenVPN

OpenSSH

KeePass

AnyConnect

RDCMan

Embora o TrickBot se torne inativo, os seus aspectos técnicos serão reutilizados em outras ameaças sucessoras, ou seja, esses esforços minunciosos sob o desenvolvimento do código do malware encontrarão uso em um futuro.