Archivos Potfile y de salida de Hashcat

LinuxBeginner
Practicar Ahora

Introducción

Hashcat es una herramienta potente y popular para la recuperación de contraseñas. Cuando ejecutas una sesión de cracking, Hashcat necesita una forma de gestionar los resultados. Es fundamental saber qué contraseñas se han descifrado con éxito y cuáles siguen sin resolverse.

En este laboratorio, aprenderás los fundamentos de la gestión de la salida de Hashcat. Exploraremos el hashcat.potfile, que almacena automáticamente las contraseñas descifradas. También aprenderás a utilizar opciones de línea de comandos como --show para mostrar las contraseñas descifradas, -o para guardar los resultados en un archivo específico y --left para identificar qué hashes aún no han sido descifrados. Dominar estas funciones es esencial para cualquier flujo de trabajo eficaz de auditoría o recuperación de contraseñas.

Comprender el propósito del hashcat.potfile

En este paso, aprenderás sobre el hashcat.potfile, un componente crucial de Hashcat. Para evitar volver a descifrar los mismos hashes en sesiones futuras, Hashcat guarda automáticamente cada hash descifrado con éxito junto con su contraseña en texto plano en un archivo. Este archivo se denomina "potfile". Por defecto, se llama hashcat.potfile y se encuentra en el directorio ~/.local/share/hashcat/.

Vamos a ejecutar un ataque de diccionario básico para descifrar algunos hashes. Esto generará el potfile por nosotros. Tenemos un archivo llamado hashes.txt que contiene hashes MD5 y un archivo wordlist.txt con posibles contraseñas.

Ejecuta el siguiente comando para iniciar el ataque:

hashcat -m 0 -a 0 hashes.txt wordlist.txt

Aquí tienes un desglose del comando:

  • -m 0: Especifica el tipo de hash, donde 0 corresponde a MD5.
  • -a 0: Especifica el modo de ataque, donde 0 es un ataque de diccionario directo.
  • hashes.txt: El archivo de entrada que contiene los hashes a descifrar.
  • wordlist.txt: El archivo de diccionario que contiene las contraseñas a probar.

Verás que Hashcat se inicia. Dado que nuestro diccionario contiene las contraseñas correctas para todos los hashes, el proceso terminará rápidamente.

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:  ... H/s (0.00ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 4/4 (100.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 5/5 (100.00%)
Rejected.........: 0/5 (0.00%)
Restore.Point....: 5/5 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: password -> testing
Hardware.Mon.#1..: Temp: 46c Fan: 33%
...
Started: ...
Stopped: ...

La salida muestra que los 4 hashes fueron recuperados. Esto significa que el hashcat.potfile ha sido creado y poblado con estos resultados.

Ver pares de hash-contraseña descifrados en el potfile

En este paso, inspeccionaremos directamente el contenido del hashcat.potfile. Esto te ayudará a entender cómo Hashcat almacena las credenciales descifradas. El formato es sencillo y eficaz: cada línea contiene el hash, un separador de dos puntos y la contraseña descifrada en texto plano.

Para ver el contenido del potfile, utiliza el comando cat. El archivo se encuentra en un directorio oculto dentro de tu carpeta personal.

cat ~/.local/share/hashcat/hashcat.potfile

La salida mostrará los pares de hash-contraseña que se descifraron con éxito en el paso anterior.

5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab

Como puedes ver, el archivo contiene los cuatro hashes de hashes.txt que coincidieron con las contraseñas en wordlist.txt. Aunque ver el potfile directamente es útil para entender su estructura, puede volverse desordenado y difícil de leer en escenarios reales con miles de contraseñas descifradas. En el siguiente paso, aprenderás una forma más eficiente de ver los resultados de una tarea específica.

Usar '--show' para mostrar contraseñas descifradas de una lista de hashes específica

En este paso, aprenderás un método más práctico para comprobar tus resultados. En lugar de leer manualmente todo el potfile, puedes utilizar la opción --show de Hashcat. Este comando indica a Hashcat que compare una lista de hashes dada con su potfile y muestre solo los hashes descifrados de esa lista. No realiza ningún nuevo proceso de cracking.

Esto es extremadamente útil cuando quieres ver rápidamente los resultados de una lista objetivo específica sin tener que filtrar un potfile potencialmente masivo que contiene resultados de muchas sesiones diferentes.

Ejecuta el siguiente comando para mostrar los hashes descifrados de nuestro archivo hashes.txt:

hashcat -m 0 --show hashes.txt

Hashcat comprobará instantáneamente el potfile e imprimirá los resultados en un formato limpio y legible.

5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab

La salida es limpia y responde directamente a la pregunta: "¿Qué hashes de hashes.txt ya he descifrado?". Esta es la forma recomendada de comprobar las contraseñas descifradas de una sesión específica.

Guardar contraseñas descifradas en un archivo de salida dedicado usando '-o'

En este paso, aprenderás cómo guardar tus resultados de cracking en un archivo separado. Aunque el potfile es una excelente base de datos interna para Hashcat, a menudo necesitarás un archivo de salida limpio para informes o análisis. Esto se logra utilizando la opción -o (o --outfile).

Cuando añades -o a tu comando de ataque combinado con --show, Hashcat recuperará los pares de hash-contraseña descifrados del potfile y los escribirá en el archivo de salida especificado. Esto es particularmente útil cuando los hashes ya han sido descifrados y existen en el potfile, ya que puedes extraer y guardar rápidamente esos resultados en un archivo dedicado.

Ejecutemos el comando con las opciones --show y -o para guardar los resultados descifrados.

hashcat -a 0 -m 0 --show -o cracked.txt hashes.txt wordlist.txt

Hashcat comprobará instantáneamente el potfile y escribirá todos los pares de contraseñas descifradas en cracked.txt.

Ahora, veamos el contenido de nuestro nuevo archivo de salida.

cat cracked.txt

La salida será una lista limpia de los pares descifrados.

5f4dcc3b5aa765d61d8327deb882cf99:password
e10adc3949ba59abbe56e057f20f883e:123456
d8578edf8458ce06fbc5bb76a58c5ca4:qwerty
f9664ea1803311b35f81d07d8c9e072d:lab

Este archivo cracked.txt es ahora un registro portátil de los resultados exitosos de este ataque específico, separado del potfile principal.

Usar '--left' para ver qué hashes no fueron descifrados

En este paso, aprenderás a identificar qué hashes permanecen sin descifrar. Esto es tan importante como saber cuáles has resuelto, ya que te permite concentrar tus esfuerzos en ataques posteriores (por ejemplo, utilizando un diccionario diferente o un modo de ataque distinto). Hashcat proporciona la opción --left para este propósito.

El flag --left muestra los hashes de tu lista de entrada que no están presentes en el potfile.

Veamos qué hashes de hashes.txt siguen sin descifrar.

hashcat -m 0 --left hashes.txt

Dado que todos los hashes de nuestra lista han sido descifrados, la salida estará vacía (no quedan hashes sin descifrar).

También puedes combinar --left con la opción -o para guardar estos hashes restantes en un archivo nuevo. Esta es una práctica común para crear una lista de trabajo para tu próximo intento de cracking.

hashcat -m 0 --left -o uncracked.txt hashes.txt

Ahora, comprueba el contenido del archivo uncracked.txt.

cat uncracked.txt

Como todos los hashes fueron descifrados, el archivo uncracked.txt estará vacío.

Resumen

En este laboratorio, has aprendido las técnicas esenciales para gestionar e interpretar la salida de Hashcat. Estas habilidades son fundamentales para organizar un flujo de trabajo eficiente de cracking de contraseñas.

Has aprendido:

  • El papel del hashcat.potfile como base de datos automática para todas las contraseñas descifradas.
  • Cómo usar hashcat --show para mostrar de forma limpia las contraseñas descifradas de una lista de hashes específica.
  • Cómo usar la opción -o para guardar las contraseñas descifradas en un archivo de salida dedicado para informes y análisis.
  • Cómo usar la opción --left para aislar los hashes no descifrados, permitiéndote enfocar tus esfuerzos futuros de manera efectiva.

Al dominar estas funciones de salida y gestión de archivos, podrás ejecutar sesiones de recuperación de contraseñas más organizadas, eficientes y efectivas con Hashcat.