Aprenda a quebrar senhas com JTR em um pentest
Este tutorial faz parte do GUIA COMPLETO do professional em Segurança Ofensiva de Software, saiba mais.
Aula 15: John The Ripper
John The Ripper é uma ferramenta gratuita para quebra de senhas desenvolvida pelo Openwall disponível para Linux, Windows e outros. A ferramenta suporta 3 modos para quebra de senha:
- Single crack
- Wordlist
- Incremental (força-bruta)
15.1 Obtendo as hash
Para obter as hash das senhas no Linux basta acessar o arquivo /etc/shadown, (Figura 1). Note que aquele "$y$" significa que o sistema utiliza a função de derivação yescrypt, portanto é necessário informar o John o formato da hash sempre que for quebrar senhas de sistemas Linux que utiliza yescrypt.
Já no Windows você pode utilizar a ferramenta pwdump7 para realizar dump das hash (Figura 2). Necessário rodar como administrador. Sim, funciona no Windows 10.
Na aula anterior você aprendeu alguns formato de senha utilizado pelo Windows. O formato hash LM, terceiro campo do dump das senhas, processa as senhas de modo insensitivo. Já o formato NT (NTLM) processa o case-sensitive original da senha. Portanto quebrar senhas no formato LM é mais rápido.
15.2 Single mode
O modo "Single crack" utiliza do nome de usuário e outras informações para compor a senha.
Figura 3: JTR single mode exemplo |
O comando unshadow combina o arquivo passwd que contém informações dos usuários do sistema (GECOS field) com o arquivo shadow que contém a hash das senhas dos usuários Linux. No caso o usuário "fulano" possui a informação "amarelo" no arquivo passwd (Figura 3). Essa informação foi utilizada pelo John em single mode para descobrir a senha que coincidiu de ser a mesma palavra, mas poderia sofrer variações.
15.3 Wordlist mode
Neste modo o John usa uma lista de senhas também conhecido como dicionário de senhas e compara a hash da senha que deseja descobrir com a wordlist fornecida como argumento. No cenário a seguir foi criado 12 usuários Linux de teste com senhas aleatórias.
Figura 4: JTR wordlist mode exemplo |
Utilizando a wordlist "passwordlist.lst" com mais de 3500 senhas foi possível quebrar as senhas dos usuários criado para a máquina Kali (Figura 4). O arquivo "hash.txt" contém o dump das hash dos usuários de teste. Foi necessário forçar o uso do formato de hash "yescript" com o argumento “--format=crypt” e adicionar as senhas manualmente no arquivo de wordlist em posições aleatórias, afinal se a senha não estiver no arquivo o John nunca descobrirá a senha. Portanto o John The Ripper necessitou de aproximadamente 2 minutos para percorrer o arquivo e quebrar a senha de todos os usuários de teste.
15.4 Incremental mode
O modo incremental só é recomendado se você não conseguir quebrar a senha com os modos anteriores, pois este modo irá testar todas as combinações de letras e números configuradas para o tamanho de senha que você definiu.
Para agilizar o processo no modo incremental, é recomendado personalizar este modo. Suponha que você conhece o padrão de senha geralmente utilizado, então você pode gerar uma personalização do modo incremental.
Figura 5: JTR convertendo arquivo para .pot |
Primeiramente adeque uma wordlist para o padrão .pot do John (Figura 5). Esse padrão permite gerar um arquivo de charset customizado para ser utilizado em modo incremental.
Figura 6: JTR criando .chr personalizado |
A partir do arquivo .pot, utilize o John para gerar o arquivo de charset customizado (Figura 6). Este arquivo que determinará o padrão incremental a ser seguido pelo John para gerar as senhas por força-bruta.
Figura 7: john.conf |
Agora basta configurar o arquivo john.conf para suportar o charset personalizado criado e configurar o mínimo e máximo de caracteres a ser utilizado no modo incremental (Figura 7). Repare as informações adicionadas entre a linha 1262 e 1265 do arquivo na imagem acima.
Figura 8: John modo incremental |
Após mais de 16 horas tentando quebrar as senhas em modo força bruta o John conseguiu quebrar apenas 3 das 12 senhas (Figura 8). Note que no argumento incremental foi informado o nome da configuração de charset personalizado que configuramos para ser utilizada. Provavelmente a ferramenta quebraria as outras senhas se deixasse rodando por mais tempo.
15.5 GPU Suporte
É possível acelerar o processo de quebra de senhas compilando a ferramenta John com suporte a GPU, assim você consegue utilizar o poder de processamento da sua placa de vídeo para acelerar o processo de quebra de senha. Mais informações confira aqui.
Próxima aula, clique aqui.
COMENTÁRIOS