Operation Dragon Weave nutzt Azure Cloud C2, um die Tschechische Republik und Taiwan ins Visier zu nehmen
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Eine zielgerichtete Spionageoperation, die als Operation Dragon Weave verfolgt wird, nutzt bösartige LNK-Verknüpfungsdateien zusammen mit einer auf Rust basierenden ausführbaren Datei, um einen mehrstufigen Loader zu starten, der schließlich den Adaptix AZUREVEIL Command-and-Control-Agent bereitstellt. Die Betreiber missbrauchen Microsoft Azure Blob Storage als Dead-Drop-Mechanismus für die C2-Kommunikation. Die Kampagne konzentriert sich auf Regierungsmitarbeiter und Forscher in der Tschechischen Republik und in Taiwan.
Untersuchung
Die Untersuchung folgte der gesamten Infektionskette von der initialen ZIP-Archivdatei über die VBScript-Ausführung, PowerShell-basierte Entschlüsselung, DLL-Sideloading bis hin zu einem benutzerdefinierten Rust-Loader, der RC4, Base64 und SM4 verwendet, um die endgültige Nutzlast zu entschlüsseln. Die letzte Stufe der Schadsoftware, AZUREVEIL, wurde als 64-Bit-Adaptix-DLL identifiziert, die ausschließlich über Azure Blob Storage kommuniziert und die Ausführung von in-memory Beacon-Objekt-Dateien unterstützt.
Minderung
Verteidiger sollten die Ausführung unerwarteter LNK-Dateien und nicht signierter Binärdateien blockieren, strenge Kontrollen über die Skript- und Makroausführung erzwingen und ungewöhnlichen Azure Blob Storage-Verkehr überwachen. Die Verwendung von PowerShell mit Umgehung der Ausführungsrichtlinien sollte eingeschränkt oder genau beobachtet werden, und Sicherheitsteams sollten verdächtige Dateierstellungen in %LOCALAPPDATA% and %TEMP%. Starke Anmeldeinformationen für Azure-Konten und regelmäßige Rotation von SAS-Tokens sind ebenfalls ratsam.
Reaktion
Sicherheitsteams sollten betroffene Hosts erkennen und isolieren, flüchtigen Speicher sammeln, um alle im Speicher befindlichen Nutzlasten wiederherzustellen, die identifizierte Azure-Speicherdomäne blockieren und nach den gemeldeten Dateiartefakten und Prozessmustern suchen. Außerdem sollte eine vollständige forensische Untersuchung durchgeführt werden, um zusätzliche abgelegte Komponenten zu identifizieren und Persistenzmechanismen zu entfernen.
graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ddffdd classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes attack_phishing[„<b>Aktion</b> – <b>T1566.001 Spearphishing-Anhang</b><br/>Der Angreifer sendet den Opfern per E-Mail ein bösartiges ZIP-Archiv.“] class attack_phishing action file_zip[„<b>Datei</b> – malicious.zip<br/>Enthält eine .lnk-Verknüpfung und einen in Rust kompilierten .exe-Dropper.“] class file_zip file action_user_exec[„<b>Aktion</b> – <b>T1204.001 Benutzerausführung</b><br/>Das Opfer öffnet die .lnk-Datei oder führt die .exe-Datei aus und startet dadurch die Dropper-Kette.“] class action_user_exec action file_lnk[„<b>Datei</b> – payload.pdf.lnk<br/>Die Verknüpfung verwendet eine doppelte Dateiendung und ein Edge-Symbol, um harmlos zu erscheinen.“] class file_lnk file tool_wscript[„<b>Werkzeug</b> – wscript.exe<br/>Führt die VBScript-Nutzlast aus.“] class tool_wscript tool file_vbs[„<b>Datei</b> – empty.vbs<br/>Minimales VBScript, das PowerShell startet.“] class file_vbs file action_vbscript[„<b>Aktion</b> – <b>T1059.005 Visual Basic</b><br/>Das VBScript wird über wscript ausgeführt und startet PowerShell.“] class action_vbscript action action_powershell[„<b>Aktion</b> – <b>T1059.001 PowerShell</b><br/>Profile.ps1 wird unter Umgehung der Ausführungsrichtlinie gestartet und entschlüsselt die nächste Stufe.“] class action_powershell action file_dat[„<b>Datei</b> – 1.dat<br/>XOR-verschlüsselter Container, der RuntimeBroker_update.exe enthält.“] class file_dat file process_runtime[„<b>Prozess</b> – RuntimeBroker_update.exe<br/>Wird aus 1.dat entschlüsselt und lädt die bösartige UnityPlayer.dll per DLL-Side-Loading.“] class process_runtime process file_dll[„<b>Datei</b> – UnityPlayer.dll<br/>Bösartige DLL, die neben RuntimeBroker_update.exe abgelegt wird.“] class file_dll file action_dll_sideload[„<b>Aktion</b> – <b>T1546.009 AppCert DLL</b><br/>DLL-Side-Loading ermöglicht die Codeausführung.“] class action_dll_sideload action tool_rustloader[„<b>Werkzeug</b> – Rust-Loader (RUSTCLOAK)<br/>Reserviert Speicher, schreibt die entschlüsselte AZUREVEIL-PE-Datei und führt sie über Windows Fibers aus.“] class tool_rustloader tool action_process_injection[„<b>Aktion</b> – <b>T1055.002 Prozessinjektion</b><br/>PE-Injektion unter Verwendung von Windows Fibers.“] class action_process_injection action file_azureveil[„<b>Datei</b> – AZUREVEIL.exe<br/>Entschlüsselte Nutzlast, die nach der Injektion ausgeführt wird.“] class file_azureveil file action_discovery[„<b>Aktion</b> – <b>T1083 Datei- und Verzeichnisaufklärung</b><br/>Der Loader durchsucht Dateien und verschiebt sie nach %TEMP%.“] class action_discovery action action_network_discovery[„<b>Aktion</b> – <b>T1016 Aufklärung der Netzwerkkonfiguration</b><br/>Sammelt MAC- und IP-Informationen für Proxy-Nutzung und laterale Bewegungen.“] class action_network_discovery action action_c2[„<b>Aktion</b> – <b>T1102 Webdienst</b><br/>Kommuniziert über HTTPS mit Azure Blob Storage.“] class action_c2 action action_dead_drop[„<b>Aktion</b> – <b>T1102.003 Einwegkommunikation</b><br/>Lädt einen Beacon-Blob hoch und ruft Befehle aus demselben Container ab.“] class action_dead_drop action action_encrypted_channel[„<b>Aktion</b> – <b>T1573.001 Verschlüsselter Kanal</b><br/>Beacon- und Befehlsdaten werden mit benutzerdefiniertem RC4 und SM4-CBC verschlüsselt.“] class action_encrypted_channel action action_exfil[„<b>Aktion</b> – <b>T1567.002 Exfiltration über Webdienst</b><br/>Lädt verschlüsselte Daten zu einem Azure-Blob-Endpunkt hoch.“] class action_exfil action action_persistence[„<b>Aktion</b> – <b>T1547.009 Änderung von Verknüpfungen</b><br/>Platziert eine bösartige .lnk-Datei in Autostart-Ordnern zur Persistenz.“] class action_persistence action %% Edges attack_phishing –>|liefert| file_zip file_zip –>|löst aus| action_user_exec action_user_exec –>|öffnet| file_lnk file_lnk –>|führt aus| tool_wscript tool_wscript –>|führt aus| file_vbs file_vbs –>|startet| action_vbscript action_vbscript –>|startet| action_powershell action_powershell –>|entschlüsselt| file_dat file_dat –>|erzeugt| process_runtime process_runtime –>|lädt| file_dll file_dll –>|wird verwendet von| action_dll_sideload process_runtime –>|führt aus| action_process_injection action_process_injection –>|verwendet| tool_rustloader tool_rustloader –>|lädt| file_azureveil file_azureveil –>|führt aus| action_discovery action_discovery –>|führt außerdem aus| action_network_discovery action_network_discovery –>|sendet Daten an| action_c2 action_c2 –>|verwendet| action_dead_drop action_dead_drop –>|basiert auf| action_encrypted_channel action_encrypted_channel –>|ermöglicht| action_exfil action_exfil –>|kann auslösen| action_persistence file_lnk –>|etabliert| action_persistence %% Class Assignments class attack_phishing action class file_zip file class action_user_exec action class file_lnk file class tool_wscript tool class file_vbs file class action_vbscript action class action_powershell action class file_dat file class process_runtime process class file_dll file class action_dll_sideload action class tool_rustloader tool class action_process_injection action class file_azureveil file class action_discovery action class action_network_discovery action class action_c2 action class action_dead_drop action class action_encrypted_channel action class action_exfil action class action_persistence action
Angriffsfluss
Erkennungen
LOLBAS WScript / CScript (via process_creation)
Ansehen
Die Möglichkeit der Ausführung durch versteckte PowerShell-Befehlszeilen (via cmdline)
Ansehen
Verdächtige .NET-Methodenaufrufe aus PowerShell (via powershell)
Ansehen
Mögliche Indikatoren für PowerShell-Verschleierung (via powershell)
Ansehen
IOCs (HashSha256) zur Erkennung: Operation Dragon Weave : Aufdecken einer China-verbundenen Kampagne, die Tschechien und Taiwan mit Azure Cloud C2 ins Visier nimmt
Ansehen
Erkennung der bösartigen wscript.exe Ausführung und CreateFiberEx-Nutzung [Windows-Prozesserstellung]
Ansehen
Profile.ps1-Ausführung mit PowerShell-Umgehung [Windows PowerShell]
Ansehen
Bösartige LNK-Datei und DLL-Sideloading für RUSTCLOAK-Ausführung [Windows-Dateiereignis]
Ansehen
Simulationsausführung
Voraussetzung: Der Telemetrie- & Basislinien Vorflug-Check muss bestanden haben.
Angriffserzählung & Befehle
- Lieferung: Der Angreifer sendet eine Phishing-E-Mail mit einem Anhang namens
計畫申請審查結果通知單.pdf.lnk. Die doppelte Erweiterung verbirgt die Verknüpfungsnatur. Die LNK verweist aufC:Tempevil.vbs. - Ausführung (VBScript): Wenn das Opfer auf die LNK doppelklickt,
wscript.exestartetevil.vbs. Das Skript legtRuntimeBroker_update.exeto%APPDATA%MicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exeab und kopiert eine bösartigeUnityPlayer.dll(die den auf Rust basierenden Loader enthält) in das gleiche Verzeichnis. - DLL-Sideloading: Der Angreifer startet
RuntimeBroker_update.exe. Da die ausführbare Datei signiert ist (oder ein legitimes Binary imitiert), lädt Windows die benachbarteUnityPlayer.dll, die die eingebettete Rust-Nutzlast (RUSTCLOAK) ausführt und einen C2-Kanal zu Azure aufbaut. - Nach der Ausführung: Die Nutzlast führt Systemerkennung (T1016, T1082) durch und beginnt mit der Exfiltration (T1041) über einen verschlüsselten Kanal (T1573).
Regressionstestskript
<#
Simulationsskript zur Erkennung von bösartigem LNK + DLL-Sideloading.
Voraussetzungen:
- Sysmon mit ProcessCreate (ID 1) und ImageLoad (ID 7) aktiviert.
- Schreibberechtigung für $env:APPDATAMicrosoftWindowsStart MenuPrograms
#>
# 1. Bösartiges VBScript vorbereiten
$vbPath = "$env:TEMPevil.vbs"
@'
Set objShell = CreateObject("WScript.Shell")
'objShell.Run """$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe""", 0, False
'@ | Set-Content -Path $vbPath -Encoding Unicode
# 2. Eine gefälschte UnityPlayer.dll bereitstellen (binärer Platzhalter)
$dllPath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsUnityPlayer.dll"
# Für die Demo, einfach eine vorhandene DLL (z.B. version.dll) kopieren und umbenennen
Copy-Item "$env:SystemRootSystem32version.dll" $dllPath -Force
# 3. Die Hilfsprogrammbinärdatei bereitstellen (Kopie einer legitimen Binärdatei für Realismus)
$exePath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe"
Copy-Item "$env:SystemRootSystem32RuntimeBroker.exe" $exePath -Force
# 4. Die bösartige LNK mit doppelter Erweiterung erstellen
$lnkPath = "$env:USERPROFILEDesktop計畫申請審查結果通知單.pdf.lnk"
$ws = New-Object -ComObject WScript.Shell
$shortcut = $ws.CreateShortcut($lnkPath)
$shortcut.TargetPath = "$env:SystemRootSystem32wscript.exe"
$shortcut.Arguments = "`"$vbPath`""
$shortcut.Save()
Write-Host "Bösartige LNK erstellt bei $lnkPath"
Write-Host "Ausführen der LNK, um die Kette auszulösen..."
Start-Process -FilePath $lnkPath -Wait
Befehle zur Bereinigung
# Artefakte entfernen
Remove-Item "$env:TEMPevil.vbs" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATAMicrosoftWindowsStart MenuProgramsUnityPlayer.dll" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILEDesktop計畫申請審查結果通知單.pdf.lnk" -Force -ErrorAction SilentlyContinue
Write-Host "Bereinigung abgeschlossen."