polenum
Extrait la politique de mots de passe Windows d'un domaine ou d'un système autonome via SMB. Affiche le seuil de verrouillage, la durée de verrouillage, l'âge minimum du mot de passe et les exigences de complexité. Extracts Windows password policy from a domain or standalone system via SMB. Shows lockout threshold, lockout duration, minimum password age, and complexity requirements.
↗ https://github.com/Wh1t3Fox/polenumOverview
polenum extracts the password policy from Windows Active Directory domains or standalone systems using the SMB protocol. Knowing the lockout policy is critical before password spraying — spraying too aggressively without knowing the threshold locks out accounts.
Basic Usage
Extract password policy with credentials
polenum DOMAIN/username:password@10.10.10.1
With IP only (null session attempt)
polenum 10.10.10.1
Domain controller targeting
polenum domain.local/user:'P@ssw0rd'@DC01.domain.local
Example Output
[+] Password Info for Domain: DOMAIN
[+] Minimum password length: 7
[+] Password history length: 24
[+] Maximum password age: 42 days
[+] Password Complexity Flags: Password Complexity Disabled
[+] Minimum password age: 1 days
[+] Reset Account Lockout Counter: 30 minutes
[+] Locked Account Duration: 30 minutes
[+] Account Lockout Threshold: 5
[+] Forced Log off Time: Not Set
Key Fields
Lockout Threshold → How many bad passwords before lockout
→ CRITICAL: don't exceed this during spraying
Lockout Duration → How long account stays locked
Reset Lockout Counter → When the bad password count resets
Minimum Password Length → Informs password list filtering
Password Complexity → Whether complexity is enforced
Alternative Methods
With enum4linux-ng
enum4linux-ng -P 10.10.10.1 -u user -p pass
With CrackMapExec
crackmapexec smb DC01 -u user -p pass --pass-pol
With impacket
python3 /opt/impacket/examples/samrdump.py domain.local/user:pass@DC01
# With rpcclient
rpcclient -U "domain/user%pass" DC01
rpcclient $> getdompwinfo
With PowerView (from Windows)
Get-DomainPolicyData | Select-Object -ExpandProperty SystemAccess
Safe Password Spraying Based on Policy
# If lockout is after 5 attempts, stay at 3 (safety margin)
# If lockout resets every 30 minutes, wait 31 minutes between attempts
# Calculate safe spray rate
THRESHOLD=5
SAFETY_MARGIN=2
RESET_WINDOW=30 # minutes
# Safe: spray at most (THRESHOLD - SAFETY_MARGIN) times per RESET_WINDOW period
# = 3 passwords per 30 minutes
# With CrackMapExec (rate-limited):
crackmapexec smb DC01 -u users.txt -p 'Spring2024!' --continue-on-success
# Wait 31 minutes
crackmapexec smb DC01 -u users.txt -p 'Welcome1!' --continue-on-success
Tips
- Always get the password policy BEFORE spraying — account lockout is very visible and damaging
- Fine-grained password policies (PSOs) may apply to specific groups differently — check these too
- A lockout threshold of 0 means accounts never lock — spray freely (but carefully for noise)
- Lockout duration of 0 typically means accounts stay locked until manually unlocked by admin
Help / Man page
polenum [domain/]username[:password]@host
No options beyond the connection string.
Output is always printed to stdout.
Alternative with rpcclient:
rpcclient -U "domain\\user%pass" HOST
rpcclient $> getdompwinfo
rpcclient $> getusrdompwinfo 500
Vue d’ensemble
polenum extrait la politique de mots de passe des domaines Windows Active Directory ou des systèmes autonomes via le protocole SMB. Connaître la politique de verrouillage est essentiel avant un password spraying : sprayer trop agressivement sans connaître le seuil verrouille les comptes.
Utilisation de base
# Extraire la politique de mots de passe avec des identifiants
polenum DOMAIN/username:password@10.10.10.1
# Avec seulement une IP (tentative de session null)
polenum 10.10.10.1
# Cibler un contrôleur de domaine
polenum domain.local/user:'P@ssw0rd'@DC01.domain.local
Exemple de sortie
[+] Password Info for Domain: DOMAIN
[+] Minimum password length: 7
[+] Password history length: 24
[+] Maximum password age: 42 days
[+] Password Complexity Flags: Password Complexity Disabled
[+] Minimum password age: 1 days
[+] Reset Account Lockout Counter: 30 minutes
[+] Locked Account Duration: 30 minutes
[+] Account Lockout Threshold: 5
[+] Forced Log off Time: Not Set
Champs clés
Lockout Threshold → Nombre de mots de passe erronés avant verrouillage
→ CRITIQUE : ne pas dépasser cette valeur lors du spray
Lockout Duration → Durée pendant laquelle le compte reste verrouillé
Reset Lockout Counter → Moment où le compteur de mots de passe erronés se réinitialise
Minimum Password Length → Renseigne le filtrage de la liste de mots de passe
Password Complexity → Indique si la complexité est appliquée
Méthodes alternatives
# Avec enum4linux-ng
enum4linux-ng -P 10.10.10.1 -u user -p pass
# Avec CrackMapExec
crackmapexec smb DC01 -u user -p pass --pass-pol
# Avec impacket
python3 /opt/impacket/examples/samrdump.py domain.local/user:pass@DC01
# Avec rpcclient
rpcclient -U "domain/user%pass" DC01
rpcclient $> getdompwinfo
# Avec PowerView (depuis Windows)
Get-DomainPolicyData | Select-Object -ExpandProperty SystemAccess
Spray de mots de passe sécurisé selon la politique
# Si le verrouillage intervient après 5 tentatives, restez à 3 (marge de sécurité)
# Si le verrouillage se réinitialise toutes les 30 minutes, attendez 31 minutes entre les tentatives
# Calculer un taux de spray sûr
THRESHOLD=5
SAFETY_MARGIN=2
RESET_WINDOW=30 # minutes
# Sûr : sprayer au maximum (THRESHOLD - SAFETY_MARGIN) fois par période RESET_WINDOW
# = 3 mots de passe par 30 minutes
# Avec CrackMapExec (limité en débit) :
crackmapexec smb DC01 -u users.txt -p 'Spring2024!' --continue-on-success
# Attendre 31 minutes
crackmapexec smb DC01 -u users.txt -p 'Welcome1!' --continue-on-success
Conseils
- Récupérez toujours la politique de mots de passe AVANT de sprayer : un verrouillage de compte est très visible et dommageable
- Les politiques de mots de passe granulaires (PSO) peuvent s’appliquer différemment à des groupes spécifiques : vérifiez-les également
- Un seuil de verrouillage à 0 signifie que les comptes ne se verrouillent jamais : sprayez librement (mais prudemment côté bruit)
- Une durée de verrouillage de 0 signifie généralement que les comptes restent verrouillés jusqu’à un déverrouillage manuel par un administrateur
Aide / Page de manuel
polenum [domain/]username[:password]@host
No options beyond the connection string.
Output is always printed to stdout.
Alternative with rpcclient:
rpcclient -U "domain\\user%pass" HOST
rpcclient $> getdompwinfo
rpcclient $> getusrdompwinfo 500