Techniques d'énumération manuelle
Reconnaissance systématique pour trouver des vecteurs d'élévation de privilèges
Ce que vous allez découvrir
🎯 Pourquoi c'est important
Les outils automatisés sont puissants, mais ils manquent de contexte. L'énumération manuelle révèle des chemins d'attaque que les scripts négligent et vous aide à comprendre pourquoi un exploit fonctionnera. Pendant les tests d'intrusion réels, les restrictions réseau empêchent souvent le téléchargement d'outils - vous devez savoir énumérer avec les commandes intégrées.
🔍 Ce que vous allez apprendre
- Checklist complète d'énumération manuelle pour les systèmes Windows
- Commandes pour identifier les logiciels installés, les correctifs et les configurations
- Techniques pour trouver les permissions de services faibles et les tâches planifiées
- Méthodes pour découvrir les credentials stockés et les fichiers sensibles
🚀 Votre première victoire
Dans les 10 prochaines minutes, vous construirez une checklist mentale de commandes d'énumération utilisables sur n'importe quel système Windows sans télécharger aucun outil.
🔧 Essayez maintenant
Lancez une énumération système rapide pour identifier les vecteurs d'attaque potentiels :
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
whoami /priv
net user %username%
wmic qfe list brief
Vous verrez : Version de l'OS (pour correspondance d'exploits kernel), vos privilèges, appartenances aux groupes, et correctifs installés (pour identifier les patchs manquants).
Compétences que vous maîtriserez
✅ Compréhension fondamentale
- Énumération système et version OS
- Découverte des utilisateurs et groupes
- Analyse de la configuration réseau
- Investigation des processus en cours
🔍 Compétences expertes
- Analyse des permissions de services
- Énumération des tâches planifiées
- Techniques de chasse aux credentials
- Inspection des clés de registre
Comprendre l'énumération manuelle
L'énumération manuelle est un processus systématique de collecte d'informations sur un système Windows pour identifier les chemins d'élévation de privilèges. Vous recherchez les mauvaises configurations, les correctifs manquants, les permissions faibles et les credentials stockés. Chaque commande vous informe sur la surface d'attaque.
Objectif de l'énumération : Trouver l'écart entre les privilèges actuels et SYSTEM
Informations système
Commencez par comprendre avec quoi vous travaillez :
# Informations système complètes
systeminfo
# OS et architecture
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
# Nom d'hôte et domaine
hostname
echo %USERDOMAIN%
# Correctifs installés (pour correspondance d'exploits kernel)
wmic qfe list brief
wmic qfe get Caption,Description,HotFixID,InstalledOn
# Variables d'environnement (peuvent révéler les chemins des logiciels installés)
set
Énumération des utilisateurs et groupes
Comprendre le contexte utilisateur et les comptes disponibles :
# Contexte utilisateur actuel
whoami
whoami /priv
whoami /groups
whoami /all
# Utilisateurs locaux
net user
net user administrator
# Groupes locaux
net localgroup
net localgroup administrators
net localgroup "Remote Desktop Users"
# Utilisateurs actuellement connectés
query user
qwinsta
Informations réseau
La configuration réseau révèle les opportunités de pivot et les services en écoute :
# Configuration IP
ipconfig /all
# Table de routage
route print
# Cache ARP (autres hôtes sur le réseau)
arp -a
# Ports en écoute et connexions
netstat -ano
netstat -ano | findstr LISTEN
# Règles de pare-feu
netsh advfirewall show currentprofile
netsh advfirewall firewall show rule name=all
Processus et services en cours
Les processus révèlent les logiciels installés et les cibles potentielles :
# Processus en cours
tasklist
tasklist /v
tasklist /svc
# Services
sc query
sc query state= all
wmic service get name,displayname,pathname,startmode
# Trouver les chemins de service non quotés
wmic service get name,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """
# Permissions des services (nécessite accesschk de Sysinternals)
# accesschk.exe -uwcqv "Authenticated Users" * /accepteula
Tâches planifiées
Les tâches planifiées peuvent s'exécuter en tant que SYSTEM et exécuter des scripts modifiables :
# Lister les tâches planifiées
schtasks /query /fo LIST /v
schtasks /query /fo TABLE
# Vérifier les tâches s'exécutant en tant que SYSTEM
schtasks /query /fo LIST /v | findstr /i "SYSTEM"
# Alternative PowerShell
Get-ScheduledTask | Where-Object {$_.Principal.UserId -eq "SYSTEM"}
Logiciels installés
Les applications installées peuvent avoir des vulnérabilités connues :
# Logiciels installés
wmic product get name,version
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s
# Apps 32-bit sur 64-bit
reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /s
# Répertoires Program Files
dir /b "C:\Program Files"
dir /b "C:\Program Files (x86)"
Outils et techniques
Chasse aux credentials
Rechercher les credentials stockés et les fichiers sensibles :
# Credentials enregistrés
cmdkey /list
# Rechercher password dans les fichiers
findstr /si "password" *.txt *.xml *.ini *.config
findstr /spin "password" *.*
# Emplacements communs de credentials
type C:\Windows\Panther\Unattend.xml
type C:\Windows\Panther\Unattended.xml
type C:\Unattend.xml
type %WINDIR%\repair\SAM
type %WINDIR%\repair\system
# Configuration IIS
type C:\inetpub\wwwroot\web.config
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
# Mots de passe stockés dans le registre
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s 2>nul
Énumération du registre
Clés de registre qui permettent l'élévation de privilèges :
# AlwaysInstallElevated (permet aux .msi de s'exécuter en tant que SYSTEM)
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# AutoRuns (emplacements de persistance)
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
# Clés de registre des services
reg query "HKLM\SYSTEM\CurrentControlSet\Services" /s
# Paramètres UAC
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
Énumération PowerShell
PowerShell fournit des capacités d'énumération supplémentaires :
# Version PowerShell et politique d'exécution
$PSVersionTable
Get-ExecutionPolicy
# Lister les lecteurs
Get-PSDrive
# Trouver les répertoires inscriptibles dans PATH
$env:PATH.split(';') | ForEach-Object { $path = $_; try { [io.file]::OpenWrite("$path\test.txt").close(); Remove-Item "$path\test.txt"; Write-Host "Writable: $path" } catch {} }
# Rechercher des fichiers intéressants
Get-ChildItem -Path C:\ -Include *.txt,*.xml,*.config,*.ini -File -Recurse -ErrorAction SilentlyContinue | Select-String -Pattern "password"
# Lister les services avec des chemins non quotés
Get-WmiObject win32_service | Select-Object Name,PathName | Where-Object { $_.PathName -notlike '"*' -and $_.PathName -like '* *' }
Scénarios d'attaque réels
🔴 Scénario : Découverte de mot de passe Unattend.xml
Pendant le déploiement Windows, les administrateurs utilisent souvent des fichiers unattend.xml pour automatiser l'installation. Ces fichiers contiennent fréquemment des mots de passe administrateur local encodés en base64. Le fichier persiste dans des emplacements communs après l'installation, et de nombreux administrateurs oublient de le supprimer.
Chemin d'attaque : Énumérer le système de fichiers → Trouver Unattend.xml → Décoder le mot de passe base64 → S'authentifier en tant qu'administrateur
🟠 Scénario : Sessions PuTTY enregistrées
Les administrateurs système enregistrent souvent les configurations de sessions SSH dans PuTTY, y compris les credentials proxy. Ceux-ci sont stockés dans le registre en clair. Découvrir des credentials SSH vers des serveurs Linux pendant un engagement Windows fournit des opportunités de mouvement latéral.
Chemin d'attaque : Interroger le registre PuTTY → Extraire les credentials enregistrés → SSH vers des systèmes supplémentaires
💡 Conseil d'expert
L'énumération manuelle ne consiste pas à mémoriser chaque commande - il s'agit de développer une approche systématique. Commencez large (info système, contexte utilisateur), puis approfondissez (services, tâches planifiées, credentials). Documentez tout ; vous ne savez jamais ce qui deviendra pertinent plus tard.
Contre-mesures défensives
Hygiène des credentials
- Supprimer les fichiers de déploiement (Unattend.xml) après l'installation
- Ne jamais stocker de credentials dans les scripts, fichiers de config ou registre
- Utiliser Windows Credential Manager avec un chiffrement approprié
- Implémenter LAPS pour la gestion des mots de passe administrateur local
Durcissement des services
- Utiliser des chemins quotés pour tous les exécutables de service
- Définir des permissions restrictives sur les répertoires de binaires de service
- Exécuter les services avec les privilèges minimum requis
- Utiliser des Managed Service Accounts (MSAs) au lieu de comptes utilisateur
Capacités de détection
- Surveiller les commandes d'énumération (systeminfo, net user, whoami /priv)
- Alerter sur les requêtes de registre vers les emplacements de stockage de credentials
- Implémenter la journalisation de ligne de commande via les politiques d'audit avancées
- Utiliser des credentials honeypot pour détecter la récolte de credentials
Questions fréquemment posées
Dois-je toujours lancer des outils automatisés ou commencer par l'énumération manuelle ?
Commencez manuellement, puis validez avec les outils automatisés. L'énumération manuelle vous aide à comprendre l'environnement et trouve souvent des problèmes que les outils automatisés manquent en raison de leurs patterns de scan génériques. Les outils automatisés sont excellents pour la couverture, mais l'énumération manuelle développe l'expertise.
Et si je ne peux pas exécuter cmd.exe ou PowerShell ?
Le whitelisting d'applications peut bloquer les interpréteurs. Essayez wmic.exe (souvent négligé), mshta.exe, ou trouvez des répertoires inscriptibles pour placer des exécutables autorisés. Vous pouvez également utiliser des techniques living-off-the-land avec des binaires Microsoft signés (LOLBins).
Comment vérifier les permissions de service sans Sysinternals ?
Utilisez sc sdshow <servicename> pour voir le descripteur de sécurité au format SDDL. Bien que plus difficile à lire que la sortie d'accesschk, il montre les mêmes informations de permission. Des parseurs SDDL en ligne peuvent aider à décoder le format.
🎯 Énumération manuelle - Maîtrisé !
Vous avez maintenant une approche systématique pour énumérer les systèmes Windows en utilisant uniquement les commandes intégrées. Pas d'outils à télécharger, pas de détection par l'AV - uniquement des commandes Windows natives qui révèlent tout ce dont vous avez besoin.
Prêt à automatiser avec WinPEAS et PowerUp →