Use Regras para Aprimorar um Ataque de Dicionário

Kali LinuxBeginner
Pratique Agora

Introdução

Um ataque de dicionário é um método de invadir um sistema protegido por senha, inserindo sistematicamente cada palavra de uma lista (um dicionário) como senha. No entanto, essa abordagem básica geralmente falha porque os usuários raramente usam palavras simples de dicionário como senhas. Eles frequentemente adicionam números, símbolos ou alteram a capitalização para atender aos requisitos de complexidade.

É aqui que as "regras de mangling" (regras de modificação) se tornam incrivelmente poderosas. As regras de mangling são um conjunto de instruções que transformam as palavras do seu dicionário antes que elas sejam testadas. Por exemplo, uma regra pode anexar um número, capitalizar a primeira letra ou substituir letras por símbolos (como 'a' por '@').

Neste laboratório, você usará a popular ferramenta de quebra de senhas, John the Ripper (JtR), para ver isso em ação. Primeiro, você tentará um ataque de dicionário padrão e verá que ele falha. Em seguida, você aplicará um conjunto de regras de mangling para aprimorar o ataque e quebrar com sucesso uma senha mais complexa.

Compreender o Poder das Regras de Mangling

Nesta etapa, você primeiro realizará um ataque de dicionário padrão para ver suas limitações. Preparamos um arquivo chamado shadow.txt que contém a senha hasheada de um usuário, e um arquivo wordlist.txt contendo uma palavra base potencial para a senha.

Vamos executar o John the Ripper com nossa lista de palavras contra o arquivo de hash. Este comando diz ao john para tentar cada palavra de wordlist.txt como senha.

john --wordlist=wordlist.txt shadow.txt

Você verá uma saída semelhante a esta, indicando que o ataque está em execução.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:00 DONE (2023-10-27 10:30) 0g/s 1845Kp/s 1845Kc/s 1845KC/s secdec..secret
Session completed

Observe a mensagem final: "Session completed". O John the Ripper tentou a palavra "secret" e suas variações comuns, mas não conseguiu quebrar a senha. Isso ocorre porque a senha real é mais complexa do que uma simples palavra de dicionário. Isso demonstra a necessidade de uma técnica mais avançada.

Localizar os Arquivos de Regras Integrados no Diretório /rules/

Nesta etapa, exploraremos onde o John the Ripper armazena suas poderosas regras de mangling. Na maioria dos sistemas Linux, incluindo este, as regras não estão em um diretório /rules/ separado, mas são definidas dentro do arquivo de configuração principal, john.conf.

Vamos listar o conteúdo do diretório /etc/john/ para encontrar este arquivo de configuração.

ls -l /etc/john/

Você deverá ver o arquivo john.conf na saída.

total 148
-rw-r--r-- 1 root root 148233 Jan 20  2022 john.conf

Este arquivo john.conf contém vários conjuntos de regras pré-definidos, como KoreLogic, best64 e all. Esses conjuntos de regras são coleções de instruções de mangling individuais que podem ser aplicadas a um ataque de dicionário. Na próxima etapa, examinaremos um desses conjuntos de regras mais de perto.

Selecionar um Arquivo de Regras Comum como best64.rule

Nesta etapa, você examinará um conjunto específico de regras. Para sua conveniência, já extraímos um conjunto de regras popular e eficaz, best64, de john.conf e o salvamos como best64.rule em seu diretório de projeto atual (~/project).

Vamos inspecionar as primeiras 10 linhas deste arquivo para ter uma ideia de como as regras se parecem. Use o comando head:

head -n 10 best64.rule

Você verá uma saída semelhante a esta:

#
## best64.rule, a selection of the best 64 rules from the over 14,000
## rules in all.rule.
#
## Rule syntax:
## http://www.openwall.com/john/doc/RULES.shtml
#
## The following rules are commented out because they are slow.
#
:
l
u

As linhas que começam com # são comentários. As linhas de caractere único como :, l e u são regras reais.

  • : é uma regra no-op (sem operação), o que significa "tentar a palavra como está".
  • l converte a palavra para minúsculas.
  • u converte a palavra para maiúsculas.

Mais adiante no arquivo, você encontraria regras mais complexas como c (capitalizar a primeira letra) e $1 (anexar o dígito '1'). Essas transformações simples aumentam dramaticamente o número de candidatos a senha.

Aplicar um Arquivo de Regras a um Ataque de Dicionário com o Flag -r

Agora é hora de liberar o poder das regras de mangling. Nesta etapa, você executará o ataque de dicionário novamente, mas desta vez instruirá o John the Ripper a usar o arquivo best64.rule.

Você pode fazer isso adicionando o flag -r (abreviação de --rules) ao comando. Isso diz ao john para aplicar todas as regras no arquivo especificado a cada palavra em wordlist.txt.

Execute o seguinte comando em seu terminal:

john --wordlist=wordlist.txt -r=./best64.rule shadow.txt

Desta vez, o ataque deverá ser bem-sucedido muito rapidamente. A saída será diferente.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Secret123        (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:35) 10.00g/s 61538p/s 61538c/s 61538C/s Secret12..Secret123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Sucesso! A linha Secret123 (testuser) indica que a senha foi quebrada. O John the Ripper encontrou a senha correta aplicando regras de best64.rule à palavra "secret".

Comparar Resultados de Ataque com e sem Regras

Nesta etapa final, você visualizará formalmente a senha quebrada e refletirá sobre a diferença que as regras fizeram.

Embora a senha tenha sido exibida na saída da etapa anterior, a maneira padrão de visualizar todas as senhas quebradas para um determinado arquivo de hash é com o flag --show.

Execute o seguinte comando:

john --show shadow.txt

Este comando exibirá todas as senhas que o John conseguiu quebrar para o arquivo shadow.txt.

testuser:Secret123:17119:0:99999:7:::

1 password hash cracked, 0 left

A saída mostra claramente testuser:Secret123. Isso confirma a senha quebrada.

Ao comparar os resultados, a conclusão é clara:

  • Sem Regras (Etapa 1): O ataque falhou porque "secret" não era a senha.
  • Com Regras (Etapa 4): O ataque foi bem-sucedido. O John pegou a palavra "secret", aplicou uma regra de capitalização para obter "Secret", e depois uma regra de anexar número para obter "Secret123", que foi uma correspondência.

Isso demonstra que as regras de mangling não são apenas um recurso útil; elas são essenciais para tornar os ataques de dicionário eficazes contra hábitos de senha do mundo real.

Resumo

Neste laboratório, você experimentou a diferença prática entre um ataque de dicionário simples e um aprimorado com regras.

Você aprendeu a:

  • Executar um ataque de dicionário básico com o John the Ripper e ver suas limitações.
  • Compreender o conceito de regras de mangling e localizar onde elas são armazenadas.
  • Examinar a estrutura de um arquivo de regras.
  • Aplicar um conjunto de regras a um ataque de dicionário usando o flag -r para melhorar significativamente sua eficácia.
  • Visualizar as senhas quebradas e confirmar o sucesso do ataque baseado em regras.

Ao transformar palavras simples de dicionário em milhares de variações potenciais, as regras de mangling são uma ferramenta fundamental no kit de ferramentas de qualquer auditor de senhas ou profissional de segurança.