SOC Prime Bias: Critique

11 Fév 2026 18:47

Plongée Profonde dans la Nouvelle Campagne XWorm Utilisant des E-Mails de Phishing Multi-thématiques

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Plongée Profonde dans la Nouvelle Campagne XWorm Utilisant des E-Mails de Phishing Multi-thématiques
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

FortiGuard Labs a observé une campagne de phishing en plusieurs étapes distribuant le trojan d’accès à distance XWorm via des pièces jointes Excel malveillantes. Le document exploite la vulnérabilité CVE-2018-0802 dans Microsoft Equation Editor pour récupérer un fichier HTA, qui déclenche ensuite un chargeur .NET sans fichier utilisant le creux de processus pour injecter XWorm dans un processus Msbuild.exe nouvellement créé. Le RAT communique avec son serveur C2 en utilisant un trafic chiffré AES et expose un large ensemble de commandes avec prise en charge des plugins pour un contrôle étendu. La campagne démontre une utilisation sophistiquée de binaires living-off-the-land et de techniques sans fichier pour établir un contrôle à distance persistant sur les points finaux compromis.

Enquête

Les analystes ont reconstitué le flux allant de l’e-mail de phishing à l’exploitation OLE d’Excel, l’exécution HTA, le téléchargement du module .NET basé sur PowerShell, et le creux de processus final dans Msbuild.exe. L’analyse statique et dynamique a mis en évidence des données de charge utile encodées en Base64 dissimulées dans une image JPEG, avec le composant XWorm final chargé en mémoire sans écrire d’exécutable déchiffré sur le disque pendant l’exécution. Les captures réseau ont montré des paquets chiffrés AES envoyés vers le domaine C2 berlin101.com sur le port 6000. Le rapport a également catalogué l’ensemble étoffé de commandes et l’architecture de plugins de XWorm.

Atténuation

FortiGuard recommande d’activer les protections macro et OLE, d’appliquer le correctif pour CVE-2018-0802, et de restreindre l’exécution des fichiers Msbuild, PowerShell, et HTA provenant du contenu des e-mails. Déployez le filtrage Web, les contrôles anti-phishing et les signatures IDS/IPS liées aux indicateurs observés pour bloquer la livraison et la mise en scène à la passerelle. Surveillez les arbres de processus anormaux—en particulier Msbuild.exe lancé depuis PowerShell—pour détecter l’exploitation tôt.

Réponse

Dès la détection, isolez le point final affecté, terminez les processus malveillants, et évincez le module XWorm chargé de la mémoire. Collectez des artefacts forensiques, y compris la télémétrie de ligne de commande, les journaux réseau, et les modifications de registre pour délimiter l’intrusion. Réinitialisez les identifiants potentiellement compromis, mettez à jour le composant de l’Equation Editor vulnérable, et bloquez les domaines malveillants et le serveur C2. Appliquez des mises à jour de renseignements sur les menaces aux détections EDR/SIEM pour prévenir la récurrence et recherchez une activité connexe dans l’environnement.

graph TB %% Définitions de classe classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Nœuds Action action_phishing[« <b>Action</b> – T1566.001<br/><b>Nom</b>: Pièce jointe Spearphishing<br/><b>Description</b>: Excel .xlam malveillant envoyé par email »] class action_phishing action action_user_exec[« <b>Action</b> – T1204.002<br/><b>Nom</b>: Exécution par l’utilisateur<br/><b>Description</b>: La victime ouvre le fichier Excel joint »] class action_user_exec action exploit_eqnedt[« <b>Action</b> – T1203<br/><b>Nom</b>: Exploitation pour exécution client (CVEu20112018u20110802)<br/><b>Description</b>: Vulnérabilité Equation Editor permet l’exécution de shellcode »] class exploit_eqnedt action defense_evasion[« <b>Action</b> – T1211<br/><b>Nom</b>: Exploitation pour évasion des défenses<br/><b>Description</b>: La vulnérabilité contourne les défenses traditionnelles »] class defense_evasion action action_powershell[« <b>Action</b> – T1059.001<br/><b>Nom</b>: Exécution PowerShell<br/><b>Description</b>: Décode Base64, télécharge JPEG avec module .NET caché, exécute JScript »] class action_powershell action action_reflective_load[« <b>Action</b> – T1620<br/><b>Nom</b>: Chargement réflexif de code<br/><b>Description</b>: Charge l’assembly .NET directement en mémoire »] class action_reflective_load action action_process_hollowing[« <b>Action</b> – T1055.012<br/><b>Nom</b>: Process Hollowing<br/><b>Description</b>: Injecte XWorm RAT dans le processus Msbuild suspendu »] class action_process_hollowing action module_shared[« <b>Action</b> – T1129<br/><b>Nom</b>: Modules partagés<br/><b>Description</b>: Plugins .NET chargés à la demande »] class module_shared action persistence_active_setup[« <b>Action</b> – T1547.014<br/><b>Nom</b>: Persistance Active Setup<br/><b>Description</b>: Stocke les binaires des plugins dans la clé HKCU du registre »] class persistence_active_setup action action_query_registry[« <b>Action</b> – T1012<br/><b>Nom</b>: Interrogation du registre<br/><b>Description</b>: Lit les données et la configuration des plugins »] class action_query_registry action encryption_aes[« <b>Action</b> – T1001<br/><b>Nom</b>: Obfuscation des données<br/><b>Description</b>: AES chiffre tout le trafic C2 »] class encryption_aes action c2_https[« <b>Action</b> – T1102.003<br/><b>Nom</b>: Communication Web à sens unique<br/><b>Description</b>: HTTPS chiffré vers berlin101.com:6000 »] class c2_https action %% Nœuds Outil tool_excel_xlam[« <b>Outil</b> – Pièce jointe Excel .xlam »] class tool_excel_xlam tool tool_mshta[« <b>Outil</b> – mshta.exe »] class tool_mshta tool tool_powershell[« <b>Outil</b> – PowerShell »] class tool_powershell tool tool_msbuild[« <b>Outil</b> – Msbuild.exe »] class tool_msbuild tool %% Nœuds Malware malware_dotnet_module[« <b>Malware</b> – Module .NET caché »] class malware_dotnet_module malware malware_xworm[« <b>Malware</b> – XWorm RAT »] class malware_xworm malware %% Nœuds Processus process_shellcode[« <b>Processus</b> – Exécution de shellcode »] class process_shellcode process proc_mshta[« <b>Processus</b> – Processus mshta »] class proc_mshta process proc_msbuild[« <b>Processus</b> – Processus Msbuild (suspendu) »] class proc_msbuild process %% Connexions action_phishing –>|livre pièce jointe| tool_excel_xlam tool_excel_xlam –>|ouvert par la victime| action_user_exec action_user_exec –>|déclenche| exploit_eqnedt exploit_eqnedt –>|active| defense_evasion defense_evasion –>|exécute| process_shellcode process_shellcode –>|lance| proc_mshta proc_mshta –>|exécute| tool_mshta tool_mshta –>|télécharge et exécute| action_powershell action_powershell –>|charge| malware_dotnet_module malware_dotnet_module –>|hébergé en mémoire par| action_reflective_load action_reflective_load –>|héberge payload dans| proc_msbuild proc_msbuild –>|démarré par| tool_msbuild tool_msbuild –>|héberge payload via| action_process_hollowing action_process_hollowing –>|injecte| malware_xworm malware_xworm –>|utilise| module_shared module_shared –>|stocke plugins via| persistence_active_setup persistence_active_setup –>|lit config depuis| action_query_registry action_query_registry –>|chiffre trafic avec| encryption_aes encryption_aes –>|envoie à| c2_https

Flux d’Attaque

Exécution de Simulation

Condition Préalable: Le Contrôle de Pré-Vol Télémetrie & Baseline doit avoir réussi.

Rationale: 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 DOIVENT refléter directement les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.

  • Narratif de l’Attaque & Commandes:

    1. Chute Initiale: L’attaquant livre un fichier Excel malveillant qui exploite CVE‑2018‑0802. Pour la simulation, nous contournons l’exploit et lançons directement la charge utile.
    2. Process Hollowing via EQNEDT32.EXE: Lancement EQNEDT32.EXE avec une ligne de commande invoquant ShellExecuteExW() pour se faire passer pour un composant légitime d’Office.
    3. Exécution Latérale Msbuild.exe: Spawn Msbuild.exe avec CreateProcessA() pour compiler une charge .NET furtive à la volée.
    4. Exécution .NET Sans Fichier: Use powershell.exe avec une commande encodée en base64 qui charge un assembly .NET réflexif (T1620). La ligne de commande contient la chaîne littérale CreateProcessA() pour satisfaire la règle.
  • Script de Test de Régression:

    <#
    Simule la chaîne d'exécution XWorm:
    1. EQNEDT32.exe avec ShellExecuteExW()
    2. Msbuild.exe avec CreateProcessA()
    3. PowerShell avec charge .NET réflexive encodée contenant CreateProcessA()
    #>
    
    # 1. EQNEDT32.exe (Hollowing de Processus)
    $eqnPath = "$env:SystemRootSystem32EQNEDT32.EXE"
    $eqnArgs = "-Command "ShellExecuteExW()""
    Start-Process -FilePath $eqnPath -ArgumentList $eqnArgs -WindowStyle Hidden
    
    # 2. Msbuild.exe (Injection DLL Dynamique)
    $msbuildPath = "$env:ProgramFilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMsbuild.exe"
    $msbuildArgs = "/t:Compile /p:UseShellExecute="CreateProcessA()""
    Start-Process -FilePath $msbuildPath -ArgumentList $msbuildArgs -WindowStyle Hidden
    
    # 3. PowerShell (Charge réflexive .NET sans fichier)
    # Charge utile .NET de l'exemple (espace réservé) encodée en base64
    $payload = "W3siQmFzZURhdGEiOiAiIiB9XQ=="   # base64 factice
    $psArgs = "-EncodedCommand $payload -ArgumentList "CreateProcessA()""
    Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden
    
    Write-Host "Simulation XWorm terminée."
  • Commandes de Nettoyage:

    # Terminer tous les processus de simulation restants
    Get-Process -Name "EQNEDT32","Msbuild","powershell" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Supprimer éventuellement les fichiers temporaires (aucun créé dans cette simulation purement de processus)
    Write-Host "Nettoyage terminé."