O próximo passo seria criar um arquivo de texto contendo hashs de senhas válidos. Para isso, uma cópia do
/etc/shadow deve ser feita para /home, renomeando para password.txt.
Esse diretório /etc/shadow é onde ficam armazenadas, de forma criptografada, as senhas de todos os usuários, incluindo o do root.
Para isso, os comandos usados foram
# cp /etc/shadow $HOME
Depois:
# mv $HOME/shadow $HOME/password.txt
O que está sendo feito nesse processo é, basicamente, criar uma espécie de base de dados, um arquivo de texto no caso, onde o John irá pegar as senhas criptografadas e quebrá-las, transformando-as de hashs para a forma descriptografada e legível.
Dentro desse arquivo password.txt é possível ver todos os usuários e o hash de suas senhas. O comando usado para ver o arquivo é:
# nano password.txt
Como para esse teste o John deve quebrar as senhas dos usuários que acabei de criar, posso limpar esse arquivo deixando apenas as hashs dos user01 ao user25.
Isso fará com que o John analise mais rapidamente cada um deles. Caso quisesse quebrar a senha do root também ou o do usuário em uso, basta deixá-lo no arquivo e o John também o leria.
Agora que está tudo preparado, é hora de colocar o John para analisar todas essas hashs e as descriptografar. Comando:
# john password.txt
É bom lembrar que o tempo de teste pode variar de acordo com o processador do seu computador. O do meu, utilizado nos testes, é o Intel i3.
Vamos deixar quebrando por alguns minutos, podemos checar o status da quebra apertando qualquer tecla, menos q, que serve para dar quit, sair/abortar.
Esse processo pode ser um pouco demorado já que colocamos todos os usuários, uma que vez que as senhas eram mais simples.
Dependendo do tamanho da senha colocada, da tempo tomar um café, ou esperar o cafeeiro crescer e dar frutos. =P
Acima, podemos ver que o John identificou as 25 hashs de senhas e também mostra a forma de criptografia usadas nelas pelo sistema entre parênteses.
No status, vemos dados como a porcentagem de quebra e o tempo passado desde o começo do processo. Para saber quanto tempo o John precisou para cada usuário, podemos consultar através do comando:
# john --show password.txt
É valido lembrar que password.txt foi o nome que optamos para o arquivo, mas pode ser qualquer um, não vai influenciar no processo.
Após oito minutos e trinta e três segundos, o John deu essa resposta automaticamente, sem precisar consultar.
Ou seja, ele conseguiu descriptografar dezoito senhas de dezoito usuários nesse tempo. Como é possível notar pela imagem, ele mostra entre parênteses qual o usuário e a frente a sua senha.
Aos dezesseis minutos, o John quebrou um total de vinte e três senhas.
Depois de uma hora e cinquenta e quatro minutos, a senha "login" foi descriptografada. Logo após, às duas horas e trinta e seis minutos, a última senha, "solo", foi quebrada, finalizando o processo.
Para visualizar os resultados do processo, basta dar o comando:
# john -show password.txt
O que esse comando fará é apresentar o que está contido no arquivo ~/.john/john.pot, sendo este não legível.
Aparecerão os usuários com as suas respectivas senhas, não mais em forma de hash.
Ao final, o John The Ripper demorou cerca de duas horas e trinta e seis minutos (cento e cinquenta e seis minutos) para quebrar vinte e cinco senhas, ou seja, fazendo uma conta básica de divisão, podemos estimar que ele tenha demorado seis minutos e vinte e quatro segundo por senha.
Essa estimativa varia muito de acordo com o processador da máquina em uso. :)
Conclusões
Como foi possível notar, todas as senhas foram quebradas independente do tempo. As senhas, caso não forem complexas o suficiente, podem ser consideradas uma das partes mais vulneráveis do servidor/sistema.
Segundo sites como os da McAfee e Intel, eles dão dicas importantes para formular senhas fortes e de difícil quebra.
Entre essas dicas, misturar sempre letras, números, espaços e caracteres especiais. Por exemplo, a senha "Minha 1aSenh4!", onde houve a utilização de letras em caixa alta e baixa, números, espaço e caractere especial.
Quanto mais diferente a senha for, quanto mais complexa e mais caracteres conter, mais tempo o software demorará para quebrá-la, podendo demorar até semanas/meses, dependendo sempre do poder de processamento dedicado para isso.