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.

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.

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.

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.

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.

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.

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.

TacticIDNameDescription
Initial AccessT1566.001Phishing: Spearphishing AttachmentTrickbot has used an email with an Excel sheet containing a malicious macro to deploy the malware.
ExecutionT1059.003Command and Scripting Interpreter: Windows Command ShellTrickbot has used cmd.exe /c to download and deploy the malware on the user’s machine.
T1059.005Command and Scripting Interpreter: Visual BasicTrickbot has used macros in Excel documents to download and deploy the malware on the user’s machine.
T1106Native APITrickbot uses the Windows API CreateProcessW to manage execution flow.
T1204.002User Execution: Malicious FileTrickbot has attempted to get users to launch a malicious Excel attachment to deliver its payload.
T1059.007Command and Scripting Interpreter: JavaScript/JscriptTrickbot group used obfuscated JavaScript to download Trickbot loader.
T1559.001Inter-Process Communication: Component Object ModelTrickbot used COM to setup scheduled task for persistence.
PersistenceT1547.001Boot or Logon Autostart Execution: Registry Run Keys / Startup FolderTrickbot establishes persistence in the Startup folder.
T1053.005Scheduled Task/Job: Scheduled TaskTrickbot creates a scheduled task on the system that provides persistence.
Privilege EscalationT1055.012Process Injection: Process HollowingTrickbot injects into the svchost.exe process.
Defense EvasionT1140Deobfuscate/Decode Files or InformationTrickbot decodes its configuration data and modules.
T1562.001Impair Defenses: Disable or Modify ToolsTrickbot can disable Windows Defender.
T1112Modify RegistryTrickbot can modify registry entries.
T1027Obfuscated Files or InformationTrickbot uses non-descriptive names to hide functionality and uses an AES-CBC (256 bits) encryption algorithm for its loader and configuration files.
T1027.002Software PackingTrickbot leverages a custom packer to obfuscate its functionality.
T1553Subvert Trust ControlsTrickbot uses signed loaders with stolen valid certificates.
Credential AccessT1555.003Credentials from Password Stores: Credentials from Web BrowsersTrickbot can obtain passwords stored by web browsers such as Chrome, Firefox, Internet Explorer, and Microsoft Edge.
T1056.004Input Capture: Credential API HookingTrickbot has the ability to capture RDP credentials by capturing the CredEnumerateA API.
T1552.001Unsecured Credentials: Credentials In FilesTrickbot 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.002Unsecured Credentials: Credentials in RegistryTrickbot can retrieve PuTTY credentials from the Software\SimonTatham\Putty\Sessions registry key.
T1110Brute ForceTrickbot uses brute-force attack against RDP with rdpscanDll module.
DiscoveryT1087.001Account Discovery: Local AccountTrickbot collects the users of the system.
T1087.003Account Discovery: Email AccountTrickbot collects email addresses from Outlook.
T1082System Information DiscoveryTrickbot gathers the OS version, CPU type, amount of RAM available from the victim’s machine.
T1083File and Directory DiscoveryTrickbot 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.
T1016System Network Configuration DiscoveryTrickbot obtains the IP address and other relevant network information from the victim’s machine.
T1007System Service DiscoveryTrickbot collects a list of installed programs and services on the system’s machine.
T1135Network Share DiscoveryTrickbot module shareDll/mshareDll discovers network shares via the WNetOpenEnumA API.
T1057Process DiscoveryTrickbot uses module networkDll for process list discovery.
Lateral MovementT1210Exploitation of Remote ServicesTrickbot utilizes EthernalBlue and EthernalRomance exploits for lateral movement in the modules wormwinDll, wormDll, mwormDll, nwormDll, tabDll.
CollectionT1005Data from Local SystemTrickbot collects local files and information from the victim’s local machine.
T1185Man in the BrowserTrickbot uses web injects and browser redirection to trick victims into providing their login credentials on a fake or modified web page.
Command and ControlT1071.001Application Layer Protocol: Web ProtocolsTrickbot 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.001Encrypted Channel: Symmetric CryptographyTrickbot uses a custom crypter leveraging Microsoft’s CryptoAPI to encrypt C&C traffic.
T1105Ingress Tool TransferTrickbot downloads several additional files and saves them to the victim’s machine.
T1571Non-Standard PortSome Trickbot samples have used HTTP over ports 447 and 8082 for C&C.
T1219Remote Access SoftwareTrickbot uses vncDll module to remote control the victim machine.
ExfiltrationT1041Exfiltration Over C2 ChannelTrickbot 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 namesSub-configRich headers
shareDll, mshareDll, tshareDllNO
wormwinDll, wormDll, mwormDll, nwormDllNO
tabDlldpostYES
pwgrabdpostYES
systeminfoYES
domainDllNO
networkDlldpostYES
outlookDllNO
importDllNO
mailsearchermailconfNO
cookiesDlldpostYES
squlDllYES
aDllYES
psfindpostYES
injectDlldinj, sinj, dpostYES/NO
NewBCtestDll, NewBCtestnDllbcconfig3YES
vncDllvncconfYES
vpnDllvpnsrvYES
rdpscanDllsrvYES
bcClientDllTestTestYES
shadnewDlldomYES
mexecDllYES

Fuente y redacción: welivesecurity.com / Jean-Ian Boutin

Compartir