John the Ripper - Crackeo de Contrasenas

John the Ripper - Crackeo de Contrasenas

1. Introduccion

John the Ripper (comunmente conocido como John) es una de las herramientas mas utilizadas para el crackeo de contrasenas mediante fuerza bruta. Es una utilidad de codigo abierto desarrollada inicialmente por Solar Designer que soporta multiples formatos de hash.

Esta guia cubre la instalacion, configuracion, parametros y ejemplos practicos para el uso efectivo de esta herramienta en penetration tests y capture the flag (CTF).


2. Caracteristicas Principales

2.1. Formatos Soportados

John soporta diversos formatos de hash:

Categoria Formatos
Tradicionales DES, MD5, bcrypt
Modernos SHA-256, SHA-512, SHA-3
Windows NTLM, LM
Red NetNTLMv1, NetNTLMv2
Others Kerberos, GPG, SSH, PDF, ZIP

2.2. Modos de Operacion

Modo Descripcion
Single Usa informacion del usuario para generar candidatos
Wordlist Itera sobre una lista de palabras
Incremental Fuerza bruta caracter por caracter
External Usa un filtro externo como modo

3. Instalacion

3.1. Arch Linux

sudo pacman -S john

3.2. Kali/Parrot

sudo apt install john

3.3. Desde Fuente

git clone https://github.com/magnumripper/JohnTheRipper
cd JohnTheRipper/src
./configure
make -j4
sudo make install

4. Identificacion de Formatos

4.1. hashid

Herramienta para identificar el tipo de hash.

# Instalacion
pip install hashid

# Uso
hashid hash.txt
hashid -m hash.txt  # Con metodo

4.2. Identificacion Manual

# Longitud del hash
MD5: 32 caracteres
SHA-256: 64 caracteres
SHA-512: 128 caracteres
NTLM: 32 caracteres
LM: 32 caracteres (en mayusculas)

# Prefijos
$1$: MD5
$2$: bcrypt
$5$: SHA-256
$6$: SHA-512

4.3.john (auto-deteckion)

#John intenta detectar el formato
john --format=auto hash.txt

5. Modos de Uso

5.1. wordlist Mode

Usa una lista de palabras para generar candidatos de contrasena.

john --wordlist=<wordlist> --format=<formato> hash.txt
Parametro Descripcion
--wordlist Archivo de wordlist
--format Formato del hash

Ejemplo:

john --wordlist=rockyou.txt --format=raw-md5 hash.txt

5.2. incremental Mode

Modo de fuerza bruta caracter por caracter.

john --incremental --format=<formato> hash.txt

Parametros:

Parametro Descripcion
--incremental Activa modo incremental
--max-length Longitud maxima
--min-length Longitud minima
--mask Mask para incremental

Ejemplo:

john --incremental --max-length=8 --format=raw-md5 hash.txt

5.3. Single Mode

Utiliza informacion del usuario (username, GECOS) para generar candidatos.

john --single --format=<formato> hash.txt

Ejemplo:

john --single --format=des hash.txt

6. Pre-procesamiento

6.1. Unshadow

Combina archivos /etc/passwd y /etc/shadow para crear un hash crackeable.

# Combinar archivos
unshadow /etc/passwd /etc/shadow > hash.txt

# Crackear
john --wordlist=wordlist.txt hash.txt
Parametro Descripcion
passwd Archivo passwd
shadow Archivo shadow

Requisito: Acceso como root a /etc/shadow.

6.2. Extraccion de Hashes

John incluye extractores para multiples formatos:

ZIP

zip2john zip archivo.zip > hash.txt

PDF

pdf2john.pl archivo.pdf > hash.txt

SSH

ssh2john id_rsa > hash.txt

SSH (Pem)

ssh2john.py id_rsa > hash.txt

GPG

gpg2john archivo.gpg > hash.txt

Keepass

keepass2john database.kdb > hash.txt

BitLocker

bitlocker2john -c <imagen> > hash.txt

7. Formatos de Hash

7.1. Formatos Commones

Formato Opcion Descripcion
MD5 raw-md5 MD5 simple
SHA-256 raw-sha256 SHA-256 simple
SHA-512 raw-sha512 SHA-512 simple
bcrypt bcrypt bcrypt
NTLM ntlm NTLM de Windows
LM lm LM de Windows
MySQL mysql MySQL
PostgreSQL postgresql PostgreSQL

7.2. Especificar Formato

john --format=sha256crypt hash.txt
john --format=md5crypt hash.txt
john --format=ntlmv2 hash.txt

8. Wordlists

8.1. Wordlists Incorporadas

Archivo Ubicacion
rockyou.txt /usr/share/wordlists/rockyou.txt
passwords.txt /usr/share/wordlists/passwords.txt
seclists /usr/share/seclists/Passwords/

8.2. Reglas

John puede aplicar reglas a las wordlists para generar variantes:

# Activar reglas por defecto
john --wordlist=wordlist.txt --rules hash.txt

8.3. Crear Custom Rules

Editar el archivo de configuracion de John para agregar reglas personalizadas.


9. Visualizacion de Resultados

9.1. Mostrar Contrasenas Crackeadas

# Mostrar todos los crackeados
john --show hash.txt

# Mostrar de un formato especifico
john --show --format=<formato> hash.txt

9.2. Formato de Salida

#Formato simple
john --show hash.txt

#Solo contrasenas crackeadas
john --show --format=<formato> hash.txt | grep -v "password file"

9.3. Session

# Guardar progreso
john --save-session=nombre hash.txt

# Continuar sesion
john --restore=nombre

10. Ejemplos Practicos

10.1. Crackear MD5

john --wordlist=rockyou.txt --format=raw-md5 hash.txt

10.2. Crackear NTLM

john --wordlist=rockyou.txt --format=ntlm nt_hash.txt

10.3. Crackear LM

john --wordlist=rockyou.txt --format=lm lm_hash.txt

10.4. Crackear SHA-256

john --wordlist=rockyou.txt --format=raw-sha256 hash.txt

10.5. Crackear bcrypt

john --wordlist=rockyou.txt --format=bcrypt hash.txt

10.6. Modo Incremental

john --incremental --format=raw-md5 --max-length=10 hash.txt

10.7. Combinar Unshadow + Crack

unshadow /etc/passwd /etc/shadow > hash.txt
john --wordlist=rockyou.txt hash.txt

11. Optimizacion

11.1. Fork

# Usar multiples cores
john --wordlist=rockyou.txt --format=raw-md5 --fork=4 hash.txt

11.2. Rules Personalizadas

# Usar reglas especificas
john --wordlist=rockyou.txt --rules: KoreLogicRulesAppendYears --format=raw-md5 hash.txt

11.3. Potencial

# Maximo intentos por segundo
john --format=raw-md5 --make-chk=wordlist.txt hash.txt

12. Comparacion con Hashcat

Caracteristica John Hashcat
Velocidad Media Muy rapida
GPU Limitada Excelente
Formatos Mas Mas
Facilidad Alta Media
Reglas Simple Completa

Recomendacion:

  • Usar hashcat para hashes GPU-accelerated (SHA, bcrypt)
  • Usar john para hashes especificos y formatos legacy

13. Feedback

13.1. Lo Que Esta Bien

  • Multiples formatos soportados
  • Extractores incluidos
  • Modo incremental efectivo

13.2. Lo Que Falta

  • Documentacion de formatos menos comunes
  • Ejemplos de optimizacion
  • Comparativa con hashcat

13.3. Mejoras Recomendadas

  • Agregar optimizacion GPU
  • Documentar reglas avanzadas
  • Agregar casos de studio