Generar Listas de Palabras Personalizadas con Crunch

Kali LinuxBeginner
Practicar Ahora

Introducción

Crunch es una herramienta de línea de comandos potente y flexible utilizada para generar listas de palabras personalizadas. Estas listas de palabras son esenciales en el campo de la ciberseguridad, particularmente para los pentesters y profesionales de seguridad que realizan auditorías de fortaleza de contraseñas y ataques de fuerza bruta. A diferencia de las listas de palabras estáticas y prefabricadas, Crunch le permite crear listas altamente específicas basadas en patrones conocidos, conjuntos de caracteres y requisitos de longitud, lo que aumenta significativamente la eficiencia de un ataque.

En este laboratorio, aprenderá los fundamentos de Crunch. Comenzará comprendiendo su sintaxis básica, luego pasará a generar listas de palabras simples, utilizando conjuntos de caracteres personalizados, creando listas basadas en patrones y, finalmente, canalizando su salida directamente a otras herramientas de línea de comandos.

Comprender la Sintaxis de la Herramienta Crunch

En este paso, aprenderá la sintaxis básica del comando crunch y cómo acceder a su menú de ayuda. Comprender la estructura fundamental del comando es el primer paso para dominar sus capacidades.

La sintaxis básica para crunch es: crunch <min-len> <max-len> [characterset] [options]

  • <min-len>: La longitud mínima de las palabras a generar.
  • <max-len>: La longitud máxima de las palabras a generar.
  • [characterset]: (Opcional) El conjunto de caracteres a utilizar para generar palabras. Si no se especifica, crunch utiliza por defecto letras minúsculas.
  • [options]: (Opcional) Varias banderas para controlar la salida, como guardar en un archivo o usar patrones.

Para ver todas las opciones disponibles y obtener una visión general completa de la herramienta, puede utilizar la bandera --help. Veamos el menú de ayuda. Todas las operaciones en este laboratorio se realizarán en el directorio predeterminado ~/project.

Ejecute el siguiente comando en su terminal:

crunch --help

Verá una salida detallada que enumera todas las banderas y sus descripciones. Tómese un momento para revisarlas. Esta es una excelente referencia para cuando desee explorar funciones más avanzadas.

crunch version 3.6

Crunch can create a wordlist based on criteria you specify.  The output from
crunch can be sent to the screen, a file, or to another program.

Usage: crunch <min-len> <max-len> [options]
where min-len and max-len are numbers

... (output truncated) ...

Ahora que está familiarizado con la sintaxis básica y cómo encontrar ayuda, está listo para generar su primera lista de palabras.

Generar una Lista de Palabras Simple de Longitud Fija

En este paso, generará su primera lista de palabras con una longitud fija. Este es uno de los usos más comunes de crunch. Cuando la longitud mínima y máxima son iguales, crunch generará todas las combinaciones posibles para esa longitud específica.

Por defecto, crunch imprime la lista de palabras en la salida estándar (la pantalla de su terminal). Para listas grandes, esto puede ser abrumador y no muy útil. Una mejor práctica es guardar la salida en un archivo utilizando la opción -o.

Generemos todas las palabras posibles de 3 caracteres utilizando el alfabeto predeterminado en minúsculas y guardémoslas en un archivo llamado 3char.txt.

Ejecute el siguiente comando:

crunch 3 3 -o 3char.txt

Este comando le indica a crunch que genere palabras con una longitud mínima de 3 y una longitud máxima de 3, y que envíe el resultado a 3char.txt. Verá algunas estadísticas sobre la lista generada en su terminal.

Crunch will now generate the following amount of data: 20280 bytes, 19 KB, 0 MB, 0 GB
Crunch will now generate the following number of lines: 17576

Para verificar que el archivo se creó correctamente, puede usar el comando head para ver las primeras líneas del archivo.

head -n 5 3char.txt

Debería ver el principio de la lista alfabética.

aaa
aab
aac
aad
aae

Ha generado y guardado con éxito su primera lista de palabras.

Generar una Lista de Palabras con un Conjunto de Caracteres Específico

En este paso, aprenderá cómo especificar un conjunto de caracteres personalizado para su lista de palabras. Esto es extremadamente útil cuando tiene información sobre los caracteres posibles en una contraseña (por ejemplo, solo contiene números, o solo letras específicas).

Para especificar un conjunto de caracteres, simplemente agregue la cadena de caracteres que desea usar al final del comando, después de los argumentos de longitud.

Generemos una lista de códigos PIN de 4 dígitos, utilizando solo los números 0, 1, 2 y 3. Guardaremos esta lista en un archivo llamado 4digit.txt.

Ejecute este comando:

crunch 4 4 0123 -o 4digit.txt

Aquí, 4 4 establece la longitud a exactamente cuatro caracteres, 0123 proporciona el conjunto de caracteres personalizado y -o 4digit.txt guarda la salida.

Inspeccionemos el principio del archivo generado para confirmar la salida.

head -n 5 4digit.txt

La salida mostrará las primeras cinco combinaciones utilizando solo los dígitos especificados.

0000
0001
0002
0003
0010

Como puede ver, crunch ahora está utilizando solo los caracteres que usted proporcionó, lo que le da mucho más control sobre la lista de palabras generada.

Usar la Opción -t para Generar Palabras Basadas en Patrones

En este paso, utilizará la opción -t para generar listas de palabras basadas en un patrón específico. Esta es una de las características más potentes de Crunch, que le permite crear listas de palabras altamente dirigidas si conoce parte de la estructura de la contraseña.

La opción -t utiliza marcadores de posición especiales para representar diferentes tipos de caracteres:

  • @ se reemplazará por letras minúsculas.
  • , se reemplazará por letras mayúsculas.
  • % se reemplazará por números.
  • ^ se reemplazará por símbolos.

Imaginemos que sabe que una contraseña comienza con la palabra "user", seguida de dos números y termina con una sola letra mayúscula. El patrón sería user%%,. La longitud total es de 7 caracteres (4 para "user", 2 para %%, 1 para ,).

Generemos una lista de palabras basada en este patrón y guardémosla en pattern.txt.

crunch 7 7 -t user%%, -o pattern.txt

Este comando le indica a crunch que genere palabras de exactamente 7 caracteres, siguiendo el patrón user%%,.

Ahora, veamos las primeras líneas del archivo de salida.

head -n 5 pattern.txt

La salida coincidirá con el patrón que definió.

user00A
user00B
user00C
user00D
user00E

Este método reduce drásticamente el tamaño de la lista de palabras y el tiempo requerido para un ataque de fuerza bruta al centrarse solo en candidatos de contraseñas plausibles.

Canalizar la Salida de Crunch Directamente a Hashcat

En este paso, aprenderá una técnica potente: canalizar la salida de crunch directamente a otra herramienta. Esto es muy eficiente porque evita escribir una lista de palabras potencialmente masiva en su disco, ahorrando espacio y tiempo. Las palabras se generan y se "canalizan" (envían) al siguiente programa en tiempo real.

Si bien crunch se usa a menudo con herramientas de cracking de contraseñas como Hashcat o John the Ripper, simularemos este proceso utilizando un simple comando grep. grep es una herramienta para buscar texto y servirá para demostrar el concepto de canalización.

Imaginemos que estamos intentando encontrar la contraseña labex23. Sospechamos que la contraseña comienza con "labex" y le siguen dos dígitos.

Podemos generar palabras que coincidan con este patrón y canalizarlas directamente a grep para ver si nuestra contraseña objetivo está en la lista generada. El símbolo de canalización | se utiliza para conectar la salida de un comando a la entrada de otro.

Ejecute el siguiente comando:

crunch 7 7 -t labex%% | grep "labex23"

Este comando hace dos cosas:

  1. crunch 7 7 -t labex%% genera todas las palabras de 7 caracteres que comienzan con "labex" seguidas de dos números (por ejemplo, labex00, labex01, ...).
  2. La canalización | envía cada palabra generada al comando grep "labex23", que comprueba si la palabra coincide con "labex23".

Si se encuentra una coincidencia, grep la imprimirá en la terminal.

labex23

Ha generado con éxito una lista de palabras sobre la marcha y la ha procesado con otra herramienta, una habilidad fundamental para pruebas de seguridad eficientes.

Resumen

¡Felicitaciones por completar este laboratorio! Ha adquirido habilidades fundamentales en el uso de crunch, una herramienta versátil para generar listas de palabras personalizadas.

En este laboratorio, aprendió a:

  • Comprender la sintaxis básica del comando crunch.
  • Generar listas de palabras simples de una longitud fija y guardarlas en un archivo.
  • Especificar un conjunto de caracteres personalizado para crear listas de palabras más dirigidas.
  • Utilizar la opción -t para generar palabras basadas en un patrón conocido.
  • Canalizar la salida de crunch directamente a otras herramientas de línea de comandos como grep para realizar procesamiento en tiempo real sin guardar en un archivo.

Estas habilidades son fundamentales para muchas tareas en ciberseguridad, especialmente en auditoría de contraseñas y pruebas de penetración. Al crear listas de palabras personalizadas, puede mejorar significativamente la eficiencia y la tasa de éxito de sus evaluaciones de seguridad.