Hashcat es una aplicación que permite la recuperación de las contraseñas, a partir del valor del hash para cada una de ellas. Si se tiene en cuenta el hecho de que éstas no suelen almacenarse como texto plano en la base de datos, sino como su hash, esta herramienta provee diversos métodos para la recuperación. Al ser esta aplicación una de las más rápidas para estas tareas, en este post se expondrán sus características principales.
Para poder realizar la autenticación de un usuario a un servicio es necesario comparar la contraseña ingresada contra aquella que se encuentra almacenada: si coinciden, el usuario puede ingresar. Sin embargo, es recomendable no almacenar las contraseñas en texto plano, ante la posibilidad que existe de la fuga de información. Además, es recomendable utilizar "salting" que se trata de agregar una cadena de caracteres conocida al final de la contraseña para dificultar su descifrado por fuerza bruta. En los últimos tiempos se han observado varios de estos casos, entre ellos el de LinkedIn, en el cual las contraseñas que se filtraron estaban cifradas, pero sin ningún mecanismo adicional de seguridad. Por lo tanto, si bien es imposible deducir la función matemática que convierte el hash en el texto plano original, puede calcularse el hash para contraseñas muy comunes y comparar contra aquellos almacenados para encontrar alguna coincidencia. Como es de esperarse, mientras más corta o reconocible sea la contraseña, más posibilidades existen de que la misma sea obtenida a partir del hash.
Hashcat realiza justamente este procedimiento: toma como entrada un conjunto de palabras en texto plano y calcula el hash para ellas, comparando contra otro archivo que almacena los hashes de las contraseñas originales; todas las coincidencias serán las contraseñas recuperadas. Sin embargo, aquello que hace a hashcat la herramienta predilecta para este tipo de tareas es su capacidad de acelerar notablemente los cálculos mediante la utilización de varios hilos ejecutándose en paralelo. Además, va un paso más adelante al proveer no sólo la opción de realizar los cálculos en CPU, sino también utilizando el mayor poder de procesamiento de las GPU actuales, pasando del orden de los millones de hashes a miles de millones por segundo.
Otra característica notable de hashcat es su disponibilidad en diversas plataformas, tales como Windows, Linux y OSX, además de que provee versiones tanto por línea de comandos, como así también a través de una GUI bastante completa. A continuación se observa una captura de pantalla para la versión GUI de Windows:
Si a la amplia cantidad de algoritmos de cálculo de hash soportados se le suma una variedad de métodos para producir las palabras de entrada, desde la generación de todas las combinaciones de caracteres posibles para realizar un ataque de fuerza bruta, hasta la combinación de palabras presentes en un diccionario, se entiende por qué esta herramienta es la opción más utilizada por los expertos.
En un próximo post se mostrará el uso de la herramienta, midiendo la efectividad que puede lograrse en base a contraseñas reales, y poniendo especial énfasis en la necesidad de utilizar contraseñas fuertes.
Matías Porolli
Especialista de Awareness & Research