Aktualisieren
Diese Untersuchung behandelt ein Update auf Stufe 2 von GHOSTPULSE, das ursprünglich von Elastic Security Labs im Oktober 2023 veröffentlicht wurde .
Wichtigste Erkenntnisse
- GHOSTPULSE verwendet nun nicht mehr den IDAT-Teil von PNG-Dateien, sondern bettet seine verschlüsselte Konfiguration und Nutzlast in die Pixelstruktur ein.
- Aktuelle Kampagnen beinhalten die Täuschung von Opfern mit kreativen Social-Engineering-Techniken, wie z. B. CAPTCHA-Validierungen, die über Windows-Tastenkombinationen bösartige Befehle auslösen.
- Elastic Security hat seine YARA-Regeln verbessert und das Konfigurationsextraktionstool aktualisiert, um sowohl alte als auch neue Versionen von GHOSTPULSE zu erkennen und zu analysieren.
Präambel
Die Malware-Familie GHOSTPULSE (auch bekannt als HIJACKLOADER oder IDATLOADER) hat sich seit ihrer Entdeckung im Jahr 2023 kontinuierlich weiterentwickelt und entzieht sich der Erkennung durch immer ausgefeiltere Techniken.
In früheren Versionen missbrauchte GHOSTPULSE den IDAT-Teil von PNG-Dateien, um schädliche Nutzdaten zu verbergen, wie in einem früheren Artikel von Elastic Security Labs detailliert beschrieben wurde. Jüngste Analysen haben jedoch eine signifikante Änderung des Algorithmus aufgedeckt. Anstatt die Nutzdaten aus dem IDAT-Chunk zu extrahieren, analysiert die neueste Version von GHOSTPULSE nun die Pixel des Bildes, um dessen Konfiguration und Nutzdaten abzurufen. Dieser neue Ansatz besteht darin, bösartige Daten direkt in die Pixelstruktur einzubetten.
In dieser Forschungsveröffentlichung werden wir diesen neuen pixelbasierten Algorithmus untersuchen und ihn mit der bisherigen IDAT-Chunk-Technik mit aktualisierten Erkennungsregeln vergleichen.
Einführung
Kürzlich haben wir mehrere Kampagnen beobachtet, bei denen LUMMA STEALER GHOSTPULSE als Loader verwendet, ein Thema, das auch von HarfangLab untersucht wurde. Diese Kampagnen zeichnen sich durch ihre kreativen Social-Engineering-Taktiken aus. Die Opfer werden dazu verleitet, ein CAPTCHA zu bestätigen, aber die Website weist sie an, anstelle des üblichen Verfahrens eine Reihe von Windows-Tastenkombinationen auszuführen. Diese Tastenkombinationen lösen einen Befehl aus, der durch bösartiges JavaScript in die Zwischenablage kopiert wird. Dies führt zur Ausführung eines PowerShell-Skripts, das die Infektionskette durch Herunterladen und Ausführen einer GHOSTPULSE-Payload initiiert.
In früheren Versionen von GHOSTPULSE wurde es als Teil eines Pakets aus mehreren Dateien ausgeliefert. Dieses Paket enthielt typischerweise eine harmlose ausführbare Datei, eine infizierte DLL, die von der ausführbaren Datei geladen wurde, und eine PNG-Datei, in der die verschlüsselte Konfiguration gespeichert war.
In der neuesten Version wurde die Bereitstellung von GHOSTPULSE jedoch vereinfacht. Das gesamte Paket besteht nun aus einer einzigen Datei – einer harmlosen, aber manipulierten ausführbaren Datei, die die PNG-Datei in ihrem Ressourcenbereich enthält.
Technische Analyse
Die aktualisierte zweite Stufe der Malware behält einen Großteil ihrer vorherigen Struktur bei, einschließlich der Verwendung desselben Hash-Algorithmus zur Auflösung von Windows-API-Namen. Die bedeutendste Änderung besteht jedoch darin, wie die Malware nun ihre Konfiguration findet, die sowohl die Nutzlast als auch wichtige Anweisungen für ihre Ausführung enthält.
Nachfolgend ein Screenshot, der den Pseudocode beider Implementierungen zeigt:
In früheren Versionen analysierte GHOSTPULSE eine PNG-Datei nach einem verschlüsselten Datenblock, der in Teile unterteilt und sequenziell gespeichert wurde. Der Analyseprozess der Malware war unkompliziert: Sie suchte nach einem bestimmten Marker innerhalb der Datei – in diesem Fall nach der IDAT-Zeichenkette. Sobald die Schadsoftware gefunden wurde, suchte sie nach einem 4-Byte-Tag, das auf die Zeichenkette folgte. Der verschlüsselte Datenblock würde extrahiert werden, wenn dieses Tag dem erwarteten Wert entspräche. Dieser Vorgang wird für jedes nachfolgende Vorkommen der IDAT-Zeichenkette fortgesetzt, bis die vollständige verschlüsselte Nutzlast erfasst ist.
In der neuen Version wird die verschlüsselte Konfiguration in den Pixeln des Bildes gespeichert. Die Malware erstellt ein Byte-Array, indem sie die RED, GREEN, und BLUE (RGB)-Werte jedes Pixels sequenziell mit Hilfe von Standard-Windows-APIs aus der GdiPlus(GDI+) -Bibliothek extrahiert. Sobald das Byte-Array erstellt ist, sucht die Malware nach dem Beginn einer Struktur, die die verschlüsselte GHOSTPULSE-Konfiguration einschließlich des für die Entschlüsselung benötigten XOR-Schlüssels enthält. Dies geschieht durch Durchlaufen des Byte-Arrays in 16-Byte-Blöcken. Bei jedem Block stellen die ersten 4 Bytes einen CRC32-Hash dar, und die nächsten 12 Bytes sind die zu hashenden Daten. Die Malware berechnet die CRC32-Prüfsumme der 12 Bytes und prüft, ob sie mit dem Hashwert übereinstimmt. Wird eine Übereinstimmung gefunden, extrahiert es den Offset der verschlüsselten GHOSTPULSE-Konfiguration, ihre Größe und den 4-Byte-XOR-Schlüssel und entschlüsselt sie dann per XOR.
Das folgende Diagramm veranschaulicht diesen Prozess:
Aktualisierter Konfigurationsextraktor
Aufgrund dieser Erkenntnisse haben wir unseren Konfigurationsextraktor aktualisiert, um beide Versionen von GHOSTPULSE zu unterstützen. Dieses Tool nimmt eine PNG-Datei als Eingabe und gibt die eingebettete Nutzlast aus. Das aktualisierte Tool finden Sie in unserem Labs-Releases-Repository.
GHOSTPULSE-Erkennung mit YARA
Die ursprüngliche GHOSTPULSE YARA- Regel verhindert weiterhin das letzte Stadium einer Infektion und ist in Elastic Defend integriert. Das aktualisierte Sample kann mithilfe der folgenden YARA-Regeln erkannt werden und wird in einer zukünftigen Version von Elastic Defend enthalten sein.
Elastic Security hat die GHOSTPULSE YARA-Regeln aktualisiert, um diese Aktivität zu erkennen:
rule Windows_Trojan_GHOSTPULSE_1 {
meta:
author = "Elastic Security"
creation_date = "2024-10-15"
last_modified = "2024-10-15"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "GHOSTPULSE"
threat_name = "Windows.Trojan.GHOSTPULSE"
license = "Elastic License v2"
strings:
$stage_1 = { 49 63 D0 42 8B 0C 0A 41 03 CA 89 0C 1A 8B 05 ?? ?? ?? ?? 44 03 C0 8B 05 ?? ?? ?? ?? 44 3B C0 }
$stage_2 = { 48 89 01 48 8B 84 24 D8 00 00 00 48 8B 4C 24 78 8B 49 0C 89 08 C7 44 24 44 00 00 00 00 }
condition:
any of them
}
rule Windows_Trojan_GHOSTPULSE_2 {
meta:
author = "Elastic Security"
creation_date = "2024-10-10"
last_modified = "2024-10-10"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "GHOSTPULSE"
threat_name = "Windows.Trojan.GHOSTPULSE"
license = "Elastic License v2"
strings:
$a1 = { 48 83 EC 18 C7 04 24 00 00 00 00 8B 04 24 48 8B 4C 24 20 0F B7 04 41 85 C0 74 0A 8B 04 24 FF C0 89 04 24 EB E6 C7 44 24 08 00 00 00 00 8B 04 24 FF C8 8B C0 48 8B 4C 24 20 0F B7 04 41 83 F8 5C }
condition:
all of them
}
Fazit
Zusammenfassend lässt sich sagen, dass sich die Malware-Familie GHOSTPULSE seit ihrer Veröffentlichung im Jahr 2023 weiterentwickelt hat, wobei dieses jüngste Update eine der bedeutendsten Veränderungen darstellt.
Da Angreifer ständig neue Methoden entwickeln, müssen sich auch die Verteidiger anpassen, indem sie aktualisierte Werkzeuge und Techniken einsetzen, um diese Bedrohungen wirksam abzuwehren. Wir freuen uns, Ihnen unser neu entwickeltes Konfigurationsextraktionstool vorstellen zu können, das zur Analyse älterer und neuerer Versionen von GHOSTPULSE dient. Dieses Tool unterstützt Forscher und Cybersicherheitsexperten durch verbesserte Möglichkeiten zum Verständnis und zur Bekämpfung dieser sich ständig weiterentwickelnden Bedrohungen. Da sich die Landschaft der Cyberbedrohungen ständig verändert, bleiben Zusammenarbeit und Innovation für einen wirksamen Schutz unerlässlich.
Beobachtungen
Alle Observables stehen auch im ECS- und STIX-Format zum Download zur Verfügung.
Die folgenden Observablen wurden in dieser Studie diskutiert.
| Überwachbar | Typ | Name | Referenz |
|---|---|---|---|
57ebf79c384366162cb0f13de0de4fc1300ebb733584e2d8887505f22f877077 | SHA-256 | Setup.exe | GHOSTPULSE-Probe |
b54d9db283e6c958697bfc4f97a5dd0ba585bc1d05267569264a2d700f0799ae | SHA-256 | Setup_light.exe | GHOSTPULSE-Probe |
winrar01.b-cdn[.]net | Domain-Name | Infrastruktur, die das GHOSTPULSE-Beispiel hostet | |
reinforcenh[.]shop | Domain-Name | LUMMASTEALER C2 | |
stogeneratmns[.]shop | Domain-Name | LUMMASTEALER C2 | |
fragnantbui[.]shop | Domain-Name | LUMMASTEALER C2 | |
drawzhotdog[.]shop | Domain-Name | LUMMASTEALER C2 | |
vozmeatillu[.]shop | Domain-Name | LUMMASTEALER C2 | |
offensivedzvju[.]shop | Domain-Name | LUMMASTEALER C2 | |
ghostreedmnu[.]shop | Domain-Name | LUMMASTEALER C2 | |
gutterydhowi[.]shop | Domain-Name | LUMMASTEALER C2 | |
riderratttinow[.]shop | Domain-Name | LUMMASTEALER C2 |
