Senhas são a parte mais fraca de qualquer sistema de segurança, pois pessoas que não conhecem os riscos causados por senhas fracas são responsáveis por criar tais senhas. Auditar as senhas que seus usuários utilizam para acessar os servidores é necessário para se garantir o mínimo de segurança nesse quesito. Com uma ferramenta como o John The Ripper, isso fica muito fácil.
O JtR utiliza alguns modos para que consiga otimizar a quebra da senha. Estes modos são explicados a seguir:
Modo Wordlist
Para utilizar esse método você vai precisar de uma wordlist. Existem vários lugares na Internet que possuem milhares de wordlists disponíveis gratuitamente, é só dar uma olhada no Google que você irá encontrar várias. Para te ajudar, aqui no item "Wordlists" você encontra vários links para wordlists disponíveis na Internet. Lá você também encontra algumas dicas de como organizar a sua lista. Mas vale lembrar que não é bom que você tenha entradas duplicadas na sua lista, o JtR não vai fazer absolutamente nada com a sua wordlist antes de começar a testar as palavras que tem nela.
Este é o modo mais simples suportado pelo John. Para utilizá-lo você só especifica uma wordlist e algumas regras para ele fazer combinações das palavras que ele encontrar na lista que você especificou. Quando utilizando determinados algoritmos, o JtR se beneficiará se você colocar senhas com tamanhos mais ou menos parecidos perto umas das outras. Por exemplo, seria interessante você colocar as senhas com 8, 6 ou 9 caracteres perto umas das outras na sua wordlist. A wordlist padrão a ser utilizada pelo John é definida no arquivo john.conf.
Modo Single Crack
É neste modo que você deveria começar a tentar quebrar uma senha. Aqui, além de várias regras de mangling serem aplicadas, o JtR vai utilizar mais informações como o nome completo do usuário e seu diretório home para tentar descobrir qual é a senha. Este modo é muito mais rápido que o modo "Wordlist".
Se você utilizar vários arquivos com senha, provavelmente você irá conseguir quebrar mais senhas do que com apenas 1 arquivo sendo utilizado separadamente.
Modo Incremental
Este é o modo mais poderoso do JtR. Nele serão tentadas todas as combinações possíveis de caracteres para tentar quebrar a senha cifrada. Dada a grande quantidade de combinações possíveis, é recomendável que se defina alguns parâmetros (como tamanho da senha ou conjunto de caracteres a serem utilizados) para que você não fique esperando pela senha ser quebrada por muito tempo. Todos os parâmetros para este modo são definidos no arquivo john.conf, nas seções começadas com Incremental no nome.
Modo External
Esse modo é bastante complexo. Nele você pode definir regras próprias para o John seguir ao tentar quebrar uma senha. Tais regras são definidas em uma linguagem parecida com a C no arquivo de configuração do programa. Ao ser especificado este modo ao tentar quebrar uma senha na linha de comando, o JtR vai pré-processar as funções que você escreveu para este modo e utilizá-las. Repito: este modo é bastante complexo e leva um tempo até você conseguir aprendê-lo e fazer coisas úteis com ele. Se você está só começando, sugiro que utilize algum dos outros modos que foram mostrados anteriormente, mas se você quer se aventurar e tentar utilizar este modo a documentação oficial do software é um bom ponto de partida:
[1] Comentário enviado por y2h4ck em 13/06/2007 - 08:36h
"Definir um tamanho mínimo de senhas de 8 ou 10 caracteres;" Isto é bem relativo, dependendo principalmente do algoritmo utilizado.
Existem métodos para se quebrar senhas de usuários windows no padrão NTLMv1, inclusive comerciais, que conseguem quebrar uma senha de até 15 caracteres em no máximo 10 minutos.
[5] Comentário enviado por acollucci em 13/06/2007 - 17:52h
Otimo artigo. Agora quanto ao comentario do y2h4ck, sim existem metodos para se quebrar senhas fortes, porem senhas fortes dificultam ataques do tipo wordlists, ou de engenharia social.
[13] Comentário enviado por elgio em 30/01/2009 - 10:50h
A leitura do teu artigo sobre VPN hoje me fez olhar os demais artigos que escreveste. Muito interessante, a gente meio que se interessa pelos mesmos assuntos ;-)
Sobre senhas, reforço o que meu amigo Anderson (y2h4ck: depois de alguns mal entendidos com ele, ambos concordamos em nos tratarmos como amigo! :-D hehehe Forte abraço): para senhas lmpasswd nenhuma senha (NENHUMA NENHUMA) é segura. De nada adianta colocar 14 cars de senha no lmpasswd (e é o máximo que ele aceita. Mais que isto é truncado), pois ele divide a tua senha em duas partes de 7, logo uma força bruta é sobre 7 cars. John the Ripper sempre conseguirá quebrar as senhas e creio que em questão de horas com os processadores domésticos de hoje.
Ntpasswd é melhor pois usa o MD4 e não tem os vícios do LM, mas a falta de salt numbers torna ele também não confiável pois perece ao ataque de Rainbow Tables (muito embora uma tabela de RB completa até 8 cars custe $499 e tem o tamanho de 52G - http://ophcrack.sourceforge.net/tables.php ). A princípio senhas maiores que 9 caracteres para o NTpasswd são seguros pois parece (PARECE) que ninguém ainda conseguiu compilar uma Rainbow tables para tantos cars.
No Linux porém, que usa MD5 com salt numbers, qualquer senha maior do que SEIS cars torna INVIÁVEl o força bruta (cuidado, estou falando de força bruta, não de outros ataques. Mesmo que tu use 15 cars de senha ela será estúpida se for apenas números, como este artigo explica).
A presença de salt numbers torna inviável a técnica de Rainbow tables.