Descifrado de Contraseñas y Técnicas (Hashes, Rainbow Tables, Salting)
Las contraseñas suelen almacenarse en forma de hashes para protegerlas en caso de fuga de datos.
👉 Un hash es una función matemática que convierte datos de longitud arbitraria en un valor de tamaño fijo (ej: MD5, SHA-256).
Ejemplo con la contraseña Soccer06!:
echo -n 'unai' | sha1sum
echo -n 'unai' | md5sum

🌈 Tablas Arcoíris (Rainbow Tables)
-
Son mapas precomputados de contraseñas → hash.
-
Permiten descifrar muy rápido si el hash ya está en la tabla.
Ejemplo (MD5):
| Contraseña | Hash |
|---|---|
| 123456 | e10adc3949ba59abbe56e057f20f883e |
| password | 5f4dcc3b5aa765d61d8327deb882cf99 |
| rockyou | f806fc5a2a0d5ba2471600758452799c |
🔑 Mitigación: Salting
-
Se añade una sal (salt) aleatoria a la contraseña antes del hash.
-
Hace inútiles las tablas arcoíris (necesitarían recomputarse para todas las sales posibles).
Ejemplo:
echo -n Th1sIsTh3S@unai | md5sum
-
Th1sIsTh3S@lt_👉 es la sal (salt) -
unai👉 es la contraseña original
El resultado ya no coincide con ninguna tabla arcoíris normal, porque estas tablas solo tienen el hash de la contraseña sin sal.
⚡ El punto clave:
-
La sal no es secreta, se almacena junto al hash.
-
Su función es hacer inútiles los ataques precomputados (rainbow tables), porque obligan al atacante a calcular nuevamente todos los hashes incluyendo la sal.
📚 Ataque de Diccionario (Wordlist Attack)
-
En lugar de probar todo, se usan listas de contraseñas probables.
-
Mucho más eficiente en pentesting.
Ejemplo: wordlist rockyou.txt (14M contraseñas reales filtradas en 2009):
head --lines=20 /usr/share/wordlists/rockyou.txt
