Cracking de senhas e hashes utilizando John The Ripper
- Gustavo Viana
- Segurança ofensiva , Segurança da informação
- 1 de março de 2024
John The Ripper é uma ferramenta poderosa, de código aberto e gratuita e que tem como finalidade o cracking ou quebra de hashes/senhas. Ela suporta diversos algoritmos de hash e, neste post, vamos dar uma olhada em alguns exemplos básicos de como quebrar hashes usando o John. Um dos pontos positivos da ferramenta é que ela está disponível para Windows e Linux e tenta detectar automaticamente o tipo de hash que recebeu.
TL;DR
O uso básico consiste na seguinte linha de comando:
john --wordlist=/usr/share/wordlists/password.lst arquivo_de_hashes.txt
Primeiramente, o que é cracking de senhas?
A quebra (ou cracking) de senhas é o nome que se dá ao processo de obtenção de uma senha a partir de uma determinada hash. Por conta do avanço da segurança da informação, a maioria das senhas que você encontrará em um sistema não são armazenadas em clear text (texto claro ou que lê-se normalmente), mas sim no formato de hashes.
Uma hash é uma string, gerada pela execução de uma função de hash criptográfica. Ao fazer isso, é produzida uma saída exclusiva para aquela senha específica. Veja abaixo uma ilustração do processo de hashing.
Instação do John The Ripper
sudo apt install john
Quebrar hashes com John The Ripper
Quebrar hashes utilizando uma wordlist (ataque de dicionário)
O ataque de dicionário é o mais utilizado e, neste modo, o john irá tentar quebrar a hash a partir de uma wordlist. No comando abaixo, por exemplo, estamos tentando quebrar hashes MD5 utilizando wordlist rockyou:
john --wordlist=/usr/share/wordlists/rockyou.txt arquivo_de_hashes.txt
Quebrar hashes utilizando bruteforce (ataque incremental)
Neste tipo de ataque o john irá tentar todas as combinações de carateres possíveis. Este é o tipo de ataque mais poderoso porém, mais demorado:
john --incremental arquivo_de_hashes
Extraindo hashes
O pacote do john vem com algumas ferramentas adicionais, que possibilitam extrair hashes de arquivos ZIP, RAR e chaves privadas, por exemplo. Veja abaixo alguns exemplos.
Extrair hashes de um arquivo ZIP
zip2john arquivo.zip > zip.hash
Extrair hashes de uma chave privada SSH
ssh2john id_rsa > id_rsa.hash
Extrair hashes de um arquivo RAR
rar2john arquivo.rar > rar.hash
E se eu quiser especificar uma hash?
Caso você queira especificar uma hash no john, basta listar os formatos e identificar o desejado, por exemplo:
john --list=formats | grep -i "md5"
Após isso, acrescente o parâmetro no comando, por exemplo:
john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt arquivo_de_hashes.txt
Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo Telegram , Facebook ou Instagram ! Veja mais posts no IronLinux !