Intentar Romper Hashes de Contraseñas de un Sistema Linux utilizando una Lista de Palabras

  • Posted on: 2 July 2019
  • By: ReYDeS

Una de las técnicas utilizadas para tratar de obtener las contraseñas en texto plano desde hashes de contraseñas, es utilizar listas de palabras o también denominados diccionarios. Esta técnica implica utilizar archivos conteniendo extensos listados de palabras en diversos idiomas o sobre diferentes temáticas. Esto a razón en las pruebas de penetración es fundamental conocer aquello lo cual se está evaluando, consecuentemente por ejemplo sería factible potencialmente inferir la contraseñas de una persona fanática de la música de los años 80, pues tal vez utilice alguna palabra relacionada con un grupo musical, banda, cantante, álbum, título, o similar de los años 80.

Para el siguiente ejemplo se utiliza la herramienta John The Ripper, y dos archivos de nombres “passwd” y “shadow” obtenidos desde un sistema Linux. Se intenta de esta manera obtener la mayor cantidad de contraseñas en texto plano.

Se visualizan las primeras líneas de ambos archivos.

# head -n 15 /tmp/passwd
# head -n 15 /tmp/shadow

Kali Linux incluye un directorio de nombre “/usr/share/wordlists/”, donde es factible ubicar diversos archivos conteniendo listas de palabras incluidas en algunas herramientas, como nmap, metasploit, sqlmap, entre otros. El archivo conteniendo la lista de palabras a utilizar tiene por nombre “rockyou.txt”, el cual es un archivo conteniendo aproximadamente 14 millones de palabras.

# head -n 20 rockyou.txt
# wc rockyou.txt

Antes de ejecutar la herramienta John The Ripper, se combina la información contenida en el archivo “passwd” y “shadow” utilizando el comando “unshadow”. Esto es necesario pues si únicamente se utiliza el archivo “shadow”, la información GECOS no será utilizada en el modo “single crack” de John The Ripper, y no se estaría en la capacidad de utilizar la opción “-shells”.

# unshadow /tmp/passwd /tmp/shadow > /tmp/Hashes_Linux

Se procede a ejecutar John The ripper utilizando la opción “--wordlist”, la cual permite definir el uso de un archivo conteniendo una lista de palabras. Así mismo se utiliza la opción “--rules”, lo cual aplica reglas definidas dentro de John The Ripper a la lista de palabras.

# john --wordlist=/usr/share/wordlists/rockyou.txt --rules /tmp/Hashes_Linux

Finalizado el proceso es factible utilizar la opción “--show” de John The Ripper para mostrar el detalle de las contraseñas obtenidas.

# john --show /tmp/Hashes_Linux

Los resultados de este tipo de procesos depende principalmente de dos factores, la fortaleza de la contraseña utilizadas, pues una contraseña de 30 caracteres alfanuméricos y caracteres especiales, debería ser más difícil de encontrar comparada una contraseña de 10 caracteres alfabéticos. También es un factor importante el archivo conteniendo la lista de palabras a utilizar, pues se sugiere utilizar palabras o caracteres relacionados cercanamente a los sistemas o personas en evaluación. Estos pueden ser obtenidos desde sitios webs de la organización o empresa en evaluación, así como desde las redes sociales de las personas involucradas.

Fuentes:

https://www.openwall.com/john/
https://wiki.skullsecurity.org/Passwords

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1