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 se ejecuta una sesión de cracking, Hashcat necesita una forma de gestionar los resultados. Es crucial saber qué contraseñas se han descifrado con éxito y cuáles siguen sin resolverse.

En este laboratorio, aprenderá los fundamentos de la gestión de la salida de Hashcat. Exploraremos el archivo hashcat.potfile, que almacena automáticamente las contraseñas descifradas. También aprenderá 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 características es esencial para cualquier flujo de trabajo eficaz de auditoría o recuperación de contraseñas.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 97%. Ha recibido una tasa de reseñas positivas del 83% por parte de los estudiantes.

Comprender el propósito del hashcat.potfile

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

Ejecutemos 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.

Ejecute el siguiente comando para iniciar el ataque:

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

Aquí hay 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 (straight dictionary attack).
  • 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á que Hashcat se inicia. Dado que nuestra lista de palabras contiene las contraseñas correctas para todos los hashes, el proceso finalizará 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 los pares hash-contraseña descifrados en el potfile

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

Para ver el contenido del potfile, utilice el comando cat. El archivo se encuentra en un directorio oculto dentro de su carpeta de inicio (home folder).

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

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

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

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

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

En este paso, aprenderá un método más práctico para verificar sus resultados. En lugar de leer manualmente todo el potfile, puede usar 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 descifrado nuevo.

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

Ejecute 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 verificar 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 descifrado en un archivo separado. Si bien el potfile es una excelente base de datos interna para Hashcat, a menudo necesitas 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 junto con --show, Hashcat recuperará los pares 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 verificará 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á cómo identificar qué hashes permanecen sin descifrar. Esto es tan importante como saber cuáles ha resuelto, ya que le permite enfocar sus esfuerzos en ataques subsiguientes (por ejemplo, usando una lista de palabras o un modo de ataque diferente). Hashcat proporciona la opción --left para este propósito.

Cuando se usa con --show, el indicador --left mostrará todos los hashes de su lista de entrada que no están presentes en el potfile.

Veamos qué hashes de hashes.txt aún no están descifrados.

hashcat -m 0 --show --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 puede combinar --left con la opción -o para guardar estos hashes restantes en un nuevo archivo. Esta es una práctica común para crear una lista de trabajo para su próximo intento de descifrado.

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

Ahora, verifique el contenido del archivo uncracked.txt.

cat uncracked.txt

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

Resumen

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

Usted ha 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 limpiamente 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, lo que le permite enfocar sus esfuerzos futuros de manera efectiva.

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