Criar uma Regra Personalizada no Hashcat

Kali LinuxBeginner
Pratique Agora

Introdução

Hashcat é uma ferramenta poderosa e versátil para recuperação de senhas. Uma de suas funcionalidades mais eficazes é o ataque baseado em regras (rule-based attack), que permite realizar manipulações em uma lista de palavras (wordlist) para criar um vasto número de candidatos a senhas. Em vez de usar arquivos de regras pré-fabricados, você pode criar seus próprios arquivos de regras personalizados, adaptados a um alvo específico.

Neste laboratório, você aprenderá os fundamentos da sintaxe de regras do Hashcat e criará seu próprio arquivo de regras personalizado do zero. Você escreverá regras para capitalizar a primeira letra de uma palavra e anexar um ano, e então usará este arquivo de regras personalizado em um ataque de quebra de senha de exemplo.

Aprenda a Sintaxe Básica de Regras como Anexar '$' e Preceder '^'

Nesta etapa, você aprenderá sobre a sintaxe básica para regras do Hashcat. Regras são comandos simples, de um único caractere, que dizem ao Hashcat como manipular uma palavra da sua lista de palavras (wordlist). Duas das regras mais fundamentais são para preceder e anexar caracteres.

  • ^x: Precede o caractere x ao início da palavra.
  • $x: Anexa o caractere x ao final da palavra.

Para ver como essas regras funcionam sem executar um ataque completo, podemos usar a opção --stdout. Isso imprimirá a saída das manipulações de regras diretamente no terminal.

Primeiro, vamos testar a regra de anexar. Criaremos um arquivo de regras temporário que anexa o número 1 a cada palavra.

echo '$1' > temp_rule.txt

Agora, execute o Hashcat com esta regra contra o nosso wordlist.txt. O sinalizador --force é usado para fazer o Hashcat rodar mesmo que detecte um ambiente não suportado, como uma VM.

hashcat --force --stdout wordlist.txt -r temp_rule.txt

Você deverá ver a palavra da sua lista com o 1 anexado a ela:

password1

Em seguida, vamos testar a regra de preceder. Criaremos uma regra para preceder o caractere A.

echo '^A' > temp_rule.txt

Execute o Hashcat novamente com esta nova regra:

hashcat --force --stdout wordlist.txt -r temp_rule.txt

A saída agora mostrará o caractere A no início da palavra:

Apassword

Sinta-se à vontade para experimentar outros caracteres para solidificar seu entendimento. Quando terminar, você pode remover o arquivo temporário.

rm temp_rule.txt

Criar um Novo Arquivo de Regras Personalizado

Nesta etapa, você criará um novo arquivo vazio que conterá todas as regras personalizadas para o nosso ataque. É prática padrão dar aos arquivos de regras a extensão .rule para clareza.

Criaremos um arquivo chamado labex.rule no seu diretório de trabalho atual, ~/project. Você pode criar um arquivo vazio facilmente usando o comando touch.

Execute o seguinte comando no seu terminal:

touch labex.rule

Para confirmar que o arquivo foi criado com sucesso, você pode listar o conteúdo do diretório usando o comando ls.

ls

Você deverá ver labex.rule listado na saída, juntamente com os arquivos hashes.txt e wordlist.txt.

hashes.txt  labex.rule  wordlist.txt

Agora você tem um arquivo dedicado pronto para suas regras personalizadas.

Adicionar uma Regra para Capitalizar a Primeira Letra 'c'

Nesta etapa, você adicionará sua primeira regra ao arquivo labex.rule. Um padrão de senha muito comum é capitalizar a primeira letra de uma palavra. O Hashcat tem uma regra específica para isso:

  • c: Capitaliza a primeira letra da palavra e torna todas as outras letras minúsculas.

Adicionaremos esta regra ao nosso arquivo labex.rule. O comando echo combinado com um único redirecionamento > é uma maneira rápida de escrever conteúdo em um arquivo, sobrescrevendo qualquer coisa que estivesse lá anteriormente.

echo 'c' > labex.rule

Agora, vamos testar nosso novo arquivo de regras para ver seu efeito. Usaremos a opção --stdout novamente para pré-visualizar a saída.

hashcat --force --stdout wordlist.txt -r labex.rule

A saída deve ser a palavra password com a primeira letra capitalizada, conforme especificado pela regra c.

Password

Você criou e testou com sucesso sua primeira regra personalizada.

Adicionar uma Regra para Anexar um Ano ' $2 $0 $2 $4'

Nesta etapa, você aprimorará sua regra para torná-la mais complexa. Você pode combinar vários comandos de regra em uma única linha para criar candidatos a senha mais específicos. Modificaremos nossa regra para não apenas capitalizar a primeira letra, mas também anexar um ano, por exemplo, 2024.

Para anexar um caractere específico, você usa o comando $ seguido pelo caractere. Por exemplo, $2 anexa o dígito 2. Para construir a string 2024, precisamos anexar 2, depois 0, depois 2, depois 4.

A regra combinada ficará assim: c $2 $0 $2 $4. Isso diz ao Hashcat para primeiro realizar a capitalização (c) e, em seguida, anexar os caracteres especificados em ordem.

Vamos atualizar o arquivo labex.rule com esta nova e mais poderosa regra.

echo 'c $2 $0 $2 $4' > labex.rule

Agora, teste o arquivo de regras atualizado para ver o resultado dos comandos combinados.

hashcat --force --stdout wordlist.txt -r labex.rule

A saída agora deve ser a palavra capitalizada seguida pelo ano 2024.

Password2024

Isso demonstra como você pode encadear regras para criar padrões de senha complexos e direcionados.

Testar o Arquivo de Regra Personalizada em um Ataque de Amostra

Nesta etapa, você usará seu arquivo de regra personalizado completo, labex.rule, para realizar um ataque real de quebra de senha. Teremos como alvo o hash MD5 de amostra fornecido no arquivo hashes.txt.

O comando para o ataque especificará o tipo de hash, o modo de ataque, o arquivo de hash, a lista de palavras e, finalmente, nosso arquivo de regra personalizado.

  • -m 0: Especifica que o tipo de hash é MD5.
  • -a 0: Especifica que o modo de ataque é um ataque "Straight" (direto) ou de dicionário.
  • hashes.txt: O arquivo que contém o(s) hash(es) a serem quebrados.
  • wordlist.txt: O arquivo de dicionário a ser usado como base.
  • -r labex.rule: Especifica o arquivo de regra personalizado a ser aplicado à lista de palavras.

Execute o seguinte comando para iniciar o ataque:

hashcat --force -m 0 -a 0 hashes.txt wordlist.txt -r labex.rule

O Hashcat iniciará, aplicará a regra c $2 $0 $2 $4 à palavra password, gerará Password2024, fará o hash dela e a comparará com o hash em hashes.txt. Ele encontrará uma correspondência e relatará a senha quebrada.

Após a conclusão do ataque (que deve ser muito rápida), você pode visualizar as senhas quebradas usando a opção --show.

hashcat --force -m 0 --show hashes.txt

A saída exibirá o hash seguido por sua senha em texto simples quebrada.

a915550249347678553a332349443648:Password2024

Parabéns, você criou com sucesso uma regra personalizada e a usou para quebrar uma senha!

Resumo

Neste laboratório, você aprendeu as habilidades essenciais para criar regras personalizadas no Hashcat. Você começou entendendo a sintaxe básica para prefixar (^) e anexar ($) caracteres. Em seguida, criou seu próprio arquivo de regras, labex.rule, e o preencheu com regras progressivamente mais complexas.

Você escreveu com sucesso uma regra para capitalizar a primeira letra de uma palavra (c) e, em seguida, a aprimorou encadeando comandos para anexar um ano ($2 $0 $2 $4). Finalmente, você aplicou essa regra personalizada em um cenário de ataque prático, quebrando com sucesso um hash MD5.

Este conhecimento é um trampolim para dominar o poderoso motor de regras do Hashcat, permitindo que você crie estratégias de quebra de senha altamente direcionadas e eficientes.