Ataque Local de Contraseñas en un Sistema GNU/Linux utilizando Hashcat
Realizar la identificación del algoritmo Hash utilizado es vital para romper por fuerza bruta una contraseña. Esto también se aplica a la utilización de Tablas Arco Iris. También es un requisito previo vital tener acceso privilegiado o “root” en el objetivo de evaluación. Este acceso puede haber sido obtenido, mediante un acceso físico al equipo de cómputo, o explotando alguna falla o vulnerabilidad a nivel del sistema operativo, servicios o aplicaciones ya sea de manera local o remota.
Para la siguiente demostración se utilizará un archivo de contraseñas capturada desde un objetivo de evaluación comprometido. Luego se utiliza la herramienta hashcat para tratar de obtener las contraseñas en texto plano.
Hashcat es la herramienta de recuperación basada en CPU más rápida del mundo. Aunque no es tan rápida como oclHashcat, grandes listados pueden ser fácilmente divididos a la mitad con un buen diccionario y poco conocimiento sobre las opciones del comando.
Se visualiza el archivo de nombre “shadow” capturado.
El primer objetivo será reconocer el tipo de Hash utilizado en el archivo “shadow”.
root:$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.:14747:0:99999:7:::
Mediante un análisis de los campos; los cuales están divididos por el símbolo “$”; donde reside el hash cifrado para el usuario root, se obtiene lo siguiente:
$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.
El número “1” al inicio del campo identifica el método de hash de cifrado utilizado, en este caso se la contraseña se cifró utilizando MD5.
El valor “/avpfBJ1” corresponde al “Salt”. Esto introduce un desorden en el hash de la contraseña añadiendo cierto número de bits de pertubación, dependiendo del algoritmo de hash. Esencialmente, esto se incluye para incrementar la complejidad de la contraseña, proporcionando mayor protección contra los ataques por fuerza bruta. Adicionalmente, proporciona protección contra el reconocimiento de otras cuentas de usuario utilizando la misma contraseña. Específicamente cuando dos cuentas de usuario tengan la misma contraseña, sus hahs de las contraseñas serán diferentes debido al “Salt” utilizado.
El último campo correspondiente a la contraseña o hash. MD5 utiliza 22 caracteres.
Se procede a extraer únicamente los hash de las contraseñas contenidas en el archivo “shadow”. hacia un archivo.
# grep "\\$" shadow
# grep "\\$" shadow | cut -d ":" -f 2 > /tmp/passwords
Se ejecuta hashcat. La opción “-m” define el tipo de hash. Hashcat utiliza un número para definir el tipo de hash. El análisis realizado revela la utilización de un hash MD5, por lo tanto se utiliza el número “500” el cual corresponde a “md5crypt, MD5(Unix), FreeBSD MD5, Cisco-IOS MD5”. Se define también el archivo conteniendo las contraseñas cifradas, y una lista de palabras de nombre “rockyou.txt”
# hashcat -m 500 /tmp/passwords /usr/share/wordlists/rockyou.txt
Para este escenario el utilizar una lista de palabras ha permitido encontrar tres contraseñas. Luego mediante una comparación sencilla se puede conocer los nombres de usuarios a quienes pertenecen.
Hashcat incluye diversos modos de ataque, algunos de ellos adicionalmente con soporte para la inclusión de reglas. Permite también realizar ataques contra un gran número de algoritmos de cifrado, además de funcionar en diversos sistemas operativos.
Fuentes:
http://hashcat.net/hashcat/
https://administratosphere.wordpress.com/2011/05/27/etcshadow-format/
http://hashcat.net/wiki/doku.php?id=hashcat
https://wiki.skullsecurity.org/Passwords
Sobre el Autor
Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/