Gerenciar Sessões e Retomadas do John the Ripper

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará os recursos essenciais do John the Ripper (JtR) para gerenciar sessões de quebra de senhas. O gerenciamento eficaz de sessões é crucial para tarefas de quebra de senhas de longa duração, permitindo pausar e retomar operações, recuperar-se de interrupções inesperadas e acompanhar seu progresso. Você aprenderá como iniciar uma sessão de quebra, pausá-la e retomá-la graciosamente, entenderá o papel dos arquivos de sessão e até mesmo recuperará uma sessão após uma falha simulada. Finalmente, você aprenderá como limpar arquivos de sessão antigos para manter um ambiente de trabalho organizado.

Iniciar uma Sessão de Quebra com John the Ripper

Nesta etapa, você iniciará uma sessão básica de quebra com o John the Ripper. Usaremos um hash MD5 simples e uma pequena wordlist para demonstrar o processo. O John the Ripper cria automaticamente um arquivo de sessão ao iniciar um processo de quebra, o que é essencial para gerenciar a sessão.

Primeiro, vamos criar um arquivo de wordlist simples chamado wordlist.txt no seu diretório ~/project.

echo -e "test\npassword\n123456\nadmin" > ~/project/wordlist.txt

Agora, inicie o John the Ripper para quebrar o arquivo passwords.txt usando o wordlist.txt. Usaremos a opção --session para dar um nome específico à nossa sessão, o que facilita o gerenciamento.

john --format=raw-md5 --wordlist=~/project/wordlist.txt --session=my_first_session ~/project/passwords.txt

Você deverá ver o John the Ripper iniciando o processo de quebra. Provavelmente ele encontrará a senha rapidamente, já que nossa wordlist é pequena e contém a senha correta.

Exemplo de saída:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

Após a conclusão da sessão, você pode visualizar as senhas quebradas usando a opção --show.

john --show ~/project/passwords.txt

Exemplo de saída:

user1:password

1 password hash cracked, 0 left

Pausar e Retomar uma Sessão de Quebra

Nesta etapa, você aprenderá como pausar uma sessão em andamento do John the Ripper e, em seguida, retomá-la. Isso é particularmente útil para tarefas de quebra de longa duração que você pode precisar interromper e continuar mais tarde.

Primeiro, vamos criar uma wordlist fictícia maior para garantir que o processo de quebra leve algum tempo, permitindo que a pausamos.

seq 1000000 | sed "s/$/password/" > ~/project/large_wordlist.txt

Agora, inicie uma nova sessão do John the Ripper usando esta wordlist grande. Chamaremos esta sessão de long_session.

john --format=raw-md5 --wordlist=~/project/large_wordlist.txt --session=long_session ~/project/passwords.txt

Assim que a quebra começar, pressione imediatamente Ctrl+C para pausar a sessão. O John the Ripper salvará seu estado atual no arquivo de sessão.

Exemplo de saída após pressionar Ctrl+C:

...
Press 'q' or Ctrl-C to abort, almost any other key for status
^C
Session aborted.

Para retomar a sessão, use a opção --restore com o nome da sessão.

john --restore=long_session

O John the Ripper continuará exatamente de onde parou. Você pode deixá-lo rodar até encontrar a senha ou pressionar Ctrl+C novamente para pausá-lo.

Exemplo de saída após retomar:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
...
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:35) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

Compreender os Arquivos de Sessão

Nesta etapa, você examinará os arquivos de sessão criados pelo John the Ripper. Esses arquivos armazenam o estado das suas sessões de quebra, permitindo pausar, retomar e recuperar.

O John the Ripper geralmente armazena os arquivos de sessão no diretório ~/.john. Vamos listar o conteúdo deste diretório para ver os arquivos de sessão que você criou.

ls -l ~/.john/

Você deverá ver arquivos como my_first_session.rec e long_session.rec. A extensão .rec indica um arquivo de recuperação (recovery file).

Exemplo de saída:

total 16
-rw------- 1 labex labex 8192 Oct 27 08:30 my_first_session.rec
-rw------- 1 labex labex 8192 Oct 27 08:35 long_session.rec

Você também pode visualizar o conteúdo de um arquivo de sessão, embora seja em grande parte dados binários. No entanto, você pode usar strings para extrair strings legíveis dele, o que pode mostrar algumas informações da sessão.

strings ~/.john/long_session.rec | head -n 10

Exemplo de saída (pode variar):

JtR session file
long_session
raw-md5
/home/labex/project/passwords.txt
/home/labex/project/large_wordlist.txt

Esses arquivos de sessão são cruciais para a capacidade do John the Ripper de gerenciar e recuperar processos de quebra.

Recuperar de uma Sessão Interrompida

Nesta etapa, você aprenderá como recuperar uma sessão do John the Ripper que pode ter sido interrompida inesperadamente. Isso é semelhante a retomar uma sessão pausada, pois o John the Ripper salva seu estado automaticamente periodicamente.

Primeiro, vamos simular uma interrupção. Inicie uma nova sessão, mas desta vez, vamos encerrar o processo abruptamente em vez de pausá-lo graciosamente.

john --format=raw-md5 --wordlist=~/project/large_wordlist.txt --session=crash_test ~/project/passwords.txt &

Note o & no final, que executa o comando em segundo plano. Isso nos permitirá encerrá-lo.
Agora, encontre o ID do processo (PID) do processo john.

pgrep john

Exemplo de saída (o PID variará):

12345

Agora, encerre o processo john usando seu PID. Substitua YOUR_PID pelo PID real que você encontrou.

kill YOUR_PID

Você pode ver uma mensagem como Terminated ou Killed. Isso simula uma interrupção abrupta.

Agora, tente restaurar a sessão crash_test. O John the Ripper deverá ser capaz de continuar de onde parou, mesmo após uma terminação abrupta.

john --restore=crash_test

Exemplo de saída:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
...
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:40) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

Isso demonstra as robustas capacidades de recuperação do John the Ripper, que são vitais para operações de quebra de longa duração.

Limpar Arquivos de Sessão Antigos

Nesta etapa, você aprenderá como limpar arquivos de sessão antigos do John the Ripper. Embora esses arquivos sejam úteis para recuperação, eles podem se acumular com o tempo, especialmente se você executar muitas sessões.

Para remover um arquivo de sessão específico, você pode usar a opção --remove com o nome da sessão. Vamos remover o arquivo my_first_session.

john --remove=my_first_session

Você será solicitado a confirmar a remoção. Digite y e pressione Enter.

Exemplo de saída:

Remove session file ~/.john/my_first_session.rec? y

Agora, verifique se o arquivo foi removido listando novamente o conteúdo do diretório ~/.john.

ls -l ~/.john/

Você não deverá mais ver my_first_session.rec.

Exemplo de saída:

total 16
-rw------- 1 labex labex 8192 Oct 27 08:35 long_session.rec
-rw------- 1 labex labex 8192 Oct 27 08:40 crash_test.rec

Você também pode excluir manualmente os arquivos .rec se preferir, mas usar john --remove é a maneira recomendada, pois garante uma limpeza adequada.

rm ~/.john/long_session.rec
rm ~/.john/crash_test.rec

Finalmente, verifique se todos os arquivos de sessão foram removidos.

ls -l ~/.john/

Exemplo de saída:

total 0

Manter seus arquivos de sessão organizados ajuda a gerenciar suas tarefas de quebra de forma eficiente.

Resumo

Neste laboratório, você adquiriu experiência prática no gerenciamento de sessões de quebra do John the Ripper. Você aprendeu como iniciar uma sessão, pausá-la e retomá-la efetivamente, e compreendeu o papel crítico dos arquivos de sessão na manutenção do progresso da quebra. Além disso, você explorou como recuperar uma sessão de uma falha inesperada, destacando a resiliência do John the Ripper. Finalmente, você praticou a limpeza de arquivos de sessão antigos para manter seu ambiente de trabalho organizado. Essas habilidades são fundamentais para qualquer pessoa que realize tarefas de auditoria ou quebra de senhas de longa duração com o John the Ripper.