Opération Tissage du Dragon utilise Azure Cloud C2 pour cibler la République tchèque et Taïwan
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Une opération d’espionnage ciblée suivie sous le nom d’Operation Dragon Weave utilise des fichiers de raccourci LNK malveillants accompagnés d’un exécutable basé sur Rust pour lancer un chargeur multi-étapes qui déploie finalement l’agent de commande et de contrôle Adaptix AZUREVEIL. Les opérateurs abusent du Microsoft Azure Blob Storage comme un mécanisme de dépôt mort pour les communications C2. La campagne cible le personnel gouvernemental et les chercheurs en République Tchèque et à Taïwan.
Enquête
L’enquête a suivi toute la chaîne d’infection, depuis l’archive ZIP initiale jusqu’à l’exécution de VBScript, le déchiffrement basé sur PowerShell, le chargement de DLL furtif et un chargeur Rust personnalisé qui utilisaient RC4, Base64 et SM4 pour déchiffrer la charge utile finale. Le dernier malware, AZUREVEIL, a été identifié comme une DLL Adaptix 64 bits qui communique uniquement par Azure Blob Storage et prend en charge l’exécution in-memory de Beacon Object File.
Atténuation
Les défenseurs devraient bloquer l’exécution de fichiers LNK inattendus et de binaires non signés, appliquer des contrôles stricts sur l’exécution de scripts et macros, et surveiller un trafic inhabituel d’Azure Blob Storage. L’utilisation de PowerShell avec contournement de la politique d’exécution doit être restreinte ou étroitement surveillée, et les équipes de sécurité doivent détecter la création suspecte de fichiers dans %LOCALAPPDATA% and %TEMP%. Une bonne hygiène des identifiants pour les comptes Azure et une rotation régulière des jetons SAS sont également recommandées.
Réponse
Les équipes de sécurité doivent détecter et isoler les hôtes affectés, recueillir la mémoire volatile pour récupérer d’éventuelles charges utiles en mémoire, bloquer le domaine de stockage Azure identifié, et chercher les artefacts de fichiers et les motifs de processus signalés. Une enquête médico-légale complète doit également être effectuée pour identifier tout autre composant déposé et supprimer les mécanismes de persistance.
Flux d’attaque
Détections
LOLBAS WScript / CScript (via process_creation)
Voir
Possibilité d’exécution via des lignes de commande PowerShell cachées (via cmdline)
Voir
Appeler des méthodes .NET suspectes depuis PowerShell (via powershell)
Voir
Indicateurs d’obfuscation possible de PowerShell (via powershell)
Voir
IOC (HashSha256) à détecter : Operation Dragon Weave : Découverte d’une campagne liée à la Chine ciblant la République tchèque et Taïwan utilisant Azure Cloud C2
Voir
Détection de l’exécution malveillante de wscript.exe et de l’utilisation de CreateFiberEx [Création de processus Windows]
Voir
Exécution de Profile.ps1 avec contournement PowerShell [PowerShell Windows]
Voir
Fichier LNK malveillant et chargement détourné de DLL pour l’exécution de RUSTCLOAK [Événement de fichier Windows]
Voir
Exécution de simulation
Préalable : La vérification pré-vol des télémétries et des bases de référence doit avoir été passée.
Narrative de l’attaque & Commandes
- Livraison : L’attaquant envoie un email de phishing avec une pièce jointe nommée
計畫申請審查結果通知單.pdf.lnk. La double extension cache la nature de raccourci. Le LNK pointe versC:Tempevil.vbs. - Exécution (VBScript) : Quand la victime double-clique sur le LNK,
wscript.exelanceevil.vbs. Le script déposeRuntimeBroker_update.exeto%APPDATA%MicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exeet copie unUnityPlayer.dll(contenant le chargeur basé sur Rust) dans le même répertoire. - Chargement détourné de DLL : L’attaquant exécute
RuntimeBroker_update.exe. Comme l’exécutable est signé (ou imite un binaire légitime), Windows charge laUnityPlayer.dll, qui exécute la charge utile Rust intégrée (RUSTCLOAK) et établit un canal C2 vers Azure. - Post-exécution : La charge utile effectue une découverte du système (T1016, T1082) et commence l’exfiltration (T1041) sur un canal chiffré (T1573).
Script de Test de Régression
<#
Script de simulation pour la détection de LNK malveillant + chargement détourné de DLL.
Prérequis :
- Sysmon avec ProcessCreate (ID 1) et ImageLoad (ID 7) activés.
- Permission d'écriture vers $env:APPDATAMicrosoftWindowsStart MenuPrograms
#>
# 1. Préparer VBScript malveillant
$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. Déployer un pseudo fichier UnityPlayer.dll (exemple binaire)
$dllPath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsUnityPlayer.dll"
# Pour la démonstration, copier un DLL existant (ex : version.dll) et le renommer
Copy-Item "$env:SystemRootSystem32version.dll" $dllPath -Force
# 3. Déployer l'exécutable helper (copie d'un binaire légitime pour le réalisme)
$exePath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe"
Copy-Item "$env:SystemRootSystem32RuntimeBroker.exe" $exePath -Force
# 4. Créer un LNK malveillant avec double extension
$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 malveillant créé à $lnkPath"
Write-Host "Exécution du LNK pour déclencher la chaîne..."
Start-Process -FilePath $lnkPath -Wait
Commandes de Nettoyage
# Supprimer les artefacts
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 "Nettoyage terminé."