Identificando el tipo de hash
Identificar qué tipo de hash es una cadena de caracteres , es una de las tareas más comunes cuando estamos realizando ya sea un proceso de pentest, un desafío, un ctf o cualquier actividad relacionada con la seguridad informática, si no realizas este proceso de identificación de forma adecuada, te puedes volver un poco loco intentando romper un hash con un método que no corresponde, por eso esta labor inicial es tan importante.
Existen muchas formas de identificar un tipo de hash, muchas veces, si el hash lo extraemos de algún paquete de software conocido, como un cms, un foro o una aplicación de escritorio, es probable que la documentación de dicho software nos diga como almacena los passwords y qué algoritmo de firma se ha utilizado, pero si estás leyendo este artículo, es probable que este recurso ya lo hayas agotado y necesites otra manera de identificar el tipo de hash que tienes en tu poder, para poder intentar realizar distintos procesos sobre él.
¿Cuáles son las características que definen una cadena de caracteres como un hash?
- Un hash es una cadena de longitud determinada.
- Identifica de forma unívoca a la entrada que lo generó.
- Es computacionalmente imposible recuperar la información de entrada a partir de la cadena de salida (por eso en la mayoría de los casos se usan procesos de comparación para poder dar con la cadena de origen).
- Es computacionalmente muy difícil generar una misma salida a partir de dos entradas diferentes (existen casos en los que 2 entradas distintas generan el mismo hash y a esto se le llama colisión de hashes).
Las personas que llevan mucho tiempo en seguridad, aprenden a identificar patrones a simple vista que les permite definir con una probabilidad alta, a que tipo de hash se están enfrentando, pero también existen distintas herramientas que nos ayudan en esta tarea y vamos a enumerar a continuación algunas de ellas:
La primera herramienta de la que hablaremos es HashID, esta viene instalada por defecto en algunas distribuciones destinadas a la seguridad informática, como Kali Linux o Parrot, pero si no la tienes instalada, podemos obtenerla del repositorio (https://github.com/psypanda/hashID) y la ejecutamos así:
python3 hashid.py AQUIELHASH
hashid herramienta escrita en python para identificar el tipo de hash, pasándole una cadena de caracteres
Esta herramienta aparte de identificarnos con un porcentaje alto de certeza el tipo de hash que le hemos pasado como argumento, también nos permite identificar los módulos que debemos usar en herramientas que nos permiten crackear los hashes como Hashcat (-m) y John The Ripper (-j) si queremos usarlas juntas sería así:
python3 hashid.py -jm AQUIELHASH
identificar el módulo para crackear un hash, utilizando hashcat o john the ripper
La segunda herramienta de la que nos gustaría hablar y que nos permite identificar los tipos de hash, se llama hash-identifier, es una herramienta sencilla escrita en python que por lo general viene integrada en varias distribuciones de GNU-Linux:
hash-identifier
hash-identifier es una buena herramienta, pero carece de funcionalidades que pueden llegar a ser necesarias en un proceso de auditoría, como por ejemplo identificar de forma masiva un listado de hash, y que soluciones como hashid tiene integradas solo pasándole como parámetro un archivo con un hash por línea
hashid.py -jm archivoconhash.txt
Es por eso que existen herramientas que nos ayudarán también en el proceso de identificar un tipo de hash, como HashTag. La podemos descargar de su repositorio en (https://github.com/SmeegeSec/HashTag), su uso es relativamente sencillo, para ver qué tipo de algoritmo tiene un hash usamos el parámetro (-sh), como se puede ver a continuación:
python HashTag.py -sh AQUIELHASH
Ahora si queremos hacerlo de forma masiva lo lanzamos con el parámetro -f esto lo que hará será crearnos una carpeta con un archivo adentro el cual tendrá la salida de la herramienta:
python HashTag.py -f AQUIARCHIVOCONHASH.txt
Crackeando el hash
Una vez, hemos identificado el hash, podríamos crackearlo usando una tabla rainbow o podemos buscarlo en los miles de bases de datos que hay online.
Una herramienta que nos permite hacer esto es HashCat esta nos da un plus ya que tiene soporte para una gran cantidad de hash y constantemente están añadiendo nuevos, además al hacer el crackeo se puede configurar para que use la potencia de nuestra GPU (Unidad de Procesamiento Gráfico) para descifrar el hash.
Esto ayuda mucho porque la diferencia en tiempos de crackeo al usar la GPU son muy notables. Esta herramienta por lo general viene instalada en algunas distribuciones de Linux pero sino está instalada en tu sistema operativo, la puedes descargar de su repositorio oficial (https://github.com/hashcat/hashcat) debemos guiarnos de la ayuda ya que esta herramienta cuenta con un gran número de módulos para acceder a las opciones de ayuda lo hacemos con --help:
hashcat --help
Para iniciar el crackeo de un hash tenemos que saber qué tipo de hash es para esto nos vamos al módulo de ayuda y buscamos el tipo de algoritmo que usa el hash.
En este caso usaremos el algoritmo MD5 ya que este es el que usa nuestro hash a crackear. Para lanzar Hashcat lo ejecutamos con el # del módulo en este caso -m 0 y le pasamos el archivo con los hashes y el diccionario a utilizar, así:
hashcat -m 0 ARCHIVOCONHASH.txt DICCIONARIO.txt
Herramienta John The Ripper para crackear un hash
Existe otra herramienta que tiene mucho más tiempo de antigüedad y es de las más usadas para crackear hashes, esta es la conocidísima John The Ripper que también utiliza diferentes tipos de módulos, pero podemos lanzarlo y tiene la ventaja si no le pasamos un tipo de hash como parámetro, el intenta identificar el hash e inicia el proceso de crackeo.
Entonces le pasamos el archivo con el hash y con el parámetro --wordlist le pasamos el diccionario:
john ARCHIVOCONHASH.txt --wordlist=DICCIONARIO.txt
Herramientas para identificar el tipo de hash y crackearlo online
Para realizar el proceso de identificado y cracking de un hash, también existen plataformas online que aparte de identificar el tipo de hash, también realiza una búsqueda en diferentes bases de datos a ver si ya ha sido crackeado y nos muestra su valor inicial en texto claro, además de su algoritmo de firmado.
Una de las plataformas más completas es Hashes.com (https://hashes.com/en/decrypt/hash), su funcionamiento es muy sencillo, solo pones el listado de hash, uno por línea y el no solo nos muestra su tipo, sino el valor en texto claro si este está en su base de datos.
CrackStation es otra herramienta que lleva un poco más de tiempo en el mercado, pero sigue vigente y nos permite identificar el tipo de hash, como también nos entregaría su valor en texto claro si se encuentra en su base de datos de conocimiento, para su uso solo es necesario visitar (https://crackstation.net), ingresar un hash por línea (solo se pueden 20 por petición) y resolver el captcha, si todo sale bien, nos dará no solo el tipo de hash, sino también el valor al que corresponde en texto claro.
- Crackeando el hash
- Herramienta John The Ripper para crackear un hash
- Herramientas para identificar el tipo de hash y crackearlo online
Identificando el tipo de hash con herramientas de forma masiva
hashes.com y CrackStation, son solo 2 de los cientos de servicios online que permiten identificar y crackear un hash, realizar la búsqueda en todos estos sitios puede ser una tarea aburrida y monótona, por eso queremos hablarles de una herramienta llamada Search That Hash , esta herramienta escrita en python, automatiza la búsqueda de nuestro hash en los siguientes sitios:
- https://www.nitrxgen.net/md5db/
- http://md5.my-addr.com/
- http://rainbowtables.it64.com/
- https://www.cmd5.org/
- https://cracker.okx.ch
- https://hashdecryption.com/decrypt.php
- https://md5.gromweb.com/
- https://md5decrypt.net/
- https://sha1.gromweb.com/
evitándonos la búsqueda manual en cada uno de ellos y mostrando los resultados de esta búsqueda de forma amigable en la consola, la herramienta no está por defecto en la mayoría de las distribuciones, pero podemos descargarla desde su repositorio oficial (https://github.com/HashPals/Search-That-Hash) y se instala con:
pip3 install search-that-hash o pip install search-that-hash
Veamos la ayuda que nos arroja:
sth --help
Al usarlo en un solo hash podemos hacerlo con -t:
std -t HASHAQUI
Podríamos hacerlo de forma masiva con -f:
sth -f ARCHIVOCONHASH.txt
Espero que este contenido sea de tu agrado, te dejamos nuestras redes sociales para que podamos interactuar por medio de ellas:
- Youtube: DragonJARtv
- Facebook: Hacking.DragonJAR
- Twitter: @DragonJAR
- Instagram: Dragon.JAR
- Discord: DragonJAR
- Blog: Comunidad DragonJAR
- Telegram: DragonJAR
- TikTok: @DragonJAR
- Linkedin: DragonJAR
- Kwai: DragonJAR
Finalmente, te invito a que nos aportes un comentario, para nuestro equipo de trabajo es muy valioso ya que les permite mejorar y ampliar mucho más este tipo de información.
Escrito por Santiago Martinez para La Comunidad DragonJAR