SOC Prime Bias: Kritisch

02 Jun 2026 19:44 UTC

Operation Dragon Weave nutzt Azure Cloud C2, um die Tschechische Republik und Taiwan ins Visier zu nehmen

Author Photo
SOC Prime Team linkedin icon Folgen
Operation Dragon Weave nutzt Azure Cloud C2, um die Tschechische Republik und Taiwan ins Visier zu nehmen
shield icon

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

Simulationsausführung

Voraussetzung: Der Telemetrie- & Basislinien Vorflug-Check muss bestanden haben.

Angriffserzählung & Befehle

  1. Lieferung: Der Angreifer sendet eine Phishing-E-Mail mit einem Anhang namens 計畫申請審查結果通知單.pdf.lnk. Die doppelte Erweiterung verbirgt die Verknüpfungsnatur. Die LNK verweist auf C:Tempevil.vbs.
  2. Ausführung (VBScript): Wenn das Opfer auf die LNK doppelklickt, wscript.exe startet evil.vbs. Das Skript legt RuntimeBroker_update.exe to %APPDATA%MicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe ab und kopiert eine bösartige UnityPlayer.dll (die den auf Rust basierenden Loader enthält) in das gleiche Verzeichnis.
  3. DLL-Sideloading: Der Angreifer startet RuntimeBroker_update.exe. Da die ausführbare Datei signiert ist (oder ein legitimes Binary imitiert), lädt Windows die benachbarte UnityPlayer.dll, die die eingebettete Rust-Nutzlast (RUSTCLOAK) ausführt und einen C2-Kanal zu Azure aufbaut.
  4. 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."