Implementar Geração de Dicionário Personalizado
Nesta etapa, você aprenderá a gerar um dicionário personalizado. Embora dicionários grandes pré-fabricados como rockyou.txt sejam úteis, às vezes você precisa criar um dicionário adaptado a um alvo ou cenário específico. Isso pode envolver o uso de informações conhecidas sobre o alvo (por exemplo, nomes de empresas, frases comuns, datas) para gerar senhas potenciais.
Usaremos a ferramenta crunch, que é excelente para gerar listas de palavras com base em conjuntos de caracteres e padrões especificados. O crunch não é instalado por padrão, então vamos instalá-lo primeiro.
sudo apt install -y crunch
Agora, vamos gerar um dicionário personalizado simples. Por exemplo, podemos gerar todas as combinações possíveis de letras minúsculas de um comprimento específico. Vamos criar um dicionário de todas as palavras de 4 caracteres em minúsculas.
crunch 4 4 -o ~/project/custom_4char_dictionary.txt -t @@@@
4 4: Especifica o comprimento mínimo e máximo das palavras a serem geradas (aqui, ambos são 4).
-o ~/project/custom_4char_dictionary.txt: Especifica o arquivo de saída.
-t @@@@: Especifica um padrão. @ representa letras minúsculas.
Este comando gerará um arquivo grande. Para fins de demonstração, vamos gerar um dicionário personalizado menor e mais gerenciável. Geraremos palavras de comprimento 3 a 4, usando apenas letras minúsculas e começando com 'a'.
crunch 3 4 abcdefghijklmnopqrstuvwxyz -o ~/project/custom_small_dictionary.txt -t a%@
3 4: Comprimento mínimo 3, comprimento máximo 4.
abcdefghijklmnopqrstuvwxyz: Especifica o conjunto de caracteres a ser usado.
-o ~/project/custom_small_dictionary.txt: Arquivo de saída.
-t a%@: Padrão. a é um 'a' literal, % representa números, @ representa letras minúsculas. Vamos corrigir isso para gerar apenas letras minúsculas.
Vamos tentar um exemplo mais relevante para um dicionário personalizado: gerar variações de uma palavra conhecida, como "labex", com números anexados. Usaremos as regras de lista de palavras integradas do john para isso, o que é mais prático para variações comuns de senhas.
Primeiro, vamos criar uma lista de palavras base apenas com "labex".
echo "labex" > ~/project/base_word.txt
Agora, usaremos a opção --rules do John com um conjunto de regras comum (como Wordlist) para gerar variações. Isso é frequentemente usado com uma lista de palavras base.
john --wordlist=/home/labex/project/base_word.txt --rules=Wordlist --stdout > ~/project/labex_variations.txt
--wordlist: A lista de palavras base.
--rules=Wordlist: Aplica as regras padrão da lista de palavras (por exemplo, anexar números, alterar maiúsculas/minúsculas, etc.).
--stdout: Imprime as palavras geradas na saída padrão.
> ~/project/labex_variations.txt: Redireciona a saída para um arquivo.
Vamos inspecionar as variações geradas:
head -n 10 ~/project/labex_variations.txt
Você verá variações como labex1, Labex, labex!, etc.
labex
Labex
LABEX
labex1
labex2
labex3
labex4
labex5
labex6
labex7
Isso demonstra como gerar dicionários personalizados ou variações de palavras, o que pode ser crucial para ataques direcionados onde padrões específicos ou informações conhecidas sobre o alvo estão disponíveis.