ESET hat mit Partnern wie Microsoft, Lumens Black Lotus Labs, NTT Ltd. und anderen zusammengearbeitet, um das TrickBot-Botnets zu stören. ESET hat zum Projekt beigetragen, indem wir technische Analysen, statistische Informationen sowie bekannte Domänennamen und IPs von Command-and-Control-Servern (C&C-Server) bereitgestellt haben.
Seit Ende 2016 hat TrickBot weltweit über eine Million Computergeräte infiziert und wir haben seine Aktivitäten von Anfang an verfolgt. Allein im Jahr 2020 konnte unsere automatische Plattform mehr als 125.000 bösartige Samples analysieren und mehr als 40.000 Konfigurationsdateien für die verschiedenen TrickBot-Module herunterladen und entschlüsseln. Dadurch erhielten wir einen hervorragenden Überblick über die verschiedenen C&C-Server, die von diesem Botnetz verwendet werden.
TrickBot, ein langlebiges Botnetz
TrickBot ist seit langem ein großes Ärgernis für Internetnutzer. Die erste Erkennung von TrickBot durch ESET datiert auf 2016. In den letzten Jahren wurde regelmäßig über Kompromittierungen durch TrickBot berichtet und mittlerweile ist es eines der größten und langlebigsten Botnetze überhaupt. Wie in unserem Threat Report für das 1. Quartal 2020 berichtet, gehört TrickBot zu den am weitesten verbreiteten Banking-Malware-Familien. Wie in Abbildung 1 zu sehen ist, zeigen ESET-Telemetriedaten eine weltweite Verbreitung dieses Malware-Stamms, das heißt er stellt eine Bedrohung für Internetnutzer weltweit dar.
TrickBot-Malware wurde im Laufe ihres Bestehens auf unterschiedliche Weise verbreitet. In letzter Zeit haben wir häufig beobachtet, dass TrickBot Systeme infiziert, die bereits von Emotet, einem anderen großen Botnetz, kompromittiert wurden. In der Vergangenheit wurde die TrickBot-Malware von ihren Betreibern hauptsächlich als Bankentrojaner eingesetzt, also um Anmeldeinformationen von Online-Bankkonten zu stehlen und betrügerische Überweisungen durchzuführen.
Aufgrund seiner modularen Architektur kann TrickBot über eine Vielzahl von Plugins böswillige Aktionen ausführen. Es kann alle möglichen Anmeldeinformationen von kompromittierten Computern stehlen und wurde in letzter Zeit hauptsächlich als Verbreitungsmechanismus für schädlichere Angriffe, wie Ransomware, beobachtet.
Eines der ältesten Plugins ermöglicht TrickBot die Verwendung von Web-Injects. Mit dieser Technik kann die Malware dynamisch verändern, was Benutzer eines kompromittierten Systems beim Besuch bestimmter Websites sehen. Für den Betrieb benötigt dieses Plugin Konfigurationsdateien, die vom Hauptmodul heruntergeladen werden. Diese enthalten Informationen darüber, welche Websites wie geändert werden sollen. Abbildung 2 zeigt einen Auszug einer solchen entschlüsselten Konfigurationsdatei mit Ziel-URLs und den schädlichen C&C-URLs, die der Bot kontaktieren soll, wenn das Opfer auf die Ziel-URLs zugreift.
<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>
Abbildung 2. Auszug aus einer entschlüsselten dinj-Konfigurationsdatei (redigiert)
Durch die Überwachung von TrickBot-Kampagnen haben wir Zehntausende verschiedener Konfigurationsdateien gesammelt und herausgefunden, auf welche Websites die Betreiber von TrickBot abzielten. Abbildung 3 zeigt die Anzahl der Websites, die wir im Jahr 2020 aus den Konfigurationsdateien extrahiert haben.
Diese Ziel-URLs gehören hauptsächlich zu Finanzinstituten. Ab März 2020 ist ein starker Rückgang der Anzahl der Ziele in den Konfigurationsdateien zu verzeichnen. Dies fällt mit dem Moment zusammen, in dem die Betreiber von TrickBot das Webinject-Modul aus der Liste der Standard-Plugins entfernt haben, die vom Hauptmodul automatisch heruntergeladen werden. Aus diesem Grund liegen uns für den März keine Daten vor. Wir mussten unsere Prozesse anpassen, um die Ziel-URLs weiter zu erfassen. Der Rückgang der Anzahl der Ziel-Webseiten ist wahrscheinlich darauf zurückzuführen, dass sich die TrickBot-Bande seit dieser Zeit auf ein anderes Mittel zur Monetarisierung konzentriert: Ransomware.
In solchen Fällen wird eine Kompromittierung durch TrickBot zuerst dazu genutzt, um das befallene System zu erkunden und sich im Netzwerk eines Unternehmens weiter auszubreiten. Dann wird die Ryuk-Ransomware auf so vielen Systemen wie möglich abgelegt. Die von uns gesammelten Daten legen nahe, dass die Betreiber von TrickBot sich vom versuchten Diebstahl von Bankkonten auf die Kompromittierung und Erpressung von ganzen Organisationen mittels Ryuk verlegt haben.
Wir haben außerdem die Entwicklung neuer Malware-Projekte beobachtet, die angeblich von den TrickBot-Betreibern stammen. Dies könnte ebenfalls ihr plötzliches Desinteresse am Betrieb von TrickBot als Bankentrojaner erklären. Eines dieser Projekte ist das sogenannte Anchor-Projekt, eine Plattform, die hauptsächlich auf Spionage und nicht auf Crimeware ausgerichtet ist. Die TrickBot-Hintermänner sind wahrscheinlich auch an der Entwicklung der Bazar-Malware beteiligt - ein Loader und eine Backdoor, mit denen Malware, beispielsweise Ransomware, bereitgestellt und vertrauliche Daten von kompromittierten Systemen gestohlen werden können.
Genauer Blick auf TrickBot
Was TrickBot so vielseitig macht, ist die Möglichkeit seine Funktionen mittels Plugins erheblich erweitern zu können. Während unseres Trackings der Malware konnten wir 28 verschiedene Plugins sammeln und analysieren. Einige dienen dem Diebstahl von Kennwörtern aus Browsern, E-Mail-Clients und einer Vielzahl von Anwendungen, andere verändern den Netzwerkverkehr oder dienen der eigenen Verbreitung. TrickBot-Plugins werden als Standard-Windows-DLLs implementiert, normalerweise mit mindestens diesen vier unterschiedlichen Exporten: Start, Control, Release und FreeBuffer.
Interessanterweise haben einige Rich-Header, andere nicht. Rich-Header sind eine undokumentierte Datenstruktur, die allen von Microsoft Visual Studio 97 SP3 oder höher erstellten Binärdateien hinzugefügt wird. Sie enthalten Informationen zur Entwicklungsumgebung, in der die ausführbare Datei erstellt wurde. Die Tatsache, dass Rich-Header nicht immer in Plugins vorhanden sind - und dass sie auf unterschiedliche Entwicklungsumgebungen verweisen, wenn sie vorhanden sind - lässt vermuten, dass diese Plugins von verschiedenen Entwicklern geschrieben wurden.
Wir konnten nicht viele unterschiedliche Samples der verschiedenen Plugins beobachten, sobald sie entwickelt waren und in freier Wildbahn verwendet wurden. Diejenigen, die sich am meisten geändert haben, enthalten eine statische Konfigurationsdatei, die in der Binärdatei eingebettet ist. Diese statischen Konfigurationsdateien enthalten, unter anderem, C&C-Serverinformationen, daher sind diese Veränderungen im Laufe der Zeit erwartbar. Abbildung 4 zeigt die Anzahl der Variationen, die wir für jedes Modul beobachtet haben, das über unsere Botnet-Tracker-Plattform gesammelt wurde. Die meisten Varianten der neueren Module sind paarweise vorhanden: Etwa die Hälfte der gesammelten Module waren 32-Bit-Versionen, während die andere Hälfte die 64-Bit-Versionen waren. Im Anhang (Appendix) finden Sie eine kurze Beschreibung der einzelnen Module.
Konfigurationsdateien für alles
Obwohl in einer TrickBot-Installation potenziell viele verschiedene heruntergeladene Konfigurationsdateien vorhanden sind, enthält das Hauptmodul eine verschlüsselte, fest codierte Konfiguration. Diese enthält eine Liste der C&C-Server sowie eine Standardliste aller Plugins, die heruntergeladen werden sollten.
Wie schon erwähnt, sind einige Plugins auch auf eigene Konfigurationsdateien angewiesen, um ordnungsgemäß zu funktionieren. Diese Plugins benötigen das Hauptmodul, um diese Konfigurationsdateien von den C&C-Servern herunterzuladen. Die Plugins erreichen dies, indem sie eine kleine Modulkonfigurationsstruktur übergeben, die im Overlay-Bereich der Plugin-Binärdatei gespeichert ist und dem Hauptmodul mitteilt, was es herunterladen soll.
Durch das Sammeln dieser Konfigurationsdateien konnten wir die Netzwerkinfrastruktur von TrickBot kartieren. Das Hauptmodul verwendet seine Liste der fest codierten C&C-Server und stellt eine Verbindung zu einem von ihnen her, um eine zweite Liste der C&C-Server herunterzuladen, die sogenannte psrv-Liste. Das Hauptmodul kontaktiert diese zweite Schicht von C&C-Servern, um die in der fest codierten Konfigurationsdatei angegebenen Standard-Plugins herunterzuladen. Andere Module können später heruntergeladen werden, wenn die Betreiber es wollen. Einige der Plugins, wie beispielsweise das injectDll-Plugin, verfügen über eigene C&C-Server, die Konfigurationsdateien enthalten. Schließlich gibt es dedizierte C&C-Server für Plugins. Am weitesten verbreitet sind sogenannte dpost-Server, mit denen gestohlene Daten wie Anmeldeinformationen herausgefiltert werden. Doch es gibt, wie im Anhang beschrieben, auch andere. All diese verschiedenen Schichten erschweren es TrickBot lahmzulegen. Abbildung 5 zeigt diesen anfänglichen Kommunikationsprozess.
Wir verfolgen diese verschiedenen C&C-Server seit Anfang 2017. Das Wissen um die von den Cyberkriminellen verwendete Netzwerkinfrastruktur war für die Operation zur Lahmlegung des Botnetzes natürlich von entscheidender Bedeutung.
Ein weiteres interessantes Artefakt, das wir durch das Crawlen dieses Botnetzes sammeln konnten, ist die eindeutige Kennung, die zu jedem TrickBot-Sample gehört, der sogenannte gtag. Dies ist eine Zeichenfolge in der anfänglichen fest codierten Konfigurationsdatei, die verschiedene TrickBot-Kampagnen oder Kompromittierungsformen identifiziert. Zum Beispiel wird angenommen, dass die mor-Kampagnen TrickBot-Kompromittierungen aufgrund von Emotet sind. gtags können manchmal auch Anzeichen auf das Ziel einer Kampagne geben. Ein gutes Beispiel ist die uk03-1-Kampagne, die sich vorwiegend gegen Finanzinstitute im Vereinigten Königreich richtete.
Abbildung 6 zeigt eine Zeitleiste aller gtags, die wir von September 2019 bis September 2020 aus TrickBot-Konfigurationsdateien extrahiert haben. Wenn wir uns die mor-Gruppe ansehen, sehen wir den abrupten Stopp der Emotet-Kampagnen im April 2020. Es werden auch einige Gruppen von bestimmten Modulen verwendet. Die Gruppen tot, jim und lib gehören zu den am häufigsten gesehenen gtags und sind laut einem kürzlich veröffentlichten Unit42-Blogpost den Modulen mshare, nworm/mworm und tab zugeordnet. Da all diese für die laterale Ausbreitung in Netzwerken verwendet werden, ist es nicht überraschend, dass in ihrer Zeitachse eine meist konstante Linie zu sehen ist.
Fazit
Der Versuch, eine schwer fassbare Bedrohung wie das TrickBot-Botnetz lahmzulegen, ist sehr herausfordernd und komplex. Es verfügt über verschiedene Fallback-Mechanismen und seine Verbindung mit anderen hochaktiven Cyberkriminellen macht den gesamten Vorgang äußerst komplex. Wir werden diese Bedrohung weiterhin beobachten und die Auswirkungen bewerten, die solche Störmaßnahmen auf lange Sicht auf ein so weitläufiges Botnetz haben können.
Besonderer Dank geht an Jakub Tomanek, Jozef Dúc, Zoltán Rusnák und Filip Mazán
ESET detection names
Win32/TrickBot
Win64/TrickBot
MITRE ATT&CK techniques
Note: This table was built using version 7 of the MITRE ATT&CK framework.
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. |
Appendix
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 infected 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 infected 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