Le Démon Arrive Plus Tard : Une Mise en Scène Havoc Se Cache Derrière Microsoft Defender DLP
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Les acteurs de la menace au Brésil distribuent de fausses factures électroniques NF-e des pièces jointes ZIP qui livrent un installateur MSI malveillant. Le MSI dépose une DLL Microsoft Defender Endpoint DLP fictive qui fonctionne en réalité comme un stager Havoc. Une fois lancé, le stager se connecte à un serveur de commande et de contrôle distant, récupère une charge Havoc en mémoire et crée une persistance via un script de connexion valeur de registre. Des variantes similaires ont également été observées sur des domaines enregistrés en Malaisie utilisant le même mécanisme de livraison.
Enquête
LevelBlue SpiderLabs a analysé l’archive ZIP, le VBS dropper, et le package MSI, découvrant un binaire Microsoft signé, mpextms.exe, associé à un stager endpointdlp.dll non signé. Le stager contenait des valeurs de configuration en clair, y compris l’hôte de commande et de contrôle, les chemins d’URL, et une chaîne de mutex. Les captures réseau ont révélé des trafics GET et POST vers des adresses IP spécifiques ainsi que des valeurs d’agent utilisateur distinctes. Les chercheurs ont identifié neuf variantes de stager liées qui partageaient les mêmes métadonnées de version et le même hachage d’importation.
Atténuation
Les défenseurs doivent détecter les DLL non signées se faisant passer pour Microsoft Defender Endpoint DLP ou pour des composants Dragon Data Protection, surveiller les modifications de HKCUEnvironmentUserInitMprLogonScript, et alerter sur la valeur de mutex connue. La règle YARA publiée doit être déployée pour détecter le stager avant qu’il puisse charger la charge Havoc. Les équipes de sécurité doivent également vérifier les signatures Authenticode sur tous les binaires de marque Microsoft livrés dans les archives.
Réponse
Si cette activité est détectée, bloquez les adresses IP et les domaines associés, mettez en quarantaine les fichiers MSI et DLL, et supprimez l script de connexion entrée de registre malveillante. Effectuez une analyse forensique de l’hôte pour confirmer qu’aucune charge Havoc en mémoire ne reste active, et changez les identifiants pour les utilisateurs affectés. Les équipes commerciales concernées doivent être informées, et les protections de messagerie mises à jour pour bloquer les pièces jointes similaires sur le thème NF-e.
graph TB %% Définitions des classes classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef operator fill:#ff9900 %% Nœuds action_phishing[« <b>Action</b> – <b>T1566.001 Hameçonnage : pièce jointe de spearphishing</b><br/>Distribution d’un fichier ZIP malveillant déguisé en facture NF-e brésilienne »] class action_phishing action action_vbscript[« <b>Action</b> – <b>T1059.005 Interpréteur de commandes et de scripts : Visual Basic</b><br/>Un VBScript caché lance une invite cmd dissimulée qui initie le téléchargement du MSI »] class action_vbscript action action_download_msi[« <b>Action</b> – <b>T1218.007 Exécution proxy via binaire signé : Msiexec</b><br/>Curl est invoqué pour récupérer <i>update.msi</i> depuis Google Cloud Storage »] class action_download_msi action action_msi_execution[« <b>Action</b> – <b>T1218.007 Exécution proxy via binaire signé : Msiexec</b><br/>Msiexec exécute le MSI contenant <i>mpextms.exe</i> signé ainsi que la DLL malveillante <i>endpointdlp.dll</i> »] class action_msi_execution action action_dll_sideload[« <b>Action</b> – <b>T1218 Chargement latéral de DLL</b> et <b>T1036.001 Usurpation</b><br/><i>endpointdlp.dll</i> imite une DLL de Microsoft Defender mais ne possède pas de signature valide »] class action_dll_sideload action action_stager_c2[« <b>Action</b> – <b>T1102.002 Protocole de couche applicative : protocoles Web</b><br/>Le stager envoie GET /stage/<hex> avec l’en-tête User-Agent personnalisé « Microsoft-Delivery-Optimization/10.1 » »] class action_stager_c2 action action_download_havoc[« <b>Action</b> – <b>T1219 Outil d’accès à distance</b><br/>Le démon Havoc est téléchargé via HTTP et exécuté directement en mémoire sans être écrit sur le disque »] class action_download_havoc action action_persistence[« <b>Action</b> – <b>T1037.001 Script d’ouverture de session</b><br/>Écrit HKCU\Environment\UserInitMprLogonScript afin de lancer <i>mpextms.exe</i> lors de la connexion de l’utilisateur »] class action_persistence action action_telemetry[« <b>Action</b> – <b>T1102.003 Protocole de couche applicative : protocoles Web</b><br/>Envoi de POST /api/v2/telemetry/diag vers le serveur C2 »] class action_telemetry action action_defense_evasion[« <b>Action</b> – <b>T1027.013 Fichiers ou informations obfusqués : charge utile intégrée</b>, <b>T1027.010 Remplissage binaire</b>, <b>T1564.003 Dissimulation d’artefacts</b><br/>La charge utile est chiffrée, les commandes sont obfusquées et exécutées dans des fenêtres masquées »] class action_defense_evasion action %% Relations illustrant le flux d’attaque action_phishing –>|mène_à| action_vbscript action_vbscript –>|déclenche| action_download_msi action_download_msi –>|invoque| action_msi_execution action_msi_execution –>|installe| action_dll_sideload action_dll_sideload –>|communique_avec| action_stager_c2 action_dll_sideload –>|crée| action_persistence action_stager_c2 –>|télécharge| action_download_havoc action_stager_c2 –>|envoie| action_telemetry action_download_havoc –>|permet| action_defense_evasion
Flux d’attaque
Détections
Points de persistance possibles [ASEPs – Logiciel/NU-TILISATEUR Hive] (via événement de registre)
Voir
Usage suspect de CURL (via ligne de commande)
Voir
IOCs (HashSha256) pour détecter : Le démon arrive plus tard : un stager Havoc se cache derrière Microsoft Defender DLP
Voir
IOCs (HashMd5) pour détecter : Le démon arrive plus tard : un stager Havoc se cache derrière Microsoft Defender DLP
Voir
IOCs (SourceIP) pour détecter : Le démon arrive plus tard : un stager Havoc se cache derrière Microsoft Defender DLP
Voir
IOCs (DestinationIP) pour détecter : Le démon arrive plus tard : un stager Havoc se cache derrière Microsoft Defender DLP
Voir
Détection d’activité réseau du stager Havoc [Connexion réseau Windows]
Voir
Persistance via modification du registre UserInitMprLogonScript [Événement de registre Windows]
Voir
Exécution de simulation
Prérequis : la vérification de pré-vol 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 visent à générer exactement la télémétrie attendue par la logique de détection.
-
Narrative de l’attaque & Commandes :
Un attaquant qui a déjà acquis un point d’appui initial sur la machine victime souhaite maintenir la persistance à travers les connexions utilisateurs. Ils choisissent leUserInitMprLogonScriptvaleur car elle s’exécute avant le démarrage du shell de l’utilisateur, fournissant une exécution de code anticipée. L’attaquant place un binaire dissimulémpextms.exe(une version renommée derundll32.exe) dans le dossier AppData de l’utilisateur et conçoit une DLL malveillanteendpointdlp.dllqui effectue l’extraction d’identifiants. En définissant la valeur du registre à"%APPDATA%mpextms.exe" "%APPDATA%endpointdlp.dll", l’attaquant s’assure qu’à chaque connexion, la DLL est chargée via le proxy signé, satisfaisantrundll32.exetout en évitant les listes blanches naïves de binaires. tout en évitant les listes blanches naïves de binaires. and tout en évitant les listes blanches naïves de binaires. Script de test de régression : -
# ————————————————- # Étape 1 : Déposer les binaires malveillants (simulés) $payloadDir = « $env:APPDATAMalicious » New-Item -ItemType Directory -Path $payloadDir -Force | Out-Null # Simulé ‘mpextms.exe’ – utilisant rundll32.exe renommé pour le réalisme $src = « $env:SystemRootSystem32rundll32.exe » $dstExe = Join-Path $payloadDir « mpextms.exe » Copy-Item -Path $src -Destination $dstExe -Force # Simulé DLL malveillant (fichier vide à des fins de test) $dllPath = Join-Path $payloadDir « endpointdlp.dll » New-Item -ItemType File -Path $dllPath -Force | Out-Null # Étape 2 : Créer l’entrée de persistance du registre $regPath = ‘HKCU:Environment’ $regName = ‘UserInitMprLogonScript’ $regValue = « ` »$dstExe` » ` »$dllPath` » » Set-ItemProperty -Path $regPath -Name $regName -Value $regValue -Force Write-Host « Entrée de persistance créée: $regName = $regValue » # ————————————————-
Commandes de nettoyage : -
# Supprimer l’entrée de persistance du registre Remove-ItemProperty -Path ‘HKCU:Environment’ -Name ‘UserInitMprLogonScript’ -ErrorAction SilentlyContinue # Supprimer les fichiers déposés $payloadDir = « $env:APPDATAMalicious » Remove-Item -Path $payloadDir -Recurse -Force -ErrorAction SilentlyContinue Write-Host « Nettoyage terminé. »
# Remove the registry persistence entry Remove-ItemProperty -Path 'HKCU:Environment' -Name 'UserInitMprLogonScript' -ErrorAction SilentlyContinue # Delete the dropped files $payloadDir = "$env:APPDATAMalicious" Remove-Item -Path $payloadDir -Recurse -Force -ErrorAction SilentlyContinue Write-Host "Cleanup complete."