Optimizar el cracking con perfiles de carga de trabajo

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, explorará cómo optimizar el rendimiento de hashcat, una potente herramienta de recuperación de contraseñas, utilizando sus perfiles de carga de trabajo (workload profiles). La configuración del perfil de carga de trabajo le permite ajustar el consumo de recursos de hashcat, logrando un equilibrio entre la velocidad de descifrado bruta y la capacidad de respuesta general del sistema. Esto es crucial cuando necesita realizar una tarea de descifrado de larga duración en una máquina que también se utiliza para otras actividades.

Aprenderá a:

  • Comprender los diferentes perfiles de carga de trabajo disponibles en hashcat.
  • Establecer una referencia de rendimiento base (baseline performance benchmark).
  • Probar y comparar los perfiles "Low Power" (Bajo Consumo) y "High Performance" (Alto Rendimiento).
  • Aplicar este conocimiento a un escenario de descifrado práctico.

Comprender el propósito de los perfiles de carga de trabajo con -w

En este paso, aprenderá sobre la opción -w (o --workload-profile) en hashcat. Esta opción controla la gestión interna de la carga de trabajo de hashcat, afectando la presión que ejerce sobre su CPU y GPU.

Hay cuatro perfiles principales:

  • -w 1 (Low Power / Bajo Consumo): Minimiza el uso de recursos. El sistema permanece muy receptivo, pero la velocidad de descifrado se reduce significativamente. Ideal para ejecutar en segundo plano en una estación de trabajo.
  • -w 2 (Default / Predeterminado): Un perfil equilibrado que ofrece un buen rendimiento manteniendo el sistema razonablemente utilizable.
  • -w 3 (High Performance / Alto Rendimiento): Maximiza la velocidad de descifrado utilizando más recursos del sistema. El sistema puede volverse lento.
  • -w 4 (Nightmare / Pesadilla): Para equipos de descifrado dedicados y altamente optimizados. Lleva el hardware a sus límites absolutos y puede causar inestabilidad o bloqueos del sistema en máquinas estándar.

Comencemos por ver la información de ayuda para esta opción específica. Esta es una buena práctica para comprender las características de cualquier herramienta de línea de comandos.

Ejecute el siguiente comando en su terminal para encontrar la descripción de la opción de perfil de carga de trabajo en el menú de ayuda de hashcat:

hashcat --help | grep "workload-profile"

Debería ver una salida que describe la opción -w y sus niveles disponibles.

-w, --workload-profile   |      ## | Enable a specific workload profile. See below.      | -w 3

Workload Profiles:
==================

  ## | Profile | Performance | Memory | Unattended | Base Tuning
 -+-----------+-------------+--------+------------+-------------
  1 | Low-Power |      10 % |  1/4   |     No     | -n 1 -u 1024
  2 | Default   |      90 % |  1/2   |     No     | -n 8 -u 256
  3 | High-Perf |     100 % |  Full  |     No     | -n 64 -u 64
  4 | Nightmare |     100 % |  Full  |     Yes    | -n 512 -u 32

Esto confirma los diferentes perfiles y da una idea de su impacto en el rendimiento y la optimización del sistema.

Ejecutar un benchmark para establecer una línea base

En este paso, establecerá una línea base de rendimiento (performance baseline). Una línea base es una medida estándar que puede utilizar como punto de referencia para la comparación. Ejecutaremos el modo de benchmark integrado de hashcat con su configuración predeterminada (equivalente a -w 2).

El modo de benchmark (-b) permite a hashcat medir su rendimiento en varios algoritmos de hashing sin necesidad de archivos de hash de entrada. Probaremos específicamente el algoritmo MD5, que está designado por el número de modo 0 (-m 0).

Ejecute el siguiente comando para iniciar el benchmark para MD5:

hashcat -b -m 0

hashcat se iniciará y probará el rendimiento de su sistema para el tipo de hash MD5. Preste mucha atención a la salida. Después de unos momentos, mostrará una tabla de resultados. Le interesa la columna Speed (Velocidad).

hashcat (v6.2.6) starting in benchmark mode

...

Hashtype: 0 - MD5

Speed.#1.........:  299.4 MH/s (46.38ms) @ Accel:128 Loops:256 Thr:64 Vec:1

...

Nota: La velocidad que vea (por ejemplo, 299.4 MH/s) variará según los recursos de la máquina virtual. Lo importante es tomar nota mental de este número. Este es su rendimiento base con el perfil de carga de trabajo predeterminado.

Probar el perfil de bajo consumo con -w 1

En este paso, probará el perfil de carga de trabajo "Low Power" (Bajo Consumo). Como su nombre indica, este perfil está diseñado para ser suave con los recursos de su sistema. Es la opción ideal cuando necesita ejecutar hashcat durante un período prolongado sin afectar su capacidad para usar la computadora para otras tareas.

Ejecutaremos el mismo benchmark que en el paso anterior, pero esta vez agregaremos el indicador -w 1 para seleccionar explícitamente el perfil de bajo consumo.

Ejecute el siguiente comando:

hashcat -b -m 0 -w 1

Una vez más, hashcat ejecutará su benchmark para el algoritmo MD5. Observe la salida y encuentre el valor de Speed (Velocidad).

hashcat (v6.2.6) starting in benchmark mode

...

Hashtype: 0 - MD5

Speed.#1.........:   37.8 MH/s (48.13ms) @ Accel:1 Loops:1024 Thr:1 Vec:1

...

Compare esta nueva velocidad con la línea base que registró en el Paso 2. Debería notar que la velocidad es significativamente menor. Esto demuestra la compensación: sacrifica el rendimiento bruto por una mejor capacidad de respuesta del sistema.

Probar el perfil de alto rendimiento con -w 3

En este paso, probará el perfil de carga de trabajo "High Performance" (Alto Rendimiento). Este perfil hace lo contrario del de bajo consumo: indica a hashcat que utilice tantos recursos del sistema como sea posible para lograr la máxima velocidad de cracking. Este es el perfil que usaría en una máquina dedicada donde el rendimiento es la única prioridad.

Ejecutemos el benchmark nuevamente, esta vez usando el indicador -w 3.

Ejecute el comando a continuación:

hashcat -b -m 0 -w 3

hashcat realizará el benchmark de MD5 utilizando la configuración de alto rendimiento. Verifique el valor de Speed (Velocidad) en la salida.

hashcat (v6.2.6) starting in benchmark mode

...

Hashtype: 0 - MD5

Speed.#1.........:  315.1 MH/s (43.80ms) @ Accel:64 Loops:64 Thr:64 Vec:1

...

Compare esta velocidad con la línea base (Paso 2) y el resultado de bajo consumo (Paso 3). Debería ver que esta es la velocidad más rápida hasta ahora, probablemente incluso más rápida que el perfil predeterminado. Esto confirma que -w 3 prioriza con éxito la velocidad sobre la capacidad de respuesta del sistema.

Comparar el rendimiento y la capacidad de respuesta del sistema

En este paso final, consolidará sus hallazgos y los aplicará a una tarea de cracking práctica (aunque simple).

Hasta ahora, ha observado la siguiente relación:

  • Velocidad (-w 1) < Velocidad (Predeterminada) < Velocidad (-w 3)

Esto ilustra claramente la compensación gestionada por los perfiles de carga de trabajo. Ahora, utilizaremos el perfil de alto rendimiento para descifrar el hash de muestra que se preparó para usted al comienzo del laboratorio. El directorio ~/project contiene un archivo de hash sample.hash y un archivo de diccionario wordlist.txt.

Usaremos el siguiente comando:

  • -m 0: Especifica el tipo de hash MD5.
  • -a 0: Selecciona un ataque de diccionario directo (straight dictionary attack).
  • sample.hash: El archivo que contiene el hash a descifrar.
  • wordlist.txt: El archivo que contiene las contraseñas potenciales.
  • -w 3: El perfil de alto rendimiento para obtener el resultado lo más rápido posible.

Ejecute el comando para iniciar el proceso de cracking:

hashcat -m 0 -a 0 sample.hash wordlist.txt -w 3

Dado que la contraseña está en nuestra pequeña lista de palabras, hashcat la encontrará casi al instante. La salida mostrará el hash descifrado y la contraseña correspondiente.

...
Dictionary cache built:
* Filename..: wordlist.txt
* Passwords.: 4
* Bytes.....: 29
* Keyspace..: 4

81d38d4b393528b4c444097c69141559:labex

Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 81d38d4b393528b4c444097c69141559
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:   268.2 MH/s (0.01ms) @ Accel:64 Loops:64 Thr:64 Vec:1
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 3/4 (75.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: 123456 -> labex
Hardware.Mon.#1..: Temp: 48c Util: 98% Core:1800MHz Mem:3500MHz Bus:16

Started: ...
Stopped: ...

La línea clave es 81d38d4b393528b4c444097c69141559:labex, que muestra el hash original seguido de la contraseña recuperada, labex. Ha utilizado con éxito un perfil de carga de trabajo para optimizar una tarea de cracking.

Resumen

¡Felicitaciones por completar este laboratorio! Ha aprendido con éxito cómo utilizar los perfiles de carga de trabajo de hashcat para gestionar el rendimiento y los recursos del sistema.

En este laboratorio, usted:

  • Aprendió el propósito de la opción -w y sus diferentes perfiles (-w 1, -w 2, -w 3).
  • Utilizó el modo benchmark (-b) para establecer una línea base y medir el rendimiento bajo diferentes perfiles.
  • Observó la compensación directa entre la velocidad de cracking y la capacidad de respuesta del sistema.
  • Aplicó el perfil de alto rendimiento a una tarea práctica de cracking de contraseñas.

Comprender cómo ajustar sus herramientas es una habilidad clave para cualquier profesional técnico. Ahora puede aplicar este conocimiento para elegir la configuración adecuada de hashcat para cualquier situación, ya sea que necesite la máxima velocidad en una máquina dedicada o una tarea discreta en segundo plano en su estación de trabajo personal.