Dridex ist seit geraumer Zeit ein Albtraum für Computer-Nutzer, Unternehmen und Finanzinstitute. Für viele ist Dridex der Inbegriff für Banken-Trojaner.

Neuste ESET-Forschungen zeigen, dass sich die Entwickler des berüchtigten Banken-Trojaners Dridex auch hinter einer anderen hochkarätigen Malware-Familie verbergen – Es handelt sich um eine ausgeklügelte Ransomware, die von ESET Antivirenprogrammen als Win32/Filecoder.FriedEx und Win64 Filecoder.FriedEx erkannt wird. Die Ransomware ist auch unter dem Namen BitPaymer zu finden.

Dridex

Der Dridex Banken-Trojaner tauchte das erste Mal im Jahr 2014 auf. Damals handelte es sich noch um einen relativ einfachen Bot, der von zurückliegenden Projekten inspiriert war. Die Entwickler verwandelten das Bot allerdings sehr schnell in den meist gefürchteten Banken-Trojaner in freier Wildbahn. Die Weiterentwicklung scheint stetig zu verlaufen. Neue Versionen des Bots enthalten kleinere Korrekturen und Updates werden mit geringfügigen Unterbrechungen wöchentlich ausgerollt. Hin und wieder präsentieren die Malware-Entwickler wichtige Aktualisierungen, die bedeutende Funktionalitäten ergänzen oder größere Änderungen mit sich bringen. Die letzte große Veränderung brachte das Update von Version 3 auf Version 4. Das geschah am Anfang des Jahres 2017. Aufmerksamkeit erreichte es vor allem durch die Atomic Bombing Injection Technik und später durch das neue MS Word Zero-Day Exploit. Beides verhalf dem Banken-Trojaner zur millionenfachen Verbreitung.

Zum Zeitpunkt der Erstellung dieses Artikels, beläuft sich die am meisten verbreitete Version auf Dridex 4.80 inklusive der Unterstützung des Webinjects für die 63er Chrome-Versionen. Dridex 4.80 wurde am 14. Dezember 2017 ausgerollt.

Anmerkung: Im letzten Jahr veröffentlichen wir ein Tool, das half, schädliche Hooks in beliebten Webbrowsern zu identifizieren. Das Tool ist dafür geschaffen, Betroffene bei der Entdeckung potentieller Banking-Malware – einschließlich Dridex – zu unterstützen.

FriedEx

Auch bekannt als BitPaymer – Der Name basiert auf einer Passage der Lösegeldforderung einer Webseite. Diese Ransomware entdeckte Michael Gillespie im frühen July 2017. Im August kehrte die Malware zurück ins Rampenlicht und machte Schlagzeilen im Falle des kompromittierten NHS Hospital in Schottland.

FriedEx fokussiert eher hochkarätigere Ziele und Unternehmen an, als den allgemeinen Endverbraucher. Die Verbreitung findet via RDP Brute Force Attack statt. Die Ransomware verschlüsselt jede Datei mit einem randomisierten erzeugten RC4-Key, der wiederum mit einem hardcodierten 1024-bit RSA public key verschlüsselt und in der entsprechenden .readme_txt Datei gespeichert wird.

Im Dezember 2017 schauten wir uns ein FriedEx-Sample genauer an. Wir bemerkten gleich die Ähnlichkeiten im Code zu Dridex. Vom Anfangsverdacht angespornt, wurde das Sample noch eingehender analysiert. Es dauerte nicht lange, herauszufinden, dass FriedEx die gleichen Techniken wie Dridex anwendet, um so viele Informationen über sein Verhalten geheim zu halten wie nur irgendwie möglich.

Es verarbeitet alle System API calls „on the fly“, indem nach dem Hash gesucht wird. Das gilt auch für das Nachschauen von Registry Keys und Werten. Außerdem speichert das Malware-Programm FriedEx alle Strings verschlüsselt. Die resultierende Binary hält sich bezüglich statischer Features sehr bedeckt und ohne noch eingehendere Analysen ist es schwer zu sagen, wie sich die Malware verhält.

Dieser Umstand führte zur tiefgreifenden Begutachtung. Es ergaben sich eine Reihe zusätzlicher Attribute, welchen unseren Anfangsverdacht erhärteten: FriedEx und Dridex müssen vom selben Entwickler-Team abstammen.

Code-Ähnlichkeiten

Der Vergleich der GetUserID Funktion ist in FriedEx und Dridex Samples zu finden.Abbildung 1: Der Vergleich der GetUserID Funktion ist in FriedEx und Dridex Samples zu finden.

In Abbildung 1 können wir einen Teil der Funktion sehen, der für die Generierung der UserID verwendet wird. Dieser kann durchweg in allen Dridex Binaries (Loaders und Bot-Module) gefunden werden. Die angesprochene Funktion erzielt in beiden Fällen das gleiche Resultat – Es generiert einen String aus verschiedenen Attributen des Computers des Opfers. Daraus ergibt sich eine einmalige Identifikation des Opfers im Botnet (im Fall von Dridex) bzw. für die Ransomware (im Fall von FriedEx).

Nur sehr wenige Funktionen, die meist der spezifischen Ransomware-Funktionalität entsprechen, werden im Dridex-Beispiel nicht gefunden (beispielsweise die Dateiverschlüsselungsloops oder die Erstellung der Lösegeldnachricht).

Vergleich der Funktionsanordnung in Dridex und FriedEx. Fehlende Funktionen bei der jeweils anderen Malware sind farblich hervorgehoben.Abbildung 2: Vergleich der Funktionsanordnung in Dridex und FriedEx. Fehlende Funktionen bei der jeweils anderen Malware sind farblich hervorgehoben.

Ein anderes Feature, was sich beide teilen, ist die Reihenfolge der Funktionen in den Binärdateien. So etwas tritt immer dann auf, wenn die gleiche Codebasis oder dieselben statischen Bibliotheken für mehrere Projekte verwendet werden. Wie wir in Abbildung 2 sehen können, fehlen Dridex zwar ein paar Funktionen im Vergleich zu FriedEx und vice versa (was am Compiler liegt, der unnütze Funktionen auslässt), die Reihenfolge ansonsten aber gleich bleibt.

Anmerkung: Automatisch generierte function name pairs, die auf code adresses basieren (sub_CA5191 und sub_2A56A2, etc), haben augenscheinlich keine Gemeinsamkeit. Allerdings gleicht sich der Code auf den sie sich beziehen.

An dieser Stelle sollten wir auch erwähnen, dass Dridex und FriedEx denselben Malware Packer benutzen. Obwohl dieser Packer heutzutage sehr beliebt ist (wahrscheinlich auf Grund seiner Effektivität, Entdeckungen und Analysen zu vermeiden) und auch von anderen Malware-Familien wie QBot, Emotet oder Ursnif verwendet wird, betrachten wir das trotzdem nicht als strengen Beweis für eine gemeinsame Abstammung.

PDB-Pfade

Beim Bilden einer Windows .exe-Datei enthält der Linker vielleicht einen PDB-Pfad (Programm Database), der auf eine Datei zeigt, welche debug symbols beinhaltet. Das hilft den Entwicklern oft beim Debuggen und der Identifikation von Programm-Abstürzen. Allerdings ist die zugehörige PDB-Datei sehr selten in Malware wiederzufinden, weil diese separate Datei sonst nicht Gegenstand der verbreiteten Malware ist. Ist der Pfad allerdings mit angegeben, kann er wertvolle Informationen preisgeben, da PDB-Dateien standardmäßig im selben Verzeichnis wie die kompilierte .exe-Datei zu finden sind. Außerdem besitzen sie normalerweise den selben grundlegenden Namen, dem bei PDB-Dateien bloß die .pdb-Erweiterung folgt.

Wie man vielleicht vermutet, sind die PDB-Pfade nicht sehr oft in den Malware-Binärdateien zu entdecken, da die Entwickler so wenige Informationen wie möglich preisgeben möchten. Glücklicherweise enthalten einige der Dridex und FriedEx Samples die angesprochenen PDB-Pfade.

Liste aller gefundenen PDB-Pfade in den Dridex und FriedEx Projekten.Abbildung 3: Liste aller gefundenen PDB-Pfade in den Dridex und FriedEx Projekten.

In Abbildung 3 ist zu sehen, dass die Binärdateien beider Projekte in demselben Verzeichnis mit eindeutiger Bezeichnung erstellt werden. Wir beobachteten, dass, basierend auf all unseren Malware Sample Metadaten, der Pfad S:\Work\_bin\ für die Dridex- und FriedEx-Projekte ohnegleichen ist.

Kompilierungszeitstempel von FriedEx und Dridex

Wir fanden mehrere Fälle von Dridex und FriedEx mit dem gleichen Datum der Kompilierung. Nach genauerer Betrachtung schlossen wir aber aus, dass es sich hierbei bloß um einen Zufall handelte.

Nicht nur, dass die Kompilierungen desselben Datums bloß einen Zeitunterschied von wenigen Minuten aufweisen (was auf eine nahezu gleichzeitige Kompilierung der zwei Projekte durch die Dridex-Entwickler hindeutet), auch die randomisiert generierten Konstanten gleichen sich in unseren Samples. Diese ändern sich allerdings mit jeder Kompilierung in einer Art Polymorphismus, um Malware-Analysierungen und Entdeckungen schwieriger zu gestalten.

Bei jeder Kompilierung kann das vollständig auf Zufall basieren oder auf einer Variablen, wie dem aktuellen Datum.

GetAPIByHash Funktion in Dridex-Beispielen mit einer Kompilierungszeitdifferenz von drei Tagen. Die hervorgehobene Konstante ist unterschiedlich.Abbildung 4: GetAPIByHash Funktion in Dridex-Beispielen mit einer Kompilierungszeitdifferenz von drei Tagen. Die hervorgehobene Konstante ist unterschiedlich.

In Abbildung 4 sehen wir den Vergleich zweier Dridex Loader Samples mit einem Unterschied im Kompilierungszeitstempel von drei Tagen. Die Loader sind nahezu identisch, bis auf die hardcodierten Daten, wie Verschlüsselungsschlüssel, C&C-IPs, einige Konstanten oder die Hashes, auf denen sie aufbauen.

In Abbildung 5 haben wir einen Dridex- und einen FriedEx-Loader gegenübergestellt, deren Kompilierungszeitstempel (Unterschied von nur wenigen Minuten) vom selben Tag sind. Hier sind die Konstanten gleich. Das bedeutet, dass wahrscheinlich beide in derselben Kompilierungssitzung erstellt wurden.

GetAPIByHash Funktion in Dridex- und FriedEx-Binärdateien, die am selben Tag kompiliert wurden. Die hervorgehobene Konstante ist in beiden Samples identisch.Abbildung 5: GetAPIByHash Funktion in Dridex- und FriedEx-Binärdateien, die am selben Tag kompiliert wurden. Die hervorgehobene Konstante ist in beiden Samples identisch.

Compiler-Informationen

Die Compiler-Daten untermauern unsere bisher gefundenen Beweise. Die Binärdateien von Dridex und FriedEx wurden in Visual Studio 2015 kompiliert. Das wird durch die Linker-Version bestätigt, die wir in den PE-Header- und Rich-Header-Daten auffanden.

Rich-Header-Daten in Dridex- und FriedEx-BeispielenAbbildung 6: Rich-Header-Daten in Dridex- und FriedEx-Beispielen

Abgesehen von den offensichtlichen Ähnlichkeiten mit Dridex, stießen wir auf eine zuvor nicht gesichtete 64-Bit-Variante der Ransomware. Da die übliche 32-Bit-Version der Ransomware sowohl auf x86- als auch auf x64-Systeme abzielt, halten wir die 64-bit-Variante für etwas merkwürdig.

Fazit

Mit all unseren gesammelten Beweisen müssen wir davon ausgehen, dass FriedEx tatsächlich das Werk der Dridex-Entwickler ist. Diese Entdeckung verschafft uns ein besseres Bild von den Aktivitäten der Malware-Gang. Wir sehen, dass die Truppe weiterhin aktiv ist. Sie entwickeln nicht nur ihren gängigen Banken-Trojaner Dridex weiter, indem sie Webinject Support für neuere Chrome-Versionen oder Atom Bombing Funktionen implementieren. Sie folgen auch neusten Malware-Trends wie etwa der Verbreitung von Ransomware (in diesem Fall FriedEx).

Um die Zukunft können wir nur spekulieren, aber die Dridex- / FriedEx-Entwickler werden wahrscheinlich fortfahren wie bisher und an ihren zwei Projekten weiterarbeiten und hin und wieder „Innovationen“ präsentieren.

Lange glaubte man, dass die Dridex-Truppe nur auf ein Pferd setze und sich bloß auf den Dridex Banken-Trojaner konzentriere. Nun haben wir aber festgestellt, dass dies nicht der Fall ist und sie auch dem Ransomware-Trend erkannten . Mit FriedEx haben sie eine Malware geschaffen, die in ihrer Kategorie mit den fortschrittlichsten mithalten kann.

IoCs

Win32/Dridex.BE C70BD77A5415B5DCF66B7095B22A0DEE2DDA95A0
Win64/FriedEx.A CF1038C9AED9239B6A54EFF17EB61CAB2EE12141
Win32/FriedEx.A 8AE1C1869C42DAA035032341804AEFC3E7F3CAF1