Quebrar Senhas Simples com Modo Lista de Palavras

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará uma técnica fundamental em cibersegurança: a quebra de senhas (password cracking). Você usará o John the Ripper (JtR), uma ferramenta popular e poderosa de auditoria de segurança de senhas de código aberto. Especificamente, você aprenderá a realizar um ataque de "lista de palavras" (wordlist attack), que envolve o uso de uma lista predefinida de senhas potenciais para adivinhar a correta contra um hash de senha armazenado.

Este exercício prático irá guiá-lo através da criação de um hash de senha de exemplo, obtenção de uma lista de palavras, execução do John the Ripper para quebrar a senha e, finalmente, visualização e salvamento dos resultados. Compreender este processo é crucial tanto para administradores de sistemas que desejam testar a força das senhas de seus usuários quanto para aspirantes a profissionais de segurança.

Ao final deste laboratório, você será capaz de:

  • Criar um arquivo contendo hashes de senhas.
  • Usar uma lista de palavras com o John the Ripper.
  • Quebrar uma senha simples e visualizar o resultado.

Criar um Arquivo de Hash de Senha de Exemplo

Nesta etapa, você criará um usuário de exemplo e extrairá o hash de sua senha para um arquivo. Ferramentas de quebra de senha não funcionam em senhas de texto puro; elas funcionam em suas representações hasheadas, que são tipicamente armazenadas em arquivos do sistema como /etc/shadow no Linux.

Primeiro, vamos criar um novo usuário chamado testuser com uma senha simples, password123. Usaremos o openssl para gerar o hash da senha e o useradd para criar o usuário.

Execute o seguinte comando no seu terminal:

sudo useradd -m -p $(openssl passwd -1 password123) testuser

Em seguida, precisamos extrair a linha contendo o hash da senha para testuser do arquivo /etc/shadow. Usaremos o comando grep para encontrar a linha e redirecionaremos a saída para um novo arquivo chamado hashes.txt dentro do seu diretório atual (~/project).

sudo grep testuser /etc/shadow > ~/project/hashes.txt

Agora, vamos visualizar o conteúdo do arquivo hashes.txt para confirmar que ele contém o hash do usuário.

cat hashes.txt

Você deverá ver uma saída semelhante a esta. A longa string de caracteres entre os primeiros e segundos dois pontos é a senha hasheada.

testuser:$1$jE/Ipl8J$z4JgUjZfH.yN.CgCjWn.H.:19782:0:99999:7:::

Você agora criou com sucesso um arquivo alvo para o nosso exercício de quebra de senha.

Baixar uma Lista de Palavras Comum

Nesta etapa, você criará uma lista de palavras (wordlist). Uma lista de palavras é simplesmente um arquivo de texto onde cada linha contém uma senha potencial. O John the Ripper lerá este arquivo e tentará cada senha contra o hash alvo. Para este laboratório, em vez de baixar uma lista de palavras grande e pré-existente, criaremos a nossa própria lista pequena e personalizada. Isso nos permite controlar o conteúdo e garantir que a senha correta esteja incluída para uma quebra bem-sucedida.

Vamos criar um arquivo chamado wordlist.txt e adicionar algumas senhas comuns a ele, incluindo a que definimos para testuser.

Primeiro, crie o arquivo e adicione password123 a ele:

echo "password123" > ~/project/wordlist.txt

Agora, vamos anexar mais algumas senhas comuns ao mesmo arquivo. Usamos >> para anexar, que adiciona ao arquivo sem sobrescrevê-lo.

echo "123456" >> ~/project/wordlist.txt
echo "qwerty" >> ~/project/wordlist.txt
echo "admin" >> ~/project/wordlist.txt

Vamos verificar o conteúdo da nossa nova lista de palavras.

cat wordlist.txt

Seu terminal deverá exibir o seguinte conteúdo:

password123
123456
qwerty
admin

Agora você tem uma lista de palavras pronta para ser usada com o John the Ripper.

Executar o John the Ripper no Modo Wordlist

Nesta etapa, você usará o John the Ripper para quebrar o hash da senha usando a lista de palavras que você criou. A sintaxe para executar o JtR no modo wordlist é direta. Você precisa especificar o arquivo da lista de palavras e o arquivo que contém os hashes.

O formato do comando é john --wordlist=<caminho_para_wordlist> <caminho_para_arquivo_de_hash>.

Agora, execute o comando no seu terminal, apontando o JtR para seus arquivos wordlist.txt e hashes.txt.

john --wordlist=wordlist.txt hashes.txt

O John the Ripper começará o processamento. Ele carregará o hash e, em seguida, tentará cada senha da sua lista de palavras. Como nossa senha está na lista, o processo será muito rápido. Você verá uma saída semelhante à seguinte:

Using default input encoding: UTF-8
Loaded 1 password hash (MD5-based crypt [MD5_body])
Cost 1 (algorithm [1:MD5 2:SHA256 3:SHA512] of 3) is 1 (MD5)
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s admin..password123
Session completed

A linha password123 (testuser) indica que o JtR quebrou a senha com sucesso. Ele também armazena esse resultado em um arquivo chamado "pot file" (plain old text), tipicamente localizado em ~/.john/john.pot, para que não precise quebrar senhas conhecidas novamente.

Visualizar Senhas Quebradas

Nesta etapa, você aprenderá como visualizar as senhas que o John the Ripper já quebrou. Uma vez que uma senha foi quebrada, o JtR a salva em seu arquivo pot. Se você tentar executar o mesmo comando de quebra novamente, o JtR relatará "No password hashes left to crack" (Nenhum hash de senha restante para quebrar) porque ele já o resolveu.

Para exibir as senhas quebradas para um determinado arquivo de hashes, você usa a opção --show.

Execute o seguinte comando para ver a senha quebrada para hashes.txt:

john --show hashes.txt

O comando verificará o arquivo pot e exibirá quaisquer senhas quebradas associadas aos hashes em hashes.txt. A saída será semelhante a esta:

testuser:password123:19782:0:99999:7:::
1 password hash cracked, 0 left

O formato da saída é username:password:other_shadow_file_fields. Isso confirma que a senha para testuser é password123. Este comando é muito útil para recuperar rapidamente os resultados de uma sessão de quebra sem ter que analisar o arquivo pot manualmente.

Salvar Senhas Quebradas em um Arquivo

Nesta etapa, você salvará a senha quebrada em um arquivo separado. Esta é uma prática comum em testes de penetração e auditoria de segurança para fins de relatórios. Você pode conseguir isso facilmente redirecionando a saída do comando john --show para um arquivo.

Vamos salvar os resultados em um arquivo chamado cracked.txt.

john --show hashes.txt > cracked.txt

Este comando executa john --show hashes.txt como antes, mas em vez de imprimir o resultado no terminal, o operador > redireciona a saída e a salva no arquivo cracked.txt. Se o arquivo não existir, ele será criado. Se existir, ele será sobrescrito.

Para verificar se a saída foi salva corretamente, você pode exibir o conteúdo do novo arquivo usando o comando cat.

cat cracked.txt

O terminal exibirá o conteúdo do arquivo, que deve ser idêntico à saída que você viu na etapa anterior:

testuser:password123:19782:0:99999:7:::

1 password hash cracked, 0 left

Agora você quebrou com sucesso uma senha e salvou o resultado em um arquivo para documentação.

Resumo

Parabéns por completar este laboratório! Você realizou com sucesso um ataque básico de quebra de senha baseado em lista de palavras usando o John the Ripper.

Neste laboratório, você aprendeu a:

  • Criar um arquivo de hash de senha de exemplo a partir do sistema.
  • Criar uma lista de palavras personalizada contendo senhas potenciais.
  • Executar o John the Ripper no modo de lista de palavras para quebrar um hash de senha.
  • Usar a opção --show para visualizar senhas já quebradas.
  • Redirecionar a saída do comando para salvar suas descobertas em um arquivo.

Este exercício demonstra com que facilidade senhas simples e comuns podem ser comprometidas. Ele destaca a importância crítica de usar senhas fortes, complexas e exclusivas para proteger sistemas e dados. As habilidades que você aprendeu são uma parte fundamental da auditoria de segurança e testes de penetração.