Auditando senhas com John The Ripper
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.
Parte 3: Baixando e instalando
A instalação do JtR é extremamente fácil. Primeiro acesse o site www.openwall.com/john/ e faça o download da versão mais nova (1.7.0.2 no momento em que escrevo o texto). Após o download, descompacte o arquivo e acesse o diretório recém criado:
$ tar xzvf john-1.7.0.2.tar.gz
$ cd john-1.7.0.2
Neste diretório você irá encontrar o sub-diretório "src", é nele que estão os fontes do software e é lá que você precisa ir para compilar o programa:
$ cd src/
A compilação do JtR é feita baseada no processador que você usa na sua máquina para que ele seja mais bem otimizado e tenha um desempenho melhor enquanto tenta quebrar as senhas. Digite make e uma lista com todas as possibilidades será exibida para você. Escolha a mais adequada e:
$ make clean linux-x86-mmx
Lembre-se de substituir o "linux-x86-mmx" pelo valor que mais se adequar ao seu hardware. Após digitar este comando terá início o processo de compilação, que deve levar menos de 5 minutos. :)
Todos os binários resultantes da compilação serão colocados no diretório run, vá para lá:
$ cd ../run
Para testar o binário que foi gerado e verificar se está tudo correto com ele, digite o comando:
$ ./john --test
Isso irá efetuar um teste de benchmarking com todos os algoritmos de criptografia que o JtR suporta. Se você quiser executar o benchmarking com um algoritmo em específico, faça o seguinte:
$ ./john --test --format=[formato que você quer testar]
O parâmetro format pode ser utilizado também quando você estiver tentando quebrar uma senha e souber qual é o formato dela. As opções são DES, BSDI, MD5, BF, AFS e LM.
Uma característica interessante do software é que você não precisa instalá-lo em outros diretórios do sistema: pode utilizar todas as opções e funcionalidades dele diretamente do diretório "run" que é criado quando você compila o programa.
Isso não quer dizer que você não possa instalar o software no diretório que quiser: não há restrição nenhuma quanto a isso. Porém, de acordo com a documentação oficial do software instalar ele system-wide (instalar ele em diretórios como /usr/local/bin, por exemplo) é apenas para pessoas que desenvolvem pacotes do John para o ports de sistemas *BSD ou distribuições do Linux. Fica à seu critério instalar system-wide ou simplesmente executar a partir do diretório "run".
Se você observou direitinho o diretório run do pacote, você irá ver que vários arquivos além do binário do JtR estão presentes lá. São eles:
$ tar xzvf john-1.7.0.2.tar.gz
$ cd john-1.7.0.2
Neste diretório você irá encontrar o sub-diretório "src", é nele que estão os fontes do software e é lá que você precisa ir para compilar o programa:
$ cd src/
A compilação do JtR é feita baseada no processador que você usa na sua máquina para que ele seja mais bem otimizado e tenha um desempenho melhor enquanto tenta quebrar as senhas. Digite make e uma lista com todas as possibilidades será exibida para você. Escolha a mais adequada e:
$ make clean linux-x86-mmx
Lembre-se de substituir o "linux-x86-mmx" pelo valor que mais se adequar ao seu hardware. Após digitar este comando terá início o processo de compilação, que deve levar menos de 5 minutos. :)
Todos os binários resultantes da compilação serão colocados no diretório run, vá para lá:
$ cd ../run
Para testar o binário que foi gerado e verificar se está tudo correto com ele, digite o comando:
$ ./john --test
Isso irá efetuar um teste de benchmarking com todos os algoritmos de criptografia que o JtR suporta. Se você quiser executar o benchmarking com um algoritmo em específico, faça o seguinte:
$ ./john --test --format=[formato que você quer testar]
O parâmetro format pode ser utilizado também quando você estiver tentando quebrar uma senha e souber qual é o formato dela. As opções são DES, BSDI, MD5, BF, AFS e LM.
Uma característica interessante do software é que você não precisa instalá-lo em outros diretórios do sistema: pode utilizar todas as opções e funcionalidades dele diretamente do diretório "run" que é criado quando você compila o programa.
Isso não quer dizer que você não possa instalar o software no diretório que quiser: não há restrição nenhuma quanto a isso. Porém, de acordo com a documentação oficial do software instalar ele system-wide (instalar ele em diretórios como /usr/local/bin, por exemplo) é apenas para pessoas que desenvolvem pacotes do John para o ports de sistemas *BSD ou distribuições do Linux. Fica à seu critério instalar system-wide ou simplesmente executar a partir do diretório "run".
Se você observou direitinho o diretório run do pacote, você irá ver que vários arquivos além do binário do JtR estão presentes lá. São eles:
- Mailer: é um shellscript desenvolvido para enviar emails para os usuários cujas senhas são fracas e foram quebradas. Seu uso é opcional;
- john.conf: é o arquivo de configuração do JtR. Será explicado mais adiante;
- john: é o executável do software;
- password.lst: um arquivo com algumas senhas para serem utilizadas quando se está quebrando uma senha;
- *.chr: são arquivos binários utilizados diretamente pelo JtR para quebrar as senhas;
- unshadow: quando você já tem acesso aos arquivos shadow e passwd, este script irá combinar ambos para o uso com o John. Recomenda-se utilizar esta opção com --show (explicado mais adiante);
- unafs: pega hashes binários com banco de dados AFS e o coloca em um arquivo no estilo do arquivo /etc/passwd de sistemas Unix-like. Sua saída deve ser redirecionada para um arquivo;
- unique: remove entradas duplicadas de uma wordlist sem modificar a ordem.
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.
Legal o artigo, parabéns :) nota 10.