Crear una Regla Personalizada en Hashcat

Kali LinuxBeginner
Practicar Ahora

Introducción

Hashcat es una herramienta potente y versátil para la recuperación de contraseñas. Una de sus características más efectivas es el ataque basado en reglas (rule-based attack), que te permite realizar manipulaciones en una lista de palabras (wordlist) para crear una gran cantidad de candidatos a contraseñas. En lugar de usar archivos de reglas predefinidos, puedes crear tus propios archivos de reglas personalizados, adaptados a un objetivo específico.

En este laboratorio, aprenderás los fundamentos de la sintaxis de reglas de Hashcat y crearás tu propio archivo de reglas personalizado desde cero. Escribirás reglas para capitalizar la primera letra de una palabra y añadir un año, y luego utilizarás este archivo de reglas personalizado en un ataque de cracking de contraseñas de ejemplo.

Aprende la Sintaxis Básica de Reglas como Añadir '$' y Anteponer '^'

En este paso, aprenderás sobre la sintaxis básica de las reglas de Hashcat. Las reglas son comandos simples de un solo carácter que le indican a Hashcat cómo manipular una palabra de tu lista de palabras (wordlist). Dos de las reglas más fundamentales son para anteponer (prepend) y añadir (append) caracteres.

  • ^x: Antepone el carácter x al principio de la palabra.
  • $x: Añade el carácter x al final de la palabra.

Para ver cómo funcionan estas reglas sin ejecutar un ataque completo, podemos usar la opción --stdout. Esto imprimirá la salida de las manipulaciones de reglas directamente en la terminal.

Primero, probemos la regla de añadir. Crearemos un archivo de reglas temporal que añada el número 1 a cada palabra.

echo '$1' > temp_rule.txt

Ahora, ejecuta Hashcat con esta regla contra nuestro wordlist.txt. La bandera --force se utiliza para hacer que Hashcat se ejecute incluso si detecta un entorno no compatible, como una máquina virtual (VM).

hashcat --force --stdout wordlist.txt -r temp_rule.txt

Deberías ver la palabra de tu lista con el 1 añadido al final:

password1

A continuación, probemos la regla de anteponer. Crearemos una regla para anteponer el carácter A.

echo '^A' > temp_rule.txt

Ejecuta Hashcat de nuevo con esta nueva regla:

hashcat --force --stdout wordlist.txt -r temp_rule.txt

La salida ahora mostrará el carácter A al principio de la palabra:

Apassword

Siéntete libre de experimentar con otros caracteres para afianzar tu comprensión. Una vez que hayas terminado, puedes eliminar el archivo temporal.

rm temp_rule.txt

Crear un Nuevo Archivo de Reglas Personalizado

En este paso, crearás un archivo nuevo y vacío que contendrá todas las reglas personalizadas para nuestro ataque. Es una práctica estándar dar a los archivos de reglas la extensión .rule para mayor claridad.

Crearemos un archivo llamado labex.rule en tu directorio de trabajo actual, ~/project. Puedes crear un archivo vacío fácilmente usando el comando touch.

Ejecuta el siguiente comando en tu terminal:

touch labex.rule

Para confirmar que el archivo se ha creado correctamente, puedes listar el contenido del directorio usando el comando ls.

ls

Deberías ver labex.rule listado en la salida, junto con los archivos hashes.txt y wordlist.txt.

hashes.txt  labex.rule  wordlist.txt

Ahora tienes un archivo dedicado listo para tus reglas personalizadas.

Añadir una Regla para Capitalizar la Primera Letra 'c'

En este paso, añadirás tu primera regla al archivo labex.rule. Un patrón de contraseña muy común es capitalizar la primera letra de una palabra. Hashcat tiene una regla específica para esto:

  • c: Capitaliza la primera letra de la palabra y convierte todas las demás letras a minúsculas.

Añadiremos esta regla a nuestro archivo labex.rule. El comando echo combinado con una redirección simple > es una forma rápida de escribir contenido en un archivo, sobrescribiendo cualquier cosa que hubiera previamente.

echo 'c' > labex.rule

Ahora, probemos nuestro nuevo archivo de reglas para ver su efecto. Usaremos la opción --stdout nuevamente para previsualizar la salida.

hashcat --force --stdout wordlist.txt -r labex.rule

La salida debería ser la palabra password con la primera letra capitalizada, como se especifica por la regla c.

Password

Has creado y probado con éxito tu primera regla personalizada.

Añadir una Regla para Añadir un Año ' $2 $0 $2 $4'

En este paso, mejorarás tu regla para que sea más compleja. Puedes combinar múltiples comandos de regla en una sola línea para crear candidatos de contraseña más específicos. Modificaremos nuestra regla para que no solo capitalice la primera letra, sino que también añada un año, por ejemplo, 2024.

Para añadir un carácter específico, usas el comando $ seguido del carácter. Por ejemplo, $2 añade el dígito 2. Para construir la cadena 2024, necesitamos añadir 2, luego 0, luego 2, luego 4.

La regla combinada se verá así: c $2 $0 $2 $4. Esto le dice a Hashcat que primero realice la capitalización (c), y luego añada los caracteres especificados en orden.

Actualicemos el archivo labex.rule con esta nueva y más potente regla.

echo 'c $2 $0 $2 $4' > labex.rule

Ahora, prueba el archivo de reglas actualizado para ver el resultado de los comandos combinados.

hashcat --force --stdout wordlist.txt -r labex.rule

La salida ahora debería ser la palabra capitalizada seguida del año 2024.

Password2024

Esto demuestra cómo puedes encadenar reglas para crear patrones de contraseña complejos y dirigidos.

Probar el Archivo de Reglas Personalizado en un Ataque de Muestra

En este paso, utilizarás tu archivo de reglas personalizado completo, labex.rule, para realizar un ataque real de cracking de contraseñas. Nos dirigiremos al hash MD5 de muestra proporcionado en el archivo hashes.txt.

El comando para el ataque especificará el tipo de hash, el modo de ataque, el archivo de hash, la lista de palabras y, finalmente, nuestro archivo de reglas personalizado.

  • -m 0: Especifica que el tipo de hash es MD5.
  • -a 0: Especifica que el modo de ataque es un ataque "Straight" o de diccionario.
  • hashes.txt: El archivo que contiene el(los) hash(es) a crackear.
  • wordlist.txt: El archivo de diccionario a usar como base.
  • -r labex.rule: Especifica el archivo de reglas personalizado a aplicar a la lista de palabras.

Ejecuta el siguiente comando para iniciar el ataque:

hashcat --force -m 0 -a 0 hashes.txt wordlist.txt -r labex.rule

Hashcat se iniciará, aplicará la regla c $2 $0 $2 $4 a la palabra password, generará Password2024, la hasheará y la comparará con el hash en hashes.txt. Encontrará una coincidencia e informará la contraseña crackeada.

Después de que el ataque se complete (debería ser muy rápido), puedes ver las contraseñas crackeadas usando la opción --show.

hashcat --force -m 0 --show hashes.txt

La salida mostrará el hash seguido de su contraseña en texto plano crackeada.

a915550249347678553a332349443648:Password2024

¡Felicitaciones, has creado con éxito una regla personalizada y la has utilizado para crackear una contraseña!

Resumen

En este laboratorio, has aprendido las habilidades esenciales para crear reglas personalizadas en Hashcat. Comenzaste entendiendo la sintaxis básica para anteponer (^) y posponer ($) caracteres. Luego creaste tu propio archivo de reglas, labex.rule, y lo poblaste con reglas progresivamente más complejas.

Escribiste con éxito una regla para capitalizar la primera letra de una palabra (c) y luego la mejoraste encadenando comandos para añadir un año ($2 $0 $2 $4). Finalmente, aplicaste esta regla personalizada en un escenario de ataque práctico, crackeando con éxito un hash MD5.

Este conocimiento es un trampolín para dominar el potente motor de reglas de Hashcat, permitiéndote crear estrategias de cracking de contraseñas altamente dirigidas y eficientes.