Operazione Dragon Weave usa Azure Cloud C2 per colpire Repubblica Ceca e Taiwan
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
Un’operazione di spionaggio mirato tracciata come Operation Dragon Weave utilizza file di collegamento LNK dannosi insieme a un eseguibile basato su Rust per lanciare un caricatore a più stadi che alla fine distribuisce l’agente di comando e controllo Adaptix AZUREVEIL. Gli operatori abusano di Microsoft Azure Blob Storage come meccanismo dead-drop per le comunicazioni C2. La campagna è focalizzata sul personale governativo e sui ricercatori nella Repubblica Ceca e a Taiwan.
Indagine
L’indagine ha seguito l’intera catena d’infezione dall’archivio ZIP iniziale attraverso l’esecuzione di VBScript, decriptazione basata su PowerShell, sideloading di DLL e un caricatore custom Rust che utilizzava RC4, Base64 e SM4 per decriptare il payload finale. Il malware dell’ultima fase, AZUREVEIL, è stato identificato come DLL Adaptix a 64 bit che comunica solo tramite Azure Blob Storage e supporta l’esecuzione di Beacon Object File in memoria.
Mitigazione
I difensori dovrebbero bloccare l’esecuzione di file LNK inattesi e binari non firmati, imporre controlli rigidi sull’esecuzione degli script e dei macro, e monitorare per traffico insolito di Azure Blob Storage. L’uso di PowerShell con bypass delle politiche di esecuzione dovrebbe essere limitato o attentamente osservato, e i team di sicurezza dovrebbero rilevare la creazione sospetta di file in %LOCALAPPDATA% and %TEMP%. Una forte igiene delle credenziali per gli account Azure e la rotazione regolare dei token SAS sono anche raccomandate.
Risposta
I team di sicurezza dovrebbero rilevare e isolare gli host colpiti, raccogliere memoria volatile per recuperare eventuali payload in memoria, bloccare il dominio di archiviazione Azure identificato e cercare gli artefatti di file segnalati e i pattern di processo. Dovrebbe essere effettuata anche un’indagine forense completa per identificare eventuali componenti aggiuntivi lasciati cadere e rimuovere i meccanismi di persistenza.
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>Azione</b> – <b>T1566.001 Allegato di Spearphishing</b><br/>L’attaccante invia alle vittime un archivio ZIP malevolo via email.”] class attack_phishing action file_zip[“<b>File</b> – malicious.zip<br/>Contiene un collegamento .lnk e un dropper .exe compilato in Rust.”] class file_zip file action_user_exec[“<b>Azione</b> – <b>T1204.001 Esecuzione dell’utente</b><br/>La vittima apre il file .lnk o esegue il file .exe, avviando la catena del dropper.”] class action_user_exec action file_lnk[“<b>File</b> – payload.pdf.lnk<br/>Il collegamento usa una doppia estensione e un’icona Edge per sembrare legittimo.”] class file_lnk file tool_wscript[“<b>Strumento</b> – wscript.exe<br/>Esegue il payload VBScript.”] class tool_wscript tool file_vbs[“<b>File</b> – empty.vbs<br/>VBScript minimale che avvia PowerShell.”] class file_vbs file action_vbscript[“<b>Azione</b> – <b>T1059.005 Visual Basic</b><br/>Il VBScript viene eseguito tramite wscript per avviare PowerShell.”] class action_vbscript action action_powershell[“<b>Azione</b> – <b>T1059.001 PowerShell</b><br/>Profile.ps1 viene eseguito con bypass della policy ed esegue la decrittazione dello stadio successivo.”] class action_powershell action file_dat[“<b>File</b> – 1.dat<br/>Contenitore XOR crittografato contenente RuntimeBroker_update.exe.”] class file_dat file process_runtime[“<b>Processo</b> – RuntimeBroker_update.exe<br/>Decifrato da 1.dat; carica la DLL malevola UnityPlayer.dll tramite DLL side-loading.”] class process_runtime process file_dll[“<b>File</b> – UnityPlayer.dll<br/>DLL malevola posizionata accanto a RuntimeBroker_update.exe.”] class file_dll file action_dll_sideload[“<b>Azione</b> – <b>T1546.009 DLL AppCert</b><br/>Il DLL side-loading consente l’esecuzione di codice.”] class action_dll_sideload action tool_rustloader[“<b>Strumento</b> – Loader Rust (RUSTCLOAK)<br/>Alloca memoria, scrive il PE AZUREVEIL decifrato ed esegue tramite Windows Fibers.”] class tool_rustloader tool action_process_injection[“<b>Azione</b> – <b>T1055.002 Iniezione di processo</b><br/>Iniezione PE tramite Windows Fibers.”] class action_process_injection action file_azureveil[“<b>File</b> – AZUREVEIL.exe<br/>Payload decrittato eseguito dopo l’iniezione.”] class file_azureveil file action_discovery[“<b>Azione</b> – <b>T1083 Scoperta file e directory</b><br/>Il loader enumera i file e li sposta in %TEMP%.”] class action_discovery action action_network_discovery[“<b>Azione</b> – <b>T1016 Scoperta configurazione di rete</b><br/>Raccoglie informazioni MAC e IP per proxy e movimento laterale.”] class action_network_discovery action action_c2[“<b>Azione</b> – <b>T1102 Servizio web</b><br/>Comunica con Azure Blob Storage tramite HTTPS.”] class action_c2 action action_dead_drop[“<b>Azione</b> – <b>T1102.003 Comunicazione unidirezionale</b><br/>Carica beacon blob e recupera comandi dallo stesso container.”] class action_dead_drop action action_encrypted_channel[“<b>Azione</b> – <b>T1573.001 Canale cifrato</b><br/>Dati beacon e comandi cifrati con RC4 personalizzato e SM4-CBC.”] class action_encrypted_channel action action_exfil[“<b>Azione</b> – <b>T1567.002 Esfiltrazione via servizio web</b><br/>Carica dati cifrati su endpoint Azure Blob.”] class action_exfil action action_persistence[“<b>Azione</b> – <b>T1547.009 Modifica collegamento</b><br/>Posiziona un file .lnk malevolo nelle cartelle di avvio.”] class action_persistence action %% Edges attack_phishing –>|consegna| file_zip file_zip –>|attiva| action_user_exec action_user_exec –>|apre| file_lnk file_lnk –>|esegue| tool_wscript tool_wscript –>|esegue| file_vbs file_vbs –>|avvia| action_vbscript action_vbscript –>|avvia| action_powershell action_powershell –>|decritta| file_dat file_dat –>|genera| process_runtime process_runtime –>|carica| file_dll file_dll –>|usato da| action_dll_sideload process_runtime –>|esegue| action_process_injection action_process_injection –>|usa| tool_rustloader tool_rustloader –>|carica| file_azureveil file_azureveil –>|esegue| action_discovery action_discovery –>|esegue anche| action_network_discovery action_network_discovery –>|invia dati a| action_c2 action_c2 –>|usa| action_dead_drop action_dead_drop –>|dipende da| action_encrypted_channel action_encrypted_channel –>|abilita| action_exfil action_exfil –>|può attivare| action_persistence file_lnk –>|stabilisce| 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 action 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
Flusso di Attacco
Rilevamenti
LOLBAS WScript / CScript (tramite process_creation)
Visualizza
La possibilità di esecuzione tramite linee di comando PowerShell nascoste (tramite cmdline)
Visualizza
Chiamata di metodi .NET sospetti da PowerShell (tramite powershell)
Visualizza
Possibili indicatori di offuscamento di PowerShell (tramite powershell)
Visualizza
IOC (HashSha256) da rilevare: Operation Dragon Weave: Svelare una campagna connessa alla Cina che prende di mira la Repubblica Ceca e Taiwan utilizzando Azure Cloud C2
Visualizza
Rilevamento di esecuzione dannosa di wscript.exe e utilizzo di CreateFiberEx [Windows Process Creation]
Visualizza
Esecuzione di Profile.ps1 con bypass di PowerShell [Windows Powershell]
Visualizza
File LNK dannoso e sideloading DLL per esecuzione RUSTCLOAK [Evento File di Windows]
Visualizza
Esecuzione di Simulazione
Prerequisito: Il Controllo pre-volo di Telemetria & Baseline deve essere stato superato.
Narrazione dell’Attacco & Comandi
- Consegna: L’attaccante invia una email di phishing con un allegato denominato
計畫申請審查結果通知單.pdf.lnk. La doppia estensione nasconde la natura di collegamento. L’LNK punta aC:Tempevil.vbs. - Esecuzione (VBScript): Quando la vittima fa doppio clic sull’LNK,
wscript.exeavviaevil.vbs. Lo script rilasciaRuntimeBroker_update.exeto%APPDATA%MicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exee copia unaUnityPlayer.dll(contenente il caricatore basato su Rust) nella stessa directory. - DLL Sideloading: L’attaccante esegue
RuntimeBroker_update.exe. Poiché l’eseguibile è firmato (o simula un binario legittimo), Windows carica laUnityPlayer.dll, che esegue il payload Rust integrato (RUSTCLOAK) e stabilisce un canale C2 verso Azure. - Dopo esecuzione: Il payload esegue la scoperta del sistema (T1016, T1082) e inizia l’esfiltrazione (T1041) su un canale cifrato (T1573).
Script di Test di Regressione
<#
Script di simulazione per il rilevamento di LNK dannoso + sideloading DLL.
Prerequisiti:
- Sysmon con ProcessCreate (ID 1) e ImageLoad (ID 7) abilitati.
- Permesso di scrittura su $env:APPDATAMicrosoftWindowsStart MenuPrograms
#>
# 1. Preparare VBScript dannoso
$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. Distribuire una UnityPlayer.dll finta (segnaposto binario)
$dllPath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsUnityPlayer.dll"
# Per la demo, basta copiare qualsiasi DLL esistente (ad esempio, version.dll) e rinominarla
Copy-Item "$env:SystemRootSystem32version.dll" $dllPath -Force
# 3. Distribuire l'eseguibile helper (una copia di un binario legale per realismo)
$exePath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe"
Copy-Item "$env:SystemRootSystem32RuntimeBroker.exe" $exePath -Force
# 4. Creare l'LNK dannoso con doppia estensione
$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 "LNK dannoso creato in $lnkPath"
Write-Host "Esecuzione dell'LNK per attivare la catena..."
Start-Process -FilePath $lnkPath -Wait
Comandi di Pulizia
# Rimuovere gli artefatti
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 "Pulizia completata."