SOC Prime Bias: Critique

12 Jan 2026 14:55 UTC

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.

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."