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.

Abgefangene Datenpakete zeigen das alte Protokoll mit Informationen im Klartext

Abbildung 1: Abgefangene Datenpakete zeigen das alte Protokoll mit Informationen im Klartext

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.

Schematische Darstellung des neuen DanaBot Kommunikationsprotokolls

Abbildung 2: Schematische Darstellung des neuen DanaBot Kommunikationsprotokolls

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.

Abgefangene Datenpakete mit neuem verschlüsselten Kommunikationsprotokoll

Abbildung 3: Abgefangene Datenpakete mit neuem verschlüsselten Kommunikationsprotokoll

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.

Vergleich des Packet Data Layouts der alten und neuen DanaBot-Versionen

Abbildung 4: Vergleich des Packet Data Layouts der alten und neuen DanaBot-Versionen

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.

Vergleich zwischen dem Aufbau der alten und neuen DanaBot-Versionen

Abbildung 5: Vergleich zwischen dem Aufbau der alten und neuen DanaBot-Versionen

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