Aprenda a quebrar senhas com John the Ripper

Share

Para aqueles que ainda não ouviram falar sobre o John the Ripper (carinhosamente chamado de John), iremos comentar aqui sobre esta ferramenta livre de quebra de senha escrita na maior parte em C. Antes de prosseguir, vamos deixar claro que nós não encorajamos ou toleramos qualquer atividade maliciosa que possa ser realizado utilizando esta ferramenta ou quaisquer outras ferramentas que falamos aqui.

 

Instalação

A instalação é simples. Vamos nos ater a distribuições baseadas em Debian, porém as principais distros possuem o John the Ripper em seus repositórios. E se você quiser baixar o fonte e compilar, fique à vontade. Para instalar, basta digitar

 # apt-get install john

 

Você não precisa se preocupar com arquivos de configuração. John está pronto para ser usado sem muito esforço de sua parte.

 

Usaremos o comando abaixo para testarmos a capacidade do John em nossa máquina local. É imprescindí­vel rodar este comando para termos uma ideia da capacidade de processamento de nossa máquina com determinadas criptografias.

 # john --test

 

Agora, vamos criar um arquivo de texto contendo hashs de senhas válidos. Copiaremos nosso /etc/shadow para nossa home, renomeando-o para password.txt:

# cp /etc/shadow /home/password.txt

 

Para vermos o John “brincar”, iremos rodar o seguinte comando:

 # john password.txt

 

O processo de quebra de senha é uma tarefa intensa para CPU, assim, dependendo de seu sistema, poderá demorar um pouco. E dependendo da força da senha poderá levar uma eternidade :)

 

O uso do John não se restringe ao exemplo acima (é claro). Suponhamos que queremos quebrar a senha de um usuário específico em um sistema que não possuímos privilégios de root. Para isso, precisaremos de um “dicionário de senhas”, onde o john irá consultar para realizar suas tentativas de quebra de senha.

Como exemplo, usaremos a ferramenta unshadow, presente no John, para criarmos nosso dicionário de senhas com nosso pŕoprio /etc/shadow. Note que este cenário é um laboratório. Em situações reais é fundamental termos um dicionário de senhas muitíssimo completo e abrangente. quanto mais completo for nosso dicionário, maior serão nossas chances em quebrar uma senha.

 # unshadow /etc/passwd /etc/shadow > mypasswd.txt

 

Como você sabe, há muitos tipos de ataques: ataques de dicionário, ataques de força bruta, e assim por diante. Bem, o John suporta os principais tipos de ataque. Como alguns de vocês podem ter percebido, o modo acima é basicamente um ataque de dicionário. O John também suporta alguns “modos” para implementar sintaxes mais abrangentes.

Recomendamos que você verifique a documentação sobre o john no site openwall.com para uma descrição detalhada de cada modo.

Basicamente, o modo incremental é o modo mais poderoso disponível, uma vez que irá tentar várias combinações, até quebrar a senha, e você poderá escolher o tipo de modo (modo aplicado a opção incremental), incluindo o seu próprio. O modo externo, como o nome indica, vai usar funções personalizadas que você escreve a si mesmo, enquanto o modo dicionário tem uma lista de palavras especificadas como argumento para a opção (que pode ser um arquivo com uma lista de palavras escritas, uma por linha, ou stdin) tentando um ataque de dicionário simples em senhas.

Se o John for bem sucedido em quebrar uma das senhas, ele vai escrevê-la em ~/.john/john.pot. No entanto, esse arquivo não é legível, assim você terá que ler a senha encontrada com o comando abaixo:

 # john --show mypasswd.txt

Para verificar se a senha de root foi achado, vamos filtrar por UID:

 # john --show --users=0 mypasswd.txt

 

Existem muitas outras funcionalidades com o John the Ripper. Leia as documentações na página do projeto e encontre mais informações aqui.

Quer continuar por dentro das novidades do Blog Seja Livre? Siga o nosso perfil no TWITTER, curta a nossa página no FACEBOOK ou adicione o Blog Seja Livre nos seus círculos do GOOGLE+.