John the Ripper para Cenários de Teste de Penetração

Kali LinuxBeginner
Pratique Agora

Introdução

Bem-vindo a este laboratório sobre o uso do John the Ripper (JtR) em cenários de testes de penetração. John the Ripper é uma ferramenta poderosa e popular de código aberto para quebra de senhas. Para um pentester, é uma utilidade essencial para identificar e explorar senhas fracas, que permanecem como uma das vulnerabilidades de segurança mais comuns.

Neste laboratório, você aprenderá como integrar o JtR em um fluxo de trabalho típico de pentest. Você começará quebrando a senha de um usuário a partir de um arquivo shadow capturado, usará essa informação em um contexto de escalonamento de privilégios e, em seguida, aplicará o JtR para quebrar a senha de um arquivo protegido. Finalmente, você aprenderá os passos cruciais de documentar e relatar suas descobertas aos stakeholders.

Integrar o John the Ripper em um Fluxo de Trabalho de Pentest

Nesta etapa, você realizará a primeira fase de um ataque de senha: quebrar hashes obtidos durante a fase de reconhecimento. Um alvo comum para escalonamento de privilégios local é o arquivo /etc/shadow, que armazena os hashes de senha dos usuários em sistemas Linux. Já simulamos isso fornecendo um arquivo shadow.txt no seu diretório ~/project.

Primeiro, vamos executar o John the Ripper contra o arquivo shadow.txt usando uma wordlist personalizada. Uma wordlist é simplesmente um arquivo de texto contendo senhas potenciais.

Execute o seguinte comando para iniciar o processo de quebra:

john --wordlist=wordlist.txt shadow.txt

O John carregará os hashes e testará cada senha de wordlist.txt contra eles. Como a senha de weakuser está em nossa wordlist, ela será quebrada rapidamente.

Using default input encoding: UTF-8
Loaded 1 password hash (sha512, 512/512 AVX512BW 16x)
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (weakuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Uma vez que uma senha é quebrada, o John a armazena em um arquivo chamado john.pot localizado no diretório ~/.john/. Para visualizar as senhas quebradas para um arquivo de hash específico, você pode usar a opção --show.

Execute este comando para exibir a senha quebrada:

john --show shadow.txt

Você verá o nome de usuário e a senha quebrada.

weakuser:password123:19657:0:99999:7:::

1 password hash cracked, 0 left

Você quebrou com sucesso a senha do usuário, um primeiro passo crítico em muitos testes de penetração.

Usar o John the Ripper para Escalonamento de Privilégios Local

Nesta etapa, você aprenderá como uma senha quebrada pode ser usada para escalar privilégios. Após quebrar a senha de weakuser, o próximo passo lógico é verificar qual acesso essa conta proporciona. Se weakuser tiver privilégios sudo ou acesso a arquivos sensíveis, você poderá obter mais controle sobre o sistema.

Vamos simular isso tentando mudar para a conta weakuser usando a senha que você acabou de quebrar (password123).

Use o comando su (substitute user) para mudar para weakuser:

su weakuser

O sistema solicitará uma senha. Digite password123 e pressione Enter.

Password:

Se a senha estiver correta, seu prompt de comando mudará, indicando que você está operando como weakuser.

weakuser@...:/home/labex/project$

Em um teste de penetração real, você agora exploraria o sistema da perspectiva deste usuário, por exemplo, executando sudo -l para verificar os direitos sudo. Para este laboratório, apenas demonstrar que você pode acessar a conta é suficiente.

Agora, digite exit para retornar ao seu shell de usuário labex original.

exit

Este exercício demonstra o impacto direto de uma senha fraca: ela pode levar ao acesso não autorizado à conta, que é um trampolim para comprometer ainda mais o sistema.

Aplicar o John the Ripper em Testes de Penetração de Rede

Nesta etapa, você verá como a versatilidade do John the Ripper se estende além dos hashes de senha do sistema. Pentesters frequentemente encontram arquivos protegidos por senha, como arquivos ZIP, em compartilhamentos de arquivos ou durante a pós-exploração. O JtR também pode quebrá-los.

Fornecemos um arquivo protegido por senha chamado protected.zip no seu diretório ~/project. O processo envolve duas etapas: primeiro, extrair um hash que possa ser quebrado do arquivo e, segundo, usar o John para quebrar esse hash.

Muitas ferramentas relacionadas ao JtR ajudam a extrair hashes de diferentes tipos de arquivos. Para arquivos ZIP, usamos zip2john. Execute o seguinte comando para extrair o hash de protected.zip e salvá-lo em um arquivo chamado zip_hash.txt:

zip2john protected.zip > zip_hash.txt

Você pode visualizar o conteúdo de zip_hash.txt para ver como o hash se parece.

cat zip_hash.txt

Agora, execute o John the Ripper neste novo arquivo de hash. Desta vez, não especificaremos uma wordlist e deixaremos o John usar seus modos padrão, que incluem um modo de quebra única que tenta variações comuns de senha.

john zip_hash.txt

O John deve quebrar a senha muito rapidamente.

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP, 32/64)
Cost 1 (iteration count) is 1000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
supersecret      (protected.zip)
1g 0:00:00:00 DONE (2023-10-27 10:35) 100.0g/s 12345p/s 12345c/s 12345C/s supersecret
Session completed

Assim como antes, use a opção --show para visualizar a senha quebrada para o arquivo ZIP.

john --show zip_hash.txt
protected.zip:supersecret

1 password hash cracked, 0 left

Você recuperou com sucesso a senha do arquivo ZIP, demonstrando como o JtR pode ser aplicado a diferentes tipos de dados encontrados durante um teste de penetração.

Documentar Descobertas de Ataques com John the Ripper

Nesta etapa, você se concentrará em um aspecto crítico e não técnico de testes de penetração: a documentação. Simplesmente encontrar vulnerabilidades não é suficiente; você deve documentá-las claramente para que possam ser corrigidas. Um bom relatório detalha a vulnerabilidade, seu impacto e uma recomendação para remediação.

Agora você criará um relatório simples de descobertas em um arquivo markdown. Use o editor de texto nano para criar um arquivo chamado findings.md.

nano findings.md

Dentro do editor nano, copie e cole o seguinte texto. Este modelo documenta as duas vulnerabilidades que você descobriu até agora.

## Descobertas de Teste de Penetração - Senhas Fracas

### Descoberta 1: Senha Fraca de Conta de Usuário

- **Vulnerabilidade:** Senha fraca para o usuário `weakuser`.
- **Senha:** `password123`
- **Impacto:** Potencial para escalonamento de privilégios local e acesso não autorizado ao sistema.
- **Recomendação:** Implementar uma política de senhas fortes que exija complexidade e comprimento. Redefinir a senha de `weakuser`.

### Descoberta 2: Senha Fraca em Arquivo Protegido

- **Vulnerabilidade:** Senha fraca para o arquivo `protected.zip`.
- **Senha:** `supersecret`
- **Impacto:** Dados sensíveis dentro do arquivo ficam expostos a qualquer pessoa que encontre o arquivo.
- **Recomendação:** Usar senhas fortes e complexas para todos os arquivos e arquivos criptografados.

Após colar o texto, salve o arquivo e saia do nano pressionando Ctrl+X, depois Y e, finalmente, Enter.

Você agora criou um registro claro e conciso de suas descobertas, que é uma parte essencial de qualquer teste de penetração profissional.

Relatar Senhas Fracas aos Stakeholders

Nesta etapa final, você praticará a criação de um resumo de alto nível adequado para stakeholders, como administradores de sistema ou gerência. Enquanto o documento de descobertas detalhado é para equipes técnicas, um relatório resumido comunica o risco e a necessidade de ação de uma forma mais direta.

Você criará um arquivo de texto simples chamado report_summary.txt que simula um e-mail ou um resumo de relatório.

Use o editor nano para criar o arquivo:

nano report_summary.txt

Dentro do editor nano, copie e cole o seguinte resumo. Este texto comunica o problema e a ação necessária de forma clara e concisa.

Para: Administrador do Sistema
De: Testador de Penetração
Assunto: Vulnerabilidade Crítica: Senhas Fracas Detectadas

Este relatório resume as vulnerabilidades críticas de senha descobertas durante o recente teste de penetração.

1. O usuário 'weakuser' possui uma senha quebrável ('password123'), apresentando risco de escalonamento de privilégios.
2. Um arquivo protegido 'protected.zip' usa uma senha fraca ('supersecret'), expondo seu conteúdo.

É necessária ação imediata para impor uma política de senhas mais fortes e redefinir as senhas fracas identificadas.

Salve o arquivo e saia do nano pressionando Ctrl+X, depois Y e Enter.

Isso finaliza o fluxo de trabalho de teste de penetração para este cenário. Você não apenas identificou e explorou vulnerabilidades, mas também documentou e preparou um relatório para garantir que elas sejam tratadas. Isso completa o ciclo da descoberta à remediação.

Resumo

Parabéns por completar este laboratório! Você percorreu com sucesso um fluxo de trabalho realista de teste de penetração usando John the Ripper.

Neste laboratório, você aprendeu a:

  • Integrar o John the Ripper em um processo de pentest, quebrando hashes de um arquivo shadow.
  • Usar uma senha quebrada para simular uma tentativa de escalonamento de privilégios local.
  • Aplicar o JtR a diferentes tipos de dados, quebrando a senha de um arquivo ZIP protegido.
  • Compreender a importância crítica de documentar suas descobertas de maneira clara e estruturada.
  • Criar um relatório resumido para comunicar efetivamente as vulnerabilidades aos stakeholders.

Essas habilidades são fundamentais para qualquer profissional de cibersegurança envolvido em hacking ético e auditoria de segurança.