ESET a collaboré avec ses partenaires Microsoft, Lumen's Black Lotus Labs, NTT Ltd. et d'autres pour tenter de perturber les réseaux de zombies Trickbot. ESET a contribué au projet en fournissant une analyse technique, des informations statistiques, ainsi que des noms de domaine et des adresses IP connus de serveurs de commande et de contrôle.

Trickbot a infecté plus d'un million d'appareils informatiques dans le monde depuis la fin de 2016 et nous suivons ses activités depuis le début. Rien qu'en 2020, notre plateforme automatique a analysé plus de 125 000 échantillons malveillants et a téléchargé et déchiffré plus de 40 000 fichiers de configuration utilisés par les différents modules de Trickbot, ce qui nous donne un excellent point de vue sur les différents serveurs de commande et de contrôle utilisés par ce botnet.

Trickbot, un botnet ayant une grande longévité

Trickbot est depuis longtemps une nuisance majeure pour les internautes. La première détection de Trickbot par ESET a été créée fin 2016. Au cours de ces années, les compromis de Trickbot ont été régulièrement signalés, ce qui en fait l'un des plus grands et des plus anciens réseaux de zombies. Comme indiqué dans notre rapport sur les menaces au premier trimestre de 2020, Trickbot est l'une des familles de logiciels malveillants bancaires les plus répandues. Comme le montre la figure 1, les données de télémétrie d'ESET montrent que cette souche de logiciels malveillants représente une menace pour les internautes du monde entier.

Figure 1. Détections mondiales de Trickbot entre octobre 2019 et octobre 2020

Tout au long de son existence, le logiciel malveillant Trickbot a été distribué de différentes manières. Récemment, une chaîne que nous avons fréquemment observée est le dépôt de Trickbot sur des systèmes déjà compromis par Emotet, un autre grand botnet. Dans le passé, les logiciels malveillants Trickbot étaient surtout utilisés par leurs opérateurs comme des chevaux de Troie bancaires, qui volaient les références des comptes bancaires en ligne et essayaient d'effectuer des transferts frauduleux.

L'architecture modulaire de Trickbot lui permet d'exécuter un vaste éventail d'actions malveillantes à l'aide de divers plugins. Il peut voler toutes sortes d'informations d'identification sur un ordinateur compromis et, plus récemment, a été observé principalement comme un mécanisme de livraison pour des attaques plus dommageables, telles que les rançongiciels.

L'un des plus anciens plugins développés pour la plateforme permet à Trickbot d'utiliser des injections web, une technique permettant au logiciel malveillant de modifier dynamiquement ce que l'utilisateur d'un système compromis voit lorsqu'il visite des sites web spécifiques. Pour fonctionner, ce plugin s'appuie sur des fichiers de configuration téléchargés par le module principal. Ces fichiers contiennent des informations sur les sites web à modifier et sur la manière de le faire. La figure 2 montre un extrait d'un tel fichier de configuration déchiffré contenant les URL ciblées et les URL C&C malveillantes que le robot doit contacter lorsque la victime accède aux URL ciblées.

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

Figure 2. Extrait d'un fichier de configuration de dinj déchiffré (expurgé)

Grâce à notre surveillance des campagnes de Trickbot, nous avons recueilli des dizaines de milliers de fichiers de configuration différents, ce qui nous permet de savoir quels sites web ont été ciblés par les opérateurs de Trickbot. La figure 3 montre le nombre de sites web extraits des fichiers de configuration en 2020.

Figure 3. Nombre de sites web ciblés en 2020

Ces URL ciblées appartiennent pour la plupart à des institutions financières. Le nombre de cibles trouvées dans ces fichiers de configuration a fortement diminué à partir du mois de mars. Cela coïncide avec le moment où les opérateurs de Trickbot ont supprimé le module webinject de la liste des plugins par défaut téléchargés automatiquement par le module principal - c'est pourquoi nous n'avons pas de données en mars ; nous avons dû ajuster nos processus pour maintenir la visibilité sur les URLs ciblées. Cette baisse du nombre de cibles est probablement due au fait que le groupe Trickbot a commencé à se concentrer sur un autre moyen de monétisation pendant cette période : les rançongiciels.

Ici, Trickbot est d'abord utilisé pour effectuer une reconnaissance et un mouvement latéral dans le réseau d'une organisation, puis pour déposer le rançongiciel Ryuk sur le plus grand nombre de systèmes possible. D'après les données que nous avons recueillies, il semble que les opérateurs de Trickbot soient passés d'une tentative de vol d'argent sur des comptes bancaires à la compromission de toute une organisation avec Trickbot, puis à son utilisation pour exécuter Ryuk et demander une rançon pour déverrouiller les systèmes concernés.

Nous avons également observé de nouveaux projets de développement de logiciels malveillants qui proviendraient des opérateurs de Trickbot, ce qui pourrait également expliquer leur désintérêt soudain à utiliser Trickbot comme un cheval de Troie bancaire. L'un de ces projets est le projet Anchor, une plate-forme principalement axée sur l'espionnage plutôt que sur les logiciels criminels. Ils sont également probablement impliqués dans le développement du logiciel malveillant Bazar - un chargeur et une porte dérobée utilisés pour déployer des logiciels malveillants, tels que des rançongiciels, et pour voler des données sensibles sur des systèmes compromis.

Analyse en profondeur de Trickbot

Ce qui rend Trickbot si polyvalent, c'est que ses fonctionnalités peuvent être considérablement étendues grâce à des plugins. Tout au long de notre suivi, nous avons pu collecter et analyser 28 plugins différents. Certains sont destinés à récupérer les mots de passe des navigateurs, des clients de messagerie et de diverses applications, tandis que d'autres peuvent modifier le trafic réseau ou se propager. Les plugins Trickbot sont implémentés comme des DLL Windows standard, avec généralement au moins ces quatre exportations distinctes : Start, Control, Release et FreeBuffer.

Il est intéressant de noter que certains ont des en-têtes Rich alors que d'autres n'en ont pas. Les en-têtes Rich sont une structure de données non documentée ajoutée à tous les binaires construits par Microsoft Visual Studio 97 SP3 ou ultérieur. Ils contiennent des informations sur l'environnement de développement dans lequel l'exécutable a été construit. Le fait que les en-têtes Rich ne soient pas toujours présents dans les plugins - et que lorsqu'ils sont présents, ils montrent différents environnements de développement - nous amène à penser que ces plugins ont été écrits par différents développeurs.

Nous n'avons pas observé beaucoup d'échantillons différents des différents plugins une fois qu'ils ont été développés et utilisés dans la nature. Ceux qui ont le plus changé sont ceux qui contiennent un fichier de configuration statique intégré dans le binaire. Ces fichiers de configuration statiques contiennent, entre autres, des informations sur le serveur C&C, donc on s'attend à ce qu'ils changent avec le temps. La figure 4 montre le nombre de variations que nous avons constatées pour chaque module que nous avons collecté grâce à notre plateforme de suivi des réseaux de zombies. La plupart des variantes des modules les plus récents se présentent par paires : environ la moitié des modules collectés étaient des versions 32 bits, tandis que l'autre moitié était des versions 64 bits. En Annexe, vous trouverez une brève description de chacun de ces modules.

Figure 4. Nombre de variantes pour chaque plugin Trickbot

Configurations de fichiers pour tous

Bien qu'il existe potentiellement de nombreux fichiers de configuration différents téléchargés dans une installation de Trickbot, le module principal contient une configuration cryptée et codée en dur. Celle-ci contient une liste de serveurs C&C ainsi qu'une liste par défaut de plugins qui doivent être téléchargés.

Comme mentionné précédemment, certains plugins dépendent également des fichiers de configuration pour fonctionner correctement. Ces plugins s'appuient sur le module principal pour télécharger ces fichiers de configuration à partir des serveurs C&C. Les plugins y parviennent en passant une petite structure de configuration de module, stockée dans la section de recouvrement du binaire du plugin, qui permet au module principal de savoir ce qu'il doit télécharger.

Le fait de pouvoir rassembler ces fichiers de configuration nous a permis de cartographier l'infrastructure réseau de Trickbot. Le module principal utilise sa liste de serveurs C&C codés en dur et se connecte à l'un d'entre eux pour télécharger une seconde liste de serveurs C&C, la liste dite psrv . Le module principal contacte cette deuxième couche de serveurs C&C pour télécharger les plugins par défaut spécifiés dans le fichier de configuration codé en dur. Les autres modules peuvent être téléchargés ultérieurement sur commande des opérateurs de Trickbot. Certains de ces plugins, comme le plugin injectDll, par exemple, ont leurs propres serveurs C&C, qui contiennent des fichiers de configuration. Enfin, il existe des serveurs C&C dédiés aux plugins. Les plus répandus sont les serveurs dpost, utilisés pour exfiltrer des données volées telles que des informations d'identification, mais, comme le montre l'Annexe, il en existe d'autres. Toutes ces différentes couches rendent l'effort de perturbation plus difficile. La figure 5 illustre ce processus de communication initial.

Figure 5. Processus de communication du réseau Trickbot

Nous suivons ces différents serveurs C&C depuis le début de 2017. Cette connaissance a bien sûr été vitale dans l'effort de perturbation, puisque nous avons pu contribuer à la cartographie de l'infrastructure réseau utilisée par les acteurs malveillants.

Un autre élément intéressant que nous avons pu recueillir en explorant ce botnet est l'identifiant unique présent dans chaque échantillon de Trickbot, surnommé gtag. Il s'agit d'une chaîne présente dans le fichier de configuration initial codé en dur identifiant les différentes campagnes de Trickbot ou le mode de compromission. Par exemple, les autres campagnes mor sont considérées comme des compromissions de Trickbot dus à Emotet. Les gtags peuvent aussi parfois indiquer la cible d'une campagne. Un bon exemple est celui de uk03-1, qui visait principalement les institutions financières au Royaume-Uni.

La figure 6 présente une chronologie de tous les gtags que nous avons extraits des fichiers de configuration de Trickbot de septembre 2019 à septembre 2020. En regardant le groupe mor, on peut voir l'arrêt brutal des campagnes Emotet en avril 2020. Il y a également quelques groupes qui sont utilisés par des modules spécifiques. Les groupes tot, jim et lib sont parmi les gtags les plus visibles en permanence et sont associés aux modules mshare, nworm/mworm et tab respectivement, selon un récent article de l'Unit42. Comme tous ces groupes sont utilisés pour le mouvement latéral, il n'est pas surprenant de voir une ligne pratiquement constante dans leur ligne de temps.

Figure 6. Ligne de temps du groupe gtags

Remarques finales

Tenter de perturber une menace insaisissable telle que Trickbot est très difficile et complexe. Il dispose de divers mécanismes de repli et son interconnexion avec d'autres acteurs cybercriminels très actifs dans le monde souterrain rend l'opération globale extrêmement complexe. Nous continuerons à suivre cette menace et à évaluer l'impact que de telles actions peuvent avoir sur un botnet aussi tentaculaire à long terme.

Nous remercions tout particulièrement Jakub Tomanek, Jozef Dúc, Zoltán Rusnák et Filip Mazán

Noms de détection d’ESET

Win32/TrickBot
Win64/TrickBot

Techniques MITRE ATT&CK

Note : Ce tableau a été construit en utilisant la version 7 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.

Appendices

Lateral movement modules

  • shareDll, mshareDll, tshareDll
    • Modules used to propagate Trickbot loader to connected network shares of the victimized machine.
  • wormwinDll, wormDll, mwormDll, nwormDll
    • Modules used for spreading inside a local network of compromised machines via SMB. It uses the EternalBlue exploit.
  • tabDll
    • Module used to spread into the network using the EternalRomance exploit.

Infostealers

  • pwgrab
    • Password stealer module.
  • systeminfo
    • Module used for gathering information about the victim machine.
  • domainDll
    • Module used for stealing credentials and other data from the Domain Controller via LDAP.
  • networkDll
    • Module used to collect system information and network topology.
  • outlookDll
    • Module used for stealing credentials from Microsoft Outlook.
  • importDll
    • Module used for stealing browser information such as cookies, browser history, configurations.
  • mailsearcher
    • Module used to search for files on the victim machine against a list of hardcoded extensions (documents, images, video).
  • cookiesDll
    • Web browser cookie stealer module.
  • squlDll
    • Module used to harvest email addresses from the SQL server and scrape credentials from the afflicted system with the Mimikatz utility.
  • aDll
    • Steals Active Directory database.
  • psfin
    • Module queries the Active Directory for specific string constants which are related to Point-of-Sale software.

Network abuse

  • injectDll
    • Webinject module.
  • NewBCtestDll, NewBCtestnDll
    • Module that is a reverse proxy and is able to execute commands.
  • vncDll
    • Module used as a RAT on the victim machine.
  • vpnDll
    • Module used to create VPN proxy routed to a given address.
  • rdpscanDll
    • Module used for brute forcing RDP on a certain list of targets.
  • bcClientDllTestTest
    • An old module used to proxy Trickbot operator traffic through a victim machine.
  • shadnewDll
    • Man-in-the-Browser module. It contains a full implementation of IcedID main module. It can intercept web traffic on the victim machine.

Other

  • mexecDll
    • General purpose “download and execute” module.

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

Useful links:

Microsoft blog post: https://blogs.microsoft.com/on-the-issues/?p=64132