
Imaginary C2 ist ein Python-Tool, das die verhaltensorientierte (Netzwerk-)Analyse von Malware unterstützen soll. Imaginary C2 hostet einen HTTP-Server, der HTTP-Anfragen an selektiv ausgewählte Domains/IPs erfasst. Darüber hinaus zielt das Tool darauf ab, das Abspielen aufgezeichneter Command-and-Control-Antworten/ausgelieferter Payloads zu erleichtern.
Autor: Felix Weyne (Website) (Twitter)
Imaginary C2 ist ein Python-Tool, das bei der verhaltensbasierten (Netzwerk-)Analyse von Malware helfen soll.
Imaginary C2 hostet einen HTTP-Server, der HTTP-Anfragen an ausgewählte Domänen/IPs erfasst. Darüber hinaus soll das Tool das erneute Abspielen von erfassten Command-and-Control-Antworten/bereitgestellten Payloads erleichtern.
Mit diesem Tool kann ein Analyst der Malware konsistente Netzwerkantworten (z. B. C&C-Anweisungen zur Ausführung durch die Malware) zuführen. Zudem kann der Analyst HTTP-Anfragen an eine zum Zeitpunkt der Analyse offline befindliche Domäne/IP erfassen und untersuchen.

Imaginary C2 bietet zwei Skripte, um Paketmitschnitte (PCAPs) oder Fiddler-Sitzungsarchive in Anfragedefinitionen zu konvertieren, die von Imaginary C2 verarbeitet werden können. Über diese Skripte kann der Benutzer HTTP-Anfrage-URLs und Domänen sowie HTTP-Antworten extrahieren. Auf diese Weise kann man schnell HTTP-Antworten für eine bestimmte HTTP-Anfrage wiedergeben.
Anforderungen: Imaginary C2 benötigt Python 2.7 und Windows.
Module: Derzeit enthält Imaginary C2 drei Module und zwei Konfigurationsdateien:
| Dateiname | Funktion |
|---|---|
| 1. imaginary_c2.py | Hostet Pythons einfachen HTTP-Server. Hauptmodul. |
| 2. redirect_to_imaginary_c2.py | Ändert die Windows-Hosts-Datei und die Windows-(IP-)Routing-Tabelle. |
| 3. unpack_fiddler_archive.py & unpack_pcap.py | Extrahiert HTTP-Antworten aus Paketmitschnitten. Fügt entsprechende HTTP-Anfragedomänen und URLs zu den Konfigurationsdateien hinzu. |
| 4. redirect_config.txt | Enthält Domänen und IPs, die auf localhost (zum Python-HTTP-Server) umgeleitet werden müssen. |
| 5. requests_config.txt | Enthält URL-Pfaddefinitionen mit den entsprechenden Datenquellen. |
Anfragedefinitionen: Jede in der Anfragekonfiguration definierte (HTTP-)Anfrage besteht aus zwei Parametern:
Parameter 1: HTTP-Anfrage-URL-Pfad (auch bekannt als urlType)
| Wert | Bedeutung |
|---|---|
| fixed | Definiert den URL-Pfad als Literalzeichenfolge |
| regex | Definiert einen Regex-Ausdruck, der auf den URL-Pfad angewendet wird |
Parameter 2: HTTP-Antwortquelle (auch bekannt als sourceType)
| Wert | Bedeutung |
|---|---|
| data | Imaginary C2 antwortet mit dem Inhalt einer Datei auf der Festplatte |
| python | Imaginary C2 führt ein Python-Skript aus. Die Ausgabe des Python-Skripts definiert die HTTP-Antwort. |
Imaginary C2 kann verwendet werden, um das Hosting von TrickBot-Komponenten und Konfigurationsdateien zu simulieren. Darüber hinaus kann es auch verwendet werden, um TrickBots Webinjektionsserver zu simulieren.
Nach der Ausführung verbindet sich der TrickBot-Downloader mit einer Reihe von fest codierten IPs, um einige Konfigurationsdateien abzurufen. Eine dieser Konfigurationsdateien enthält die Standorte (IP-Adressen) der TrickBot-Plugin-Server. Der TrickBot-Downloader lädt die Plugins (Module) von diesen Servern herunter und entschlüsselt sie. Die entschlüsselten Module werden dann in eine svchost.exe-Instanz injiziert.

Eines der Plugins von TrickBot heißt injectdll, ein Plugin, das für die Webinjects von TrickBot verantwortlich ist. Das injectdll-Plugin ruft regelmäßig eine aktualisierte Menge von Webinject-Konfigurationen ab. Für jede gezielte (Banking-)Website in der Konfiguration wird die Adresse eines webfake server definiert. Wenn ein Opfer eine von TrickBot anvisierte (Banking-)Website besucht, wird sein Browser heimlich an den webfake server umgeleitet. Der webfake server hostet eine Kopie der anvisierten Website. Diese Kopie-Website wird normalerweise in einem Social-Engineering-Angriff verwendet, um das Opfer zu betrügen.
Das folgende Video zeigt den TrickBot-Downloader, der innerhalb von svchost.exe läuft und sich mit Imaginary C2 verbindet, um zwei Module herunterzuladen. Jedes heruntergeladene Modul wird in eine neu gestartete svchost.exe-Instanz injiziert. Das Webinjekt-Modul versucht, die gespeicherten Passwörter des Browsers zu stehlen und die gestohlenen Passwörter an den TrickBot-Server zu exfiltrieren. Beim Besuch einer anvisierten Banking-Website leitet TrickBot den Browser an den webfake server um. In der Demo hostet der webfake server die Nachricht: "Default imaginary C2 server response" (vollständiges Video).
