John The Ripper - Teste de Quebra de Senhas

Há cerca de dez anos o site da empresa SplashData divulga uma lista das senhas mais usadas (e também as piores) por seus usuários. A partir dos dados de 2015, o que mostrarei aqui é como quebrá-las, utilizando o software livre John The Ripper.

[ Hits: 15.832 ]

Por: Marta Laís em 22/09/2016


Quebra das senhas



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.

Página anterior    

Páginas do artigo
   1. Sobre o John The Ripper
   2. Criação dos usuários
   3. Quebra das senhas
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Firewall com Iptables + Squid

Instalando o Cisco VPN Client no Linux

Melhorias generalizadas de segurança (parte 2)

Entendendo um pouco sobre os daemons

Intrusão simples com Metasploit

  
Comentários
[1] Comentário enviado por Adonist em 22/09/2016 - 11:58h

Aqui nao funcionou simplesmente compilando o arquivo. Tive que ir na pasta 'run' e rodar por la com ./john
Mas no debian de qualquer forma vc pode instalar via: apt-get install john.
Excelente post =)

[2] Comentário enviado por mconrado em 22/09/2016 - 13:17h

Antes de mais nada: Post Sensacional! Parabens Lais.

Uma perguntinha: só funciona na máquina local certo?
é possível usar o John para pegar senhas de uma máquina remota na mesma rede?

[3] Comentário enviado por alvaroantoniosbu em 22/09/2016 - 21:47h

Adorei o artigo, primeiro artigo simplesmente incrível.
Pretendo fazer todo o processo futuramente.

[4] Comentário enviado por LaisMD em 23/09/2016 - 12:07h

.

[5] Comentário enviado por LaisMD em 23/09/2016 - 12:11h


[1] Comentário enviado por Adonist em 22/09/2016 - 11:58h

Aqui nao funcionou simplesmente compilando o arquivo. Tive que ir na pasta 'run' e rodar por la com ./john
Mas no debian de qualquer forma vc pode instalar via: apt-get install john.
Excelente post =)


Isso mesmo, Adonist. Mas o que houve no meu caso foi um erro de repositório, então, para que não tenham nenhum problema com a instalação (o mesmo problema que eu) decidi demonstrar dessa forma, entende? Obrigada!! :D

[6] Comentário enviado por LaisMD em 23/09/2016 - 12:15h


[3] Comentário enviado por alvaroantoniosbu em 22/09/2016 - 21:47h

Adorei o artigo, primeiro artigo simplesmente incrível.
Pretendo fazer todo o processo futuramente.


Que bom que gostou, Alvaro. :)

[7] Comentário enviado por LaisMD em 23/09/2016 - 12:17h


[2] Comentário enviado por mconrado em 22/09/2016 - 13:17h

Antes de mais nada: Post Sensacional! Parabens Lais.

Uma perguntinha: só funciona na máquina local certo?
é possível usar o John para pegar senhas de uma máquina remota na mesma rede?


Para acessar o arquivo shadow, onde ficam os hash das senhas, você precisa ter acesso máquina, você pode tentar um ssh (caso seja linux - linux) ou um teamview. :)

[8] Comentário enviado por WBaluz em 23/09/2016 - 16:39h

Muito Legal o artigo. Como de costume, é super importante dar atenção para a criação de senhas.

[9] Comentário enviado por EuzebioViana em 01/10/2016 - 18:45h

Parabéns pelo artigo! Muito bom.

[10] Comentário enviado por sauloray em 03/10/2016 - 15:37h

Boa tarde galera!
Laís muito legal o post, me ajudou muito esses dias a conseguir resolver algumas broncas na empresa.
NOTA: 10 !!!

[11] Comentário enviado por nao_eh_osimpson em 04/07/2019 - 10:09h

Bem explicado e nem um pouco tedioso, meus parabéns

+------+
| bart |
+------+


Contribuir com comentário