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