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

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

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

Dependiendo del cifrado empleado, los distintos sistemas almacenan los hashes de las contraseñas de diferentes maneras. Y si dispone de hashes, podrá descifrar fácilmente cualquier contraseña.

Y en este artículo, exploraremos cómo descifrar hashes de contraseñas utilizando una práctica y excelente herramienta de línea de comandos Hashcat.

Así que empecemos.

Pero antes…

¿Qué es una función hash?

El hash 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 función hash. Cualquier texto, independientemente de su longitud, puede convertirse en una combinación aleatoria de números enteros y alfabetos mediante un algoritmo.

hashing
  • La entrada se refiere al mensaje que será convertido en hash.
  • 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?

Hashcat es la herramienta de recuperación de contraseñas más rápida. Fue diseñada para descifrar las contraseñas de alta complejidad en poco tiempo. Y esta herramienta también es capaz tanto de ataques de lista de palabras como de fuerza br uta .

Hashcat tiene dos variantes. La basada en CPU y la basada en GPU (Unidad de Procesamiento Gráfico). La herramienta basada en GPU puede descifrar los hashes en menos tiempo que la CPU. Puede comprobar los requisitos del controlador de la GPU en su página web oficial.

Características

  • Gratuito y de código abierto
  • Se pueden implementar más de 200 variaciones de tipos de hash.
  • Soporta múltiples sistemas operativos como Linux, Windows y macOS.
  • Soporta multiplataformas como CPU y GPU.
  • Se pueden crackear múltiples hashes al mismo tiempo.
  • Hex-salt y hex-charset archivos son compatibles, junto con el ajuste automático de rendimiento.
  • Un sistema de evaluación comparativa incorporado está disponible.
  • Se pueden soportar redes de craqueo distribuidas utilizando superposiciones.

Y puede ver otras características también desde su página web.

Instalación de Hashcat

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

Para ello, abra un terminal y escriba

$ 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 instalarla manualmente en cualquier distribución de Linux, escriba el siguiente comando en el terminal.

$ sudo apt-get install hashcat

Cómo utilizar Hashcat

Para empezar a utilizar Hashcat, necesitaremos algunos hashes de contraseñas. Si no tiene ningún hash para descifrar, primero crearemos algunos hashes.

Para crear hashes utilizando la línea de comandos, sólo tiene que seguir el siguiente formato.

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

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

┌──(root💀kali)-[/home/escritor/Desktop]
└─# echo -n "geekflare" | 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/escritorio/Desktop]
└─# cat crackhash.txt

066d45208667198296e0688629e28b14
482c811da5d5b4bcd497ffeaa98491e3
72a2bc267579aae943326d17e14a8048
2192d208d304b75bcd00b29bc8de5024
caae8dd682acb088ed63e2d492fe1e13

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

El siguiente paso es poner en marcha la herramienta Hashcat en su máquina Linux. Sólo tiene que utilizar el siguiente comando para utilizar Hashcat.

$ hashcat --help

Aparecerán todas las opciones que necesitará conocer para ejecutar la herramienta. En el terminal encontrará todos los modos de ataque y de hashcat.

La forma general del comando hashcat es

$ hashcat -a num -m num archivo hash archivo wordlist

Aquí el ‘num’ representa un ataque específico y el modo hash a utilizar. Si se desplaza por el 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 utilizar es rockyou wordlist. Puede encontrar fácilmente esa lista de palabras en la ruta /usr/share/wordlists.

Incluso puede utilizar el comando locate para encontrar esa ruta wordlist.

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

Y por último, para descifrar los hashes utilizando el archivo wordlist, utilice el siguiente comando.

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

Tras ejecutar este comando, es posible que obtenga un error de ejecución ( Token length exception error ) que puede resolverse fácilmente.

hashcat3

Para resolverlo, guarde cada hash por separado en un archivo diferente. Este error se produce si tiene una CPU o GPU de baja velocidad. Si su ordenador tiene un procesador de alta velocidad, puede crackear fácilmente todos los hashes al mismo tiempo como un único archivo en sí.

Así que después de arreglar el error y todo, el resultado será así.

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

API OpenCL (OpenCL 1.2 pocl 1.6, None Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Plataforma #1 [El proyecto pocl]
=============================================================================================================================
* Dispositivo #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB asignables), 4MCU

Longitud mínima de contraseña soportada por el kernel 0
Longitud máxima de contraseña admitida por el núcleo 256

Hashes: 1 compendio; 1 compendio único, 1 sal única
Mapas de bits: 16 bits, 65536 entradas, máscara 0x0000ffff, 262144 bytes, 5/13 rotaciones
Reglas: 1

Caché de diccionario construida:
* Nombre de archivo..: rockyou.txt
* Contraseñas.: 14344405
* Bytes.....: 139921671
* Espacio clave..: 14344398
* Tiempo de ejecución...: 1 seg

8276b0e763d7c9044d255e025fe0c212: geekflare@987654
                                                 
Sesión..........: hashcat
Estado...........: Cracked
Hash.Name........: MD5
Hash.Objetivo......: 8276b0e763d7c9044d255e025fe0c212
Hora.Inicio.....: Dom 12 dic 08:06:15 2021 (0 seg)
Tiempo.estimado..: Dom 12 dic 08:06:15 2021 (0 segs)
Adivina.Base.......: Archivo (rockyou.txt)
Adivinar.Cola......: 1/1 (100.00%)
Velocidad.#1.........:  1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recuperado........: 1/1 (100.00%) Digeridos
Progreso.........: 4096/14344398 (0.03%)
Rechazados.........: 0/4096 (0.00%)
Restaurar.punto....: 0/14344398 (0.00%)
Restaurar.Sub.#1..: Sal:0 Amplificador:0-1 Iteración:0-1
Candidatos.#1....: 123456 -> pampam

Iniciado Dom 12 dic 08:06:13 2021
Detenido Dom 12 dic 08:06:16 2021

En el resultado anterior, después de los detalles de la caché del diccionario, puede notar, que el hash fue descifrado, y la contraseña fue revelada.

Conclusión

Espero que haya comprendido mejor el uso de Hashcat para descifrar contraseñas.

Puede que también le interese conocer las distintas herramientas de fuerza bruta para pruebas de penetración y algunas de las mejores herramientas de pentesting.