Präambel
Elastic Security Labs hat ein Intrusion Set identifiziert, das mehrere bösartige Module enthält und anfällige Treiber nutzt, um bekannte Sicherheitslösungen (EDRs) für Krypto-Mining zu deaktivieren. Darüber hinaus entdeckte das Team Möglichkeiten, Persistenz zu etablieren, eine zuvor undokumentierte Hintertür zu installieren und einen Krypto-Miner auszuführen. Wir bezeichnen dieses Intrusionsset als REF4578 und die primäre Nutzlast als GHOSTENGINE (die tangentale Forschung des Teams von Antiy hat Teile dieses Intrusionssets HIDDENSHOVEL genannt).
Wichtigste Erkenntnisse
- Malware-Autoren haben viele Notfall- und Duplizierungsmechanismen eingebaut
- GHOSTENGINE nutzt verwundbare Treiber, um bekannte EDR-Agenten zu beenden und zu löschen, die wahrscheinlich den eingesetzten und bekannten Coin-Miner stören würden
- Diese Kampagne war ungewöhnlich komplex, um sowohl die Installation als auch die Persistenz des XMRIG-Miners zu gewährleisten
Code-Analyse
Am 6. Mai 2024um 14:08:33 UTC bedeutete die Ausführung einer PE-Datei mit dem Namen Tiworker.exe (die sich als legitime Windows TiWorker.exe -Datei tarnte) den Beginn des REF4578 Eindringens. Die folgenden Warnungen wurden in der Telemetrie erfasst, was darauf hinweist, dass ein bekannter anfälliger Treiber bereitgestellt wurde.
Nach der Ausführung lädt diese Datei ein PowerShell-Skript herunter und führt es aus, das den gesamten Ausführungsablauf des Eindringlings orchestriert. Die Analyse ergab, dass diese Binärdatei eine hartcodierte PowerShell-Befehlszeile ausführt, um ein verschleiertes Skript abzurufen, get.png, das zum Herunterladen weiterer Tools, Module und Konfigurationen vom Angreifer C2 verwendet wird – wie im Screenshot unten dargestellt.
GHOSTENGINE
GHOSTENGINE ist für das Abrufen und Ausführen von Modulen auf der Maschine verantwortlich. Es verwendet hauptsächlich HTTP, um Dateien von einer konfigurierten Domäne herunterzuladen, mit einer Backup-IP für den Fall, dass Domänen nicht verfügbar sind. Darüber hinaus wird FTP als sekundäres Protokoll mit eingebetteten Anmeldeinformationen verwendet. Im Folgenden finden Sie eine Zusammenfassung des Ausführungsablaufs:
Dieses Skript lädt clearn.pngherunter und führt es aus, eine Komponente, die entwickelt wurde, um das System von Überresten früherer Infektionen zu säubern, die zur gleichen Familie, aber zu einer anderen Kampagne gehören. Es entfernt schädliche Dateien unter C:\Program Files\Common Files\System\ado und C:\PROGRA~1\COMMON~1\System\ado\ und entfernt die folgenden geplanten Aufgaben nach Namen:
Microsoft Assist JobSystem Help Center JobSystemFlushDnsSystemFlashDnsSrv
Hinweise auf diese geplanten Aufgabenartefakte können Indikatoren für eine frühere Infektion sein.
Während der Ausführung wird versucht, Windows Defender zu deaktivieren und die folgenden Windows-Ereignisprotokollkanäle zu bereinigen:
ApplicationSecuritySetupSystemForwarded EventsMicrosoft-Windows-Diagnostics-PerformanceMicrosoft-Windows-AppModel-Runtime/OperationalMicrosoft-Windows-Winlogon/Operational
get.png Deaktiviert Windows Defender, aktiviert Remotedienste und löscht den Inhalt von:
C:\Windows\Temp\C:\Windows\Logs\C:\$Recycle.Bin\C:\windows\ZAM.krnl.trace
get.png überprüft auch, ob das C:\ Volume über mindestens 10 MB freien Speicherplatz zum Herunterladen von Dateien verfügt, und speichert sie in C:\Windows\Fonts. Wenn nicht, wird versucht, große Dateien aus dem System zu löschen, bevor es nach einem anderen geeigneten Volume mit ausreichend Speicherplatz sucht und einen Ordner unter $RECYCLE.BIN\Fontserstellt.
Um die aktuelle DNS-Auflösung für die C2-Domainnamen zu erhalten, verwendet GHOSTENGINE eine fest codierte Liste von DNS-Servern, 1.1.1.1 und 8.8.8.8.
Um die Persistenz einzurichten, erstellt get.png als Nächstes die folgenden geplanten Aufgaben wie SYSTEM:
- OneDriveCloudSync mit
msdtczum Ausführen der bösartigen Dienst-DLLC:\Windows\System32\oci.dllalle 20 Minuten (siehe unten) - DefaultBrowserUpdate zum Ausführen von
C:\Users\Public\run.bat,, das dasget.pngSkript herunterlädt und alle 60 Minuten ausführt - OneDriveCloudBackup zur Ausführung von
C:\Windows\Fonts\smartsscreen.exealle 40 Minuten
get.png Beendet alle curl.exe Prozesse und alle PowerShell-Prozesse mit *get.png* in der Befehlszeile, mit Ausnahme des aktuellen Prozesses. Auf diese Weise können Sie jede gleichzeitig ausgeführte Instanz der Malware beenden.
Dieses Skript lädt dann config.txtherunter, eine JSON-Datei, die die Hashes der abgerufenen PE-Dateien enthält. Diese Datei überprüft, ob aktualisierte Binärdateien heruntergeladen werden sollen, indem sie die Hashes der zuvor heruntergeladenen Dateien von früheren Infektionen überprüft.
Schließlich lädt get.png alle seine Module und verschiedene PE-Dateien herunter. Nachfolgend finden Sie eine Tabelle mit einer Beschreibung der einzelnen heruntergeladenen Dateien:
| Pfad | Typ | Beschreibung |
|---|---|---|
C:\Windows\System32\drivers\aswArPots.sys | Kernel-Treiber | Anfälliger Treiber von Avast |
C:\Windows\System32\drivers\IObitUnlockers.sys | Kernel-Treiber | Anfälliger Treiber von IObit |
C:\Windows\Fonts\curl.exe | PE ausführbare Datei | Wird verwendet, um Dateien über cURL herunterzuladen |
C:\Windows\Fonts\smartsscreen.exe | PE ausführbare Datei | Core Payload (GHOSTENGINE), deren Hauptzweck darin besteht, die Sicherheitsinstrumentierung zu deaktivieren, die Erstinfektion abzuschließen und den Miner auszuführen. |
C:\Windows\System32\oci.dll | Dienst-DLL | Modul Persistenz/Updates |
backup.png | Powershell-Skript | Backdoor-Modul |
kill.png | Powershell-Skript | Ein PowerShell-Skript, das eine PE-Datei injiziert und ausführt, die für das Beenden von Sicherheitssensoren verantwortlich ist |
GHOSTENGINE-Module
GHOSTENGINE setzt mehrere Module ein, die Sicherheitstools manipulieren, eine Hintertür erstellen und nach Software-Updates suchen können.
EDR-Agent-Controller und Miner-Modul: smartsscreen.exe
Dieses Modul beendet in erster Linie alle aktiven EDR-Agent-Prozesse, bevor ein Krypto-Miner heruntergeladen und installiert wird.
Die Malware scannt und vergleicht alle laufenden Prozesse mit einer fest codierten Liste bekannter EDR-Agenten. Wenn Übereinstimmungen vorhanden sind, wird zunächst der Sicherheitsagent beendet, indem die Avast Anti-Rootkit-Treiberdatei genutzt wird, die mit dem IOCTL- 0x7299C004 aswArPots.sys wird, um den Prozess nach PID zu beenden.
smartscreen.exe wird dann verwendet, um die Binärdatei des Sicherheitsagenten mit einem anderen anfälligen Treiber, iobitunlockers.sys von IObit, mit dem IOCTL- 0x222124zu löschen.
smartscreen.exe lädt dann das XMRig-Client-Mining-Programm (WinRing0x64.png) vom C2-Server als taskhostw.pngherunter. Schließlich führt es XMRig, seine Treiber und die Konfigurationsdatei config.jsonaus, um den Mining-Prozess zu starten.
Update/Persistenz-Modul: oci.dll
Das PowerShell-Skript erstellt eine Dienst-DLL (oci.dll), eine Phantom-DLL, die von msdtcgeladen wird. Die Architektur der DLL variiert je nach Computer. Es kann 32-Bit oder 64-Bit sein. Seine Hauptfunktion besteht darin, Systempersistenz zu erstellen und Updates von den C2-Servern herunterzuladen, indem das get.png Skript vom C2 heruntergeladen und ausgeführt wird.
Jedes Mal, wenn der msdtc Dienst gestartet wird, lädt er oci.dll , um den PowerShell-Einzeiler zu erzeugen, der get.png ausführt:
Modul zur Beendigung des EDR-Agenten: kill.png
kill.png ist ein PowerShell-Skript, das Shellcode in den aktuellen Prozess einfügt, eine PE-Datei entschlüsselt und in den Arbeitsspeicher lädt.
Dieses Modul ist in C++ geschrieben, und die Autoren haben Redundanz in seinen Betrieb integriert. Diese Redundanz zeigt sich in der Replikation der Technik, die in smartsscreen.exe zum Beenden und Löschen von EDR-Agent-Binärdateien verwendet wird. Es sucht kontinuierlich nach neuen Prozessen.
Powershell-Backdoor-Modul: backup.png
Das PowerShell-Skript funktioniert wie eine Hintertür, die die Ausführung von Remotebefehlen auf dem System ermöglicht. Es sendet kontinuierlich ein Base64-codiertes JSON-Objekt mit einer eindeutigen ID, die aus der aktuellen Uhrzeit und dem Computernamen abgeleitet wird, während auf base64-codierte Befehle gewartet wird. Die Ergebnisse dieser Befehle werden dann zurückgesendet.
In diesem Beispiel ist eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9 das Base64-codierte JSON-Objekt:
$ echo "eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9" | base64 -D
{"id":"171568624072626","host":"analysis"}
Miner-Konfiguration
XMRig ist ein legitimer Krypto-Miner, und sie haben die Verwendung der Konfigurationsdatei und die Elemente hier dokumentiert. Wie zu Beginn dieser Veröffentlichung erwähnt, bestand das ultimative Ziel des REF4578 Intrusion Sets darin, Zugang zu einer Umgebung zu erhalten und einen persistenten Monero-Krypto-Miner, XMRig, einzusetzen.
Wir extrahierten die Konfigurationsdatei aus dem Miner, was enorm wertvoll war, da sie es uns ermöglichte, über die Monero-Zahlungs-ID zu berichten und die Worker- und Pool-Statistiken, die geschürfte Kryptowährung, Transaktions-IDs und Abhebungen zu verfolgen.
Nachfolgend finden Sie einen Auszug aus der REF4578 XMRig-Konfigurationsdatei:
{
"autosave": false,
"background": true,
"colors": true,
...truncated...
"donate-level": 0,
"donate-over-proxy": 0,
"pools": [
{
"algo": "rx/0",
"coin": "monero",
"url": "pool.supportxmr[.]com:443",
"user": "468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f",
"keepalive": true,
"tls": true
...truncated...
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
"verbose": 0,
"watch": true,
"pause-on-battery": false,
"pause-on-active": false
}
Monero-Zahlungs-ID
Monero ist eine Blockchain-Kryptowährung, die sich auf Verschleierung und Fungibilität konzentriert, um Anonymität und Privatsphäre zu gewährleisten. Die Zahlungs-ID ist ein beliebiger und optionaler Transaktionsanhang, der aus 32 Byte (64 Hexadezimalzeichen) bzw. 8 Byte (bei integrierten Adressen) besteht.
Mit der Zahlungs-ID aus dem obigen Konfigurationsauszug (468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f) können wir die Worker- und Pool-Statistiken auf einer der in der Konfiguration aufgeführten Monero Mining Pool-Standorteanzeigen.
Darüber hinaus können wir die Transaktions-Hashes sehen, die wir im Monero-Blockchain-Explorer nachschlagen können. Beachten Sie, dass die Transaktionen zwar vier Monate zurückliegen, dies jedoch nur den potenziellen monetären Gewinn dieses bestimmten Mitarbeiters und Kontos anzeigt.
Mit dem Blockchain Explorer und einem der Transaktions-Hashes , die wir von der Zahlungs-ID erhalten haben, können wir den öffentlichen Schlüssel sehen, den Betrag abheben und wann. Beachten Sie, dass diese öffentlichen Schlüssel mit Einmaladressen oder Stealth-Adressen verwendet werden, mit denen der Angreifer dann einen privaten Schlüssel verwenden würde, um das Geld zu entsperren.
Im obigen Beispiel für die Transaktion 7c106041de7cc4c86cb9412a43cb7fc0a6ad2c76cfdb0e03a8ef98dd9e744442 können wir sehen, dass es eine Abhebung von 0.109900000000 XMR (die Abkürzung für Monero) in Höhe von insgesamt 14,86 USD gab. Die Monerao Mining Pool-Website zeigt vier Transaktionen mit ungefähr der gleichen Menge an XMR, insgesamt etwa 60,70 USD (Januar - März 2024).
Zum Zeitpunkt der Veröffentlichung dieser Studie gibt es immer noch aktive Miner, die mit der REF4578 Payment ID verbunden sind.
Obwohl diese spezielle Zahlungs-ID kein großer Verdiener zu sein scheint, ist es offensichtlich, dass REF4578 dieses Eindringlingsset erfolgreich betreiben könnten. Andere Opfer dieser Kampagne könnten unterschiedliche Zahlungs-IDs haben, die zur Verfolgung von Eindringlingen verwendet werden, die für eine größere Gesamtausbeute kombiniert werden könnten.
Malware und MITRE ATT&CK
Elastic verwendet das MITRE ATT&CK-Framework , um gängige Taktiken, Techniken und Verfahren zu dokumentieren, die Bedrohungen gegen Unternehmensnetzwerke einsetzen.
Taktiken
Taktiken stellen das Warum einer Technik oder Untertechnik dar. Es ist das taktische Ziel des Gegners: der Grund für die Ausführung einer Aktion.
Techniken
Techniken stellen dar, wie ein Angreifer ein taktisches Ziel erreicht, indem er eine Aktion ausführt.
- Befehls- und Skriptinterpreter: PowerShell
- Befehls- und Skriptinterpreter: Windows-Befehlsshell
- Geplanter Task/Job: Geplanter Task
- Entfernen von Indikatoren: Löschen Sie Windows-Ereignisprotokolle
- Maskerade
- Prozessinjektion
- Prozess-Erkennung
- Exfiltration über C2-Kanal
- Datenkodierung
- Übernahme von Ressourcen
- Dienstbeendung
Entschärfung von GHOSTENGINE
Erkennung
Das erste Ziel der GHOSTENGINE-Malware besteht darin, Endpunkt-Sicherheitslösungen außer Gefecht zu setzen und bestimmte Windows-Ereignisprotokolle zu deaktivieren, wie z. B. Sicherheits- und Systemprotokolle, die die Prozesserstellung und die Registrierung von Diensten aufzeichnen. Daher ist es wichtig, der Erkennung und Prävention dieser ersten Maßnahmen Priorität einzuräumen:
- Suspicious PowerShell Execution (Verdächtige PowerShell-Ausführung)
- Ausführung aus ungewöhnlichen Verzeichnissen
- Erhöhen von Berechtigungen auf Systemintegrität
- Bereitstellen anfälliger Treiber und Einrichten zugehöriger Kernelmodusdienste.
Sobald die anfälligen Treiber geladen sind, verringern sich die Erkennungsmöglichkeiten erheblich, und Unternehmen müssen kompromittierte Endpunkte finden, die die Übertragung von Protokollen an ihr SIEM einstellen.
Netzwerkverkehr kann generiert und identifizierbar sein, wenn DNS-Eintragsabfragen auf bekannte Miningpool-Domänen über bekannte Ports wie HTTP (80) und HTTPS (443) verweisen. Stratum ist auch ein weiteres beliebtes Netzwerkprotokoll für Miner, standardmäßig über Port 4444.
Die Analyse dieses Intrusion Sets ergab die folgenden Erkennungsregeln und Verhaltenspräventionsereignisse:
- Verdächtige PowerShell-Downloads
- Dienststeuerung, die über den Skriptinterpreter erzeugt wird
- Lokale geplante Aufgabenerstellung
- Prozessausführung aus einem ungewöhnlichen Verzeichnis
- Svchost spawnt Cmd
- Ungewöhnliche Eltern-Kind-Beziehung
- Löschen von Windows-Ereignisprotokollen
- Manipulation durch Microsoft Windows Defender
- Potenzielle Privilegienausweitung über fehlende DLL
- Binäre Maskierung über einen nicht vertrauenswürdigen Pfad
Verhütung
Schutz vor bösartigen Dateien:
Prävention von Shellcode-Injektionen:
Verhinderung der Erstellung anfälliger Treiberdateien (Windows.VulnDriver.ArPot und Windows.VulnDriver.IoBitUnlocker )
YARA
Elastic Security hat YARA-Regeln erstellt, um diese Aktivität zu identifizieren.
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 |
|---|---|---|---|
2fe78941d74d35f721556697491a438bf3573094d7ac091b42e4f59ecbd25753 | SHA-256 | C:\Windows\Fonts\smartsscreen.exe | GHOSTENGINE EDR Controller-Modul |
4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1 | SHA-256 | C:\Windows\System32\drivers\aswArPots.sys | Anfälliger Avast-Treiber |
2b33df9aff7cb99a782b252e8eb65ca49874a112986a1c49cd9971210597a8ae | SHA-256 | C:\Windows\System32\drivers\IObitUnlockers.sys | Iobit-anfälliger Treiber |
3ced0552b9ecf3dfecd14cbcc3a0d246b10595d5048d7f0d4690e26ecccc1150 | SHA-256 | C:\Windows\System32\oci.dll | Update/Persistenz-Modul (64-Bit) |
3b2724f3350cb5f017db361bd7aae49a8dbc6faa7506de6a4b8992ef3fd9d7ab | SHA-256 | C:\Windows\System32\oci.dll | Update-/Persistenzmodul (32-Bit) |
35eb368c14ad25e3b1c58579ebaeae71bdd8ef7f9ccecfc00474aa066b32a03f | SHA-256 | C:\Windows\Fonts\taskhostw.exe | Miner-Client |
786591953336594473d171e269c3617d7449876993b508daa9b96eedc12ea1ca | SHA-256 | C:\Windows\Fonts\config.json | Miner-Konfigurationsdatei |
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5 | SHA-256 | C:\Windows\Fonts\WinRing0x64.sys | Miner-Fahrer |
aac7f8e174ba66d62620bd07613bac1947f996bb96b9627b42910a1db3d3e22b | SHA-256 | C:\ProgramData\Microsoft\DeviceSync\SystemSync\Tiworker.exe | Ersteinstufung |
6f3e913c93887a58e64da5070d96dc34d3265f456034446be89167584a0b347e | SHA-256 | backup.png | GHOSTENGINE Backdoor-Modul |
7c242a08ee2dfd5da8a4c6bc86231985e2c26c7b9931ad0b3ea4723e49ceb1c1 | SHA-256 | get.png | GHOSTENGINE Lader |
cc4384510576131c126db3caca027c5d159d032d33ef90ef30db0daa2a0c4104 | SHA-256 | kill.png | GHOSTENGINE EDR-Terminierungsmodul |
download.yrnvtklot[.]com | Domain | C2-Server | |
111.90.158[.]40 | IPv4-ADDR | C2-Server | |
ftp.yrnvtklot[.]com | Domain | C2-Server | |
93.95.225[.]137 | IPv4-ADDR | C2-Server | |
online.yrnvtklot[.]com | Domain | C2-Server |
Referenzen
In der obigen Studie wurde auf Folgendes Bezug genommen:
