Introducción
Hashcat es una herramienta potente y versátil para la recuperación de contraseñas, ampliamente reconocida por su velocidad y su compatibilidad con numerosos algoritmos de hash y modos de ataque. Una de sus características más innovadoras es el ataque PRINCE (Probabilistic Relevant Incremental Nonce-based Candidate-generator Extension).
A diferencia de un ataque de diccionario estándar que solo prueba palabras de una lista, el ataque PRINCE genera nuevos candidatos a contraseña combinando palabras de una lista de palabras dada de diversas maneras. Esto lo hace muy eficaz contra contraseñas que son concatenaciones de dos o más palabras de diccionario, un patrón común para crear contraseñas memorables pero aparentemente complejas.
En este laboratorio, aprenderá los fundamentos del modo de ataque PRINCE en Hashcat. Preparará una lista de palabras, ejecutará un ataque PRINCE contra un hash de muestra, analizará los candidatos generados y, finalmente, lo combinará con un archivo de reglas para abordar variaciones de contraseñas aún más complejas.
Comprender la Generación Probabilística de Palabras con PRINCE
En este paso, aprenderá el concepto central detrás del modo de ataque PRINCE. El ataque PRINCE se designa con la bandera del modo de ataque -a 8 en Hashcat. Su fortaleza radica en la creación de nuevos candidatos a contraseña a partir de una lista de palabras más pequeña, en lugar de depender de un diccionario masivo. Combina algorítmicamente las palabras de su lista de origen para generar un conjunto mucho mayor y más complejo de contraseñas potenciales.
Por ejemplo, si su lista de palabras contiene "apple" y "pie", PRINCE puede generar candidatos como "apple", "pie", "applepie", "pieapple", "appleapple", y así sucesivamente.
Comencemos confirmando la opción del modo de ataque PRINCE en el menú de ayuda de Hashcat. Puede usar grep para filtrar la extensa salida de ayuda y encontrar la línea relevante.
Ejecute el siguiente comando en su terminal:
hashcat --help | grep "PRINCE"
Verá la línea que define el modo de ataque PRINCE, confirmando su disponibilidad y su número de modo de ataque correspondiente.
8 | PRINCE
Esto confirma que -a 8 es la bandera correcta para invocar un ataque PRINCE.
Preparar una Pequeña Lista de Palabras Base
En este paso, creará una pequeña lista de palabras base. La efectividad de un ataque PRINCE está directamente relacionada con la calidad de la lista de palabras de entrada. Incluso una lista de palabras pequeña y bien elegida puede ser increíblemente potente. Para este laboratorio, crearemos un archivo que contenga algunas palabras simples.
Nuestra contraseña objetivo para la primera parte del laboratorio es "labexrocks". Por lo tanto, nuestra lista de palabras debe contener las palabras base "labex" y "rocks".
Utilice el comando echo con redirección de salida para crear un archivo llamado wordlist.txt en su directorio actual (~/project).
echo -e "labex\nrocks\npass\nword" > wordlist.txt
La bandera -e habilita la interpretación de escapes de barra invertida, por lo que \n crea una nueva línea para cada palabra.
Ahora, verifique el contenido de su lista de palabras recién creada utilizando el comando cat.
cat wordlist.txt
Debería ver la siguiente salida, confirmando que el archivo se creó correctamente:
labex
rocks
pass
word
Ahora tiene una lista de palabras base lista para el ataque PRINCE.
Ejecutar un Ataque PRINCE con -a 8
En este paso, utilizará la lista de palabras que creó para descifrar un hash MD5 de ejemplo. El script de configuración para este laboratorio ya ha creado un archivo llamado hash.txt que contiene el hash MD5 de la contraseña "labexrocks".
Construyamos el comando de Hashcat:
hashcat: El ejecutable.-m 0: Especifica el modo de hash.0corresponde a MD5.-a 8: Especifica el modo de ataque, que es PRINCE.hash.txt: El archivo que contiene el hash objetivo.wordlist.txt: Su lista de palabras base.
Ahora, ejecute el comando completo en su terminal:
hashcat -m 0 -a 8 hash.txt wordlist.txt
Hashcat se inicializará y comenzará el ataque. Dado que la lista de palabras es pequeña y la contraseña es una combinación directa de las palabras en ella, el proceso será muy rápido. Verá una salida que detalla la sesión y, lo más importante, la contraseña descifrada.
La salida se verá similar a esto (algunos detalles pueden variar):
...
Dictionary cache built:
* Filename..: wordlist.txt
* Passwords.: 4
* Bytes.....: 22
* Keyspace..: 468
2d4a2b23999534c734b26e1b31b5579d:labexrocks
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 2d4a2b23999534c734b26e1b31b5579d
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Mode.......: PRINCE
Speed.#*.........: ...
Recovered........: 1/1 (100.00%) Digests
Progress.........: 468/468 (100.00%)
Rejected.........: 0/468 (0.00%)
Restore.Point....: 468/468 (100.00%)
Restore.Sub.#*...: ...
Candidate.Engine.: PRINCE
Candidates.#*....: ...
Hardware.Mon.#*..: ...
...
La línea 2d4a2b23999534c734b26e1b31b5579d:labexrocks muestra claramente el hash original y la contraseña recuperada. Ha utilizado con éxito el ataque PRINCE para descifrar la contraseña.
Analizar las Contraseñas Candidatas Generadas
En este paso, explorará lo que PRINCE está haciendo detrás de escena. En lugar de descifrar un hash, puede indicar a Hashcat que simplemente imprima las contraseñas candidatas que genera en la consola. Esto se hace utilizando la bandera --stdout. Es una excelente manera de comprender cómo se está transformando su lista de palabras base.
Usemos --stdout con nuestro wordlist.txt para ver los candidatos generados.
hashcat --stdout -a 8 wordlist.txt
Esto imprimirá un gran número de combinaciones en su pantalla. Para hacer la salida más manejable, puede canalizarla al comando head para ver solo las primeras 10 líneas.
hashcat --stdout -a 8 wordlist.txt | head -n 10
La salida mostrará los primeros candidatos generados por PRINCE.
pass
word
labex
rocks
passpass
password
passlabex
passrocks
wordpass
wordword
Como puede ver, PRINCE comienza con las palabras originales y luego comienza a crear nuevas combinaciones. La contraseña que desciframos anteriormente, "labexrocks", se generaría más adelante en esta lista. Esto demuestra el poder de PRINCE para expandir una lista de palabras pequeña en un conjunto mucho más grande y efectivo de suposiciones de contraseñas.
Combinar PRINCE con un Archivo de Reglas para Mayor Complejidad
En este paso, aprenderá cómo hacer que el ataque PRINCE sea aún más potente combinándolo con un archivo de reglas. Los archivos de reglas aplican mutaciones específicas a cada contraseña candidata generada por PRINCE. Esto le permite probar variaciones comunes como la capitalización, la adición de números o la adición de caracteres especiales.
La configuración del laboratorio ha proporcionado un archivo de hash hash2.txt (para la contraseña "Labexrocks") y un archivo de reglas común llamado best64.rule. Este archivo de reglas contiene 64 de las reglas de manipulación de contraseñas más efectivas.
El flujo del ataque será:
- PRINCE genera un candidato (por ejemplo, "labexrocks").
- Hashcat aplica reglas de
best64.rulea ese candidato (por ejemplo, capitalizar la primera letra -> "Labexrocks"). - El candidato modificado se prueba contra el hash.
Para combinar un ataque PRINCE con un archivo de reglas, simplemente agregue la bandera -r seguida de la ruta al archivo de reglas.
Ejecute el siguiente comando:
hashcat -m 0 -a 8 hash2.txt wordlist.txt -r best64.rule
Hashcat ahora ejecutará el ataque PRINCE, pero cada candidato generado será modificado por las reglas en best64.rule antes de ser probado.
Verá un descifrado exitoso en la salida:
...
15895e67271a552214b5e422d5752e47:Labexrocks
Session..........: hashcat
Status...........: Cracked
...
La contraseña recuperada es "Labexrocks". Se encontró porque PRINCE generó "labexrocks", y una de las reglas en best64.rule capitalizó la primera letra, coincidiendo con la contraseña objetivo. Esta combinación de modos de ataque es extremadamente efectiva en escenarios del mundo real.
Resumen
En este laboratorio, ha aprendido con éxito a utilizar el modo de ataque PRINCE en Hashcat. Ha adquirido experiencia práctica con una de las técnicas de descifrado de contraseñas más creativas y efectivas disponibles.
Ha aprendido a:
- Comprender el concepto del ataque PRINCE (
-a 8) y cómo genera probabilísticamente contraseñas candidatas. - Preparar una lista de palabras simple y específica para que sirva de base para el ataque.
- Ejecutar un ataque PRINCE básico para descifrar una contraseña formada por la concatenación de palabras.
- Utilizar la bandera
--stdoutpara analizar los candidatos generados por PRINCE y comprender su lógica. - Combinar el ataque PRINCE con un archivo de reglas (
-r) para descifrar contraseñas más complejas con variaciones como la capitalización.
El ataque PRINCE es una herramienta poderosa en el arsenal de cualquier profesional de la seguridad, especialmente cuando se trata de contraseñas creadas a partir de múltiples palabras. Dominar su uso y su combinación con otros modos de ataque mejorará significativamente sus capacidades de recuperación de contraseñas.


