ESET ha colaborado con Microsoft, Black Lotus Labs de Lumen, NTT Ltd., entre otros, en un intento de interrumpir las botnets de Trickbot. ESET contribuyó al proyecto proporcionando análisis técnico, información estadística y nombres de dominio e IP de servidores de comando y control.

Trickbot ha infectado a más de un millón de dispositivos informáticos en todo el mundo desde finales de 2016 y hemos estado rastreando sus actividades desde el principio. Solo en 2020, nuestra plataforma automática analizó más de 125.000 muestras maliciosas y descargó y descifró más de 40.000 archivos de configuración utilizados por los diferentes módulos de Trickbot, brindándonos un excelente punto de vista de los diferentes servidores C&C utilizados por esta botnet.

Trickbot, una botnet duradera

Trickbot ha sido desde hace ya bastante tiempo una gran molestia para los usuarios de Internet. La primera detección de ESET para Trickbot se creó a fines de 2016. Durante estos años, se han reportado compromisos de Trickbot de manera constante, lo que la convierte en una de las botnets más grandes y duraderas que existen. Como se mencionó en nuestro Informe de amenazas correspondiente al primer trimestre de 2020, Trickbot es una de las familias de malware bancario más prevalentes. En la Figura 1, los datos de telemetría de ESET muestran que este malware representa una amenaza para los usuarios de Internet a nivel mundial.

Figura 1. Detecciones de Trickbot en todo el mundo entre octubre de 2019 y octubre de 2020

A lo largo de su existencia, el malware Trickbot ha sido distribuido de varias formas. Recientemente, una cadena de distribución que hemos observamos con frecuencia es Trickbot siendo “droppeado” en sistemas que ya fueron comprometidos por Emotet, otra gran botnet. En el pasado, el malware Trickbot era utilizado por sus operadores principalmente como un troyano bancario que robaba credenciales de cuentas bancarias en línea e intentaba realizar transferencias fraudulentas.

La arquitectura modular de Trickbot le permite realizar una amplia gama de acciones maliciosas utilizando una variedad de plugins. En este sentido, si bien puede robar todo tipo de credenciales de una computadora comprometida, recientemente se observó que ha estado siendo utilizado como un mecanismo de entrega para realizar ataques más dañinos, como el ransomware.

Uno de los plugins que desarrollaron primero permite a Trickbot utilizar web injects, una técnica que permite al malware cambiar dinámicamente lo que ve un usuario cuyo sistema fue comprometido al visitar sitios web específicos. Para operar, este plugin se basa en archivos de configuración descargados por el módulo principal. Estos contienen información sobre qué sitios web deben modificarse y cómo. La Figura 2 muestra un extracto de uno de esos archivos de configuración descifrados que contiene las URL específicas y las URL de C&C maliciosas que el bot debe contactar cuando la víctima accede a las URL 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. Extracto de un archivo de configuración dinj descifrado (redactado)

A través de nuestro monitoreo de las campañas de Trickbot, recopilamos decenas de miles de archivos de configuración diferentes, lo que nos permitió saber qué sitios web fueron atacados por los operadores de Trickbot. La Figura 3 muestra la cantidad de sitios web extraídos de los archivos de configuración en 2020.

Figura 3. Número de sitios web apuntados en 2020

Estas URL apuntadas pertenecen en su mayoría a instituciones financieras. Hay una fuerte caída a partir de marzo en la cantidad de sitios que se encontraron en estos archivos de configuración. Esto coincide con el momento en que los operadores de Trickbot eliminaron el módulo webinject de la lista de plugins predeterminados que son descargados automáticamente por el módulo principal —es por eso esta razón que no tenemos datos en marzo; por lo que tuvimos que ajustar nuestros procesos para mantener visibilidad sobre las URL apuntadas. Esta caída probablemente se deba a que el grupo detrás de Trickbot comenzó a enfocarse en otras formas de monetización durante ese período de tiempo: el ransomware.

En estos casos, el compromiso de Trickbot se utiliza primero para realizar tareas de reconocimiento y movimiento lateral en la red de una organización y luego lanzar el ransomware Ryuk en tantos sistemas como sea posible. A partir de los datos que hemos recopilado, parece que los operadores de Trickbot pasaron de intentar robar dinero de las cuentas bancarias a comprometer a toda una organización con el malware y luego usarlo para ejecutar Ryuk y demandar el pago de un rescate para desbloquear los sistemas afectados.

También observamos nuevos proyectos de desarrollo de malware supuestamente provenientes de los operadores de Trickbot, lo que también podría explicar su repentino desinterés en utilizar Trickbot como un troyano bancario. Uno de estos proyectos es el denominado proyecto Anchor, una plataforma orientada principalmente al espionaje en lugar de al crimeware. También es probable que estén involucrados en el desarrollo del malware Bazar, un loader y un backdoor utilizado para distribuir códigos maliciosos como el ransomware, y para robar datos confidenciales de sistemas comprometidos.

Trickbot en profundidad

Lo que hace que Trickbot sea tan versátil es que sus funcionalidades se pueden ampliar enormemente con plugins. A lo largo de nuestro seguimiento, pudimos recopilar y analizar 28 plugins diferentes. Algunos están destinados a recopilar contraseñas de navegadores, clientes de correo electrónico y una variedad de aplicaciones, mientras que otros pueden modificar el tráfico de red o autopropagarse. Los plugins de Trickbot se implementan como DLL de Windows estándar, generalmente con al menos estas cuatro exportaciones distintivas: Start, Control, Release y FreeBuffer.

Curiosamente, algunos tienen Rich headers, mientras que otros no. Los Rich headers son una estructura de datos no documentada que se agrega a todos los binarios creados por Microsoft Visual Studio 97 SP3 o posterior. Contienen información sobre el entorno de desarrollo donde se creó el ejecutable. El hecho de que los Rich headers no siempre estén presentes en los plugins —y que cuando están presentes muestran diferentes entornos de desarrollo— nos lleva a creer que estos plugins fueron escritos por diferentes desarrolladores.

Una vez que se desarrollaron y se usaron de forma activa en campañas, no observamos muchas muestras diferentes de los distintos plugins. Los que más cambiaron son los que contienen un archivo de configuración estático embebido en el binario. Estos archivos de configuración estáticos contienen, entre otras cosas, información del servidor de C&C, por lo que se espera que estos cambien con el tiempo. La Figura 4 muestra la cantidad de variaciones que vimos para cada módulo que recopilamos a través de nuestra plataforma de seguimiento de botnets. La mayoría de las variantes de los módulos más nuevos vienen en pares: aproximadamente la mitad de los módulos recopilados eran versiones de 32 bits, mientras que la otra mitad eran versiones de 64 bits. En el Apéndice puede encontrar una breve descripción de cada uno de estos módulos.

Figura 4. Recuento de variantes para cada plugin de Trickbot

Archivos de configuración para todos

Si bien en una instalación de Trickbot son descargados muchos y diferentes archivos de configuración, el módulo principal contiene una configuración cifrada y hardcodeada. Esta contiene una lista de servidores C&C, así como una lista predeterminada de plugins que deben ser descargados.

Como se mencionó anteriormente, algunos plugins también dependen de los archivos de configuración para funcionar correctamente. Estos plugins se apoyan en el módulo principal para descargar estos archivos de configuración de los servidores de C&C. Los plugins logran esto al pasar una pequeña estructura de configuración del módulo, almacenada en la sección de superposición del binario del plugin, que permite al módulo principal saber qué debe descargar.

Poder recopilar estos archivos de configuración nos permitió mapear la infraestructura de red de Trickbot. El módulo principal usa su lista de servidores C&C hardcodeados y se conecta a uno de ellos para descargar una segunda lista de servidores C&C, la llamada lista psrv. El módulo principal contacta esta segunda capa de servidores C&C para descargar los plugins predeterminados especificados en el archivo de configuración hardcodeado. Otros módulos se pueden descargar más tarde tras recibir un comando para hacerlo por parte de los operadores de Trickbot. Algunos de los plugins, como el plugin injectDll, por ejemplo, tienen sus propios servidores C&C, los cuales contienen archivos de configuración. Finalmente, existen servidores C&C dedicados para plugins. Los más prevalentes son los llamados servidores dpost, que se utilizan para extraer datos robados, como credenciales, pero, como se detalla en el Apéndice, existen otros. Todas estas capas diferentes hacen que el esfuerzo de disrupción sea más desafiante. La figura 5 ilustra este proceso de comunicación inicial.

Figura 5. Proceso de comunicación de la red de Trickbot

Hemos estado rastreando estos diferentes servidores de C&C desde principios de 2017. Este conocimiento fue, por supuesto, vital en el esfuerzo de disrupción, ya que pudimos contribuir al mapeo de la infraestructura de red utilizada por los actores maliciosos.

Otro artefacto interesante que pudimos recopilar al rastrear esta botnet es el identificador único presente en cada muestra de Trickbot, los llamadas gtag. Esta es una string presente en el archivo de configuración inicial hardcodeado que identifica diferentes campañas de Trickbot o el modo de compromiso. Por ejemplo, se cree que las campañas del grupo mor son compromisos de Trickbot debido a Emotet. Los gtags también pueden indicar en algunos casos el blanco de una campaña. Un buen ejemplo es uk03-1, que se centró principalmente en instituciones financieras del Reino Unido.

La Figura 6 presenta una línea de tiempo de todos los grupos de gtags que extrajimos de los archivos de configuración de Trickbot desde septiembre de 2019 a septiembre de 2020. Al observar el grupo mor, por ejemplo, podemos ver la parada abrupta de las campañas de Emotet en abril de 2020. También hay algunas que son utilizados por módulos específicos. Los grupos tot, jim y lib son algunos de los que más continuamente se ven gtags y están asociados con los módulos mShare, nworm/mworm y módulos tab respectivamente, de acuerdo con una reciente publicación de Unit42. Como todos estos se utilizan para el movimiento lateral, no es sorprendente ver una línea de tiempo casi constante.

Figura 6. Cronología de los grupos de gtags 

Para destacar

Tratar de interrumpir una amenaza como Trickbot es muy desafiante y complejo. Tiene varios mecanismos de reserva y su interconexión con otros actores del cibercrimen activos en la clandestinidad hace que la operación en general sea extremadamente compleja. Continuaremos monitoreando esta amenaza y evaluando el impacto que tales acciones pueden tener en una botnet tan extensa a largo plazo.

Un agradecimiento especial Jakub Tomanek, Jozef Dúc, Zoltán Rusnák y Filip Mazán

Nombres de detección de ESET

Win32/TrickBot
Win64/TrickBot

MITRE ATT&CK techniques

Nota: esta tabla fue creada utilizando la versión 7 del framework de MITRE 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 movimiento lateral

  • shareDll, mshareDll, tshareDll
    • Módulos utilizados para propagar el loader de Trickbot en redes compartidas conectadas de las máquinas víctimas.
  • wormwinDll, wormDll, mwormDll, nwormDll
    • Módulos usados para distribuirse dentro de una red local de máquinas infectadas a través de SMB. Utiliza el exploit EternalBLue.
  • tabDll
    • Módulo usado para distribuir dentro de la red utilizando el exploit EternalRomance.

Infostealers

  • pwgrab
    • Módulo para robo de contraseñas.
  • systeminfo
    • Módulo usado para obtener información sobre la máquina víctima.
  • domainDll
    • Módulo usado para robar credenciales y otros datos del Controlador de Dominio vía LDAP.
  • networkDll
    • Módulo usado para recolectar información del sistema y tipología de la red.
  • outlookDll
    • Módulo usado para robar credenciales de Microsoft Outlook.
  • importDll
    • Módulo usado para robar información del navegador, como cookies, historial del navegador, configuraciones.
  • mailsearcher
    • Módulo usado para buscar archivos en la máquina víctima contra una lisdta de extensiones hardcodeadas (documentos, imágenes, video).
  • cookiesDll
    • Módulo para robar cookies del navegador web.
  • squlDll
    • Módulo usado para recolectar direcciones de correo electrónico del servidor SQL server.
  • aDll
    • Roba base de datos de Active Directory.
  • psfin
    • El módulo busca en Active Directory strings específicas constantes que están relacionadas con el software de punto de venta.

Abuso de red

  • injectDll
    • Módulo Webinject.
  • NewBCtestDll, NewBCtestnDll
    • Módulo que funciona como proxy inverso y que es capaz de ejecutar comandos.
  • vncDll
    • Módulo usado como RAT en la máquina víctima.
  • vpnDll
    • Módulo usado para crear un proxy VPN dirigido a una dirección determinada.
  • rdpscanDll
    • Módulo usado para realizar fuerza bruta al RDP de una determinada lista de objetivos.
  • bcClientDllTestTest
    • Un antiguo módulo usado para derivar tráfico operado por Trickbot a través de la máquina víctima.
  • shadnewDll
    • Módulo Man-in-the-Browser. Contiene una completa implementación del módulo principal IcedID. Puede interceptar tráfico web en la máquina víctima.

Otros

  • mexecDll
    • Módulo con el propósito general de "descargar y ejecutar".

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

Enlaces útiles:

Publicación de Microsoft: https://blogs.microsoft.com/on-the-issues/?p=64132