A ESET colaborou com a Microsoft, o Black Lotus Labs da Lumen, a NTT, entre outras empresas e organizações, em uma tentativa de interromper a botnet Trickbot. A ESET contribuiu para o projeto fornecendo análise técnica, informações estatísticas e nomes de domínio e IP de servidores de comando e controle.
A botnet Trickbot infectou mais de um milhão de dispositivos digitais em todo o mundo desde o final de 2016 e estávamos monitorando suas atividades desde o início dos ataques. Somente em 2020, nossa plataforma automatizada analisou mais de 125 mil amostras maliciosas, baixou e descriptografou mais de 40 mil arquivos de configuração usados pelos diferentes módulos da Trickbot, o que nos permitiu ter uma excelente visão dos diversos servidores C&C usados pela botnet.
Trickbot: uma botnet que durou bastante tempo
A botnet Trickbot tem sido um grande problema para os usuários da Internet há algum tempo. A primeira detecção da ameaça através da ESET surgiu em 2016. Durante esses anos, os ataques da botnet Trickbot foram relatados de forma consistente, o que a tornou uma das maiores e mais duradouras botnets existentes até hoje. Assim como destacamos em nosso relatório de ameaças do primeiro trimestre de 2020, a Trickbot é uma das famílias de malware bancário mais prevalentes. Na Figura 1, os dados de telemetria da ESET mostram que esse malware representa uma ameaça aos usuários da Internet em todo o mundo.

Figura 1. Detecções da botnet Trickbot em todo o mundo entre outubro de 2019 e outubro de 2020.
Ao longo de sua existência, a Trickbot foi distribuída de várias maneiras. Recentemente, observamos uma cadeia de distribuição bastante frequência com a ameaça sendo "droppeado" em sistemas que já foram comprometidos pelo Emotet, outra grande botnet. Anteriormente, a botnet Trickbot era usada por seus operadores como um trojan bancário que roubava credenciais de contas bancárias on-line e tentava fazer transferências falsas.
A arquitetura modular da Trickbot permite a realização de uma ampla gama de ações maliciosas usando uma variedade de plug-ins. Embora esse malware possa roubar todos os tipos de credenciais de um computador comprometido, observamos que a ameaça tem sido usada como um mecanismo de entrega para realizar ataques mais nocivos, como os de ransomware.
Um dos plug-ins desenvolvidos permite que a Trickbot use web injects, uma técnica que faz com que o malware altere dinamicamente o que um usuário cujo sistema foi comprometido vê ao visitar sites específicos. Para operar, esse plug-in depende de arquivos de configuração baixados pelo módulo principal. Esses arquivos contêm informações sobre quais sites e de que forma devem ser modificados. A Figura 2 mostra um trecho de um desses arquivos de configuração descriptografados que contém as URLs específicas e URLs C&C maliciosas que o bot deve contatar quando a vítima acessa as URLs específicas.
<dinj>
<lm>https://<targeted URL>/retail/*</lm>
<hl>https://195.123.241[.]63:446/response.php?s=1595536873511390&id=f93fXZS6rZ70s42y9uVI</hl>
<pri>100</pri>
<sq>2</sq>
<require_header>*text/html*</require_header>
</dinj>
<dinj>
<lm>https://<targeted URL>/wps/*</lm>
<hl>https://195.123.241[.]63:446/response.php?s=1595536873511390&id=IbvDEzyn1zHm5Bqcse2V</hl>
<pri>100</pri>
<sq>2</sq>
<require_header>*text/html*</require_header>
</dinj>
<dinj>
<lm>https://<targeted URL>/ibank/*</lm>
<hl>https://195.123.241[.]63:446/response.php?s=1595536873511390&id=4hXQ3ZPSm9OQIKyMQaYZ</hl>
<pri>100</pri>
<sq>2</sq>
<require_header>*text/html*</require_header>
</dinj>
Figura 2. Trecho de um arquivo de configuração dinj descriptografado (redigido).
Através do nosso monitoramento de campanhas da botnet Trickbot, coletamos dezenas de milhares de arquivos de configuração diferentes, o que nos permitiu saber quais sites foram atacados pelos operadores da Trickbot. A Figura 3 mostra o número de sites extraídos dos arquivos de configuração em 2020.

Figura 3. Número de sites extraídos em 2020.
Essas URLs direcionadas pertencem principalmente a instituições financeiras. Há uma queda acentuada no número de alvos encontrados nesses arquivos de configuração a partir de março. Isso coincide com o momento em que os operadores da Trickbot retiraram o módulo webinject da lista de plug-ins padrão baixados automaticamente pelo módulo principal - é por isso que não temos dados em março; tivemos que ajustar nossos processos para manter o foco nas URLs extraídas. Essa queda no número de alvos provavelmente se deve ao fato do grupo por trás da Trickbot ter começado a se enfocar em outro meio de monetização durante esse período: o ransomware.
Nesses casos, o processo de comprometimento da Trickbot é usado para executar primeiro o movimento lateral e tarefas de reconhecimento na rede de uma organização e, em seguida, lançar o ransomware Ryuk no maior número possível de sistemas. A partir dos dados que coletamos, parece que os operadores da Trickbot passaram de tentar roubar dinheiro de contas bancárias a atacar organizações inteiras com a botnet e, em seguida, usá-la para executar o Ryuk e exigir um resgate para desbloquear os sistemas afetados.
Também observamos novos projetos de desenvolvimento de malware supostamente vindos de operadores da Trickbot, o que também pode explicar seu súbito desinteresse em usar a Trickbot como um trojan bancário. Um desses projetos é o chamado projeto Anchor, uma plataforma voltada para espionagem ao invés de crimeware. Provavelmente, eles também estão envolvidos no desenvolvimento do malware Bazar, um loader e backdoor usado para distribuir código malicioso, como o ransomware, e para roubar dados confidenciais de sistemas comprometidos.
Trickbot em profundidade
O que torna a Trickbot tão versátil é que suas funcionalidades podem ser amplamente expandidas com plug-ins. Durante o nosso acompanhamento, coletamos e analisamos 28 plug-ins diferentes. Alguns têm o objetivo de coletar senhas de navegadores, clientes de e-mail e uma variedade de aplicativos, enquanto outros podem modificar o tráfego de rede ou se propagar. Os plug-ins da Trickbot são implementados como DLLs padrão do Windows, geralmente com pelo menos estas quatro exportações distintas: Start, Control, Release e FreeBuffer.
Curiosamente, alguns têm Rich headers, enquanto outros não. Os Rich headers são uma estrutura de dados não documentada que é adicionada a todos os binários criados pelo Microsoft Visual Studio 97 SP3 ou posterior. Eles contêm informações sobre o ambiente de desenvolvimento no qual o executável foi criado. O fato de que os Rich headers nem sempre estão presentes nos plug-ins - e que quando estão presentes mostram diferentes ambientes de desenvolvimento - nos leva a acreditar que esses plug-ins foram escritos por diferentes desenvolvedores.
Depois de desenvolvidos e usados ativamente nas campanhas, foi possível ver muitos exemplos diferentes dos diversos plug-ins. Os que mais mudaram foram aqueles que contêm um arquivo de configuração estática embutido no binário. Esses arquivos de configuração estática contêm, entre outras coisas, informações do servidor C&C, portanto, é possível que mudem com o tempo. A Figura 4 mostra o número de variações que vimos para cada módulo que coletamos por meio de nossa plataforma de rastreamento de botnets. A maioria das variantes dos módulos mais recentes vem em pares - cerca de metade dos módulos coletados eram versões de 32 bits, enquanto a outra metade eram versões de 64 bits. No Apêndice (neste artigo), você pode encontrar uma breve descrição de cada um desses módulos.

Figura 4. Contagem de variantes para cada plug-in da Trickbot.
Arquivos de configuração para todos
Embora muitos arquivos de configuração diferentes sejam baixados em uma instalação da botnet Trickbot, o módulo principal contém uma configuração criptografada e hardcodeada. Ele contém uma lista de servidores C&C, bem como uma lista padrão de plug-ins que devem ser baixados.
Assim como mencionamos anteriormente, alguns plug-ins também dependem de arquivos de configuração para funcionar de forma correta. Esses plug-ins contam com o módulo principal para baixar esses arquivos de configuração dos servidores C&C. Os plug-ins fazem isso passando uma pequena estrutura de configuração do módulo, armazenada na seção de sobreposição do binário do plug-in que permite que o módulo principal saiba o que deve baixar.
A possibilidade de coletar esses arquivos de configuração nos permitiu mapear a infraestrutura de rede da Trickbot. O módulo principal usa sua lista de servidores C&C hardcodeados e se conecta a uma delas para baixar uma segunda lista de servidores C&C, a chamada lista psrv. O módulo principal contata esta segunda camada de servidores C&C para baixar os plug-ins padrão especificados no arquivo de configuração hardcodeado. Outros módulos podem ser baixados posteriormente, após receber dos operadores do Trickbot um comando para fazer isso. Alguns dos plug-ins, como o plug-in injetDll, por exemplo, têm seus próprios servidores C&C, que contêm arquivos de configuração. Existem servidores C&C dedicados para plug-ins. Os mais prevalentes são os chamados servidores dpost, que são usados para extrair dados roubados, como credenciais, mas, conforme detalhado no Apêndice, existem outros. Todas essas camadas diferentes tornam o esforço de interrupção mais desafiador. A Figura 5 ilustra esse processo de comunicação inicial.

Figura 5. Processo de comunicação da rede da botnet Trickbot.
Temos rastreado esses servidores C&C desde o início de 2017. Esse conhecimento, claro, foi vital na tarefa de interrupção, pois, dessa forma, foi possível contribuir para o mapeamento da infraestrutura de rede usada pelos cibercriminosos.
Outro artefato interessante que foi possível coletar ao rastrear essa botnet é o identificador exclusivo presente em cada amostra da Trickbot, chamados de gtags. Essa é uma string presente no arquivo de configuração inicial hardcodeado que identifica diferentes campanhas da Trickbot ou modo de comprometimento. Por exemplo, acredita-se que as campanhas do grupo mor sejam ataques ocasionados pela Trickbot devido ao Emotet. Os gtags também podem indicar o alvo de uma campanha em alguns casos. Um bom exemplo é o uk03-1, que se concentra principalmente nas instituições financeiras do Reino Unido.
A Figura 6 apresenta uma linha do tempo de todos os grupos gtags que extraímos dos arquivos de configuração da Trickbot de setembro de 2019 a setembro de 2020. Olhando para o grupo mor, por exemplo, podemos ver a parada abrupta das campanhas do Emotet em abril de 2020. Existem também alguns que são usados por módulos específicos. Os grupos tot, jim e lib são alguns dos gtags vistos com mais frequência e estão associados aos módulos mShare, nworm/mworm e tab respectivamente, de acordo com uma postagem recente da equipe da Unit42. Como todos esses são usados para o movimento lateral, não é uma surpresa observar uma linha do tempo quase constante.

Figura 6. Cronologia dos grupos gtags.
Para destacar
Tentar interromper uma ameaça como a botnet Trickbot é uma tarefa bastante desafiadora e complexa. A Trickbot tem vários mecanismos de reserva e sua interconexão clandestina com outros cibercriminosos torna a operação extremamente complexa. Continuaremos monitorando essa ameaça e avaliando o impacto que tais ações podem ocasionar.
Um agradecimento especial a Jakub Tomanek, Jozef Dúc, Zoltán Rusnák e Filip Mazán.
Nomes das detecções, segundo a ESET
Win32/TrickBot
Win64/TrickBot
MITRE ATT&CK techniques
Nota: esta tabela foi criada usando a versão 7 do framework MITER ATT & CK.
Tactic | ID | Name | Description |
---|---|---|---|
Initial Access | T1566.001 | Phishing: Spearphishing Attachment | Trickbot has used an email with an Excel sheet containing a malicious macro to deploy the malware. |
Execution | T1059.003 | Command and Scripting Interpreter: Windows Command Shell | Trickbot has used cmd.exe /c to download and deploy the malware on the user’s machine. |
T1059.005 | Command and Scripting Interpreter: Visual Basic | Trickbot has used macros in Excel documents to download and deploy the malware on the user’s machine. | |
T1106 | Native API | Trickbot uses the Windows API CreateProcessW to manage execution flow. | |
T1204.002 | User Execution: Malicious File | Trickbot has attempted to get users to launch a malicious Excel attachment to deliver its payload. | |
T1059.007 | Command and Scripting Interpreter: JavaScript/Jscript | Trickbot group used obfuscated JavaScript to download Trickbot loader. | |
T1559.001 | Inter-Process Communication: Component Object Model | Trickbot used COM to setup scheduled task for persistence. | |
Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder | Trickbot establishes persistence in the Startup folder. |
T1053.005 | Scheduled Task/Job: Scheduled Task | Trickbot creates a scheduled task on the system that provides persistence. | |
Privilege Escalation | T1055.012 | Process Injection: Process Hollowing | Trickbot injects into the svchost.exe process. |
Defense Evasion | T1140 | Deobfuscate/Decode Files or Information | Trickbot decodes its configuration data and modules. |
T1562.001 | Impair Defenses: Disable or Modify Tools | Trickbot can disable Windows Defender. | |
T1112 | Modify Registry | Trickbot can modify registry entries. | |
T1027 | Obfuscated Files or Information | Trickbot uses non-descriptive names to hide functionality and uses an AES-CBC (256 bits) encryption algorithm for its loader and configuration files. | |
T1027.002 | Software Packing | Trickbot leverages a custom packer to obfuscate its functionality. | |
T1553 | Subvert Trust Controls | Trickbot uses signed loaders with stolen valid certificates. | |
Credential Access | T1555.003 | Credentials from Password Stores: Credentials from Web Browsers | Trickbot can obtain passwords stored by web browsers such as Chrome, Firefox, Internet Explorer, and Microsoft Edge. |
T1056.004 | Input Capture: Credential API Hooking | Trickbot has the ability to capture RDP credentials by capturing the CredEnumerateA API. | |
T1552.001 | Unsecured Credentials: Credentials In Files | Trickbot can obtain passwords stored by several applications such as Outlook, Filezilla, and WinSCP. Additionally, it searches for the .vnc.lnk suffix to steal VNC credentials. | |
T1552.002 | Unsecured Credentials: Credentials in Registry | Trickbot can retrieve PuTTY credentials from the Software\SimonTatham\Putty\Sessions registry key. | |
T1110 | Brute Force | Trickbot uses brute-force attack against RDP with rdpscanDll module. | |
Discovery | T1087.001 | Account Discovery: Local Account | Trickbot collects the users of the system. |
T1087.003 | Account Discovery: Email Account | Trickbot collects email addresses from Outlook. | |
T1082 | System Information Discovery | Trickbot gathers the OS version, CPU type, amount of RAM available from the victim’s machine. | |
T1083 | File and Directory Discovery | Trickbot searches the system for all of the following file extensions: .avi, .mov, .mkv, .mpeg, .mpeg4, .mp4, .mp3, .wav, .ogg, .jpeg, .jpg, .png, .bmp, .gif, .tiff, .ico, .xlsx, and .zip. It can also obtain browsing history, cookies, and plugin information. | |
T1016 | System Network Configuration Discovery | Trickbot obtains the IP address and other relevant network information from the victim’s machine. | |
T1007 | System Service Discovery | Trickbot collects a list of installed programs and services on the system’s machine. | |
T1135 | Network Share Discovery | Trickbot module shareDll/mshareDll discovers network shares via the WNetOpenEnumA API. | |
T1057 | Process Discovery | Trickbot uses module networkDll for process list discovery. | |
Lateral Movement | T1210 | Exploitation of Remote Services | Trickbot utilizes EthernalBlue and EthernalRomance exploits for lateral movement in the modules wormwinDll, wormDll, mwormDll, nwormDll, tabDll. |
Collection | T1005 | Data from Local System | Trickbot collects local files and information from the victim’s local machine. |
T1185 | Man in the Browser | Trickbot uses web injects and browser redirection to trick victims into providing their login credentials on a fake or modified web page. | |
Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | Trickbot uses HTTPS to communicate with its C&C servers, to get malware updates, modules that perform most of the malware logic and various configuration files. |
T1573.001 | Encrypted Channel: Symmetric Cryptography | Trickbot uses a custom crypter leveraging Microsoft’s CryptoAPI to encrypt C&C traffic. | |
T1105 | Ingress Tool Transfer | Trickbot downloads several additional files and saves them to the victim’s machine. | |
T1571 | Non-Standard Port | Some Trickbot samples have used HTTP over ports 447 and 8082 for C&C. | |
T1219 | Remote Access Software | Trickbot uses vncDll module to remote control the victim machine. | |
Exfiltration | T1041 | Exfiltration Over C2 Channel | Trickbot exfiltrates data over the C&C channel using HTTP POST requests. |
Apêndice
Módulos de movimento lateral
- shareDll, mshareDll, tshareDll
- Módulos usados para propagar o loader da Trickbot em redes compartilhadas conectadas às máquinas das vítimas.
- wormwinDll, wormDll, mwormDll, nwormDll
- Os módulos costumavam ser distribuídos em uma rede local de máquinas infectadas via SMB. Usa o exploit EternalBLue.
- tabDll
- Módulo usado para distribuir dentro da rede usando o exploit EternalRomance.
Infostealers
- pwgrab
- Módulo para roubo de senhas.
- systeminfo
- Módulo usado para obter informações sobre a máquina da vítima.
- domainDll
- Módulo usado para roubar credenciais e outros dados do Controlador de Domínio via LDAP.
- networkDll
- Módulo usado para coletar informações sobre o sistema e tipologia de rede.
- outlookDll
- Módulo usado para roubar credenciais do Microsoft Outlook.
- importDll
- Módulo usado para roubar informações do navegador, como cookies, histórico do navegador, configurações.
- mailsearcher
- Módulo usado para buscar arquivos na máquina da vítima em uma lista de extensões hardcodeadas (documentos, imagens, vídeo).
- cookiesDll
- Módulo para roubar cookies do navegador.
- squlDll
- Módulo usado para coletar endereços de e-mail do servidor SQL.
- aDll
- Rouba banco de dados do Active Directory.
- psfin
- O módulo busca no Active Directory por strings específicas constantes que estão relacionadas ao software POS.
Abuso de rede
- injectDll
- Módulo Webinject.
- NewBCtestDll, NewBCtestnDll
- Módulo que funciona como proxy reverso e é capaz de executar comandos.
- vncDll
- Módulo usado como RAT na máquina da vítima.
- vpnDll
- Módulo usado para criar um proxy VPN direcionado a um endereço específico.
- rdpscanDll
- Módulo usado para força bruta o RDP de uma determinada lista de alvos.
- bcClientDllTestTest
- Um módulo antigo usado para desviar o tráfego operado pela Trickbot através da máquina da vítima.
- shadnewDll
- Módulo Man-in-the-Browser. Contém uma implementação completa do módulo principal IcedID. Ele pode interceptar o tráfego web na máquina da vítima.
Outros
- mexecDll
- Módulo com a finalidade geral de "baixar e executar".
Module names | Sub-config | Rich headers |
---|---|---|
shareDll, mshareDll, tshareDll | NO | |
wormwinDll, wormDll, mwormDll, nwormDll | NO | |
tabDll | dpost | YES |
pwgrab | dpost | YES |
systeminfo | YES | |
domainDll | NO | |
networkDll | dpost | YES |
outlookDll | NO | |
importDll | NO | |
mailsearcher | mailconf | NO |
cookiesDll | dpost | YES |
squlDll | YES | |
aDll | YES | |
psfin | dpost | YES |
injectDll | dinj, sinj, dpost | YES/NO |
NewBCtestDll, NewBCtestnDll | bcconfig3 | YES |
vncDll | vncconf | YES |
vpnDll | vpnsrv | YES |
rdpscanDll | srv | YES |
bcClientDllTestTest | YES | |
shadnewDll | dom | YES |
mexecDll | YES |
Links úteis:
Publicação da Microsoft: https://blogs.microsoft.com/on-the-issues/?p=64132