Uma wordlist, é um “componente” básico para que se
possa efetuar ataques do tipo “brute
force“, onde várias combinações de letras, números e caracteres
especiais são testados na tentativa de se descobrir a senha de um determinado
usuário.
Mas, onde
conseguir uma wordlist para auditar as senhas dos seus usuários (usando um programa
como o John The Ripper,
por exemplo) ou mesmo verificar se o seu roteador Cisco
ou seu servidor FTP estão utilizando senhas fortes (usando o THC-Hydra)?
Existem
várias wordlists que você pode encontrar online (como as do projeto http://wordlist.sourceforge.net),
mas e se você quiser apenas senhas com no mínimo 5 caracteres, no máximo 8 e
apenas números? E se você souber que a senha começa com a string “maria”
seguida por 4 números? Aqui vou te mostrar como gerar uma wordlist para suprir
as suas necessidades utilizando o programa Crunch.
Instalação
Para
tarefas relacionadas à segurança, eu costumo sempre usar o BackTrack 4 (versão
mais recente enquanto escrevo este artigo) rodando em uma máquina virtual no
VirtualBox. Nesta distribuição, o crunch está localizado em
/pentest/password/crunch. Porém, se você não gosta ou não quer utilizar o
BackTrack, você pode instalar o crunch em qualquer distribuição Linux. Para
isso, acesse o site http://sourceforge.net/projects/crunch-wordlist/ e faça o download da versão mais
recente.
Aqui não
vou cobrir a compilação e instalação do Crunch, vou usar a versão
disponibilizada com o BackTrack 4. Você pode obter a ISO (LiveCD instalável) ou
a VM (para VMWare, mas que também funciona no VirtualBox) emhttp://www.backtrack-linux.org/downloads/.
Se você gosta da área de segurança, recomendo fortemente que você separe um
tempo para conhecer o BackTrack e todas as ferramentas que ele disponibiliza
para você.
Gerando a sua
primeira wordlist
Apenas com
a finalidade de testar o programa, vamos gerar uma wordlist com strings de no
mínimo 4 e no máximo 6 números:
# /pentest/password/crunch/crunch 4 6
1234567890 -o /tmp/wordlist-numerica.txt
Assim,
será gerado um arquivo wordlist-numerica.txt no diretório /tmp com todas as
combinações possíveis de acordo com os parâmetros que passamos para o crunch. O
arquivo irá conter linhas como essas:
120347
120348
120349
120350
120348
120349
120350
Variando
no seu tamanho (entre 4 e 6 caracteres).
Gerando uma
wordlist com uma string fixa
Se você
sabe que as senhas começam com uma string fixa, como “maria”, você pode fazer
com que o crunch gere senhas que comecem com “maria” e variem quantos
caracteres você desejar utilizando a opção -t.
Por
exemplo, para gerar uma wordlist de palavras começando com “maria” seguidas de
4 números:
# /pentest/password/crunch/crunch 9 9
1234567890 -t maria@@@@ -o /tmp/wordlist-maria.txt
Assim,
você terá resultados como os seguintes:
maria0070
maria0000
maria9091
maria0113
maria0000
maria9091
maria0113
Como você
já deve ter percebido, o “@” marca os lugares que serão substituídos pelos
caracteres indicados na linha de comando. Portanto, você pode colocá-los em
qualquer lugar da string. Por exemplo, @@maria modificaria apenas os dois
primeiros caracteres e adicionaria “maria” ao final, gerando senhas como:
12maria
AAmaria
A3maria
u9maria
AAmaria
A3maria
u9maria
Dependendo
dos caracteres que você passou para o crunch como parâmetro.
Parte 2
Utilizando o arquivo charset.lst
O arquivo charset.lst (fornecido junto com o crunch) tem o objetivo de facilitar a sua vida oferecendo listas de caracteres pré-definidas, assim você não precisa especificar todos os caracteres que deseja utilizar na sua wordlist na mão. Basta especificar o nome no arquivo charset.lst. Alguns dos conjuntos de caracteres oferecidos pelo charset.lst são:
- lalpha: apenas letras minúsculas;
- ualpha: apenas letras maiúsculas;
- lalpha-numeric: letras minúsculas e números;
- ualpha-numeric: letras maiúsculas e números;
- lalpha-numeric-all-space: letras minúsculas, números e caracteres especiais como ?, ;, :, espaço, etc.;
- ualpha-numeric-all-space: letras maiúsculas, números e caracteres especiais como ?, ;, :, espaço, etc.;
- mixalpha: letras minúsculas e maiúsculas;
- mixalpha-numeric-all-space: letras maiúsculas, minúsculas, números, caracteres especiais e espaço.
Existem mais alguns conjuntos pré-definidos, basta dar um “cat charset.lst” que todas as listas e os caracteres que elas englobam serão exibidos para você. Para utilizar algum conjunto pré-definido pelo charset.lst, a linha de comando ficaria assim:
# /pentest/password/crunch/crunch 4 8 -f charset.lst mixalpha -o /tmp/lista-com-charset.txt
Este comando gerará uma wordlist de no mínimo 4 caracteres, no máximo 8, irá utilizar o conjunto de caracteres mixalpha (letras maiúsculas e minúsculas) e escreverá todo o resultado no arquivo /tmp/lista-com-charset.txt. Você também pode utilizar os “@” com o charset.lst. Ficaria assim:
# /pentest/password/crunch/crunch 8 8 -f charset.lst mixalpha-numeric-all-space -t @@abc@@@ -o /tmp/wordlist-gigante.txt
O comando acima irá gerar palavras de 8 caracteres, combinando abc com qualquer outro caractere possível e irá escrever o resultado no arquivo /tmp/wordlist-gigante.txt. Gerar uma lista dessa poderá demorar bastante, dependendo da máquina que você está usando (também irá ocupar um espaço considerável no disco).
Outras opções do crunch
Além das opções que já foram citadas nos parágrafos anteriores, você ainda pode utilizar as seguintes:
- -s: permite que você defina em qual string o crunch irá começar a gerar senhas;
- -c : define quantos resultados serão escritos no arquivo de saída (só funciona se você utilizar a opção -o START)
Além disso, definir os caracteres na mão (diretamente na linha de comando) não é obrigatório. Se você não definir quais caracteres deverão ser utilizados para gerar as strings, o crunch irá assumir “abcdefghijklmnopqrstuvwxyz” como os caracteres que participação da geração de senhas.
Conclusão
O objetivo deste artigo é mostrar como você pode gerar wordlists para testar a segurança dos seus próprios serviços. Não tente fazer ataques brute force contra serviços/servidores para os quais você não possui autorização.
Como você viu, o crunch é bem poderoso e você pode gerar wordlists utilizando praticamente qualquer combinação de caracteres para gerar wordlists bem completas e direcionadas para o problema que você tem em mãos. Vale lembrar que é interessante que as wordlists não tenham palavras repetidas, para que você não tente duas vezes a mesma senha que não funcionou (o que fará com que o processo demore ainda mais).
Gostou do post? Tem algum outro programa que você prefere para gerar wordlists? Encontrou algum erro no texto? Deixe seu comentário! Se quiser, também pode me seguir no Twitter ou assinar o feed do site e sempre ser avisado sobre novos posts.
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.