John the Ripper
¿Qué es John the Ripper?
Es una utilidad Open Source utilizada para auditar y recuperar contraseñas, fue creada por Solar Designer y podría decirles que es una de las herramientas para romper contraseñas de más alto desempeño y flexibles que existen en la actualidad.
¿Qué versiones existen?
Usted puede encontrar básicamente tres versiones de John (se le menciona así como abreviatura a John the Ripper), la versión free, que es ampliamente utilizada, la versión John the Ripper Pro y la versión John the Ripper Jumbo.
La versión Pro tiene ventajas frente a la free, por ejemplo: detecta de forma automática cualquier mejora tecnológica que soporte el procesador en la máquina donde se instalo, también viene con un diccionario de más de 4 millones de entradas; la auto detección de mejoras, le ahorra a uno tiempo, ya que le evita a uno tener que poner a compilar librerías para el hardware especial.
Existe un parche denominado John the Ripper Jumbo que permite trabajar con otra cantidad diferente de algoritmos, sin embargo se dice que las funcionalidades aún no están lo suficientemente maduras, así que podría presentar algún tipo de inconveniente.
En mi experiencia, no he tenido ningún inconveniente con la versión John the Ripper Jumbo.
¿Cuáles son los archivos más importantes de John?
john.conf | Archivo de configuración en Linux |
john.ini | Archivo de configuración en Windows |
john.pot | En este archivo se almacenan los passwords que John a crackeado |
john.rec | En caso de estar realizando un proceso,John almacena su estado en este archivo, lo actualiza cada 10 minutos y en caso de que suceda algo inesperado, John utiliza este archivo para continuar donde había quedado |
El archivo john.conf
Aquí se definen las opciones generales
- Wordlist = PATH
En esta opción puede configurar la ruta hacia su diccionario o Worlist
- Idle = Y
Esta opción puede ser configurada con “Y” (si) o “N” (no), viene por defecto configurada como “Y”, lo cual permitirá que John trate de usar solo los ciclos en el que el procesador está inactivo
- Save = 600
Intervalo de tiempo en el cual se grabará el estado en el archivo john.rec, 600 segundos equivalen a 10 minutos,
- Beep = N
Si está configurado con “Y”, emite un “sonido” al encontrar una contraseña
Opciones y reglas para el modo Single crack
Opciones y reglas para el modo Wordlist
¿Qué modos de cracking soporta John?
- modo Single crack: En este caso John utiliza variaciones de la cuenta con la que inicia sesión el usuario y el campo GECOS
En la imagen se muestra el campo GECOS, es el campo número 5 de la línea correspondiente al usuario en el archivo /etc/passwd de Linux
Las reglas del modo Single crack se definen debajo de [List.Rules:Single]
- modo Wordlist: Aplica un ataque de diccionario teniendo en cuenta las reglas de configuración, con estas reglas, realiza varias combinaciones utilizando las palabras en el diccionario, obteniendo de ese modo, un número verdaderamente amplio de intentos y de opciones. Dentro de los diccionarios más populares se encuentran “rockyou” y “kaonashi”; si utiliza Kali Linux, podrá encontrar el diccionario rockyou en la ruta “/usr/share/wordlists/rockyou.txt”; si quiere utilizar kaonashi, puede consultar sobre ella en la siguiente https://github.com/kaonashi-passwords/Kaonashi. También podría elaborar su propio diccionario a partir de las reglas que usted considere pertinentes.
Las reglas del modo Wordlist se definen debajo de [List.Rules:Wordlist]
- modo Incremental: Este modo plantea un ataque por fuerza bruta que utiliza las reglas definidas por defecto en John
- modo External: En este modo cualquier persona podría escribir su propio código en C con el cual John generaría contraseñas candidatas para sus intentos de crackeo.
¿Cómo utilizar John?
Puede instalar John en Linux y Windows, en este caso me voy a enfocar en LInux; si va utilizar un distribución como Debian, podría realizar la instalación desde los repositorios o, descargando los paquetes desde https://www.openwall.com/john/, ahí puede elegir la versión deseada e instalarlo manualmente. En Kali Linux, John viene instalado por defecto
Debian 10, instalación desde los repositorios:
$sudo apt install john o
#apt install john
#apt-get install john
Caso de estudio de john en Kali Linux
Se tienen tres archivos en los cuales se encuentra un hash en cada uno:
root@testdrive:~/Documents/hashFiles# ls
hashNumber1.txt hashNumber2.txt hashNumber3.txt
Contenido del archivo hashNumber1.txt
dab0d2a8952393845a5546ab722c1c45
Contenido del archivo hashNumber2.txt
1ec32ca39b427db9f1eb69a2c43f6aadb055d665340177848b00c24554251b09
Contenido del archivo hashNumber3.txt
B3ED3855995560EB18F086B42C64BA80
John tiene la característica de poder determinar el hash al cual se le va a realizar el procedimiento; esta capacidad requiere procesamiento, por lo tanto es una buena práctica encargarnos nosotros mismos de determinar qué algoritmo fue utilizado para calcular el hash en cuestión; para determinar el tipo de hash, podemos utilizar herramientas como: hashID o hashTag (ya vienen instaladas en kali Linux)
Usted podría tener un indicio del tipo de hash utilizando HashID, tenga en cuenta que esta herramienta sugiere el tipo de hash que podría ser, es una herramienta confiable, sin embargo, no es infalible
Resultado para hashNumber1.txt
Para el hash del archivo hashNumber1.txt, la opción MD5 es la correcta
Resultado para hashNumber2.txt
Para el hash del archivo hashNumber2.txt, la opción SHA-256 es la correcta
Resultado para hashNumber3.txt
Para el hash del archivo hashNumber3.txt, ninguna de las dos opciones es correcta, lo sé porque yo fui quien calculó el hash, en este caso el hash fue calculado utilizando la función NTLM; así que tenga presente que esta herramienta no es 100% precisa.
Complemente la información que le entregan este tipo de herramientas con los indicios basados en: cantidad de caracteres del hash, sistema operativo de donde se obtuvo el hash, etc.
Una vez se tiene una certidumbre del tipo de hash, observe los formatos soportados por john:
Para hashNumber1.txt, debe buscar el formato apropiado de MD5 con el siguiente comando:
con el comando anterior obtiene este resultado:
Ahora se utiliza john para determinar el password, en este caso se utilizó el siguiente comando:
En el comando anterior no se le introdujo ninguno modo de “crack” así que primero intentará el modo “single crack”, luego utilizará el modo “Wordlist” y por último el modo “incremental”
A continuación se observa el resultado (behack)
Para hashNumber2.txt, debe buscar el formato apropiado de SHA256 con el siguiente comando:
con el comando anterior obtiene este resultado:
Ahora se utiliza john para determinar el password, en este caso se utilizó un comando en el cual se utiliza el formato Raw-SHA256 y un ataque por máscara (“mask attack) en el cual se le indicó a la utilidad que creara palabras de mínimo 4 y máximo 5 caracteres de longitud:
con el comando anterior se obtuvo el siguiente resultado (owasp):
Para el hashNumber3.txt, debe buscar el formato apropiado de NTLM con el siguiente comando:
con el comando anterior se obtiene el siguiente resultado:
Ahora se utiliza john para determinar el password, en este caso se utilizó un comando en el cual se utiliza el formato NT y un ataque por diccionario (Wordlist) en el cual se le indicó a la utilidad la ubicación del diccionario (/usr/share/wordlist/rockyou.txt):
con el comando anterior se obtuvo el siguiente resultado (calidad):
Finalmente podemos concluir que se han determinado los 3 passwords para cada uno de los hashes requeridos, utilizando el comando más básico de john, el método de máscaras y el método de diccionario.
Espero que haya sido de utilidad para ustedes, recuerda ser un buen hacker y compartir con la comunidad!
¿Te gustó?
¡Déjanos tus comentarios!
Si quieres formar parte de nuestra comunidad, puedes suscribirte
Otras Entradas
Introducción a la Seguridad en AI – Parte 2
Después de entender los principales ataques, técnicas, tácticas y procedimientos...
Leer másIntroducción a la Seguridad en AI
Cuando hablamos de Seguridad en AI (Artificial Intelligence o Inteligencia...
Leer más5 pilares para Hackers o Profesionales en Ciberseguridad desde una perspectiva técnica
Después de la master class que realizamos en Be Hacker...
Leer más