Você acabou de extrair o /etc/shadow de um alvo Linux ou puxou hashes NTLM de um controlador de domínio durante um teste de penetração. Os hashes estão em um arquivo de texto e o relógio está correndo no prazo da sua avaliação. Quebra de hash é como você transforma essas strings em credenciais em texto claro que comprovam impacto real para o seu cliente. Também é uma das partes mais gratificantes de qualquer pentest. Pratique cada técnica no curso de Password Cracking da HackerDNA enquanto lê. Para o panorama completo, veja nosso guia completo de teste de penetração.
Este tutorial percorre identificação de hashes, quebra com Hashcat 6.2.6 e John the Ripper 1.9.0-jumbo-1, modos de ataque (dicionário, baseado em regras, máscara), seleção de wordlists e benchmarks de GPU em hardware atual. Todos os comandos estão prontos para copiar e colar. Sem enrolação, sem teoria sem prática.
TL;DR: Quebra de hash recupera senhas em texto claro a partir de suas representações em hash usando ataques de dicionário, força bruta ou baseados em regras. Hashcat é a opção mais rápida para máquinas com GPU, enquanto John the Ripper funciona bem em CPUs e se destaca na detecção de formatos. Comece com rockyou.txt e regras básicas antes de tentar ataques mais direcionados.
O Que É Quebra de Hash?
Quebra de hash é o processo de recuperar senhas em texto claro a partir de seus valores de hash criptográficos usando técnicas como ataques de dicionário, força bruta e mutações baseadas em regras. Durante testes de penetração, credenciais quebradas revelam reutilização de senhas, permitem movimentação lateral e expõem políticas de senhas fracas.
Hashing é uma função unidirecional. Você não consegue reverter um hash SHA-256 matematicamente. Mas você pode aplicar hash em milhões de senhas candidatas e comparar a saída com o hash alvo. Quando há uma correspondência, você tem o texto claro. Isso é tudo que a quebra de hash realmente é: um jogo massivo de comparação onde a velocidade vence.
Os tipos de hash mais comuns que você vai encontrar:
- MD5 - 32 caracteres hexadecimais. Ainda comum em bancos de dados vazados e aplicações PHP mais antigas, apesar de estar criptograficamente quebrado desde 2004.
- SHA-1 - 40 caracteres hex. Descontinuado para certificados, mas ainda aparece em sistemas legados e alguns dumps de banco de dados.
- SHA-256 - 64 caracteres hex. Mais forte, mas SHA-256 sem salt ainda é quebrável em alta velocidade.
- bcrypt - Começa com o prefixo
$2b$. O padrão ouro para armazenamento de senhas. O fator de custo torna a quebra deliberadamente lenta. - NTLM - 32 caracteres hex, usado em ambientes Windows Active Directory. Rápido de quebrar porque não há salting.
Na prática, o tipo de hash determina toda a sua abordagem. Um MD5 sem salt quebra em segundos em uma GPU moderna. Um hash bcrypt com fator de custo 12 pode levar semanas para uma única senha. Saber contra o que você está lidando antes de começar economiza horas de processamento desperdiçado.
Como Identificar Tipos de Hash
Antes de abrir qualquer ferramenta de quebra, você precisa saber qual algoritmo produziu o hash. Rodar Hashcat com o número de modo errado desperdiça tempo e não retorna nenhum resultado.
O método mais rápido é a identificação por tamanho. Conte os caracteres:
- 32 caracteres hex: provavelmente MD5 ou NTLM
- 40 caracteres hex: provavelmente SHA-1
- 64 caracteres hex: provavelmente SHA-256
Para identificação automatizada, o Kali Linux vem com duas ferramentas. hashid é a mais confiável:
$ hashid 5f4dcc3b5aa765d61d8327deb882cf99
Analyzing '5f4dcc3b5aa765d61d8327deb882cf99'
[+] MD2
[+] MD5
[+] MD4
[+] NTLM
Ele retorna múltiplas possibilidades ordenadas por probabilidade. MD5 e NTLM produzem strings hexadecimais de 32 caracteres, então o contexto importa. Se você extraiu o hash de um arquivo SAM do Windows ou NTDS.dit, é NTLM. Se veio de um banco de dados MySQL, provavelmente é MD5.
Hashes de arquivos shadow do Unix são mais fáceis de identificar porque incluem um prefixo:
$1$- MD5crypt (antigo, ainda encontrado em sistemas mais velhos)$5$- SHA-256crypt$6$- SHA-512crypt (padrão na maioria das distribuições Linux modernas)$2b$- bcrypt
Depois de identificar o algoritmo, mapeie para um número de modo do Hashcat. Os que você vai usar com mais frequência:
-m 0- MD5-m 100- SHA-1-m 1000- NTLM-m 1800- SHA-512crypt (arquivos shadow do Linux)-m 3200- bcrypt
Quebra de Hash Com Hashcat
Hashcat 6.2.6 é a ferramenta que você usa quando velocidade importa. Ele roda em GPUs, suporta mais de 350 modos de hash e tem o melhor motor de regras disponível. Se você tem uma GPU dedicada, Hashcat deve ser sua ferramenta principal de quebra.
Ataque de Dicionário
Um ataque de dicionário direto é sempre seu primeiro movimento. Você está comparando cada palavra de uma wordlist com seus hashes alvo:
hashcat -m 0 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt
As flags são simples. -m 0 define o modo de hash como MD5. -a 0 seleciona o modo direto, que significa apenas dicionário sem mutações. hashes.txt contém seus hashes alvo, um por linha. O último argumento é sua wordlist.
Contra um lote de hashes MD5 sem salt, isso termina em menos de um minuto em qualquer GPU moderna. Você tipicamente vai quebrar 20-40% dos hashes em um dump apenas com rockyou.txt e sem regras. Senhas fracas como "password123" e "summer2024" caem imediatamente.
Hashcat salva os resultados quebrados em um potfile (~/.local/share/hashcat/hashcat.potfile por padrão). Se você rodar os mesmos hashes novamente, ele pula os já quebrados. Você pode ver os resultados quebrados a qualquer momento com hashcat --show -m 0 hashes.txt. Isso é útil quando você quer gerar um relatório final sem executar o ataque completo novamente.
Ataques Baseados em Regras
Regras são onde o Hashcat realmente se destaca. Cada regra transforma cada palavra na sua wordlist: alternando maiúsculas e minúsculas, adicionando números, substituindo letras por equivalentes leet speak, invertendo strings. Uma única entrada de wordlist como "password" se torna "Password", "password1", "p@ssword", "PASSWORD123" e centenas de outras variações.
hashcat -m 0 -a 0 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
A flag -r carrega um arquivo de regras. Hashcat vem com vários, mas dois cobrem a grande maioria dos padrões de senhas do mundo real.
Não comece a escrever regras personalizadas até ter esgotado best64.rule e dive.rule. Esses dois cobrem aproximadamente 80% das mutações de senhas do mundo real que os usuários realmente criam. Regras personalizadas fazem sentido para ataques direcionados contra a política de senhas de uma organização específica, mas a maioria dos pentesters nunca precisa delas.
Ataques de Máscara
Quando você conhece a política de senhas, ataques de máscara permitem que você mire em um padrão específico:
hashcat -m 0 -a 3 hashes.txt ?u?l?l?l?l?d?d?d
Esta máscara tenta cada combinação correspondente ao padrão: uma letra maiúscula, quatro letras minúsculas, três dígitos. Isso cobre senhas como "Admin001" ou "Sales789".
Os placeholders de charset:
?l- minúsculas (a-z)?u- maiúsculas (A-Z)?d- dígito (0-9)?s- caracteres especiais?a- todos os acima
Ataques de máscara são mais eficazes quando você tem inteligência sobre a política de senhas do alvo. Se a empresa exige "mínimo de 8 caracteres, pelo menos uma maiúscula e um número," você pode construir uma máscara que corresponda exatamente a essa política e pular bilhões de candidatos impossíveis.
Em uma RTX 4090, Hashcat quebra MD5 a aproximadamente 164 bilhões de hashes por segundo. NTLM roda a cerca de 100 bilhões. bcrypt com fator de custo 10 cai para cerca de 184.000 hashes por segundo. Esses números explicam por que a seleção do algoritmo de hash importa tanto no lado defensivo. A diferença entre MD5 e bcrypt não é incremental. São seis ordens de magnitude.
Quebra de Hash Com John the Ripper
John the Ripper 1.9.0-jumbo-1 tem uma abordagem diferente. Ele é amigável para CPU, detecta tipos de hash automaticamente e brilha em situações onde o Hashcat parece desajeitado.
O uso básico não poderia ser mais simples:
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
John detecta o formato do hash automaticamente. Sem números de modo para procurar. Se a detecção automática escolher o formato errado, você pode sobrescrever com --format=Raw-MD5 ou o que corresponder ao seu hash. Quando terminar, veja os resultados:
john --show hashes.txt
Onde John realmente ganha seu lugar na máquina de todo pentester é a família de scripts *2john. Eles extraem hashes quebráveis de arquivos criptografados:
pdf2john document.pdf > pdf_hash.txt
zip2john archive.zip > zip_hash.txt
ssh2john id_rsa > ssh_hash.txt
keepass2john database.kdbx > kp_hash.txt
Hashcat não faz isso nativamente. Você precisaria de ferramentas separadas para extrair o hash primeiro e depois alimentá-lo no Hashcat. John lida com tudo em um único fluxo de trabalho.
Durante um engagement recente, um cliente armazenava bancos de dados KeePass em um drive de rede compartilhado sem controles de acesso adicionais. Rodar keepass2john seguido de um ataque de dicionário quebrou duas senhas mestras em menos de dez minutos. Esses bancos de dados continham credenciais de administrador do domínio. Sem os scripts de extração do John, essa cadeia de ataque teria exigido uma ferramenta separada para cada tipo de arquivo.
John é a melhor escolha quando você tem uma mistura de formatos de hash ou precisa quebrar hashes de arquivos criptografados que não são senhas. Para velocidade bruta de GPU em um único tipo de hash, Hashcat vence sempre. A maioria dos pentesters experientes mantém ambos instalados e usa o que melhor se encaixa no trabalho. Não há razão para escolher lados.
Escolhendo a Wordlist e Estratégia de Ataque Certa
Se você leu nosso guia de wordlists para Gobuster, sabe que a qualidade da wordlist importa mais que o tamanho. Uma wordlist de 50 GB cheia de strings aleatórias quebra menos senhas do que uma lista curada de 500 MB de senhas reais vazadas.
As wordlists essenciais:
- rockyou.txt - 14 milhões de senhas do vazamento RockYou de 2009. Vem com o Kali. Este é seu ponto de partida padrão para todo engagement.
- Diretório de Senhas do SecLists - o repositório SecLists no GitHub contém dezenas de wordlists especializadas organizadas por fonte, idioma e padrão.
- CeWL - gera wordlists específicas para o alvo raspando o site de uma empresa. Captura nomes de produtos, nomes de funcionários e jargão que wordlists genéricas não têm.
Para uma abordagem estruturada, trabalhe os ataques nesta ordem:
- Ataque de dicionário com rockyou.txt
- Dicionário + regras (best64.rule primeiro, depois dive.rule)
- Ataque de máscara se a política de senhas for conhecida
- Ataque combinador para senhas estilo passphrase
- Wordlist direcionada do CeWL + regras
Na prática, os passos 1 e 2 quebram cerca de 70-80% dos hashes em um engagement típico. Se você ainda estiver preso após ataques baseados em regras, as senhas restantes geralmente são fortes o suficiente para que a força bruta não seja realista dentro de um prazo razoável. Nesse ponto, passe para outros vetores de ataque. Gastar três dias tentando quebrar por força bruta uma senha aleatória de 16 caracteres é tempo que você poderia usar encontrando um caminho diferente para o mesmo objetivo.
Considerações Legais e Éticas
Lembrete crítico: Quebre apenas hashes para os quais você tem autorização escrita explícita para testar. Acesso não autorizado a sistemas de computador é crime sob leis como a CFAA (EUA), Computer Misuse Act (Reino Unido) e legislação similar em todo o mundo.
Engagements autorizados de teste de penetração e competições CTF são os únicos contextos apropriados para quebrar hashes de senhas. Seu documento de escopo de trabalho deve mencionar explicitamente a quebra de senhas como atividade aprovada. Se não mencionar, obtenha confirmação escrita antes de prosseguir.
Para praticar com segurança, use ambientes criados para isso: labs da HackerDNA, máquinas VulnHub, Hack The Box ou plataformas CTF. Esses sistemas existem especificamente para aprender técnicas ofensivas e não trazem risco legal. Montar um lab local com VirtualBox ou Docker também funciona bem para experimentar diferentes tipos de hash e modos de ataque.
Se você descobrir senhas quebradas durante um teste autorizado, trate-as com cuidado. Reporte-as pelos canais adequados definidos no seu acordo de engagement. Nunca retenha cópias de credenciais quebradas após o fim do engagement e nunca as use fora do escopo acordado. Seu cliente confiou a você o acesso aos dados mais sensíveis dele. Trate essa confiança com seriedade.
Dados de senhas de vazamentos reais (além de conjuntos de treinamento conhecidos como rockyou.txt) não devem ser baixados ou armazenados. Usar bancos de dados de credenciais roubadas, mesmo para "pesquisa," cria exposição legal que não vale o risco. O OWASP Password Storage Cheat Sheet fornece boa orientação no lado defensivo se clientes perguntarem como se proteger contra as técnicas que você demonstrou.
Comece a Quebrar Hashes Hoje
Quebra de hash é uma habilidade que melhora com repetição. Cada engagement ensina algo sobre como usuários reais criam senhas, e essa experiência torna seu próximo ataque mais rápido e direcionado.
O fluxo de trabalho é direto: identifique o tipo de hash, escolha sua ferramenta (Hashcat para velocidade de GPU, John para flexibilidade de formato), selecione a wordlist certa e trabalhe os modos de ataque do simples ao complexo. A maioria dos hashes cai com um ataque de dicionário com boas regras. Os que sobrevivem geralmente são fortes o suficiente para que você esteja melhor encontrando um caminho diferente para seu objetivo.
Mais uma coisa: documente seus resultados de quebra cuidadosamente. Registre quais senhas foram quebradas, qual modo de ataque as quebrou e quanto tempo levou. Esses dados vão para o seu relatório e dão ao cliente evidência concreta das fraquezas da política de senhas. Uma tabela mostrando que 73% das senhas do domínio foram quebradas em menos de quatro horas fala mais alto que qualquer recomendação de política.
Coloque essas técnicas em prática no lab Shadow Cracker da HackerDNA, onde você extrai e quebra hashes de senhas reais de um sistema Linux. Depois percorra o curso completo de Password Cracking para lições guiadas cobrindo todos os modos de ataque. Comece com o plano gratuito da HackerDNA, sem necessidade de cartão de crédito.
Parte da série Teste de Penetração
Artigos relacionados:
- Tutorial de Quebra de Hash
- Nmap Cheat Sheet
- Msfvenom Cheat Sheet
- Burp Suite Tutorial
- Guia de Wordlists para Gobuster
- Como Usar o DirBuster