Der sich schnell entwickelnde DanaBot-Trojaner wurde aktualisiert. Die neuste Version ist mit einem völlig neuen Kommunikationsprotokoll ausgestattet. Mit dem Ende Januar eingeführten Protokoll verfügt die DanaBot C&C-Kommunikation nun über mehrere Verschlüsselungsebenen.
Neben dem Kommunikationsprotokoll wurden auch die Architecture und Campaign IDs von DanaBot geändert.
Die Evolution von DanaBot
Seitdem DanaBot im Mai 2018 im Rahmen einer australischen Spam-Kampagne entdeckt worden war, ist viel passiert. Mittlerweile hat sich der DanaBot-Trojaner auch in Polen, Italien, Deutschland, Österreich und der Ukraine sowie in den Vereinigten Staaten manifestiert und wurde bereits um neue Fähigkeiten und Plugins zum Versenden von Spam erweitert.
ESET-Telemetrie-Daten zeigten am 25. Januar 2019 ungewöhnliche Executables, die in Beziehung zu DanaBot standen. Nach weiteren Untersuchungen entpuppten sich die Binaries als zusätzliche DanaBot-Varianten, welche aber ein anderes Kommunikationsprotokoll zur C&C-Server-Kommunikation gebrauchten. Bereits am 26. Januar stellten die DanaBot-Entwickler die alten Binaries ein.
Zum Zeitpunkt der Entstehung dieses Artikels wird die neue DanaBot-Version auf zwei Wege verbreitet:
- Als „Update“ für bereits bestehende DanaBot-Versionen
- Via Malspam in Polen
Das neue Kommunikationsprotokoll von DanaBot
In dem vor dem 25. Januar verwendeten Kommunikationsprotokoll wurden Datenpakete in keiner Weise verschlüsselt, wie in Abbildung 1 dargestellt.
Nach der Aktualisierung verwendet DanaBot nun AES- und RSA-Verschlüsselungsalgorithmen für die C&C-Kommunikation. Das neue Kommunikationsprotokoll ist komplex. Es besteht aus mehreren Verschlüsselungsschichten, wie in Abbildung 2 dargestellt.
Diese Veränderungen durchbrechen vorhandene netzwerkbasierte Signaturen und erschweren das Erstellen neuer Regeln für Intrusion Detection und Prevention Systems. Ohne Zugriff auf die entsprechenden RSA-Schlüssel können gesendete oder empfangene Datenpakete nicht dekodiert werden. Für Forschende sind PCAP-Dateien aus cloudbasierten Analysesystemen (wie ANY.RUN) damit unbrauchbar.
Jedes vom Client gesendete Datenpaket besitzt einen 24-(0x18)-Byte-Header:
Offset | Size (bytes) | Meaning |
---|---|---|
0x0 | 0x8 | Size of the data after this header |
0x8 | 0x8 | Random value |
0x10 | 0x8 | Sum of first two fields |
Dem Header folgen AES-verschlüsselte Datenpakete, dann ein 4-Byte-Wert, der die AES Padding Size angibt, und letztendlich der RSA-verschlüsselte AES-Schlüssel. Jedes Paket ist durch einen anderen AES-Schlüssel verschlüsselt.
Der C&C-Server antwortet im selben Format. Anders als in DanaBot-Vorgängern folgen die Paketdaten der Serverantworten aber keinem bestimmten Layout – von manchen Ausnahmen einmal abgesehen.
Packet Data Layout der neuen DanaBot-Version
Das frühere Paketdatenlayout wurde von Proofpoint im Oktober 2018 detailliert beschrieben. In der neuesten Version von DanaBot wurde das Layout leicht geändert, wie in Abbildung 4 dargestellt.
Veränderungen in der DanaBot-Architektur
Neben dem geänderten Kommunikationsprotokoll erfuhr DanaBot auch einige Änderungen im Aufbau. Die vorherigen Versionen von DanaBot enthielten eine Komponente, die das Main Module heruntergeladen und ausgeführt hat. Das Main Module lud dann wiederum Plugins und Konfigurationen herunter und führte diese aus.
In der neuen DanaBot-Version hat man diese Verantwortlichkeit einer neuen Loader-Komponente übertragen. Der Loader lädt nun neben dem Main Module auch alle Plugins und Konfigurationen herunter. Persistenz auf den kompromittierten Systemen erreicht der Loader durch eine Registrierung der Loader-Komponente als Dienst.
Befehle der neuen DanaBot-Version
Gemäß der ESET-Analyse versteht die Loader-Komponente die folgenden Befehle:
- 0x12C – Hello. Erster Befehl, der vom Client an den Server gesendet wird.
- 0x12D – Download 32/64-bit Launcher-Komponente
- 0x12E – Liste der Plugins und Konfigurationsdateien anfordern
- 0x12F – Plugin-/Konfigurationsdateien herunterladen
Heruntergeladene Plugins und Konfigurationsdateien sind durch einen AES-Schlüssel verschlüsselt, der sich aus der Client ID ableitet. Zusätzlich sind die Plugins mit Hilfe des LZMA-Algorithmus ZIP-komprimiert, die Konfigurationsdateien durch zlib.
Folgende Befehle mit den ID-Nummern 0x130 - 0x134 werden vom Hauptmodul gesendet:
- 0x130 – Gesammelte Informationen zum C&C-Server hochladen (z.B. Screenshots eines kompromittierten Computers; Systeminformationen)
- 0x131 – wie 0x130 (z.B. Liste mit Dateien auf der Festplatte des Opfers)
- 0x132 – C&C-Server nach weiteren Befehlen fragen; Es gibt etwa 30, für Backdoor typische, Befehle, wie das Starten von Plugins, das Sammeln detaillierter Systeminformationen und das Modifizieren von Dateien auf dem Client (Computer des Opfers)
- 0x133 – Aktualisiere die C&C-Server-Liste via Tor-Proxy
- 0x134 – (genauer Inhalt unbekannt); höchstwahrscheinlich für die Kommunikation zwischen Plugins und C&C-Server verwendet
Anpassungen der Campaign IDs
Frühere Untersuchungen ergaben, dass DanaBot unter verschiedenen "Partner-" oder "Campaign IDs" verbreitet wird.
In der vorherigen DanaBot-Version benutzten die Malware-Entwickler rund 20 unterschiedliche Campaign IDs. In der neuen Variante unterscheiden sich die Campaign IDs leicht zur alten. Seit 5. Februar sind folgende bekannt:
- ID=2 scheint eine Testversion zu sein; stellt eine begrenzte Anzahl von Konfigurationsdateien aber keine Webinjects bereit
- ID=3 wird aktiv verteilt; betroffen sind Polen und Italien; Webinjects für beide Länder
- ID=5 stellt Konfigurationsdateien für australische Angriffsziele bereit
- ID=7 bisher nur in Polen; Webinjects auf polnische Ziele
- ID=9 scheint weitere Test-Version zu sein; kleinerer Verbreitungsradius ohne spezifische Ziele, limitierte Anzahl von Konfigurationsdateien und keine Webinjects
Fazit
Bereits im Jahr 2018 haben wir beobachtet, wie sich DanaBot in Bezug auf Verbreitung und Funktionalität weiterentwickelte. Zu Beginn dieses Jahres entwickelte sich der DanaBot-Trojaner mehr von Innen heraus, was auf eine aktive Entwicklerarbeit hindeutet. Die neuesten Updates weisen zudem darauf hin, dass sich die DanaBot-Entwickler bemühen, eine Erkennung auf Netzwerkebene zu umgehen. Wahrscheinlich achten sie außerdem auf die neusten Erkenntnisse von Malware-Forschern, um ihnen immer einen Schritt voraus zu bleiben.
ESET-Sicherheitsprodukte erkennen und blockieren alle DanaBot-Komponenten und -Plugins unter den im IoCs-Abschnitt aufgeführten Erkennungsnamen.
Dieser Research wurde von Kaspars Osis, Tomáš Procházka und Michal Kolář durchgeführt.
Indicators of compromise (IoCs)
Von der neuen Version von DanaBot verwendete C&C-Server
- 84.54.37[.]102
- 89.144.25[.]243
- 89.144.25[.]104
- 178.209.51[.]211
- 185.92.222[.]238
- 192.71.249[.]51
Webinject- und Redirect-Server
- 47.74.249[.]106
- 95.179.227[.]160
- 185.158.249[.]144
Beispiel-Hashes
Da regelmäßig neue Builds der DanaBot-Komponenten veröffentlicht werden, bieten wir hier nur eine unvollständige Auswahl von Hashes an.
Component | SHA-1 | ESET detection name |
---|---|---|
Dropper | 98C70361EA611BA33EE3A79816A88B2500ED7844 | Win32/TrojanDropper.Danabot.O |
Loader (x86), campaign ID=3 | 0DF17562844B7A0A0170C9830921C3442D59C73C | Win32/Spy.Danabot.L |
Loader (x64), campaign ID=3 | B816E90E9B71C85539EA3BB897E4F234A0422F85 | Win64/Spy.Danabot.G |
Loader (x86), campaign ID=9 | 5F085B19657D2511A89F3172B7887CE29FC70792 | Win32/Spy.Danabot.I |
Loader (x64), campaign ID=9 | 4075375A08273E65C223116ECD2CEF903BA97B1E | Win64/Spy.Danabot.F |
Main module (x86) | 28139782562B0E4CAB7F7885ECA75DFCA5E1D570 | Win32/Spy.Danabot.K |
Main module (x64) | B1FF7285B49F36FE8D65E7B896FCCDB1618EAA4B | Win64/Spy.Danabot.C |
Plugins
Plugin | SHA-1 | ESET detection name |
---|---|---|
RDPWrap | 890B5473B419057F89802E0B6DA011B315F3EF94 | Win32/Spy.Danabot.H |
Stealer (x86) | E50A03D12DDAC6EA626718286650B9BB858B2E69 | Win32/Spy.Danabot.C |
Stealer (x64) | 9B0EC454401023DF6D3D4903735301BA669AADD1 | Win64/Spy.Danabot.E |
Sniffer | DBFD8553C66275694FC4B32F9DF16ADEA74145E6 | Win32/Spy.Danabot.B |
VNC | E0880DCFCB1724790DFEB7DFE01A5D54B33D80B6 | Win32/Spy.Danabot.D |
TOR | 73A5B0BEE8C9FB4703A206608ED277A06AA1E384 | Win32/Spy.Danabot.G |