Quebrar Senhas com o Modo de Crack Único

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará o "modo de crack único" (single crack mode) do John the Ripper, uma poderosa ferramenta de quebra de senhas. O modo de crack único é particularmente útil quando você tem uma lista de nomes de usuário e deseja tentar quebrar suas senhas usando informações derivadas dos próprios nomes de usuário, como permutações ou variações comuns. Você aprenderá a preparar um arquivo de hash adequado para este modo, executar o John the Ripper, observar seu processo de quebra e entender os cenários específicos em que o modo de crack único é mais eficaz, bem como suas limitações. Esta experiência prática fornecerá a você habilidades práticas em segurança e auditoria de senhas.

Preparar um Arquivo de Hash com Nomes de Usuário

Nesta etapa, você preparará um arquivo de hash que o John the Ripper pode usar no modo de crack único (single crack mode). O modo de crack único utiliza informações do próprio nome de usuário para gerar senhas potenciais. Para que isso funcione efetivamente, seu arquivo de hash deve conter nomes de usuário.

Primeiro, certifique-se de que você está no diretório do seu projeto.

cd ~/project

Em seguida, vamos criar um arquivo de senha simples chamado my_hashes.txt com algumas entradas. Usaremos um hash MD5 conhecido para a senha "password" (5f4dcc3b5aa765d61d8327deb882cf99) para fins de demonstração.

echo "user1:5f4dcc3b5aa765d61d8327deb882cf99" > my_hashes.txt
echo "john:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "mary:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "testuser:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "admin:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt

Você pode verificar o conteúdo do arquivo usando o comando cat:

cat my_hashes.txt

Saída esperada:

user1:5f4dcc3b5aa765d61d8327deb882cf99
john:5f4dcc3b5aa765d61d8327deb882cf99
mary:5f4dcc3b5aa765d61d8327deb882cf99
testuser:5f4dcc3b5aa765d61d8327deb882cf99
admin:5f4dcc3b5aa765d61d8327deb882cf99

Este arquivo agora contém nomes de usuário e seus respectivos hashes de senha, prontos para o modo de crack único do John the Ripper.

Executar o John the Ripper no Modo de Crack Único

Nesta etapa, você executará o John the Ripper usando o modo de crack único contra o arquivo de hash que você preparou. O John tentará quebrar as senhas derivando senhas potenciais dos nomes de usuário.

Para executar o John the Ripper no modo de crack único, use a opção --single seguida pelo caminho para o seu arquivo de hash.

john --single my_hashes.txt

O John the Ripper começará a processar os hashes. Como a senha "password" é uma palavra comum e os nomes de usuário são simples, o John poderá quebrar alguns deles rapidamente. A saída mostrará as senhas quebradas.

Exemplo de saída:

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
password         (john)
password         (mary)
password         (testuser)
password         (admin)
5g 0:00:00:00 DONE (2023-10-27 08:30) 100% ...
Session completed.

Após o John terminar, você pode visualizar as senhas quebradas que foram salvas no arquivo pot do John.

john --show my_hashes.txt

Saída esperada:

user1:password

john:password

mary:password

testuser:password

admin:password

5 password hashes cracked, 0 left

Este comando exibe todas as senhas que o John quebrou com sucesso do arquivo my_hashes.txt.

Observar o Comportamento do Modo de Crack Único

Nesta etapa, você observará como o modo de crack único do John the Ripper se comporta e que tipo de candidatos a senha ele gera. O modo de crack único é único porque não usa uma lista de palavras (wordlist) ou um ataque de força bruta (brute-force) diretamente. Em vez disso, ele usa o nome de usuário (ou o campo GECOS, se disponível) como base para gerar suposições de senha.

Vamos limpar o arquivo pot do John para garantir uma nova execução para observação. Isso normalmente não é feito em um cenário real, mas ajuda para demonstração.

john --session=clear --format=Raw-MD5 --pot=/home/labex/.john/john.pot

Agora, execute o John novamente no modo único, mas desta vez, vamos prestar mais atenção à saída e como ele processa cada entrada.

john --single my_hashes.txt

Enquanto o John executa, você notará que ele tenta variações do nome de usuário. Por exemplo, para john, ele pode tentar john, John, JOHN, john1, john123, johnny, j0hn, etc. As variações exatas dependem das regras internas do John e do arquivo de configuração john.conf.

A principal conclusão é que o modo de crack único é altamente eficiente para quebrar senhas que são variações simples do nome de usuário. É uma verificação rápida antes de recorrer a métodos mais intensivos em recursos, como ataques de dicionário ou força bruta.

Você também pode inspecionar o arquivo de configuração do John para entender as regras que ele usa para o modo único. Embora não o modifiquemos, saber sua localização é útil.

ls -l /etc/john/john.conf

Saída esperada:

-rw-r--r-- 1 root root 12345 Oct 27 08:00 /etc/john/john.conf

(O tamanho do arquivo e a data podem variar)

Este arquivo contém os conjuntos de regras para o modo de crack único, entre outros.

Compreender as Limitações do Modo de Crack Único

Nesta etapa, você compreenderá as limitações do modo de crack único do John the Ripper. Embora poderoso para certos cenários, não é uma solução universal para todas as necessidades de quebra de senha.

O modo de crack único baseia-se principalmente em permutações e variações do nome de usuário (e, às vezes, do campo GECOS de /etc/passwd). Isso significa:

  1. Escopo Limitado: Ele tentará apenas senhas que são diretamente deriváveis do nome de usuário. Se uma senha for "apple" e o nome de usuário for "user1", o modo de crack único provavelmente falhará porque "apple" não tem relação direta com "user1".
  2. Sem Listas de Palavras Externas: Ao contrário do modo de ataque de dicionário, o modo de crack único não usa uma lista de palavras externa. Isso o torna rápido, mas também limita sua capacidade de quebrar senhas que são palavras comuns não relacionadas ao nome de usuário.
  3. Sem Força Bruta: Ele não executa um ataque completo de força bruta, que tentaria todas as combinações possíveis de caracteres. Isso significa que senhas complexas e aleatórias têm pouca probabilidade de serem quebradas por este modo.
  4. Dependência de Nomes de Usuário: Sua eficácia está diretamente ligada à qualidade e relevância dos nomes de usuário. Se os nomes de usuário forem genéricos (por exemplo, user, admin), os candidatos a senha gerados podem ser menos eficazes.

Para demonstrar essa limitação, vamos adicionar um hash para uma senha que não está relacionada ao nome de usuário. Adicionaremos randomuser:e10adc3949ba59abbe56e057f20f883e, onde e10adc3949ba59abbe56e057f20f883e é o hash MD5 para 123456.

echo "randomuser:e10adc3949ba59abbe56e057f20f883e" >> my_hashes.txt
cat my_hashes.txt

Agora, execute o John no modo único novamente:

john --single my_hashes.txt

Você observará que a senha de randomuser (123456) não é quebrada, porque 123456 não é uma derivação de randomuser.

Saída esperada (note que randomuser não é quebrado):

Using default input encoding: UTF-8
Loaded 6 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
password         (john)
password         (mary)
password         (testuser)
password         (admin)
5g 0:00:00:00 DONE (2023-10-27 08:35) 100% ...
Session completed.

Isso ilustra claramente que o modo de crack único é eficaz apenas quando as senhas são variações simples do nome de usuário.

Comparar o Modo de Crack Único com Outros Modos

Nesta etapa final, você comparará brevemente o modo de crack único com outros modos comuns de cracking no John the Ripper, como o modo de lista de palavras (wordlist mode) e o modo de força bruta (brute-force mode). Compreender essas diferenças é crucial para escolher a ferramenta certa para o trabalho.

  1. Modo de Crack Único (--single):

    • Método: Gera candidatos a senha com base no nome de usuário (e campo GECOS).
    • Caso de Uso: Ideal para verificações rápidas contra senhas que são variações simples de nomes de usuário. Muito rápido.
    • Limitações: Escopo limitado; não quebrará senhas não relacionadas ao nome de usuário.
  2. Modo de Lista de Palavras (--wordlist=FILE):

    • Método: Tenta senhas de um arquivo de dicionário ou lista de palavras fornecido. Pode ser combinado com regras (--rules) para permutações.
    • Caso de Uso: Mais comum e eficaz para quebrar senhas que são palavras comuns, frases ou combinações encontradas em dicionários.
    • Limitações: Tão bom quanto a lista de palavras; não quebrará senhas que não estão presentes na lista ou em suas permutações.
  3. Modo Incremental (Força Bruta) (--incremental):

    • Método: Tenta sistematicamente todas as combinações possíveis de caracteres dentro de um charset e comprimento definidos.
    • Caso de Uso: Último recurso para quebrar senhas complexas não encontradas por outros métodos. Garante encontrar a senha se tempo suficiente for dado.
    • Limitações: Extremamente demorado, especialmente para senhas mais longas ou conjuntos de caracteres maiores. Pode levar dias, meses ou até anos.

Vamos demonstrar a quebra da senha de randomuser (123456) usando o modo de lista de palavras. Primeiro, crie uma lista de palavras simples contendo "123456".

echo "123456" > my_wordlist.txt

Agora, execute o John no modo de lista de palavras:

john --wordlist=my_wordlist.txt my_hashes.txt

Saída esperada:

Using default input encoding: UTF-8
Loaded 6 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (randomuser)
1g 0:00:00:00 DONE (2023-10-27 08:40) 100% ...
Session completed.

Como você pode ver, a senha de randomuser foi quebrada usando a lista de palavras. Isso destaca que diferentes modos de cracking são adequados para diferentes tipos de senhas. O modo de crack único é um bom primeiro passo, mas muitas vezes precisa ser seguido pelos modos de lista de palavras ou incremental para um cracking mais abrangente.

Finalmente, limpe os arquivos criados:

rm my_hashes.txt my_wordlist.txt

Resumo

Neste laboratório, você aprendeu com sucesso como usar o modo de crack único do John the Ripper. Você preparou um arquivo de hash com nomes de usuário, executou o John no modo de crack único e observou seu comportamento ao quebrar senhas derivadas de nomes de usuário. Você também compreendeu as limitações do modo de crack único, percebendo que ele é mais eficaz para padrões de senha específicos e não uma solução abrangente. Finalmente, você comparou o modo de crack único com outros modos comuns do John the Ripper, como lista de palavras e incremental, destacando quando cada modo é mais apropriado. Essa experiência prática aprimora sua compreensão das técnicas de auditoria de segurança de senhas.