Implementar Generación de Diccionarios Personalizados
En este paso, aprenderás a generar un diccionario personalizado. Si bien los diccionarios grandes prefabricados como rockyou.txt son útiles, a veces necesitas crear un diccionario adaptado a un objetivo o escenario específico. Esto podría implicar el uso de información conocida sobre el objetivo (por ejemplo, nombres de empresas, frases comunes, fechas) para generar posibles contraseñas.
Usaremos la herramienta crunch, que es excelente para generar listas de palabras basadas en conjuntos de caracteres y patrones especificados. crunch no está instalado por defecto, así que instalémoslo primero.
sudo apt install -y crunch
Ahora, generemos un diccionario personalizado simple. Por ejemplo, podemos generar todas las combinaciones posibles de letras minúsculas de una longitud específica. Creemos un diccionario de todas las palabras de 4 caracteres en minúsculas.
crunch 4 4 -o ~/project/custom_4char_dictionary.txt -t @@@@
4 4: Especifica la longitud mínima y máxima de las palabras a generar (aquí, ambas son 4).
-o ~/project/custom_4char_dictionary.txt: Especifica el archivo de salida.
-t @@@@: Especifica un patrón. @ representa letras minúsculas.
Este comando generará un archivo grande. Para fines de demostración, generemos un diccionario personalizado más pequeño y manejable. Generaremos palabras de longitud 3 a 4, usando solo letras minúsculas y comenzando con 'a'.
crunch 3 4 abcdefghijklmnopqrstuvwxyz -o ~/project/custom_small_dictionary.txt -t a%@
3 4: Longitud mínima 3, longitud máxima 4.
abcdefghijklmnopqrstuvwxyz: Especifica el conjunto de caracteres a usar.
-o ~/project/custom_small_dictionary.txt: Archivo de salida.
-t a%@: Patrón. a es una 'a' literal, % representa números, @ representa letras minúsculas. Corrijamos esto para generar solo letras minúsculas.
Intentemos un ejemplo más relevante para un diccionario personalizado: generar variaciones de una palabra conocida, como "labex", con números añadidos. Usaremos las reglas de lista de palabras integradas de john para esto, que es más práctico para variaciones de contraseñas comunes.
Primero, creemos una lista de palabras base solo con "labex".
echo "labex" > ~/project/base_word.txt
Ahora, usaremos la opción --rules de John con un conjunto de reglas común (como Wordlist) para generar variaciones. Esto se usa a menudo con una lista de palabras base.
john --wordlist=/home/labex/project/base_word.txt --rules=Wordlist --stdout > ~/project/labex_variations.txt
--wordlist: La lista de palabras base.
--rules=Wordlist: Aplica las reglas de lista de palabras predeterminadas (por ejemplo, añadir números, cambiar mayúsculas/minúsculas, etc.).
--stdout: Imprime las palabras generadas en la salida estándar.
> ~/project/labex_variations.txt: Redirige la salida a un archivo.
Inspeccionemos las variaciones generadas:
head -n 10 ~/project/labex_variations.txt
Verás variaciones como labex1, Labex, labex!, etc.
labex
Labex
LABEX
labex1
labex2
labex3
labex4
labex5
labex6
labex7
Esto demuestra cómo generar diccionarios personalizados o variaciones de palabras, lo que puede ser crucial para ataques dirigidos donde hay información específica o conocida sobre el objetivo disponible.