Solução de Problemas de Erros Comuns do Hashcat

Kali LinuxBeginner
Pratique Agora

Introdução

O Hashcat é uma ferramenta poderosa e versátil para recuperação de senhas, mas como qualquer software complexo, os usuários podem encontrar erros que podem ser confusos inicialmente. Compreender esses problemas comuns é fundamental para usar o Hashcat de forma eficaz.

Neste laboratório, você aprenderá a diagnosticar e corrigir alguns dos erros mais frequentes que ocorrem durante as operações do Hashcat. Abordaremos problemas relacionados ao formato do hash, análise de arquivos e gerenciamento de hardware. Ao final deste laboratório, você estará mais preparado para solucionar problemas em suas próprias sessões do Hashcat.

Investigar o Erro 'Token length exception'

Nesta etapa, exploraremos o erro Token length exception. Este erro ocorre quando um hash no seu arquivo de entrada não possui o comprimento correto para o modo de hash especificado (-m). Por exemplo, um hash MD5 padrão deve ter exatamente 32 caracteres hexadecimais. Se o Hashcat encontrar uma linha mais curta ou mais longa, ele relatará este erro e parará.

Primeiro, vamos tentar executar o Hashcat em um arquivo que contém um hash malformado. Preparamos um arquivo chamado hashes_token_length.txt para este propósito. Usaremos o modo de hash 0, que corresponde ao MD5.

Execute o seguinte comando no seu terminal:

hashcat -m 0 -a 0 hashes_token_length.txt wordlist.txt

Você verá uma mensagem de erro semelhante a esta:

hashcat (v6.2.x) starting

...

* Token length exception: 1/2 hashes
  This error happens if the hashes you are trying to crack do not meet the length requirements of the selected hash-mode.
  Please make sure you have specified the correct hash-mode and that all of your hashes are valid.
  ...
* Startup failed: Invalid hash-length

A mensagem indica claramente uma "Token length exception". Para corrigir isso, você precisa identificar e corrigir ou remover o hash inválido do seu arquivo. Uma maneira simples de encontrar linhas com comprimentos incorretos é usando ferramentas como awk. Para um hash MD5 (32 caracteres), podemos verificar qualquer linha que não tenha um comprimento de 32.

Execute este comando para inspecionar o arquivo:

awk 'length != 32' hashes_token_length.txt

A saída mostrará a linha problemática:

5d41402abc4b2a76b9719d911017c59

Agora que você encontrou o hash inválido, pode criar um arquivo corrigido. Vamos criar um novo arquivo chamado hashes_corrected.txt contendo apenas os hashes válidos.

awk 'length == 32' hashes_token_length.txt > hashes_corrected.txt

Você agora pode executar o Hashcat com sucesso com o arquivo corrigido:

hashcat -m 0 -a 0 hashes_corrected.txt wordlist.txt

Desta vez, o Hashcat iniciará sem o erro.

Resolver o Erro 'No hashes loaded'

Nesta etapa, abordaremos o erro No hashes loaded. Este é um dos problemas mais comuns e geralmente significa que o Hashcat não conseguiu analisar nenhuma das linhas do seu arquivo de hashes como hashes válidos para o modo de hash selecionado. Isso pode ser devido a um modo de hash incorreto, um arquivo corrompido ou um formato de arquivo incorreto.

Temos um arquivo chamado hashes_no_load.txt. Vamos tentar quebrá-lo usando o modo de hash 10 (md5($pass.$salt)). Este modo espera que o hash e o salt sejam separados por dois pontos (:), mas nosso arquivo contém apenas hashes MD5 brutos.

Execute o seguinte comando:

hashcat -m 10 -a 0 hashes_no_load.txt wordlist.txt

O Hashcat iniciará, mas sairá imediatamente com uma mensagem de status indicando que nenhum hash foi carregado:

...
Hashes: 2 digests; 2 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Applicable optimizers:
* Zero-Byte
* Precompute-Init
* Precompute-Merkle-Demgard
* Meet-In-The-Middle
* Early-Skip
* Not-Iterated
* Not-Salted
* Raw-Hash

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256

Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature monitoring is disabled.

No hashes loaded.

Started: ...
Stopped: ...

A linha chave é No hashes loaded. Isso informa que há uma incompatibilidade entre o conteúdo do seu arquivo de hashes e o modo de hash que você especificou. O arquivo hashes_no_load.txt contém um hash MD5 bruto, que corresponde ao modo 0.

Para corrigir isso, você deve fornecer o modo de hash correto. Vamos executar o comando novamente com -m 0.

hashcat -m 0 -a 0 hashes_no_load.txt wordlist.txt

Desta vez, o Hashcat carregará corretamente o hash válido do arquivo e iniciará a sessão de quebra. Ele ignorará a linha "not_a_hash" porque ela não se parece com um hash válido para o modo 0.

...
Hashes: 1 digests; 1 unique digests, 1 unique salts
...
Session..........: hashcat
Status...........: Running
...

Lidar com Avisos de 'Device temperature abort'

Nesta etapa, discutiremos como lidar com problemas relacionados à temperatura. Ao executar em hardware poderoso como GPUs, o Hashcat pode gerar muito calor. Para proteger seu hardware contra danos, o Hashcat monitora as temperaturas dos dispositivos e pausará ou abortará automaticamente uma sessão se elas ficarem muito altas.

No ambiente virtual LabEx, não temos acesso a uma GPU física, portanto, não podemos acionar este erro diretamente. No entanto, é um recurso crítico para entender para uso no mundo real. A mensagem de erro seria algo como Device #1 temperature abort trigger reached.

O Hashcat fornece opções de linha de comando para gerenciar esse comportamento:

  • --gpu-temp-abort=X: Aborta a sessão quando qualquer GPU atinge a temperatura X em Celsius.
  • --gpu-temp-retain=Y: Pausa a sessão quando qualquer GPU atinge a temperatura Y em Celsius e retoma quando ela esfria.

Você pode usar essas flags para definir limites de temperatura personalizados que se adequem ao seu hardware e configuração de resfriamento. Por exemplo, para dizer ao Hashcat para parar se a temperatura exceder 90°C, você adicionaria --gpu-temp-abort=90 ao seu comando.

Vamos executar um comando com esta flag para ver como ela é usada. Usaremos o arquivo valid_hash.txt criado durante a configuração.

hashcat -m 0 -a 0 valid_hash.txt wordlist.txt --gpu-temp-abort=90

O comando será executado como de costume, mas o Hashcat agora está configurado com seu limite de temperatura personalizado.

Em alguns casos, o monitoramento de hardware pode estar com defeito ou não suportado, levando a leituras de temperatura incorretas e desligamentos desnecessários. Se você tem certeza de que seu resfriamento é adequado e as leituras de temperatura estão erradas, você pode desabilitar completamente o recurso de monitoramento de hardware com a flag --hwmon-disable.

hashcat -m 0 -a 0 valid_hash.txt wordlist.txt --hwmon-disable

Use esta opção com cautela, pois ela desabilita um recurso de segurança importante.

Corrigir 'Line-length exception' em Wordlists ou Regras

Nesta etapa, abordaremos o erro Line-length exception. Este erro é semelhante à exceção de comprimento de token da Etapa 1, mas se aplica aos seus arquivos de entrada, como wordlists ou arquivos de regras, em vez do arquivo de hash. O Hashcat possui um buffer interno para linhas que ele lê desses arquivos, e se uma linha exceder esse limite (tipicamente 256 bytes), este erro é acionado.

Isso pode acontecer com wordlists corrompidas ou arquivos de regras mal gerados. Temos um arquivo chamado wordlist_long_line.txt que contém uma linha extremamente longa.

Vamos tentar usá-lo em uma sessão de quebra contra nosso valid_hash.txt:

hashcat -m 0 -a 0 valid_hash.txt wordlist_long_line.txt

Você receberá uma mensagem de erro apontando para o arquivo wordlist:

...
ATTENTION!
The wordlist 'wordlist_long_line.txt' contains a line that is larger than 256 bytes.
The line is ignored.
To fix this, remove the line from the wordlist.
...

Embora o Hashcat possa prosseguir após este aviso, é uma boa prática limpar seus arquivos de entrada. Você pode encontrar e remover linhas de tamanho excessivo usando ferramentas como awk. O seguinte comando imprimirá quaisquer linhas no arquivo que sejam maiores que 256 caracteres:

awk 'length > 256' wordlist_long_line.txt

Isso exibirá a linha longa ofensiva. Para corrigir o problema, você pode criar uma nova wordlist limpa que exclua quaisquer linhas maiores que 256 caracteres.

awk 'length <= 256' wordlist_long_line.txt > wordlist_corrected.txt

Agora, você pode usar seu arquivo wordlist_corrected.txt sem encontrar o erro.

hashcat -m 0 -a 0 valid_hash.txt wordlist_corrected.txt

A sessão agora começará de forma limpa, sem avisos sobre o comprimento da linha.

Compreender e Resolver Erros de 'Separator not found'

Nesta etapa final, abordaremos o erro Separator not found. Este erro ocorre quando você usa um modo de hash que espera um formato específico com um caractere separador (geralmente dois pontos :) mas as linhas em seu arquivo de hash não o contêm. Muitos formatos de hash, como user:password ou hash:salt, dependem dessa estrutura.

Para este exemplo, usaremos o modo de hash 5500, que é para NetNTLMv1. Este formato geralmente se parece com USER::DOMAIN:LM_HASH:NT_HASH:CHALLENGE. Os dois pontos são separadores essenciais. Temos um arquivo chamado hashes_no_separator.txt que contém uma string de hash, mas está faltando os separadores necessários.

Vamos tentar executar o Hashcat com este arquivo:

hashcat -m 5500 -a 0 hashes_no_separator.txt wordlist.txt

O Hashcat falhará e exibirá o erro Separator not found. Ele também mostrará um exemplo do formato correto.

...
* Separator unmatched: 1/1 hashes
  This error happens if the hashes you are trying to crack are not in the correct format.
  Please read https://hashcat.net/wiki/doku.php?id=example_hashes to learn more about the correct format.
  ...
* Startup failed: Invalid hash-format

A mensagem de erro indica que o hash está faltando o separador necessário. Para corrigir isso, você deve editar o arquivo de hash para corresponder ao formato esperado. Vamos supor que o nome de usuário seja labex, o domínio seja corp e o desafio seja 1122334455667788. O formato correto seria labex::corp:<the_hash>:1122334455667788.

Vamos abrir o arquivo com o editor nano e corrigi-lo.

nano hashes_no_separator.txt

Altere o conteúdo do arquivo de: U4BE_AC149FD0318023832132BFB833521AAF8A631114317A4935

Para o seguinte, certificando-se de substituir <the_hash> pela string de hash original: labex::corp:U4BE_AC149FD0318023832132BFB833521AAF8A631114317A4935:1122334455667788

Pressione Ctrl+X, depois Y e Enter para salvar o arquivo e sair do nano.

Agora, execute o comando Hashcat novamente:

hashcat -m 5500 -a 0 hashes_no_separator.txt wordlist.txt

Com o formato corrigido, o Hashcat agora aceitará o hash e iniciará a sessão de quebra corretamente. Isso demonstra a importância de garantir que seus arquivos de hash estejam formatados corretamente para o modo de hash específico que você está usando.

Resumo

Neste laboratório, você aprendeu a diagnosticar e resolver cinco dos erros mais comuns encontrados ao usar o Hashcat.

Cobrimos:

  • Token length exception: Causada por hashes de comprimento incorreto para o modo especificado.
  • No hashes loaded: Resultado de uma incompatibilidade entre o formato do arquivo de hash e o modo de hash selecionado.
  • Device temperature abort: Um recurso de segurança de hardware que pode ser gerenciado com flags de controle de temperatura.
  • Line-length exception: Acionada por linhas de tamanho excessivo em wordlists ou arquivos de regras.
  • Separator not found: Ocorre quando um formato de hash requer um separador que está faltando no arquivo de hash.

Ao entender as causas desses erros e saber como corrigi-los, você pode usar o Hashcat de forma mais eficiente e evitar armadilhas comuns. A principal conclusão é sempre validar seus arquivos de entrada e garantir que você esteja usando as opções corretas para sua tarefa específica.