La mayoría de los sistemas no almacenan en texto plano; en su lugar almacenan hashes que son utilizados al realizar la autenticación, si los hashes coinciden la autenticación es exitosa.
Los hashes de contraseñas se almacenan con distintos cifrados según el sistema utilizado.
El descifrado consiste generalmente en tomar una lista de palabras y compararlas con el hash a descifrar. En ocasiones los hashes se componen no solo de listas de palabras sino de forma aleatoria se mezclan con contraseñas públicas pudiendo hacer difícil descifrarlas (salt).
Para realizar la PoC vamos a utilizar una gran herramienta llamada John the Ripper ya que puede realizar ataques con diccionario o de fuerza bruta, además de ser rápida y gratuita.
Preparación
De donde obtener hashes
En primer lugar debemos obtener algunos hashes de contraseñas, en este caso son los obtenidos de un ataque SQLi a DVWA.
Otras fuentes
Con la herramienta openssl disponible en sistemas Linux podemos generar nuestros propios hash de contraseña
![]() |
| uso de openssl |
John the Ripper
La herramienta propia de crackeo la tenemos disponible en Kali Linux pero también podemos descargarla
Obtención de la "wordlist"
Existen listas de palabras en la distribución de Kali Linux.
- Lista básica de palabras de John the Ripper con un total de 3,559 palabras. están las contraseñas mas comunes del idioma inglés
- Wordlist rockyou disponible en el directorio /usr/share/wordlist/ con algunas otras. Es necesario descomprimirlo
- La gran lista de Crackstation, contiene 1.493.677.782 palabras
La elección dependerá del hash que obtengamos.
Uso de John the Ripper
Uso de John the Ripper
Como he dicho anteriormente voy a utilizar los hash obtenidos de DVWA.
![]() |
| hashes obtenidos |
Los guardamos en un .txt de la siguiente manera
![]() |
| hashes txt |
Ahora ejecutamos la herramienta John the Ripper, se va a utilizar la wordlist de contraseñas mas comunes; después pasará al modo incremental
$ john --format=raw-MD5 hashes_dvwa.txt
Mientras la herramienta se está ejecutando, se puede presionar cualquier tecla (intro) para visualizar una salida del estado. O para verificar desde otra terminal john --status. La salida se verá así:
- Tipo de cifrado
- Número de conjeturas de contraseña exitosas
- Tiempo trascurrido desde el comienzo
- Porcentaje completado para ese pase
- Paso actual / número de pases totales
- g / s = conjeturas exitosas por segundo
- p / s = contraseñas probadas por segundo
- c / s = criptas (hashes) calculados por segundo
- C / s = criptas (hashes) probados por segundo
- La palabra que está intentando actualmente
John tiene tres modos para intentar descifrar los hash. Si no se indica el modo usará los 3.
Para obtener información detallada de los modos visita OpenWall.
{1} Single Crack
Luis
LUIS
luisn1
Luis=
luis
...
Utiliza las lista de palabras incluida en en John the Ripper, intenta con cientos de variaciones del nombre en todos los hashes del archivo. Es una manera muy rápida de descifrar un hash y a veces funciona muy bien.
Para usar este modo:
$ john --single hashes.txt
{2} Modo Wordlist
Utiliza una lista de palabras para asignar un hash a cada una y comparar el hash de la contraseña. Si no se indica una lista John utiliza la que tiene incluida de aproximadamente 3.500 palabras, que son las contraseñas mas comunes que se ven en los volcados.
Para usar este modo:
$ john --wordlist=password.lst hashes.txt
{3} Modo Incremental
Este modo es un estilo a un ataque de fuerza bruta, probando cada combinación posible. Este modo jamas terminará ya que va probando longitudes cada vez mas altas.
Para probar el modo incremental:
$ john --incremental hashes.txt
Reglas de manipulación de palabras
John tiene la capacidad de coger una lista de palabras y crear variaciones de la misma agregando números y reemplazando letras con otros símbolos aleatorios. Por ejemplo si la lista de palabras contiene "Garcia", con la opción "rules" habilitada probará una combinación de cientos de palabras a partir de "Garcia".Reglas de manipulación de palabras
Simplemente hay que poner la opción --rules al invocar a John. Las reglas de manipulación por defecto suelen ser efectivas pero se puede cambiar la manera con la que se realizan las variaciones.
Para mas información visitar la página de OpenWall.
Además se pueden ver las reglas que se utilzaron en KoreLogic.
Ultimo ejemplo
Para utilizar una wordlist mas amplia, solo con cifrado DES y la manipulación de reglas activa, se puede usar el siguiente comando:
$ john --format:descrypt --wordlist=crackstation-human-only.txt --rules hashes.des.txt
Recursos
http://www.openwall.com/john/doc/
http://www.openwall.com/john/doc/EXAMPLES.shtml




