Suivi des Campagnes de Malware avec du Matériel Réutilisé
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Cette campagne réutilise une image JPEG « porteuse » qui cache une charge utile malveillante entre les balises BaseStart- et -BaseEnd. L’accès initial est obtenu grâce à l’exploitation de Microsoft Equation Editor (CVE-2017-11882) dans une pièce jointe conçue, qui télécharge un HTA. Le HTA exécute PowerShell pour récupérer un .NET étape binaire. La réutilisation de la même image sur de nombreux échantillons suggère que l’opérateur s’appuie sur des composants reproductibles.
Enquête
Le chercheur a observé TELERADIO_IB_OBYEKTLRIN_BURAXILIS_FORMASI.xIs contenant l’exploit Equation Editor. La chaîne récupère un HTA d’une IP malveillante, qui exécute PowerShell pour télécharger une seconde charge utile hébergée sur une autre IP. L’étape finale est un binaire .NET intégré dans le porteur JPEG et récupéré via les délimiteurs BaseStart/-BaseEnd. Des images porteuses similaires ont été trouvées dans des dizaines de soumissions VirusTotal.
Atténuation
Appliquer le correctif CVE-2017-11882 et maintenir Office à jour. Bloquer ou restreindre l’exécution des HTA, imposer la signature des scripts PowerShell, et utiliser le filtrage URL/IP pour refuser l’accès à l’infrastructure d’hébergement.
Réponse
Détecter et mettre en quarantaine la pièce jointe et l’étape HTA, et alerter sur l’activité de téléchargement PowerShell aux IPs identifiées. Isoler les hôtes affectés et effectuer une analyse de la mémoire pour localiser et supprimer la charge utile .NET en mémoire.
« graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#ffcc99 %% Nodes node_phishing[« <b>Action</b> – <b>T1566.001 Phishing: Spearphishing Attachment</b><br/><b>Description</b>: Fichier .xls malveillant exploitant CVEu20112017u201111882 envoyé par email. »] class node_phishing action node_user_exec[« <b>Action</b> – <b>T1204.002 User Execution</b><br/><b>Description</b>: La victime ouvre la pièce jointe malveillante. »] class node_user_exec action node_exploit_client[« <b>Action</b> – <b>T1203 Exploitation for Client Execution</b><br/><b>Description</b>: La vulnérabilité de l’éditeur d’équations déclenche le téléchargement de contenu malveillant. »] class node_exploit_client action node_mshta[« <b>Action</b> – <b>T1218.005 System Binary Proxy Execution: Mshta</b><br/><b>Description</b>: Fichier HTA téléchargé et exécuté via mshta. »] class node_mshta action node_powershell[« <b>Action</b> – <b>T1059.001 Command and Scripting Interpreter: PowerShell</b><br/><b>Description</b>: Script PowerShell récupéré depuis un serveur distant et exécuté. »] class node_powershell action node_web_comm[« <b>Action</b> – <b>T1102.003 Web Service: Oneu2011Way Communication</b><br/><b>Description</b>: Script récupère une image PNG depuis un serveur distant. »] class node_web_comm action node_stego[« <b>Action</b> – <b>T1027.003 Obfuscated Files or Information: Steganography</b><br/><b>Description</b>: PNG contient la charge utile Base64 délimitée par les marqueurs BaseStart et BaseEnd. »] class node_stego action node_dotnet[« <b>Action</b> – <b>Execution</b><br/><b>Description</b>: Charge utile binaire .NET intégrée est exécutée sur l’hôte. »] class node_dotnet process %% Connections node_phishing u002du002d>|leads to| node_user_exec node_user_exec u002du002d>|leads to| node_exploit_client node_exploit_client u002du002d>|leads to| node_mshta node_mshta u002du002d>|executes| node_powershell node_powershell u002du002d>|downloads| node_web_comm node_web_comm u002du002d>|retrieves| node_stego node_stego u002du002d>|contains| node_dotnet «
Flux d’attaque
Détections
Comportement suspect d’évasion de défense LOLBAS MSHTA par détection des commandes associées (via process_creation)
Voir
Chaînes PowerShell suspectes (via powershell)
Voir
Téléchargement de fichier suspect via IP directe (via proxy)
Voir
Processus enfant de l’éditeur d’équations suspect (via cmdline)
Voir
Chaînes PowerShell suspectes (via cmdline)
Voir
IOC (DestinationIP) à détecter : Suivi des campagnes malveillantes avec du matériel réutilisé
Voir
IOC (SourceIP) à détecter : Suivi des campagnes malveillantes avec du matériel réutilisé
Voir
Détecter la livraison de charge utile HTA malveillante et image Base64 [Proxy]
Voir
Récupération de charge utile PowerShell avec technique encodée en Base64 [Windows Powershell]
Voir
Exécution de Simulation
Prérequis : Le contrôle préalable de télémétrie et de base doit avoir 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 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.
-
Récit et Commandes d’Attaque :
Un adversaire a exploité une vulnérabilité du côté client qui fournit un fichier HTA malveillant. Le HTA lance PowerShell avec une ligne de commande qui intègre une charge utile malveillante (par exemple,Invoke‑Expressionpour lancercalc.exe) encodée en Base64. La charge utile est encadrée entre les chaînesBaseStart-and-BaseEndafin que l’attaquant puisse l’extraire de manière fiable à la volée. La commande exécutée sur l’hôte compromis est :powershell.exe -NoProfile -Command "$b='BaseStart-$( [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Start-Process calc.exe')) )-BaseEnd'; $payload=$b -replace '.*BaseStart-','' -replace '-BaseEnd.*',''; IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($payload)))"Cette ligne de commande satisfait à la fois les
sélection_base_débutandsélection_base_finconditions, entraînant le déclenchement de la règle. -
Script de Test de Régression : Le script PowerShell autonome suivant reproduit le comportement malveillant et peut être exécuté sur n’importe quel hôte Windows avec la télémétrie activée ci-dessus.
# Script de Test de Régression – déclenche la règle de détection # 1. Construire la charge utile encodée en Base64 (lancer calc.exe) $payload = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Start-Process calc.exe')) # 2. Assembler la ligne de commande complète avec les délimiteurs $cmd = "BaseStart-$payload-BaseEnd" # 3. Exécuter PowerShell avec la ligne de commande créée $fullCommand = "powershell.exe -NoProfile -Command `"& {`$b='$cmd'; `$payload=`$b -replace '.*BaseStart-','' -replace '-BaseEnd.*',''; IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(`$payload)))`"" # 4. Exécuter la commande (cela lancera calc.exe) Invoke-Expression $fullCommand -
Commandes de Nettoyage : Supprimez tous les artefacts et terminez le processus lancé si nécessaire.
# Nettoyage – fermer la calculatrice si elle est toujours en cours d'exécution et effacer l'historique des commandes Get-Process calc -ErrorAction SilentlyContinue | Stop-Process -Force # Optionnellement effacer l'historique PowerShell (uniquement pour la session en cours) Remove-Item (Get-PSReadlineOption).HistorySavePath -ErrorAction SilentlyContinue