Compreender a Saída e o Status do John the Ripper

Kali LinuxBeginner
Pratique Agora

Introdução

John the Ripper é uma popular ferramenta de código aberto para quebrar senhas. Ao realizar auditorias de senhas ou tentativas de quebra, entender sua saída e status é crucial para monitorar o progresso, identificar senhas quebradas e solucionar problemas. Este laboratório irá guiá-lo através da interpretação das várias mensagens de saída do John the Ripper, verificando seu status de quebra em tempo real, visualizando os resultados de uma sessão de quebra, entendendo suas estatísticas de desempenho e registrando sua saída para análise posterior.

Interpretar Mensagens de Saída do John the Ripper

Nesta etapa, você aprenderá a entender as várias mensagens que o John the Ripper exibe durante uma sessão de quebra. Essas mensagens fornecem insights sobre seu progresso, o modo de quebra e quaisquer problemas encontrados.

Primeiro, vamos iniciar uma sessão simples de quebra usando uma wordlist. Usaremos o arquivo passwords.txt criado na configuração e uma pequena wordlist.txt.

Execute o seguinte comando no seu terminal:

john --wordlist=wordlist.txt passwords.txt

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

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts to the same type of crypt (sha512crypt, crypt(3) $6$)
Remaining 3 password hashes with no different salts
Press 'q' or Ctrl-C to abort, almost any other key for status
user1 (user1)
user2 (user2)
user3 (user3)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

Vamos detalhar as partes principais desta saída:

  • Using default input encoding: UTF-8: Indica a codificação de caracteres que o John está usando.
  • Loaded 3 password hashes...: Mostra quantos hashes foram carregados do arquivo de entrada.
  • Press 'q' or Ctrl-C to abort, almost any other key for status: Este é um prompt importante. Ele informa como interagir com o John durante uma sessão.
  • user1 (user1): Esta é uma senha quebrada. user1 é o nome de usuário (ou identificador do hash), e (user1) é a senha quebrada. O John exibirá cada senha quebrada à medida que as encontra.
  • 3g 0:00:00:00 DONE ...: Esta é a linha de resumo.
    • 3g: Número de hashes quebrados (3 tentativas).
    • 0:00:00:00 DONE: O tempo decorrido e que a sessão está completa.
    • 100.0%: Porcentagem do processo de quebra concluída.
    • 3.000g/s: Tentativas por segundo.
    • 18.00p/s: Senhas por segundo (número de senhas candidatas testadas).
    • 18.00c/s: Crypts por segundo (número de computações de hash).
    • 18.00C/s: Candidatos por segundo (número de senhas candidatas únicas geradas).
    • user1 user2 user3: As últimas senhas quebradas.
  • Session completed: Confirma que a sessão de quebra foi concluída.

Entender essas mensagens ajuda você a monitorar o progresso e os resultados de suas operações com o John the Ripper.

Verificar o Status da Quebra Durante uma Sessão

Nesta etapa, você aprenderá a verificar o status em tempo real de uma sessão de quebra do John the Ripper. Isso é particularmente útil para sessões de longa duração para monitorar o progresso sem interromper o processo.

Primeiro, vamos limpar o estado da sessão anterior para que o John comece do zero.

john --session=test_session --restore=NONE --wordlist=wordlist.txt passwords.txt --force-load-hashes

Agora, inicie uma nova sessão de quebra. Desta vez, usaremos uma wordlist um pouco maior para garantir que a sessão dure tempo suficiente para verificarmos seu status. Usaremos o arquivo passwords.txt e o arquivo wordlist.txt.

Execute o seguinte comando. Observe que estamos usando --session=test_session para dar um nome a esta sessão, o que é útil para restaurar ou verificar o status posteriormente.

john --session=test_session --wordlist=wordlist.txt passwords.txt

Enquanto o John estiver em execução (ele pode terminar rapidamente com a wordlist pequena, mas imagine que seja uma grande), abra uma nova aba do terminal (ou uma nova janela do terminal se você não estiver no ambiente LabEx). No novo terminal, você pode verificar o status da sessão em execução.

Para verificar o status, use a opção --status com o nome da sessão:

john --session=test_session --status

Você verá uma saída semelhante a esta (os números exatos variarão com base no progresso):

Session test_session (john)
Progress: 3/3 (100%)
Speed: 3.000g/s (words), 18.00p/s (passwords), 18.00c/s (crypts), 18.00C/s (candidates)
Remaining: 0:00:00:00
Cracked: 3

Esta saída fornece um instantâneo do progresso da sessão, incluindo o número de hashes quebrados, a velocidade de quebra e o tempo restante estimado.

Após verificar o status, você pode fechar a nova aba do terminal. A sessão original do John the Ripper continuará em execução até ser concluída.

Se a sessão já foi concluída, o comando --status indicará que a sessão foi finalizada.

Session test_session (john)
Session completed

Este recurso é inestimável para gerenciar operações de quebra de longa duração.

Visualizar Senhas Quebradas de uma Sessão

Após uma sessão do John the Ripper ser concluída, as senhas quebradas são salvas em um arquivo chamado john.pot (geralmente localizado em ~/.john/john.pot). Nesta etapa, você aprenderá a visualizar essas senhas quebradas.

Primeiro, certifique-se de ter um arquivo john.pot com senhas quebradas. Se você seguiu os passos anteriores, ele já deve existir. Caso contrário, execute o comando de quebra novamente:

john --wordlist=wordlist.txt passwords.txt

Assim que a sessão for concluída, você pode visualizar as senhas quebradas usando a opção --show. Esta opção instrui o John a exibir todas as senhas quebradas que ele armazenou para o arquivo de hash fornecido.

Execute o seguinte comando:

john --show passwords.txt

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

user1:user1

user2:user2

user3:user3

3 password hashes cracked, 0 left

A saída lista cada hash quebrado no formato username:password. A linha 3 password hashes cracked, 0 left resume os resultados.

O arquivo john.pot é um componente crucial do John the Ripper, pois armazena todas as senhas quebradas com sucesso. O John verifica automaticamente este arquivo antes de tentar quebrar um hash, evitando trabalho redundante. Você também pode inspecionar diretamente o arquivo john.pot usando cat:

cat ~/.john/john.pot

O conteúdo se parecerá com isto:

user1:user1
user2:user2
user3:user3

Esta etapa demonstra como recuperar e revisar a valiosa saída de seus esforços de quebra.

Compreender as Estatísticas do John the Ripper

O John the Ripper fornece estatísticas detalhadas sobre seu desempenho de quebra. Compreender essas estatísticas ajuda você a avaliar a eficiência de suas tentativas de quebra e comparar diferentes estratégias de quebra.

Vamos executar uma sessão de quebra novamente para gerar algumas estatísticas. Usaremos o mesmo comando de antes.

john --wordlist=wordlist.txt passwords.txt

Observe a linha de resumo final que aparece após a conclusão da sessão:

3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

Vamos reexaminar as principais métricas estatísticas:

  • 3g: Isso indica o número de "guesses" (tentativas) feitas, que corresponde ao número de hashes quebrados com sucesso neste contexto.
  • 0:00:00:00 DONE: O tempo total decorrido para a sessão. Para sessões curtas, pode mostrar 0.
  • 100.0%: A porcentagem do processo de quebra concluída.
  • 3.000g/s (guesses/s): A taxa na qual o John está fazendo tentativas por segundo. Esta é frequentemente a medida mais direta da velocidade de quebra.
  • 18.00p/s (passwords/s): O número de senhas candidatas testadas por segundo. Isso pode ser maior que g/s se vários hashes estiverem sendo testados contra a mesma senha candidata.
  • 18.00c/s (crypts/s): O número de computações de hash (operações criptográficas) realizadas por segundo. Esta é uma medida do poder computacional bruto que está sendo utilizado.
  • 18.00C/s (candidates/s): O número de senhas candidatas únicas geradas por segundo. Isso pode diferir de p/s se a mesma candidata for testada contra vários hashes.

Essas estatísticas são cruciais para:

  • Avaliação de Desempenho: Compreender a rapidez com que o John está quebrando senhas.
  • Utilização de Recursos: Avaliar quanta potência de CPU está sendo usada para computações de hash.
  • Comparação de Estratégias: Comparar a eficácia de diferentes wordlists ou modos de quebra.

Ao prestar atenção a esses números, você pode obter insights valiosos sobre seus esforços de auditoria de senhas.

Registrar a Saída do John the Ripper em um Arquivo

Para sessões de longa duração ou para fins de auditoria, é frequentemente benéfico registrar a saída do John the Ripper em um arquivo. Isso permite que você revise o progresso e os resultados posteriormente, sem precisar manter um terminal aberto.

Você pode redirecionar a saída padrão do John para um arquivo usando o redirecionamento padrão do shell (>).

Primeiro, vamos limpar quaisquer arquivos de sessão anteriores para garantir um novo começo.

john --session=log_session --restore=NONE --wordlist=wordlist.txt passwords.txt --force-load-hashes

Agora, execute o John the Ripper e redirecione sua saída para um arquivo chamado john_output.log em seu diretório ~/project.

john --session=log_session --wordlist=wordlist.txt passwords.txt > john_output.log

Observe que, após executar este comando, seu terminal parecerá não fazer nada. Isso ocorre porque toda a saída que normalmente seria exibida na tela agora está sendo escrita em john_output.log.

Assim que o comando terminar (o que será quase instantâneo com nossa pequena wordlist), você poderá visualizar o conteúdo do arquivo de log usando cat:

cat john_output.log

Você verá a saída completa da sessão do John the Ripper, idêntica ao que você teria visto na tela, mas agora armazenada no arquivo:

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts to the same type of crypt (sha512crypt, crypt(3) $6$)
Remaining 3 password hashes with no different salts
Press 'q' or Ctrl-C to abort, almost any other key for status
user1 (user1)
user2 (user2)
user3 (user3)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

Registrar a saída é uma boa prática para qualquer operação de linha de comando de longa duração ou crítica, fornecendo um registro persistente de eventos e resultados.

Resumo

Neste laboratório, você obteve uma compreensão abrangente de como interpretar a saída do John the Ripper e gerenciar suas sessões. Você aprendeu a decifrar as várias mensagens exibidas durante uma sessão de quebra, verificar o status em tempo real de uma sessão em execução e recuperar senhas quebradas do arquivo john.pot. Além disso, você explorou como entender as estatísticas de desempenho do John e como registrar sua saída em um arquivo para manutenção de registros persistente. Essas habilidades são fundamentais para usar efetivamente o John the Ripper para auditoria de senhas e testes de segurança.