Teoria del Crackeo de Contrasenas

Teoria del Crackeo de Contrasenas

1. Fundamentos del Crackeo de Contrasenas

1. Que es el Crackeo de Contrasenas

El crackeo de contrasenas (password cracking) es el proceso de recuperar contrasenas a partir de sus versiones hash almacenadas. Se utiliza en penetration testing para evaluar la fortaleza de las politicas de contrasenas de una organizacion y en复原 de contrasenas olvidadas.

1. Por Que Se Usan Hashes

Las contrasenas nunca se almacenan en texto plano por razones de seguridad. En su lugar, se almacenan hash criptograficos:

Contraseña plaintext: "password123"
        |
        v
   Funcion hash
        |
        v
Hash: ef92b778baafe38920b0a0e6f8a8d0a0e6f8a8d0a0e6f8a8d0a

Cuando un usuario intenta autenticarse, el sistema:

  1. Aplica la misma funcion hash a la contrasena ingresada
  2. Compara el resultado con el hash almacenado
  3. Si coinciden, la autenticacion es exitosa

2. Tipos de Ataques

2.1. Fuerza Bruta (Brute Force)

Prueba todas las combinaciones posibles de caracteres hasta encontrar la contrasena.

Ventajas:

  • Garantiza encontrar la contrasena (si hay tiempo suficiente)
  • No requiere diccionario previo

Desventajas:

  • Extremadamente lento para contrasenas largas
  • Impracticable para contrasenas de mas de 8 caracteres

Ejemplo de complejidad:

Longitud Caracteres Combinaciones Tiempo (10M/seg)
4 minusculas 456,976 Instantaneo
6 minusculas 308 millones 30 seg
8 minusculas 208 mil millones 6 horas
10 minusculas 141 billones 162 dias

2.2. Diccionario (Dictionary Attack)

Utiliza una lista predefinida de palabras comunes como contrasenas.

Ventajas:

  • Mucho mas rapido que fuerza bruta
  • Alta efectividad (mayoria usa contrasenas debiles)

Desventajas:

  • No encuentra contrasenas complejas o unikas

Fuentes de diccionarios:

  • RockYou (14M contrasenas leaks)
  • SecLists (diccionarios especializados)
  • Dumps de breaches conocidos

2.3. Hibrido (Hybrid Attack)

Combina diccionario con variaciones (numeros, simbolos, mayusculas).

Ejemplos:

  • “password” -> “password1”, “password12”, “PASSWORD”
  • “admin” -> “Admin2024”, “adm1n”

2.4. Rainbow Table

Precomputa hash para todas las combinaciones y los guarda en tablas.

Ventajas:

  • extremadamente rapido (solo busqueda)
  • Reutilizable

Desventajas:

  • Requiere mucho almacenamiento
  • Vulnerable a salt

3. Funciones Hash

3.1. Propiedades de una Funcion Hash Segura

Propiedad Descripcion
One-way No se puede revertir
Determinista Misma entrada = misma salida
Disersion Salidas diferentes para entradas similares
Resistente a colisiones Dificil encontrar dos entradas con mismo hash

3.2. Funciones Legacy (Debiles)

Funcion Problema
MD5 Rupturable (colisiones practicas)
SHA-1 Rupturable (colisiones)
LM Division en mitades, case-insensitive
NTLM Case-insensitive, sin salt

3.3. Funciones Moderas (Seguras)

Funcion Caracteristicas
bcrypt Factor de trabajo adaptativo
scrypt Resistente a GPU/ASIC
Argon2 Memoria intensiva
PBKDF2 Estandar NIST

3.4. Salt

Un salt es un valor aleatorio unico anadido a cada contraseña antes de hashear:

Sin salt:
password:     hash1 = H("password")
password:     hash1 = H("password")    <- Mismo hash!

Con salt:
password + "x7z": hash1 = H("password" + "x7z")
password + "k9m": hash2 = H("password" + "k9m")  <- Diferente!

Por que usar salt:

  • Previene rainbow tables
  • Evita que contrasenas identicas tengan el mismo hash
  • fuerza a calcular hashes para cada usuario

4. Tipos de Hash

4.1. Hashes Unix/Linux

Tipo Formato Descripcion
DES xx... Legacy, 8 caracteres max
MD5 $1$... Legacy Linux
SHA-256 $5$... SHA-256 crypt
SHA-512 $6$... SHA-512 crypt
bcrypt $2a$... bcrypt
Argon2 $argon2i$... Argon2

4.2. Hashes Windows

Tipo Longitud Descripcion
LM 32 chars Legacy (no usar)
NTLM 32 chars NT Hash

Ejemplo LM: e38ad4149434383f6c0c5f2ceaf5c0c5 Ejemplo NTLM: 209c6174da490caeb422f0d7ec7e85a1b

4.3. Hashes de Aplicaciones

Tipo Formato ejemplo Aplicacion
MD5 5f4dcc3b5aa765d61d8327deb882cf99 MySQL antiguo
MySQL *c4caa... MySQL newer
PostgreSQL md5... PostgreSQL
Oracle S:... Oracle
MSSQL 0x0100... SQL Server

5. Ataques Especificos

5.1. LM Hash (Windows Legacy)

El hash LM divide la contrasena en dos partes de 7 caracteres:

Contraseña: "PASSWORD"
        |
        v
Partea 1: "PASSWOR" -> HASH1: 1C3C7A3B5E7...
Partea 2: "D" + padding -> HASH2: 9FFD9E3D4F...

Debilidades:

  • Case-insensitive
  • Division en mitades permite ataque separado
  • Padding debil

5.2. NTLM

Mejora sobre LM:

  • Case-sensitive
  • No se divide
  • Pero sigue sin salt (mismo problema que LM)

5.3. NetNTLM

Usado en red:

  • Relay attacks posibles
  • Responder/Impacket

5.4. JWT (JSON Web Token)

header.payload.signature

Header: {"alg": "HS256", "typ": "JWT"}
Payload: {"user": "admin", "exp": 1234567890}
Signature: HMAC-SHA256(header.payload, secret)

Ataques:

  • None algorithm
  • Weak secret (crackear signature)
  • Key confusion (RS to HS)

6.wordlists y su Generacion

6.1. Wordlists Populares

Archivo Tamano Descripcion
rockyou.txt 14M Leak de RockYou
passwords.txt 600K /passwords comunes
seclists Varios Diccionarios especializados

6.2. Generacion con Crunch

Crunch genera wordlists basadas en patrones:

# Generar fechas
crunch 8 8 -t "%%%%0102"  # Birthday: 0102XXXX

# Generar patrones de empresa
crunch 10 10 -t "Empresa@%" -p "Empresa"

6.3. Reglas

Las reglas transforman palabras base:

# Agregar año al final
$1999$2000$2001

# Mayusculas
u

# Prefijo y sufijo
^test$

7. GPU vs CPU

7.1. Rendimiento Comparativo

Metodo Hash/s (MD5)
CPU (i7) 50M
GPU (RTX 4090) 5000M+
GPU Cluster 10000M+

7.2. Hashcat vs John

Caracteristica Hashcat John
Velocidad GPU Excelente Buena
Formatos Muchos Muchos
Reglas Completas Simples
Facilidad Media Alta
GPU Si Limitado

Recomendacion:

  • GPU: Hashcat
  • CPU/legacy: John
  • Lo mejor: Combinar ambos

8. Contramedidas

8.1. Para Administradores

  • Usar funciones modernas (bcrypt, Argon2)
  • Usar salt unico por usuario
  • Longitud minima de 12 caracteres
  • Politica de bloqueo
  • No permitir reuse de contrasenas anteriores
  • Autenticacion multifactor

8.2. Detectar Ataques

  • Monitorear intentos fallidos
  • Rate limiting
  • Alertas de actividad suspecta
  • No bloquear cuentas (ataque de denegacion)

9. Referencias

  • Hashcat Wiki: https://hashcat.net/wiki/
  • John the Ripper: https://www.openwall.com/john/
  • CrackStation: https://crackstation.net/
  • SecLists: https://github.com/danielmiessler/SecLists