Einführung
Elastic Security Labs hat eine aktuelle Kampagne identifiziert, bei der eine modifizierte Variante des gh0st RAT, die dem Dragon Breath APT (APT-Q-27) zugeschrieben wird, über trojanisierte NSIS-Installationsprogramme verbreitet wird, die sich als legitime Software wie Google Chrome und Microsoft Teams ausgeben. Die Infektionskette nutzt einen mehrstufigen Übertragungsmechanismus, der verschiedene Ausweichtechniken einsetzt und über zahlreiche Redundanzen verfügt, um auf dem chinesischen Markt verbreitete Endpoint-Sicherheitsprodukte zu neutralisieren. Dazu gehören das Einbringen eines rechtmäßig signierten Treibers, die Bereitstellung benutzerdefinierter WDAC- Richtlinien und die Manipulation der Microsoft Defender-Binärdatei durch Missbrauch der PPL.
Diese Kampagne zielt primär auf chinesischsprachige Nutzer ab und zeigt eine deutliche Weiterentwicklung der Anpassungsfähigkeit im Vergleich zu früheren DragonBreath-bezogenen Kampagnen aus den Jahren 2022-2023. Mit diesem Bericht möchten wir auf die neuen Techniken aufmerksam machen, die diese Malware nun einsetzt, und einen einzigartigen Loader vorstellen, den wir RoningLoader nennen.
Wichtigste Erkenntnisse
- Die Schadsoftware nutzt einen Fehler in der Funktion „Geschützte Prozessanzeige“ (PPL), um Windows Defender zu deaktivieren.
- Bedrohungsakteure nutzen einen gültigen, signierten Kernel-Treiber aus, um Prozesse zu beenden.
- Benutzerdefinierte, unsignierte WDAC-Richtlinie angewendet, um 360 Total Security- und Huorong-Ausführungsdateien zu blockieren
- Phantom-DLLs und Payload-Injektion über Thread-Pools zur weiteren Beendigung von Antivirenprozessen
- Die finale Nutzlast enthält kleinere Aktualisierungen und ist mit DragonBreath verknüpft.
Discovery
Im August 2025 wurde eine Studie veröffentlicht, die eine Methode zur Ausnutzung von Protected Process Light (PPL) zur Deaktivierung von Endpoint-Sicherheitstools detailliert beschreibt. Im Anschluss an diese Enthüllung erstellten wir eine Verhaltensregel mit dem Titel „ Potenzielle Umgehung durch ClipUp-Ausführung“ und identifizierten nach einer Bedrohungsanalyse der Telemetriedaten eine laufende Kampagne, die diese Technik einsetzte.
RONNINGLOADER-Codeanalyse
Der erste Infektionsvektor ist ein mit einem Trojaner infiziertes Installationsprogramm, das mithilfe des Nullsoft Scriptable Install System (NSIS) erstellt wurde. NSIS ist ein legitimes Open-Source-Tool zur Erstellung von Windows-Installationsprogrammen, wird aber häufig von Bedrohungsakteuren missbraucht, um Schadsoftware zu verpacken und zu verbreiten, wie man am Beispiel von GULOADER sehen kann. Im Rahmen dieser Kampagne haben wir beobachtet, dass die schädlichen Installationsprogramme unter verschiedenen Vorwänden verbreitet werden und sich als legitime Software wie Google Chrome, Microsoft Teams oder andere vertrauenswürdige Anwendungen ausgeben, um Benutzer zur Ausführung zu verleiten.
Bei der Ausführung fungiert das primäre NSIS-Installationsprogramm als Dropper und enthält zwei zusätzliche eingebettete NSIS-Installationsprogramme. Einer der verschachtelten Installationsprogramme ist harmlos und installiert die legitime Software, während das zweite bösartig ist und für die Auslösung der Angriffskette verantwortlich ist.
Die Angriffskette nutzt einen signierten Treiber namens ollama.sys zur Beendigung des Antivirenprozesses. Der Fahrer hat den Signaturnamen Kunming Wuqi E-commerce Co., Ltd. und ein Zertifikat, das vom 3 Februar , 2025 bis zum 3 Februar , 2026 gültig ist. Eine Analyse von VirusTotal ergab 71 zusätzliche signierte Binärdateien. Unter diesen identifizierten wir AgentTesla-Dropper, die sich als 慕讯公益加速器 (MuXunAccelerator) ausgaben, eine auf Gaming ausgerichtete VPN-Software, die bei chinesischen Nutzern beliebt ist, mit Samples, die bis April 2025 zurückreichen. Auffällig ist, dass die Signiertechniken in den verschiedenen Beispielen variieren. Einige frühere Beispiele, wie inject.sys, enthalten HookSignTool -Artefakte einschließlich der Zeichenkette JemmyLoveJenny, während das Beispiel vom Oktober 2025 ollama.sys keine solchen Artefakte aufweist und Standardsignaturverfahren verwendet, jedoch haben beide die gleiche Gültigkeitsdauer des Zertifikats.
Beim Vergleich des PDB-String-Artefakts D:\VS_Project\加解密\MyDriver1\x64\Release\MyDriver1.pdb von ollama.sysmit anderen Beispielen entdeckten wir unterschiedliche Artefakte im Vergleich zu den anderen eingereichten Beispielen.
D:\cpp\origin\ConsoleApplication2\x64\Release\ConsoleApplication2.pdbD:\a_work\1\s\artifacts\obj\coreclr\windows.x86.Release\Corehost.Static\singlefilehost.pdbC:\Users\0\Desktop\EAMap\x64\Release\ttt.pdbh:\projects\netfilter3\bin\Release\Win32\nfregdrv.pdb
Aufgrund der Vielfalt der Binärdateien und der großen Anzahl an Einsendungen vermuten wir, dass das Zertifikat möglicherweise durchgesickert ist, dies ist zum jetzigen Zeitpunkt jedoch reine Spekulation.
Phase 1
Unsere Analyse begann mit der initialen Binärdatei, die durch ihren SHA256-Hash identifiziert wurde: da2c58308e860e57df4c46465fd1cfc68d41e8699b4871e9a9be3c434283d50b. Durch das Extrahieren werden zwei eingebettete ausführbare Dateien sichtbar: ein harmloses Installationsprogramm, letsvpnlatest.exe, und das bösartige Installationsprogramm Snieoatwtregoable.exe.
Der bösartige Installer Snieoatwtregoable.exe erstellt ein neues Verzeichnis unter C:\Program Files\Snieoatwtregoable\. In diesem Ordner werden zwei Dateien abgelegt: eine DLL mit dem Namen Snieoatwtregoable.dll und eine verschlüsselte Datei mit dem tp.png.
Der Kern der bösartigen Aktivität befindet sich in Snieoatwtregoable.dll, das eine einzige Funktion exportiert: DllRegisterServer. Bei Aufruf liest diese Funktion den Inhalt der Datei tp.png von der Festplatte und entschlüsselt diese Daten anschließend mit Hilfe eines einfachen Algorithmus, der sowohl eine Rechtsrotation (ROR) als auch eine XOR-Operation beinhaltet.
Der entschlüsselte Inhalt ist Shellcode, der eine PE-Datei im Speicher reflektiert lädt und ausführt. Die Malware reserviert zunächst mithilfe der NtAllocateVirtualMemory -API einen neuen Speicherbereich innerhalb ihres eigenen Prozesses und erstellt dann durch Aufruf von NtCreateThreadEx einen neuen Thread zur Ausführung des Shellcodes.
Die Malware versucht, alle Benutzerland-Hooks zu entfernen, indem sie ein neues ntdll.dll lädt und dann GetProcAddress mit dem API-Namen verwendet, um die Adressen aufzulösen.
Die Schadsoftware versucht, eine Verbindung zu localhost auf Port 5555 herzustellen, ohne dabei einen erkennbaren Zweck zu verfolgen, da das Ergebnis irrelevant ist; vermutlich handelt es sich um toten Code oder Überbleibsel aus der Vorproduktionsphase.
Stage 2 - tp.png
RONINGLOADER prüft zunächst mithilfe der GetTokenInformation API, ob es über administrative Berechtigungen verfügt. Andernfalls versucht es, seine Berechtigungen zu erhöhen, indem es mit dem Befehl runas eine neue, erhöhte Instanz von sich selbst startet, bevor es den ursprünglichen Prozess beendet.
Interessanterweise versucht die Malware, mit einer fest codierten URL http://www.baidu.com/ und dem User-Agent “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko” zu kommunizieren. Dabei handelt es sich jedoch anscheinend um toten Code, wahrscheinlich aufgrund einer entfernten Funktion oder eines Platzhaltercodes für zukünftige Versionen. Es dient dazu, die Daten aus dem HTTP-Antwortheader der URL zu extrahieren und zu protokollieren.
Anschließend durchsucht die Schadsoftware eine Liste laufender Prozesse nach spezifischen Antivirenlösungen. Es gleicht eine Liste fest codierter Prozessnamen ab und setzt ein entsprechendes boolesches Flag auf "True", falls ein Prozess gefunden wird.
Nachfolgend eine Tabelle der Prozesse und der zugehörigen, im Binärcode fest codierten Sicherheitsprodukte:
| Prozessname | Sicherheitsprodukt |
|---|---|
MsMpEng.exe | Microsoft Defender Antivirus |
kxemain.exe | Kingsoft Internet Security |
kxetray.exe | Kingsoft Internet Security |
kxecenter.exe | Kingsoft Internet Security |
QQPCTray.exe | Tencent PC Manager |
QQPCRTP.exe | Tencent PC Manager |
QMToolWidget.exe | Tencent PC Manager |
HipsTray.exe | Qihoo 360 Totale Sicherheit |
HipsDaemon.exe | Qihoo 360 Totale Sicherheit |
HipsMain.exe | Qihoo 360 Totale Sicherheit |
360tray.exe | Qihoo 360 Totale Sicherheit |
AV-Prozessbeendigung durch injizierten Remote-Prozess
Anschließend beendet die Schadsoftware diese Prozesse. Interessanterweise verfolgt das Qihoo 360 Total Security-Produkt einen anderen Ansatz als die anderen.
Zunächst wird durch Änderung der Firewall die gesamte Netzwerkkommunikation blockiert. Anschließend wird eine Funktion aufgerufen, um Shellcode in den Prozess (vssvc.exe) einzuschleusen, der mit dem Volume Shadow Copy (VSS)-Dienst verknüpft ist.
Es verleiht sich zunächst das Token mit hoher Integrität SeDebugPrivilege .
Anschließend wird der VSS (Volume Shadow Copy Service) gestartet, falls dieser noch nicht läuft, und die PID des zugehörigen Prozesses (vssvc.exe) wird abgerufen.
Anschließend verwendet die Malware NtCreateSection , um zwei separate Speicherbereiche zu erstellen. Anschließend werden Ansichten dieser Abschnitte in den Speicherbereich des vssvc.exe-Prozesses abgebildet. Der erste Abschnitt enthält eine vollständige Portable Executable (PE)-Datei, die ein Treiber mit dem Gerätenamen \\.\Ollama ist. Der zweite Abschnitt enthält Shellcode, der zur Ausführung bestimmt ist.
RONINGLOADER verfolgt bei der Prozessinjektion einen anderen Ansatz als bei anderen Injektionsmethoden, die an anderer Stelle in der Malware verwendet werden. Diese Technik nutzt den Thread-Pool, um Code über einen Dateischreibtrigger im Remote-Prozess remote auszuführen. Diese Technik wurde von SafeBreach in 2023 mit verschiedenen Varianten dokumentiert.
Nach der Ausführung beginnt der Shellcode damit, dynamisch die Adressen der Windows-APIs aufzulösen, die er zum Funktionieren benötigt. Dies ist der einzige Teil von RONNINGLOADER, der eine Verschleierung verwendet, nämlich den Fowler-Noll-Vo-Hash- Algorithmus (FNV), um Funktionen anhand ihres Hashwerts anstatt ihres Namens nachzuschlagen.
Zuerst werden die Adressen von CreateFileW, WriteFile und CloseHandle abgerufen, um den Treiber auf der Festplatte unter einem fest codierten Pfad, C:\windows\system32\drivers\1912763.temp, zu schreiben.
Anschließend werden folgende Operationen durchgeführt:
- Erstellen Sie einen Dienst namens
xererre1, um den auf die Festplatte gelegten Treiber zu laden. - Für jeden der folgenden Prozesse (
360Safe.exe,360Tray.exeundZhuDongFangYu.exe), die alle mit der Qihoo-Software 360 verknüpft sind, werden 2 Funktionen aufgerufen: eine Funktion zum Ermitteln der Prozess-ID (PID) anhand des Prozessnamens, gefolgt von einer Funktion zum Beenden des Prozesses anhand der PID. - Anschließend wird der Dienst beendet und gelöscht.
xererre1
Um einen Prozess zu beenden, nutzt die Schadsoftware den Treiber. Eine Analyse des Treibers zeigt, dass er nur die Funktionalität 1 registriert: Er verarbeitet eine IOCTL-ID (0x222000), die eine PID als Parameter nimmt und den Prozess beendet, indem er ihn zuerst mit ZwOpenProcess öffnet und ihn dann mit ZwTerminateProcess Kernel-APIs beendet.
AV-Prozessbeendigung
Nach der Rückkehr zum Hauptausführungsablauf tritt die Malware in eine Schleife ein, um die Beendigung von 360tray.exe zu bestätigen, wie sie vom in den VSS-Dienst eingeschleusten Shellcode behandelt wird. Es wird erst fortgesetzt, nachdem sichergestellt wurde, dass der Prozess nicht mehr läuft. Unmittelbar nach dieser Bestätigung stellt das System seine Firewall-Einstellungen wieder her. Bei dieser Aktion handelt es sich wahrscheinlich um eine Abwehrmaßnahme, die darauf abzielt, den Kommunikationskanal der Software zu unterbrechen und so zu verhindern, dass sie abschließende Aktivitätsprotokolle oder Sicherheitswarnungen an ihre Backend-Dienste hochlädt.
Anschließend werden die übrigen Sicherheitsprozesse direkt vom Hauptprozess aus beendet. Bemerkenswerterweise wird nicht versucht, diese Aktionen zu verbergen; stattdessen wird die frühere API-Hashing-Technik aufgegeben und die notwendigen Funktionen direkt aufgerufen.
RONIC LOADER befolgt ein konsistentes, wiederholbares Verfahren, um seine Zielprozesse zu beenden:
- Zuerst wird der schädliche Treiber auf die Festplatte geschrieben, diesmal auf den temporären Pfad.
C:\Users\analysis\AppData\Local\Temp\ollama.sys. - Es wird ein temporärer Dienst (
ollama) erstellt, umollama.sysin den Kernel zu laden. - Anschließend ermittelt die Malware die Prozess-ID (PID) des Zielprozesses anhand seines Namens und sendet eine Anfrage mit der PID an dessen Treiber, um die Beendigung durchzuführen.
- Unmittelbar nach dem Absenden des Kill-Befehls wird der Dienst gelöscht.
Bezüglich Microsoft Defender versucht die Malware, den MsMpEng.exe -Prozess mit der gleichen Methode zu beenden, die oben beschrieben wurde. Uns ist ein Fehler im Code des Autors aufgefallen: Bei Microsoft Defender prüft der Code nicht, ob Defender bereits ausgeführt wird, sondern sucht direkt nach dem Prozess MsMpEng.exe . Das bedeutet, dass die Malware, falls der Prozess nicht ausgeführt wird, 0 als PID an den Treiber sendet.
Die Schadsoftware enthält redundanten Code, um Prozesse von Sicherheitslösungen zu unterbrechen. Außerdem wird ein weiterer Shellcode in svchost.exe injiziert. ähnlich dem, was in vssvc.exe injiziert wurde, aber die Liste der Prozesse ist anders, wie im folgenden Screenshot zu sehen ist.
Die Injektionstechnik verwendet ebenfalls Threadpools, der injizierte Code wird jedoch durch ein Ereignis ausgelöst.
Nach Beendigung des Prozesses erstellt die Malware 4 -Ordner.
C:\ProgramData\lnkC:\ProgramData\<current_date>C:\Users\Public\Downloads\<current_date>C:\ProgramData\Roning
Eingebettete Archive
Anschließend schreibt die Malware drei .txt -Dateien nach C:\Users\Public\Downloads\<current_date>. Trotz ihrer Dateiendung handelt es sich nicht um Textdateien, sondern um Container, die in einem bestimmten Format erstellt wurden und wahrscheinlich von einer anderen Codebasis übernommen wurden.
Diese benutzerdefinierte Dateistruktur ist wie folgt aufgebaut:
- Magic Bytes: Die Datei beginnt zur Identifizierung mit der Signatur
4B 44 01 00. - Dateianzahl: Unmittelbar darauf folgt ein Wert, der die Anzahl der im Container enthaltenen Dateien angibt.
- Dateimetadaten: Ein Kopfzeilenabschnitt beschreibt anschließend die Informationen für jede gespeicherte Datei.
- Komprimierte Daten: Schließlich wird jede eingebettete Datei in einem ZLIB-komprimierten Datenblock gespeichert.
Hier ist ein Beispiel für das Dateiformat von hjk.txt archive, das 2 -Dateien enthält: 1.bat und fhq.bat.
Dieses Archivformat gilt für 2 weitere eingebettete Dateien in der aktuellen Phase:
agg.txt, das 3 Dateien enthält -Enpug.bin,goldendays.dll, undtrustinstaller.binkill.txt, die die Datei 1 enthält -1.dll
Batch-Skripte zum Umgehen von UAC und AV-Netzwerken
1.bat ist ein einfaches Batch-Skript, das die Benutzerkontensteuerung (UAC) deaktiviert, indem der Registrierungswert EnableLUA auf 0 gesetzt wird.
fhq.bat ist ein weiteres Batch-Skript, das auf das in C:\ProgramData\lnk\123.txt definierte Programm und die Qihoo 360 Sicherheitssoftware (360Safe.exe) abzielt. durch die Erstellung von Firewall-Regeln, die eingehende und ausgehende Verbindungen zu ihnen blockieren. Außerdem werden Firewall-Benachrichtigungen für alle Profile deaktiviert.
Beendigung des AV-Prozesses über Phantom-DLL
Die bereitgestellte DLL, 1.dll, wird nach C:\Windows\System32\Wow64\Wow64Log.dll kopiert, um von allen WOW64-Prozessen per Sideloading geladen zu werden, da Wow64Log.dll eine Phantom-DLL ist, die auf Windows-Rechnern standardmäßig nicht vorhanden ist. Seine Aufgabe ist redundant, da er im Wesentlichen versucht, eine Liste von Prozessen mithilfe von Standard-Windows-APIs zu beenden (TerminateProcess).
ClipUp MS Defender-Killer
Anschließend versucht die Malware, eine von Zero Salarium im August 2025 dokumentierte PPL-Missbrauchstechnik anzuwenden. Der im Artikel beschriebene Proof of Concept zielt ausschließlich auf Microsoft Defender ab. Beachten Sie, dass alle Systembefehle über cmd.exe mit der ShellExecuteW -API ausgeführt werden.
- Es sucht unter
C:\ProgramData\Microsoft\Windows Defender\Platform\*nach dem Installationsordner von Microsoft Defender und berücksichtigt dabei nur das Verzeichnis mit dem aktuellsten Änderungsdatum, welches die aktuell verwendete Version angibt. - Erstellen Sie einen Ordner
C:\ProgramData\romingund einen Verzeichnislink mitmklink, der auf das mit dem folgenden Befehl gefundene Verzeichnis verweist:cmd.exe /c mklink /D "C:\ProgramData\roming" “C:\ProgramData\Microsoft\Windows Defender\Platform\4.18.25050.5-0” - Anschließend wird
C:\Windows\System32\ClipUp.exemit dem folgenden Parameter ausgeführt:-ppl C:\ProgramData\roming\MsMpEng.exe, wodurchMsMpEng.exemit fehlerhaften Daten überschrieben wird und die EDR somit auch nach einem Neustart deaktiviert wird.
Der Autor scheint Code von EDR-Freeze kopiert zu haben, um ClipUp.exe zu starten.
CiPolicies
Die Malware zielt direkt auf Windows Defender Application Control (WDAC) ab, indem sie eine Richtliniendatei in den Pfad C:\\Windows\\System32\\CodeIntegrity\\CiPolicies\\Active\\{31351756-3F24-4963-8380-4E7602335AAE}.cip schreibt.
Die schädliche Richtlinie arbeitet im „Sperrlisten“-Modus, wodurch die meisten Anwendungen ausgeführt werden können, während zwei beliebte chinesische Antivirenhersteller explizit blockiert werden:
- Qihoo 360 Totale Sicherheit durch Blockierung
360rp.exeund360sd.exe - Huorong Security durch Blockierung
ARPProte.exe - Alle ausführbaren Dateien wurden von Huorong Security (
北京火绒网络科技有限公司) über den Zertifikats-TBS-HashA229D2722BC6091D73B1D979B81088C977CB028A6F7CBF264BB81D5CC8F099F87D7C296E48BF09D7EBE275F5498661A4signiert.
Eine entscheidende Komponente ist die Enabled:Unsigned System Integrity Policy -Regel, die es ermöglicht, die Richtlinie auch ohne gültige digitale Signatur zu laden.
Truncated...
<Rule>
<Option>Enabled:Inherit Default Policy</Option>
</Rule>
<Rule>
<Option>Enabled:Unsigned System Integrity Policy</Option>
</Rule>
<Rule>
<Option>Enabled:Advanced Boot Options Menu</Option>
</Rule>
<Rule>
<Option>Enabled:Update Policy No Reboot</Option>
</Rule>
</Rules>
<EKUs />
<FileRules>
<Allow ID="ID_ALLOW_A_019A298478CE7BF4902DE08CA2D17630" FileName="*" />
<Allow ID="ID_ALLOW_A_019A298478CE7AB089C369772F34B39B" FileName="*" />
<Deny ID="ID_DENY_A_019A298478CE7DBA9913BFC227DACD14" FileName="360rp.exe" InternalName="360rp.exe" FileDescription="360杀毒 实时监控" ProductName="360杀毒" />
<Deny ID="ID_DENY_A_019A298478CE763C85C9F42EC8669750" FileName="360sd.exe" InternalName="360sd.exe" FileDescription="360杀毒 主程序" ProductName="360杀毒" />
<FileAttrib ID="ID_FILEATTRIB_A_019A298478CE766B9C39FB9CE6805A11" FileName="ARPProte.exe" MinimumFileVersion="6.0.0.0" />
</FileRules>
<Signers>
<Signer ID="ID_SIGNER_A_019A298478CE7608908CAE58FD9C3D8E" Name="">
<CertRoot Type="TBS" Value="A229D2722BC6091D73B1D979B81088C977CB028A6F7CBF264BB81D5CC8F099F87D7C296E48BF09D7EBE275F5498661A4" />
<CertPublisher Value="北京火绒网络科技有限公司" />
<FileAttribRef RuleID="ID_FILEATTRIB_A_019A298478CE766B9C39FB9CE6805A11" />
</Signer>
<Signer ID="ID_SIGNER_A_019A298478CE77F7B523D1581F518639" Name="">
<CertRoot Type="TBS" Value="A229D2722BC6091D73B1D979B81088C977CB028A6F7CBF264BB81D5CC8F099F87D7C296E48BF09D7EBE275F5498661A4" />
<CertPublisher Value="北京火绒网络科技有限公司" />
</Signer>
</Signers>
...Truncated
Stufe 3 - goldendays.dll
Im vorherigen Schritt erstellt RONINGLOADER einen neuen Dienst mit dem Namen MicrosoftSoftware2ShadowCop4yProvider , um den nächsten Ausführungsschritt mit dem folgenden Befehl auszuführen: regsvr32.exe /S "C:\ProgramData\Roning\goldendays.dll.
Das Hauptziel dieser Komponente ist es, die nächste Nutzlast in einen legitimen, privilegierten Systemprozess einzuschleusen, um dessen Aktivitäten zu verschleiern.
Um dies zu erreichen, identifiziert RONNINGLOADER zunächst einen geeigneten Zielprozess. Es enthält eine fest codierte Liste mit zwei Dienstnamen, die es nacheinander zu starten versucht:
- TrustedInstaller (
TrustedInstaller.exe) - MicrosoftEdgeElevationService (
elevation_service.exe)
Die Schadsoftware durchläuft diese Liste und versucht, jeden Dienst zu starten. Sobald ein Dienst erfolgreich gestartet wurde oder falls ein bereits laufender Dienst gefunden wird, speichert die Malware seine Prozess-ID (PID) für die Injektionsphase.
Anschließend etabliert die Malware Persistenz, indem sie eine Batch-Datei mit einem zufälligen Namen im Verzeichnis C:\Windows\ erstellt (z. B. C:\Windows\KPeYvogsPm.bat). Das Skript in dieser Datei läuft in einer Endlosschleife mit folgender Logik:
- Es prüft, ob die erfasste Prozess-ID (PID) des vertrauenswürdigen Dienstes (z. B. PID
4016fürTrustedInstaller.exe) noch ausgeführt wird. - Falls der Dienst nicht ausgeführt wird, startet das Skript den zuvor erstellten schädlichen Dienst (
MicrosoftSoftware2ShadowCop4yProvider) neu, um sicherzustellen, dass die Komponenten der Schadsoftware aktiv bleiben. - Wenn der Dienstprozess läuft, wartet das Skript 10 Sekunden, bevor es erneut prüft.
Schließlich liest die Malware den Inhalt von C:\ProgramData\Roning\trustinstaller.bin. Unter Verwendung der PID des zuvor erworbenen vertrauenswürdigen Dienstes injiziert es diese Nutzlast in den Zielprozess (TrustedInstaller.exe oder elevation_service.exe). Die Injektionsmethode ist unkompliziert: Sie führt eine virtuelle Remote-Allokation mit VirtualAllocEx durch, schreibt mit WriteProcessMemory in diese und erstellt dann mit CreateRemoteThread einen Remote-Thread, um sie auszuführen.
Phase 3 - trustinstaller.bin
Die dritte Stufe, die in trustinstaller.bin enthalten ist, ist dafür verantwortlich, die endgültige Nutzlast in einen legitimen Prozess einzuschleusen. Zunächst werden die laufenden Prozesse aufgelistet und anschließend wird nach einem Ziel gesucht, indem die Prozessnamen mit einer fest codierten Liste potenzieller Prozesse abgeglichen werden.
Wenn es gefunden wird, wird der Shellcode in C:\ProgramData\Roning\Enpug.bin injiziert, was die endgültige Nutzlast darstellt. Es wird einen Abschnitt mit NtCreateSection erstellen, eine Ansicht davon im Remote-Prozess mit NtMapViewOfSection abbilden und die Nutzlast hineinschreiben. Dann wird ein Remote-Thread mit CreateRemoteThread erstellt.
Phase 4 - Endgültige Nutzlast
Die endgültige Nutzlast hat seit der Entdeckung einer DragonBreath-Kampagne durch Sophosin 2023 und dem Bericht von QianXin Mitte 2022 keine wesentlichen Änderungen erfahren. Es handelt sich immer noch um eine modifizierte Version des Open-Source-RAT gh0st .
In den neueren Kampagnen wird ganz zu Beginn der Ausführung ein Mutex mit dem Wert Global\DHGGlobalMutex erstellt. Außerhalb der Hauptkommunikationsschleife C2 wird toter Code beobachtet, der einen Mutex mit der Bezeichnung MyUniqueMutexName erzeugt und ihn anschließend sofort wieder zerstört.
Die C2-Domäne und der Port bleiben fest codiert, sind aber jetzt XOR-verschlüsselt. Der C2-Kanal arbeitet über unverschlüsselte TCP-Sockets, wobei die Nachrichten in beide Richtungen verschlüsselt sind.
Opfer-Beacon-Daten
Das Implantat meldet sich beim C2-Server und sendet in zufälligen Abständen wiederholt ein Beacon an den C2-Server, implementiert durch Sleep(<random_amount> * 1000). Nachfolgend ist die Struktur der Daten dargestellt, die das Implantat während des Beaconing-Intervalls an den C2-Server zurücksendet:
struct BeaconData {
// +0x000
uint32_t message_type; // Example Beacon ID - 0xC8 (200)
// +0x004
uint32_t local_ip; // inet_addr() of victim's IP
// +0x008
char hostname[50]; // Computer name or registry "Remark"
// +0x03A
char windows_version[?]; // OS version info
// +0x0D8
char cpu_name[64]; // Processor name
// +0x118
uint32_t entry_rdx;
// +0x11C
char time_value[64]; // Implant installed time or registry "Time" value
// +0x15C
char victim_tag[39]; // Command 6 buffer (Custom victim tag)
// +0x183
uint8_t is_wow64; // 1 if 32-bit on 64-bit Windows
// +0x184
char av_processes_found[128]; // Antivirus processes found
// +0x204
char uptime[12]; // System uptime
char padding[52];
// +0x244
char crypto_wallet_track[64]; // "狐狸系列" (MetaMask) or registry "ZU" (crypto related tracking)
// +0x284
uint8_t is_admin; // 1 if running with admin rights
// +0x285
char data[?];
// +0x305
uint8_t telegram_installed; // 1 if Telegram installed
// +0x306
uint8_t telegram_running; // 1 if Telegram.exe running
// +0x307
// (padding to 0x308 bytes)
};
C2-Befehle
Die vom C2-Server an das Implantat gesendeten Anforderungsnachrichten folgen folgender Struktur:
struct C2_to_implant_msg {
uint32_t total_message_len;
uint32_t RC4_key;
char encrypted_command_id;
uint8_t encrypted_command_args;
};
Das Implantat entschlüsselt C2-Nachrichten anhand der folgenden Formel:
RC4_decrypt(ASCII(decimal(RC4_key)), encrypted_command_id || command)
Nachfolgend finden Sie eine Liste der verfügbaren Befehle, die größtenteils seit 2 Jahren unverändert geblieben sind:
| Befehls-ID | Beschreibung |
|---|---|
0 | ExitWindowsEx über eine bereitgestellte EXIT_WINDOWS_FLAGS |
1 | Implantat ordnungsgemäß beenden |
2 | Setzen Sie den Registrierungsschlüssel Enable auf „False“, um das Implantat dauerhaft zu beenden und zu deaktivieren. |
3 | Registrierungsschlüssel Remark für benutzerdefinierte Opferumbenennung festlegen (Standardwert: Hostname) |
4 | Registrierungsschlüssel ZU für MetaMask-/Krypto-bezogene Tags festlegen |
5 | Windows-Ereignisprotokolle löschen (Anwendung, Sicherheit, System) |
6 | Legen Sie zusätzliche benutzerdefinierte Tags fest, wenn Client-Beacons |
7 | Datei über die angegebene URL herunterladen und ausführen |
9 | ShellExecute (sichtbares Fenster) |
10 | ShellExecute (verstecktes Fenster) |
112 | Daten aus der Zwischenablage abrufen |
113 | Daten in der Zwischenablage festlegen |
125 | ShellExecute cmd.exe mit Befehlsparametern (ausgeblendetes Fenster) |
126 | Nutzdaten durch Speichern auf der Festplatte ausführen oder reflektierend laden und ausführen PluginMe Export |
128 | Erste Option – eine neue Sitzung mit einer angegebenen C2-Domäne, einem Port und einem Beacon-Intervall öffnen. Zweite Option – den Registrierungsschlüssel CopyC setzen, um die C2-Domäne und den Port dauerhaft zu aktualisieren. Verschlüsselt gespeichert über Base64Encode(XOR(C2_domain_and_port, 0x5)). |
241 | Prüfen Sie, ob Telegram installiert ist und/oder ausgeführt wird. |
243 | Zwischenablage-Hijacker konfigurieren |
101, 127, 236, [...] | Benutzerdefinierte Shellcode-Injektion in svchost.exe unter Verwendung der WTS-Sitzungstoken-Identitätswechsel, wobei auf die Prozessinjektion in CREATE_SUSPENDED über CreateRemoteThreadzurückgegriffen wird. |
Anmerkung des Analysten: Es gibt mehrere Befehls-IDs, die auf denselben Befehl verweisen. Wir verwendeten Auslassungspunkte, um zu kennzeichnen, wann dies beobachtet wurde.
Systemprotokollierer
Zusätzlich zu den C2-Befehlen implementiert das Implantat einen Tastatur-, Zwischenablage- und Fensterprotokollierer. Die erfassten Daten werden in %ProgramData%\microsoft.dotnet.common.log geschrieben und können über einen Registrierungsschlüssel bei HKEY_CURRENT_USER\offlinekey\open aktiviert oder deaktiviert werden (1 zum Aktivieren, 0 zum Deaktivieren). Die Protokolldatei verfügt über eine automatische Rotation und löscht sich selbst, sobald sie 50 MB überschreitet, um eine Erkennung durch übermäßige Festplattennutzung zu vermeiden.
Der untenstehende Codeausschnitt demonstriert die Initialisierungsroutine, die die Protokollrotation implementiert und eine DirectInput8-Schnittstelle konfiguriert, um das Tastaturgerät für die Ereigniserfassung zu erfassen, gefolgt von der Logik zum Abrufen von Tastaturereignissen.
Anschließend durchläuft die Malware eine Überwachungsschleife, um drei Kategorien von Informationen zu erfassen.
- Zunächst überwacht es die Zwischenablage mit
OpenClipboardundGetClipboardDataund protokolliert alle Änderungen am Textinhalt mit dem Präfix[剪切板:]. - Zweitens verfolgt es Fensterfokusänderungen über
GetForegroundWindowund protokolliert den Titel und den Zeitstempel des aktiven Fensters mit den Präfixen[标题:]bzw.[时间:], sobald der Benutzer die Anwendung wechselt. - Drittens ruft es gepufferte Tastaturereignisse vom Gerät
DirectInput8ab (bis zu 60 Ereignisse pro Abfrage) und übersetzt sie mithilfe einer Zeichenzuordnungstabelle in lesbaren Text, wobei den Ergebnissen das Präfix[内容:]vorangestellt wird.
Zwischenablage-Hijacker
Die Malware implementiert außerdem einen Clipboard-Hijacker, der über die C2-Befehls-ID 243 fernkonfiguriert wird. Es überwacht Änderungen in der Zwischenablage und führt Such- und Ersetzungsoperationen an erfasstem Text durch, wobei vom Angreifer definierte Zeichenketten durch Ersetzungswerte ersetzt werden. Die Konfigurationsparameter werden in der Registrierung unter HKEY_CURRENT_USER\offlinekey mit den Schlüsseln clipboard (Funktion aktivieren/deaktivieren), charac (Suchzeichenfolge), characLen (Suchlänge) und newcharac (Ersetzungszeichenfolge) gespeichert.
Es registriert eine Fensterklasse mit dem Namen ClipboardListener_Class_Toggle und erstellt ein verstecktes Fenster mit dem Titel ClipboardMonitor , um Benachrichtigungen über Änderungen in der Zwischenablage zu empfangen. Die Fensterprozedur verarbeitet WM_CLIPBOARDUPDATE (0x31D) Nachrichten, indem sie die Sequenznummern der Zwischenablage mit GetClipboardSequenceNumber überprüft, um echte Änderungen zu erkennen, und dann die Kernmanipulationsroutine aufruft, die den Inhalt der Zwischenablage über EmptyClipboard und SetClipboardData austauscht.
Malware und MITRE ATT&CK
Elastic verwendet das MITRE ATT&CK-Framework , um gängige Taktiken, Techniken und Verfahren zu dokumentieren, die von Advanced Persistent Threats gegen Unternehmensnetzwerke eingesetzt werden.
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.
- Ausführung
- Persistenz
- Rechteausweitung
- Tarnung
- Zugriff mit Anmeldeinformationen
- Discovery
- Erfassung
- Command and Control
Techniken
Techniken stellen dar, wie ein Angreifer ein taktisches Ziel erreicht, indem er eine Aktion ausführt.
- Befehls- und Skriptinterpreter: Windows-Befehlsshell
- Systemdienste: Dienstausführung
- Erstellen oder Ändern des Systemprozesses: Windows-Dienst
- Mechanismus zur Kontrolle der Rechteerweiterungen bei Missbrauch: Umgehen der Benutzerkontensteuerung
- Access Token Manipulation
- Beeinträchtigung der Abwehr: Deaktivieren oder Ändern von Tools
- Schutzmechanismen beeinträchtigen: Systemfirewall deaktivieren oder modifizieren
- Entfernen von Indikatoren: Löschen Sie Windows-Ereignisprotokolle
- Hijack-Ausführungsablauf: DLL-Querladen
- Prozessinjektion
- Maskierung: Übereinstimmung mit dem legitimen Namen oder Standort
- Modify Registry
- Untergrabung von Vertrauenskontrollen: Änderung der Codesignaturrichtlinie
- Eingabeerfassung: Keylogging
- Daten aus der Zwischenablage
- Prozess-Erkennung
- Erkennung von Systeminformationen
- System Owner/User Discovery
- Softwareerkennung: Sicherheitssoftwareerkennung
- Non-Application Layer Protocol
- Verschlüsselter Kanal: Symmetrische Kryptographie
Gegenmaßnahmen
Erkennung
- Mögliche Ausweichung durch ClipUp-Ausführung
- Verdächtige Remote-Speicherzuweisung
- Potenzielle Code-Injektion während eines angehaltenen Prozesses
- Remote-Speicherschreiben in vertrauenswürdigen Zielprozess
- Remote-Prozessspeicher schreiben durch Modul mit niedriger Reputation
- Prozessspeicher: Schreiben in einen Nicht-Kindprozess
- Nicht gesicherter Shellcode aus einem nicht signierten Modul
- UAC-Umgehungsversuch durch seitliches Laden der WOW64-Logger-DLL
- Network Connect API aus dem nicht gesicherten Speicher
- Rundll32 or Regsvr32 Loaded a DLL from Unbacked Memory
- Netzwerkmodul aus verdächtigem, nicht gesichertem Speicher geladen
YARA
Elastic Security hat YARA-Regeln erstellt, um diese Aktivität zu identifizieren. Nachfolgend die YARA-Regeln zur Identifizierung von RONINGLOADER und des endgültigen Implantats:
Beobachtungen
Die folgenden Observablen wurden in dieser Studie diskutiert.
| Überwachbar | Typ | Name | Referenz |
|---|---|---|---|
da2c58308e860e57df4c46465fd1cfc68d41e8699b4871e9a9be3c434283d50b | SHA-256 | klklznuah.msi | Erster NSIS-Installer |
82794015e2b40cc6e02d3c1d50241465c0cf2c2e4f0a7a2a8f880edaee203724 | SHA-256 | Snieoatwtregoable.exe | Schädliches Installationsprogramm aus dem ursprünglichen Installationsprogramm entpackt |
c65170be2bf4f0bd71b9044592c063eaa82f3d43fcbd8a81e30a959bcaad8ae5 | SHA-256 | Snieoatwtregoable.dll | Stufe 1 - Lader für Stufe 2 |
2515b546125d20013237aeadec5873e6438ada611347035358059a77a32c54f5 | SHA-256 | ollama.sys | Phase 2 - Treiber für die Prozessbeendigung |
1613a913d0384cbb958e9a8d6b00fffaf77c27d348ebc7886d6c563a6f22f2b7 | SHA-256 | tp.png | Phase 2 - verschlüsselte Kernnutzlast |
395f835731d25803a791db984062dd5cfdcade6f95cc5d0f68d359af32f6258d | SHA-256 | 1.bat | Phase 2 - UAC-Umgehungsskript |
1c1528b546aa29be6614707cbe408cb4b46e8ed05bf3fe6b388b9f22a4ee37e2 | SHA-256 | fhq.bat | Phase 2 - Skript zum Blockieren der Netzwerkverbindung für AV-Prozesse |
4d5beb8efd4ade583c8ff730609f142550e8ed14c251bae1097c35a756ed39e6 | SHA-256 | 1.dll | Stufe 2 – Beendigung des AV-Prozesses |
96f401b80d3319f8285fa2bb7f0d66ca9055d349c044b78c27e339bcfb07cdf0 | SHA-256 | {31351756-3F24-4963-8380-4E7602335AAE}.cip | Stufe 2 - WDAC-Richtlinie |
33b494eaaa6d7ed75eec74f8c8c866b6c42f59ca72b8517b3d4752c3313e617c | SHA-256 | goldendays.dll | Stufe 3 - Einstiegspunkt |
fc63f5dfc93f2358f4cba18cbdf99578fff5dac4cdd2de193a21f6041a0e01bc | SHA-256 | trustinstaller.bin | Stufe 3 - Lader für Enpug.bin |
fd4dd9904549c6655465331921a28330ad2b9ff1c99eb993edf2252001f1d107 | SHA-256 | Enpug.bin | Stufe 3 - Lader für die endgültige Nutzlast |
3dd470e85fe77cd847ca59d1d08ec8ccebe9bd73fd2cf074c29d87ca2fd24e33 | SHA-256 | 6uf9i.exe | Phase 4 - endgültige Nutzlast |
qaqkongtiao[.]com | Domain-Name | Phase 4 - endgültige Nutzlast C2 |
Referenzen
In der obigen Studie wurde auf Folgendes Bezug genommen:
- https://nsis.sourceforge.io/Main_Page
- https://learn.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service
- https://github.com/Jemmy1228/HookSigntool
- https://www.safebreach.com/blog/process-injection-using-windows-thread-pools/
- https://hijacklibs.net/entries/microsoft/built-in/wow64log.html
- https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function
- https://www.zerosalarium.com/2025/08/countering-edrs-with-backing-of-ppl-protection.html
- https://github.com/TwoSevenOneT/EDR-Freeze/blob/ceffd5ea7b813b356c77d469561dbb5ee45aeb24/PPLHelp.cpp#L43
- https://news.sophos.com/en-us/2023/05/03/doubled-dll-sideloading-dragon-breath/
- https://ti.qianxin.com/blog/articles/operation-dragon-breath-%28apt-q-27%29-dimensionality-reduction-blow-to-the-gambling-industry/
- https://github.com/sin5678/gh0st
