Introdução
O Hashcat é uma ferramenta poderosa e popular para recuperação de senhas. Ao executar uma sessão de quebra, o Hashcat precisa de uma maneira de gerenciar os resultados. É fundamental saber quais senhas foram quebradas com sucesso e quais permanecem sem solução.
Neste laboratório, você aprenderá os fundamentos do gerenciamento da saída do Hashcat. Exploraremos o hashcat.potfile, que armazena automaticamente as senhas quebradas. Você também aprenderá a usar opções de linha de comando como --show para exibir senhas quebradas, -o para salvar resultados em um arquivo específico e --left para identificar quais hashes ainda não foram quebrados. Dominar esses recursos é essencial para qualquer fluxo de trabalho eficaz de auditoria ou recuperação de senhas.
Entenda o propósito do hashcat.potfile
Nesta etapa, você aprenderá sobre o hashcat.potfile, um componente crucial do Hashcat. Para evitar a quebra repetida dos mesmos hashes em sessões futuras, o Hashcat salva automaticamente cada hash quebrado com sucesso e sua senha correspondente em texto simples em um arquivo. Esse arquivo é chamado de "potfile". Por padrão, ele é nomeado como hashcat.potfile e está localizado no diretório ~/.local/share/hashcat/.
Vamos executar um ataque de dicionário básico para quebrar alguns hashes. Isso gerará o potfile para nós. Temos um arquivo chamado hashes.txt contendo hashes MD5 e um arquivo wordlist.txt com possíveis senhas.
Execute o seguinte comando para iniciar o ataque:
hashcat -m 0 -a 0 hashes.txt wordlist.txt
Aqui está uma explicação do comando:
-m 0: Especifica o tipo de hash, onde0corresponde a MD5.-a 0: Especifica o modo de ataque, onde0é um ataque de dicionário simples.hashes.txt: O arquivo de entrada contendo os hashes a serem quebrados.wordlist.txt: O arquivo de dicionário contendo as senhas a serem testadas.
Você verá o Hashcat iniciar. Como nossa wordlist contém as senhas corretas para todos os hashes, o processo terminará rapidamente.
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: ... H/s (0.00ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 4/4 (100.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 5/5 (100.00%)
Rejected.........: 0/5 (0.00%)
Restore.Point....: 5/5 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: password -> testing
Hardware.Mon.#1..: Temp: 46c Fan: 33%
...
Started: ...
Stopped: ...
A saída mostra que todos os 4 hashes foram recuperados. Isso significa que o hashcat.potfile foi criado e preenchido com esses resultados.
Visualize pares de hash-senha quebrados no potfile
Nesta etapa, inspecionaremos o conteúdo do hashcat.potfile diretamente. Isso o ajudará a entender como o Hashcat armazena as credenciais quebradas. O formato é simples e eficaz: cada linha contém o hash, um separador de dois pontos e a senha em texto simples.
Para visualizar o conteúdo do potfile, use o comando cat. O arquivo está localizado em um diretório oculto dentro da sua pasta pessoal.
cat ~/.local/share/hashcat/hashcat.potfile
A saída exibirá os pares de hash-senha que foram quebrados com sucesso na etapa anterior.
5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab
Como você pode ver, o arquivo contém os quatro hashes de hashes.txt que corresponderam às senhas em wordlist.txt. Embora visualizar o potfile diretamente seja útil para entender sua estrutura, ele pode se tornar confuso e difícil de ler em cenários reais com milhares de senhas quebradas. Na próxima etapa, você aprenderá uma maneira mais eficiente de visualizar resultados para uma tarefa específica.
Use '--show' para exibir senhas quebradas de uma lista de hashes específica
Nesta etapa, você aprenderá um método mais prático para verificar seus resultados. Em vez de ler manualmente todo o potfile, você pode usar a opção --show do Hashcat. Este comando instrui o Hashcat a comparar uma lista de hashes fornecida com seu potfile e exibir apenas os hashes quebrados dessa lista. Ele não realiza nenhuma nova tentativa de quebra.
Isso é extremamente útil quando você deseja ver rapidamente os resultados de uma lista de alvos específica sem ter que filtrar um potfile potencialmente enorme contendo resultados de muitas sessões diferentes.
Execute o seguinte comando para exibir os hashes quebrados do nosso arquivo hashes.txt:
hashcat -m 0 --show hashes.txt
O Hashcat verificará instantaneamente o potfile e imprimirá os resultados em um formato limpo e legível.
5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab
A saída é limpa e responde diretamente à pergunta: "Quais hashes de hashes.txt eu já quebrei?". Esta é a maneira recomendada de verificar senhas quebradas de uma sessão específica.
Salve senhas quebradas em um arquivo de saída dedicado usando '-o'
Nesta etapa, você aprenderá como salvar seus resultados de quebra em um arquivo separado. Embora o potfile seja um excelente banco de dados interno para o Hashcat, muitas vezes você precisará de um arquivo de saída limpo para relatórios ou análises. Isso é feito usando a opção -o (ou --outfile).
Ao adicionar -o ao seu comando de ataque combinado com --show, o Hashcat recuperará os pares de hash-senha quebrados do potfile e os gravará no arquivo de saída especificado. Isso é particularmente útil quando os hashes já foram quebrados e existem no potfile, permitindo que você extraia e salve rapidamente esses resultados em um arquivo dedicado.
Vamos executar o comando com as opções --show e -o para salvar os resultados quebrados.
hashcat -a 0 -m 0 --show -o cracked.txt hashes.txt wordlist.txt
O Hashcat verificará instantaneamente o potfile e gravará todos os pares de senhas quebrados em cracked.txt.
Agora, vamos visualizar o conteúdo do nosso novo arquivo de saída.
cat cracked.txt
A saída será uma lista limpa dos pares quebrados.
5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab
Este arquivo cracked.txt agora é um registro portátil dos resultados bem-sucedidos deste ataque específico, separado do potfile principal.
Use '--left' para ver quais hashes não foram quebrados
Nesta etapa, você aprenderá como identificar quais hashes permanecem sem quebra. Isso é tão importante quanto saber quais você resolveu, pois permite que você concentre seus esforços em ataques subsequentes (por exemplo, usando uma wordlist diferente ou um modo de ataque distinto). O Hashcat fornece a opção --left para esse propósito.
A flag --left exibe os hashes da sua lista de entrada que não estão presentes no potfile.
Vamos ver quais hashes de hashes.txt ainda não foram quebrados.
hashcat -m 0 --left hashes.txt
Como todos os hashes em nossa lista foram quebrados, a saída estará vazia (não restam hashes não quebrados).
Você também pode combinar --left com a opção -o para salvar esses hashes restantes em um novo arquivo. Esta é uma prática comum para criar uma lista de trabalho para sua próxima tentativa de quebra.
hashcat -m 0 --left -o uncracked.txt hashes.txt
Agora, verifique o conteúdo do arquivo uncracked.txt.
cat uncracked.txt
Como todos os hashes foram quebrados, o arquivo uncracked.txt estará vazio.
Resumo
Neste laboratório, você aprendeu as técnicas essenciais para gerenciar e interpretar a saída do Hashcat. Essas habilidades são fundamentais para organizar um fluxo de trabalho eficiente de quebra de senhas.
Você aprendeu:
- O papel do
hashcat.potfilecomo um banco de dados automático para todas as senhas quebradas. - Como usar
hashcat --showpara exibir de forma limpa as senhas quebradas de uma lista de hashes específica. - Como usar a opção
-opara salvar senhas quebradas em um arquivo de saída dedicado para relatórios e análises. - Como usar a opção
--leftpara isolar hashes não quebrados, permitindo que você concentre seus esforços futuros de forma eficaz.
Ao dominar esses recursos de saída e gerenciamento de arquivos, você pode executar sessões de recuperação de senhas mais organizadas, eficientes e eficazes com o Hashcat.



