Identificar tipos de hash desconocidos

Kali LinuxBeginner
Practicar Ahora

Introducción

En los campos de la ciberseguridad y la informática forense, a menudo te encontrarás con hashes criptográficos. Un hash es una cadena de bytes de tamaño fijo que es el resultado de una función matemática unidireccional aplicada a un bloque de datos arbitrario. Antes de poder intentar descifrar un hash de contraseña, primero debes identificar el algoritmo utilizado para crearlo, como MD5, SHA-1 o NTLM.

En este laboratorio, aprenderás la habilidad esencial de identificar tipos de hash desconocidos. Utilizarás herramientas comunes de línea de comandos disponibles en Linux para analizar una lista de hashes de ejemplo y determinar sus algoritmos correspondientes. Este es un primer paso crítico para cualquier actividad de descifrado de contraseñas.

Recopilar una lista de varios hashes de ejemplo

En este paso, crearás un archivo de texto que contiene varios tipos de hashes diferentes. Este archivo servirá como entrada para las herramientas de identificación en los pasos subsiguientes. Cada algoritmo de hash produce un hash con una longitud y un conjunto de caracteres específicos, que es cómo las herramientas de identificación pueden distinguirlos.

Primero, usa el comando cat con un Here Document (<<EOF) para crear un archivo llamado hashes.txt en el directorio ~/project. Este archivo contendrá tres tipos comunes de hash: MD5, SHA-1 y NTLM.

Ejecuta el siguiente comando en tu terminal:

cat << EOF > hashes.txt
d41d8cd98f00b204e9800998ecf8427e
da39a3ee5e6b4b0d3255bfef95601890afd80709
32ed87bd5fdc5e204e2620a05a069858
EOF

Después de crear el archivo, puedes verificar su contenido usando el comando cat nuevamente.

cat hashes.txt

Deberías ver la siguiente salida, confirmando que los tres hashes se han guardado en el archivo:

d41d8cd98f00b204e9800998ecf8427e
da39a3ee5e6b4b0d3255bfef95601890afd80709
32ed87bd5fdc5e204e2620a05a069858

Ahora que tienes tu lista de hashes, estás listo para comenzar a identificarlos.

Usar la herramienta hashid en Kali

En este paso, utilizarás la herramienta hashid para analizar los hashes que guardaste en el archivo hashes.txt. hashid es una utilidad de línea de comandos que identifica diferentes tipos de hashes analizando su longitud y composición de caracteres. Es una herramienta simple pero potente para la fase inicial de análisis de hashes.

Para usar hashid, simplemente proporcionas el archivo que contiene los hashes como argumento. La herramienta procesará cada línea del archivo e intentará identificar el hash en esa línea.

Ejecuta hashid en tu archivo hashes.txt:

hashid hashes.txt

La herramienta analizará cada hash e imprimirá sus hallazgos en la terminal. La salida mostrará la cadena del hash, seguida de una lista de posibles algoritmos de hash.

--File 'hashes.txt'--
d41d8cd98f00b204e9800998ecf8427e
[+] MD5
[+] Domain Cached Credentials (DCC)
da39a3ee5e6b4b0d3255bfef95601890afd80709
[+] SHA-1
[+] RipeMD-160
32ed87bd5fdc5e204e2620a05a069858
[+] NTLM
[+] MD4
[+] MD5
--End of file 'hashes.txt'--

Como puedes ver, hashid proporciona una o más coincidencias potenciales para cada hash. En el siguiente paso, aprenderás a interpretar esta salida.

Analizar la salida de hashid

En este paso, aprenderás a interpretar la salida de hashid. Si bien la herramienta proporciona una lista de posibilidades, a menudo necesitarás usar el contexto o un análisis adicional para acotar el tipo de hash correcto.

Analicemos la salida del paso anterior:

  • Para el primer hash (d41d8cd98f00b204e9800998ecf8427e), hashid sugiere MD5 y Domain Cached Credentials (DCC). MD5 es el tipo más común para un hash de este formato.
  • Para el segundo hash (da39a3ee5e6b4b0d3255bfef95601890afd80709), las sugerencias son SHA-1 y RipeMD-160. SHA-1 es una opción muy común.
  • Para el tercer hash (32ed87bd5fdc5e204e2620a05a069858), hashid lista NTLM, MD4 y MD5. En entornos Windows, NTLM es un candidato muy probable.

hashid también puede mostrarte el código de modo correspondiente utilizado por la herramienta de cracking de contraseñas Hashcat. Para hacer esto, usa la bandera -m seguida de un solo hash. Verifiquemos el primer hash para su modo Hashcat.

hashid -m d41d8cd98f00b204e9800998ecf8427e

La salida ahora incluirá el número de modo de Hashcat para cada tipo de hash potencial.

--Hash 'd41d8cd98f00b204e9800998ecf8427e'--
[+] MD5 [HC: 0]
[+] Domain Cached Credentials (DCC) [HC: 1100]

Esto te indica que para Hashcat, MD5 corresponde al modo -m 0. Esta información es crucial para configurar una sesión de cracking.

Usar una herramienta de análisis de hashes en línea como segunda opinión

En este paso, utilizarás otra herramienta de línea de comandos, hash-identifier, para obtener una segunda opinión sobre los tipos de hash. En cualquier análisis, es una buena práctica utilizar múltiples herramientas para verificar tus hallazgos, ya que diferentes herramientas pueden tener diferentes bases de datos y algoritmos.

hash-identifier es un script interactivo de Python. Ejecutas el comando y te pedirá que ingreses el hash que deseas identificar.

Primero, inicia la herramienta escribiendo su nombre en la terminal:

hash-identifier

Verás un indicador que solicita el hash.

   #########################################################################
   ##     __  __                     __           __    _           _   _   #
   ##    / / / /___  ____ ___  ___  / /_  _______/ /_  (_)_________| | / /   #
   ##   / /_/ / __ \/ __ `__ \/ _ \/ __ \/ ___/ __ \/ / / ___/ ___/  |/ /    #
   ##  / __  / /_/ / / / / / /  __/ /_/ / /__/ / / / / / /__/ /  / /|  /     #
   ## /_/ /_/\____/_/ /_/ /_/\___/_.___/\___/_/ /_/_/_/\___/_/  /_/ |_/      #
   ##                                                                       #
   ##                                by c0decracker                         #
   #########################################################################

 HASH:

Ahora, copia uno de los hashes de tu archivo hashes.txt, por ejemplo, el segundo (da39a3ee5e6b4b0d3255bfef95601890afd80709), pégalo en el indicador y presiona Enter.

La herramienta analizará el hash y proporcionará su conclusión.

 HASH: da39a3ee5e6b4b0d3255bfef95601890afd80709

Possible Hashs:
[+] SHA-1
[+] RipeMD-160

Least Possible Hashs:

La salida confirma el hallazgo de hashid de que el hash es muy probablemente SHA-1. Puedes presionar Ctrl+C para salir de la herramienta hash-identifier.

Emparejar el tipo de hash identificado con el código -m de Hashcat

En este paso final, aprenderás a encontrar el código de modo (-m) correcto para usar con Hashcat, la herramienta de recuperación de contraseñas más rápida del mundo. Si bien hashid -m puede proporcionar esta información, también puedes encontrarla directamente en el extenso menú de ayuda de Hashcat. Esto es útil para confirmar el modo o encontrar códigos para tipos de hash menos comunes.

Hashcat requiere que especifiques el tipo de hash utilizando un código numérico con la bandera -m. Para encontrar el código correcto, puedes usar grep para buscar la salida de ayuda de Hashcat.

Busquemos el modo para MD5. Ejecuta el siguiente comando:

hashcat --help | grep "MD5"

La salida será una larga lista de todos los modos relacionados con MD5. Busca la entrada de MD5 simple.

...
      0 | MD5                                            | Raw Hash
...

Como puedes ver, el modo para un hash MD5 estándar es 0.

Ahora, hagamos lo mismo para SHA-1:

hashcat --help | grep "SHA-1"
...
    100 | SHA-1                                          | Raw Hash
...

El modo para SHA-1 es 100.

Finalmente, busquemos el modo para NTLM:

hashcat --help | grep "NTLM"
...
   1000 | NTLM                                           | Raw Hash
...

El modo para NTLM es 1000. Al identificar correctamente el tipo de hash y su modo Hashcat correspondiente, ahora estás preparado para configurar un ataque de cracking de contraseñas.

Resumen

En este laboratorio, aprendiste el proceso fundamental de identificación de tipos de hash desconocidos, un requisito previo crítico para el cracking de contraseñas. Comenzaste creando un archivo con varios ejemplos de hashes. Luego utilizaste dos potentes herramientas de línea de comandos, hashid y hash-identifier, para analizar estos hashes y determinar sus algoritmos probables. Finalmente, aprendiste a cotejar el tipo de hash identificado con la extensa lista de modos de Hashcat para encontrar el código -m correcto para una sesión de cracking. Esta habilidad es indispensable para cualquier profesional de la ciberseguridad involucrado en pruebas de penetración o forense digital.