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