SOC Prime Bias: Critique

12 Jan 2026 17:55

Pivot de MuddyWater vers Rust : à l’intérieur de l’implant RustyWater

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Suivre
Pivot de MuddyWater vers Rust : à l’intérieur de l’implant RustyWater
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

MuddyWater a lancé une campagne de spear-phishing ciblant des organisations diplomatiques, maritimes, financières, et de télécommunications à travers le Moyen-Orient. Les attaquants se sont appuyés sur des documents Word armés avec des macros intégrées pour déployer RustyWater, un implant basé sur Rust. Une fois installé, le malware persiste via une clé de registre Run, communique avec le command-and-control sur HTTP, et injecte du code dans explorer.exe pour se fondre dans l’activité normale de l’utilisateur. L’implant intègre des garde-fous anti-analyse et supporte une fonctionnalité de post-compromission modulaire pour étendre le contrôle de l’attaquant.

Enquête

L’équipe TRIAD de CloudSEK a analysé le document malveillant, récupéré la charge utile encodée en hexadécimal, et identifié l’exécutable Rust reddit.exe. L’inspection statique a montré l’utilisation de la bibliothèque reqwest pour le C2 basé sur HTTP, un mécanisme de Vectored Exception Handler pour l’anti-débogage, et la persistance via le chemin de registre CurrentUser Run. Les tests dynamiques ont confirmé l’injection de processus dans explorer.exe et le comportement C2 asynchrone avec une temporisation de rappel aléatoire. L’enquête a compilé des indicateurs clés, y compris des hachages, des artefacts de registre, et les domaines malveillants utilisés pour les communications.

Atténuation

Surveillez les modifications suspectes à HKCUSoftwareMicrosoftWindowsCurrentVersionRun, en particulier les entrées qui pointent vers des binaires stockés sous ProgramData. Détectez les chaînes d’exécution entraînées par des macros où Office lance cmd.exe via WScript.Shell. Ajoutez des détections réseau pour les modèles de trafic HTTP cohérents avec l’encodage JSON → Base64 → XOR et pour le beaconing avec une gigue aléatoire. Renforcez les contrôles de messagerie pour bloquer ou mettre en quarantaine les pièces jointes Word avec macros d’expéditeurs inconnus ou non fiables.

Réponse

Si une activité RustyWater est détectée, isolez le point final et acquérez une image mémoire pour soutenir la criminalistique axée sur l’injection. Supprimez la persistance de la clé Run malveillante et effacez tous les fichiers déposés dans ProgramData. Bloquez les domaines C2 et les IP identifiés aux contrôles de périmètre. Étendez la chasse pour identifier les activités de macro associées et les artefacts d’injection explorer.exe dans tout l’environnement pour assurer un confinement complet.

graph TB %% Définitions des Classes classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef file fill:#e6e6e6 classDef process fill:#c2f0c2 classDef registry fill:#ffd9b3 classDef data fill:#d9d9ff %% Nœuds action_phishing[« <b>Action</b> – <b>T1566.001 Pièce jointe de spearphishing</b><br/>Un e-mail contenant un document Word malveillant est envoyé à la victime »] class action_phishing action file_doc[« <b>Fichier</b> – <b>Nom</b>: Cybersecurity.doc<br/><b>Type</b>: Document Word avec macro VBA »] class file_doc file action_user_execution[« <b>Action</b> – <b>T1204.002 Fichier malveillant</b><br/>La victime ouvre le document et déclenche l’exécution »] class action_user_execution action technique_vba_macro[« <b>Technique</b> – <b>T1059.005 Visual Basic</b><br/>La macro VBA exécute des actions malveillantes »] class technique_vba_macro technique file_ini[« <b>Fichier</b> – <b>Nom</b>: CertificationKit.ini<br/><b>Objectif</b>: Script exécuté via WMI »] class file_ini file technique_native_api[« <b>Technique</b> – <b>T1106 API native</b><br/>La macro crée des objets COM pour interagir avec le système »] class technique_native_api technique technique_wmi[« <b>Technique</b> – <b>T1047 WMI</b><br/>WMI est utilisé pour lancer le script .ini »] class technique_wmi technique technique_reflective_loading[« <b>Technique</b> – <b>T1620 Chargement réflexif</b><br/>La charge utile hexadécimale est décodée en mémoire et écrite sur le disque »] class technique_reflective_loading technique technique_process_injection[« <b>Technique</b> – <b>T1055.002 Injection PE</b><br/>Le shellcode est injecté dans explorer.exe »] class technique_process_injection technique process_explorer[« <b>Processus</b> – <b>Nom</b>: explorer.exe »] class process_explorer process technique_persistence[« <b>Technique</b> – <b>T1547 Persistance</b><br/>Une clé Run est créée dans le registre »] class technique_persistence technique registry_run[« <b>Registre</b> – <b>Clé</b>: HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run »] class registry_run registry technique_encrypted_channel[« <b>Technique</b> – <b>T1573 Canal chiffré</b><br/>Le trafic C2 est chiffré »] class technique_encrypted_channel technique technique_symmetric_crypto[« <b>Technique</b> – <b>T1573.001 Cryptographie symétrique</b><br/>XOR/Base64 masquent les données »] class technique_symmetric_crypto technique technique_credential_hooking[« <b>Technique</b> – <b>T1056.004 Interception d’API d’identifiants</b><br/>L’API hooking capture les identifiants »] class technique_credential_hooking technique credentials[« <b>Données</b> – <b>Type</b>: Identifiants capturés »] class credentials data %% Connexions action_phishing –>|livre| file_doc file_doc –>|ouvert par l’utilisateur| action_user_execution action_user_execution –>|déclenche| technique_vba_macro technique_vba_macro –>|crée| file_ini technique_vba_macro –>|utilise| technique_native_api technique_native_api –>|appelle| technique_wmi technique_wmi –>|exécute| file_ini file_ini –>|charge| technique_reflective_loading technique_reflective_loading –>|mène à| technique_process_injection technique_process_injection –>|injecte dans| process_explorer process_explorer –>|active| technique_persistence technique_persistence –>|écrit| registry_run registry_run –>|soutient| technique_encrypted_channel technique_encrypted_channel –>|utilise| technique_symmetric_crypto technique_symmetric_crypto –>|protège| technique_credential_hooking technique_credential_hooking –>|capture| credentials

Flux d’attaque

Exécution de Simulation

Condition préalable : Le contrôle préliminaire de télémétrie et de base doit avoir été réussi.

Justification : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit reflètent directement les TTPs identifiés et visent à générer la télémétrie exacte attendue par la logique de détection.

  • Narratif et commandes de l’attaque :
    Un opérateur APT reçoit un email de spear-phishing avec une pièce jointe Office malveillante dotée de macro. Lors de l’ouverture, le macro dépose deux fichiers de charge utile—Cybersecurity.doc and CertificationKit.ini—dans le répertoire ProgramData pour les cacher dans un emplacement de confiance par de nombreuses applications. Le macro utilise PowerShell pour écrire les fichiers, ce qui déclenche des événements de création de fichier Sysmon que la règle de détection surveille. directory to hide them in a location trusted by many applications. The macro uses PowerShell to write the files, which triggers Sysmon file‑create events that the detection rule monitors.

  • Script de test de régression :

    # -------------------------------------------------
    # Simulation de dépôt de fichier APT MuddyWater (Windows)
    # -------------------------------------------------
    $progData = $Env:ProgramData
    
    # Définir le contenu de la charge utile (données de test factices)
    $docContent = "Il s'agit d'un document de cybersécurité fictif utilisé pour le test de détection."
    $iniContent = "[Paramètres]`nClé=Valeur`n"
    
    # Créer Cybersecurity.doc
    $docPath = Join-Path -Path $progData -ChildPath "Cybersecurity.doc"
    $docContent | Out-File -FilePath $docPath -Encoding UTF8
    
    # Créer CertificationKit.ini
    $iniPath = Join-Path -Path $progData -ChildPath "CertificationKit.ini"
    $iniContent | Out-File -FilePath $iniPath -Encoding UTF8
    
    Write-Host "Fichiers de simulation MuddyWater créés :"
    Write-Host "`t$docPath"
    Write-Host "`t$iniPath"
    # -------------------------------------------------
  • Commandes de nettoyage :

    # Supprimer les artefacts de simulation
    Remove-Item -Path "$Env:ProgramDataCybersecurity.doc" -ErrorAction SilentlyContinue
    Remove-Item -Path "$Env:ProgramDataCertificationKit.ini" -ErrorAction SilentlyContinue
    Write-Host "Fichiers de simulation retirés."