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/polenum

Overview

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