Gestionar Sesiones de Descifrado en Hashcat

Kali LinuxBeginner
Practicar Ahora

Introducción

Hashcat es una herramienta potente y popular para la recuperación de contraseñas. Descifrar contraseñas puede ser un proceso que consume mucho tiempo, a veces tardando horas, días o incluso semanas. Debido a esto, es crucial saber cómo gestionar estas tareas de larga ejecución. Es posible que necesites pausar una tarea para liberar recursos del sistema, o que te enfrentes a un apagado inesperado del sistema. Sin una gestión de sesiones adecuada, tendrías que iniciar todo el proceso desde el principio, perdiendo un tiempo valioso.

En este laboratorio, aprenderás los fundamentos de la gestión de sesiones en Hashcat. Practicarás el inicio de una sesión con nombre, su pausa y reanudación interactiva, y su detención y restauración utilizando las funciones de gestión de sesiones integradas de Hashcat. Estas habilidades son esenciales para cualquier uso práctico de Hashcat.

Iniciar una Sesión de Descifrado de Larga Duración

En este paso, iniciarás una tarea de descifrado de contraseñas y le asignarás un nombre de sesión específico. Nombrar una sesión es el primer y más importante paso para la gestión, ya que le indica a Hashcat que rastree y guarde el progreso de esta tarea específica.

Utilizaremos un ataque de diccionario básico. La estructura del comando utiliza varias banderas (flags):

  • -m 0: Especifica el tipo de hash. 0 corresponde a MD5.
  • -a 0: Especifica el modo de ataque. 0 corresponde a un ataque Directo (diccionario).
  • --session <name>: Asigna un nombre a la sesión actual. Esto es crucial para pausar y restaurar.

Primero, asegúrate de estar en el directorio ~/project, donde el script de configuración ha creado los archivos necesarios (hashes.txt y wordlist.txt).

Ahora, ejecuta el siguiente comando para iniciar una sesión de descifrado llamada my_session:

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

Después de ejecutar el comando, Hashcat se inicializará y mostrará una pantalla de estado en tu terminal. Esta pantalla proporciona información en tiempo real sobre el progreso del descifrado.

hashcat (v6.2.x) starting...

...

Session..........: my_session
Status...........: Running
Hash.Name........: MD5
Hash.Target......: 5f4dcc3b5aa765d61d8327deb882cf99
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#*.........: ...
...
Progress.........: 123456/1000001 (12.34%)
...

[s]tatus [p]ause [r]esume [b]ypass [q]uit =>

Observa la línea Session..........: my_session, que confirma el nombre de nuestra sesión. El Status es Running (En ejecución), y la barra de Progress (Progreso) está avanzando. Deja que el proceso se ejecute durante unos momentos antes de pasar al siguiente paso.

Pausar la Sesión Presionando 'p'

En este paso, aprenderás cómo pausar una sesión activa de Hashcat. Esto es útil si necesitas asignar temporalmente los recursos de tu computadora a otra tarea sin perder tu progreso de descifrado.

Hashcat proporciona un menú interactivo en la parte inferior de su pantalla de estado. Puedes ver las opciones disponibles: [s]tatus [p]ause [r]esume [b]ypass [q]uit.

Para pausar la sesión, simplemente presiona la tecla p en tu teclado mientras la ventana de terminal de Hashcat esté activa. No necesitas presionar Enter.

Presiona p ahora.

Verás que el campo Status (Estado) en la pantalla cambia inmediatamente de Running (En ejecución) a Paused (Pausado).

...
Session..........: my_session
Status...........: Paused
...

[s]tatus [p]ause [r]esume [b]ypass [q]uit =>

Mientras la sesión está pausada, Hashcat detiene todo el procesamiento y el uso de GPU/CPU para la tarea se reduce a cero. Sin embargo, la aplicación permanece activa en tu terminal, esperando más instrucciones.

Reanudar la Sesión Presionando 'r'

En este paso, reanudarás la sesión que acabas de pausar.

Así como usaste la tecla p para pausar, puedes usar la tecla r para reanudar. Esto le indicará a Hashcat que continúe el proceso de descifrado desde el punto exacto donde se pausó.

Con la terminal de Hashcat aún activa, presiona la tecla r.

El campo Status (Estado) volverá a cambiar de Paused (Pausado) a Running (En ejecución), y verás que los indicadores de Progress (Progreso) y Speed (Velocidad) se activan nuevamente.

...
Session..........: my_session
Status...........: Running
...

[s]tatus [p]ause [r]esume [b]ypass [q]uit =>

La sesión ahora se está ejecutando de nuevo, y no se ha perdido ningún progreso. Este ciclo de pausa/reanudación se puede repetir tantas veces como sea necesario.

Detener la Sesión y Comprender el Archivo .restore

En este paso, aprenderás cómo detener una sesión por completo e inspeccionar el archivo que Hashcat utiliza para guardar su estado. Esto es diferente de pausar; detener cierra la aplicación por completo. Esto es lo que harías si necesitas apagar tu computadora.

Para detener la sesión de forma segura, presiona la tecla q (de quit, salir).

Presiona q ahora.

Hashcat detendrá el proceso de descifrado y saldrá, devolviéndote al prompt de comandos.

Cuando utilizas una sesión con nombre, Hashcat guarda automáticamente su progreso en un archivo de restauración. Este archivo tiene el mismo nombre que tu sesión con la extensión .restore.

Verifiquemos que este archivo se ha creado. Lista los archivos en tu directorio actual:

ls -l

Deberías ver my_session.restore en la lista de archivos.

-rw-r--r-- 1 labex labex    28 Jul 10 10:30 hashes.txt
-rw-r--r-- 1 labex labex    48 Jul 10 10:32 my_session.restore
-rw-r--r-- 1 labex labex 8888898 Jul 10 10:30 wordlist.txt

Este archivo contiene toda la información que Hashcat necesita para reanudar la sesión más tarde, incluyendo los argumentos de línea de comandos originales y el último candidato a contraseña que se probó. Puedes ver su contenido con el comando cat:

cat my_session.restore

La salida será una serie de líneas que contienen la configuración y el progreso de la sesión. Este archivo es la clave de las potentes capacidades de gestión de sesiones de Hashcat.

Restaurar una Sesión Anterior con las Opciones --session y --restore

En este último paso, aprenderás cómo restaurar una sesión que se ha detenido por completo. Esto es extremadamente útil para continuar el trabajo después de un reinicio o después de detener intencionalmente una tarea de larga duración.

Para restaurar una sesión, utilizas la opción --restore junto con la opción --session para especificar qué sesión reanudar. Una gran conveniencia de este método es que no necesitas proporcionar nuevamente el tipo de hash original, el modo de ataque o las rutas de los archivos. Hashcat lee toda esa información del archivo .restore.

Ejecuta el siguiente comando para restaurar my_session:

hashcat --session my_session --restore

Hashcat se iniciará nuevamente y cargará automáticamente el estado del archivo my_session.restore. Verás aparecer la pantalla de estado y, lo que es importante, el Progress (Progreso) comenzará desde donde se detuvo, no desde el principio.

...
Session..........: my_session
Status...........: Running
...
Progress.........: 123456/1000001 (12.34%) -> (Resuming from where it was stopped)
...

[s]tatus [p]ause [r]esume [b]ypass [q]uit =>

Has restaurado con éxito una sesión detenida. Ahora puedes dejar que se ejecute hasta completarse o presionar q para salir nuevamente.

Resumen

En este laboratorio, has aprendido las habilidades esenciales para gestionar sesiones de descifrado en Hashcat. Ahora sabes cómo manejar tareas de larga duración sin temor a perder progreso debido a interrupciones.

Has aprendido a:

  • Iniciar una sesión con nombre utilizando la opción --session, que es la base de la gestión de sesiones.
  • Controlar interactivamente una sesión en ejecución presionando p para pausar y r para reanudar.
  • Detener una sesión de forma segura con q y comprender que Hashcat crea automáticamente un archivo .restore para guardar el estado.
  • Restaurar una sesión completamente detenida utilizando las opciones --session y --restore, lo que te permite continuar el trabajo de manera eficiente.

Dominar estas características es fundamental para utilizar Hashcat de manera efectiva en cualquier tarea de descifrado de contraseñas no trivial.