¿Cómo descifrar contraseñas con la herramienta Hashcat?

En la piratería ética y las pruebas de penetración, el descifrado de contraseñas es crucial para obtener acceso a un sistema o servidor.

En los sistemas y bases de datos, las contraseñas rara vez se guardan en forma de texto sin formato.

Las contraseñas siempre tienen un hash antes de almacenarse en la base de datos y el hash se compara durante el proceso de verificación.

Según el cifrado empleado, los diferentes sistemas almacenan hash de contraseñas de diferentes maneras. Y si tiene hashes, puede descifrar fácilmente cualquier contraseña.

Y en este artículo, exploraremos cómo descifrar hashes de contraseñas usando una herramienta de línea de comandos útil y excelente Hashcat.

Entonces empecemos.

Pero antes de eso…

¿Qué es una función hash?

Hashing es el proceso de convertir un texto de entrada normal en una cadena de texto de tamaño fijo utilizando alguna función matemática que se conoce como la función Hash. Cualquier texto, independientemente de su longitud, se puede convertir en una combinación aleatoria de números enteros y alfabetos mediante un algoritmo.

  • La entrada se refiere al mensaje que se codificará.
  • La función hash es el algoritmo de cifrado como MD5 y SHA-256 que convierte una cadena en un valor hash.
  • Y finalmente, el valor hash es el resultado.

¿Qué es Hashcat?

hachís es la herramienta de recuperación de contraseña más rápida. Fue diseñado para romper las contraseñas de alta complejidad en un corto período de tiempo. Y esta herramienta también es capaz de realizar ataques tanto de lista de palabras como de fuerza bruta.

Hashcat tiene dos variantes. Basado en CPU y GPU (Unidad de procesamiento gráfico). La herramienta basada en GPU puede descifrar los hashes en menos tiempo que la CPU. Puede consultar los requisitos del controlador de GPU en su sitio web oficial.

Características

  • Gratis y de código abierto
  • Se pueden implementar más de 200 variaciones de tipo hash.
  • Admite sistemas operativos múltiples como Linux, Windows y macOS.
  • Están disponibles múltiples plataformas como soporte de CPU y GPU.
  • Se pueden descifrar múltiples hashes al mismo tiempo.
  • Se admiten archivos Hex-salt y hex-charset, junto con el ajuste de rendimiento automático.
  • Está disponible un sistema de evaluación comparativa integrado.
  • Las redes de craqueo distribuidas se pueden admitir mediante superposiciones.

Y puedes ver otras características también desde su sitio web.

Instalación de Hashcat

Primero, asegúrese de que su sistema Linux esté actualizado con los programas y herramientas más recientes.

Para esto, abre una terminal y escribe:

$ sudo apt update && sudo apt upgrade

Hashcat suele estar preinstalado en Kali Linux. Puede encontrar la herramienta en la sección de descifrado de contraseñas. Pero si necesita instalarlo manualmente en cualquier distribución de Linux, escriba el siguiente comando en la terminal.

$ sudo apt-get install hashcat

Uso de herramientas

Para comenzar con Hashcat, necesitaremos algunos hashes de contraseña. Si no tiene un hash para descifrar, primero crearemos algunos hash.

Para crear hashes usando la línea de comando, simplemente siga el siguiente formato.

echo -n "input" | algorithm | tr -d "-">>outputfiename

Por ejemplo, puede ver que convertí algunas palabras en hashes usando el algoritmo md5 a continuación.

┌──(root💀kali)-[/home/writer/Desktop]
└─# echo -n "kirukiru.es" | md5sum | tr -d "-">>crackhash.txt
echo -n "password123" | md5sum | tr -d "-">>crackhash.txt
echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt
echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt
echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt

Y la salida se guardará en el archivo crackhash.txt.

Ahora comprobaremos los hashes que se guardaron en el archivo dado.

┌──(root💀kali)-[/home/writer/Desktop]
└─# cat crackhash.txt

066d45208667198296e0688629e28b14
482c811da5d5b4bcd497ffeaa98491e3
72a2bc267579aae943326d17e14a8048
2192d208d304b75bcd00b29bc8de5024
caae8dd682acb088ed63e2d492fe1e13

Puedes ver, ahora tenemos algunos hashes para descifrar. Este es el procedimiento para crear un hash utilizando el algoritmo de su elección.

El siguiente paso es poner en marcha una herramienta Hashcat en su máquina Linux. Simplemente use el siguiente comando para usar Hashcat.

$ hashcat --help

Mostrará todas las opciones que necesitará saber para ejecutar la herramienta. En la terminal, puedes encontrar todos los modos de ataque y hash.

La forma general del comando es

$ hashcat -a num -m num hashfile wordlistfile

Aquí el ‘num’ representa un ataque específico y un modo hash a usar. Si desplaza la terminal, puede encontrar los números exactos para cada ataque y modo hash, como para md4, el número es 0, y para el algoritmo sha256, el número es 1740.

La lista de palabras que voy a usar es rockyou wordlist. Puede encontrar fácilmente esa lista de palabras en la ruta /usr/share/wordlists.

Incluso puede usar el comando de localización para encontrar la ruta de la lista de palabras.

┌──(root💀kali)-[/home/writer]
└─# locate rockyou.txt

Y finalmente, para descifrar los hashes usando el archivo de lista de palabras, use el siguiente comando.

$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt

Después de ejecutar este comando, es posible que obtenga un error de tiempo de ejecución (error de excepción de longitud del token) que se puede resolver fácilmente.

Para resolver esto, guarde cada hash por separado en un archivo diferente. Este error ocurre si tiene una velocidad de CPU o GPU baja. Si su computadora tiene un procesador de alta velocidad, puede descifrar fácilmente todos los hash al mismo tiempo que un solo archivo.

Entonces, después de corregir el error y todo, el resultado será así.

┌──(root💀kali)-[/home/writer/Desktop]
└─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt
hashcat (v6.1.1) starting...

OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=============================================================================================================================
* Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Dictionary cache built:
* Filename..: rockyou.txt
* Passwords.: 14344405
* Bytes.....: 139921671
* Keyspace..: 14344398
* Runtime...: 1 sec

8276b0e763d7c9044d255e025fe0c212: [email protected]
                                                 
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 8276b0e763d7c9044d255e025fe0c212
Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs)
Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs)
Guess.Base.......: File (rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:  1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4096/14344398 (0.03%)
Rejected.........: 0/4096 (0.00%)
Restore.Point....: 0/14344398 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: 123456 -> pampam

Started: Sun Dec 12 08:06:13 2021
Stopped: Sun Dec 12 08:06:16 2021

En el resultado anterior, después de los detalles de la memoria caché del diccionario, puede notar que se descifró el hash y se reveló la contraseña.

Conclusión

Espero que haya adquirido una mejor comprensión del uso de Hashcat para descifrar contraseñas.

También puede estar interesado en conocer las diversas herramientas de fuerza bruta para pruebas de penetración y algunas de las mejores herramientas de pentesting.