← retour aux outils back to tools

# 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