ciberseguridad
hashcat
cracking
enumeration
john-the-ripper
Hay vulnerabilidades que no explotan fallos complejos. No requieren de scripts avanzados ni técnicas sofisticadas. A veces, solo necesitas intentar entrar… y darte cuenta de que nadie cerró la puerta. Eso es el Broken Access Control.
Cuando una aplicación web no controla adecuadamente qué usuarios pueden acceder a qué recursos, se rompen las reglas de acceso. Lo normal sería que ciertos archivos, como admin.php
, estuvieran protegidos tras un login o roles específicos. Pero si el control falla, cualquier usuario —autenticado o no— puede acceder simplemente conociendo la ruta. Descubrir esas rutas se llama enumeración, y es uno de los primeros pasos en casi cualquier análisis web. Como hacker, necesitas mirar lo que no te muestran. Herramientas como gobuster
, dirb
, o ffuf
hacen fuerza bruta sobre rutas comunes (/admin
, /panel
, /login
, etc.) usando diccionarios con nombres típicos de archivos. No es magia: es insistencia, paciencia y estrategia.
Una vez dentro de un archivo sensible como un panel administrativo, puede que encuentres algo más valioso aún: usuarios y sus contraseñas… o mejor dicho, sus hashes.
Un hash es el resultado de aplicar un algoritmo matemático a una contraseña. Toma una entrada —por ejemplo, contraseña123— y la convierte en una cadena larga y aparentemente aleatoria. No se puede “descifrar” el hash como si fuera un mensaje cifrado tradicional, porque no hay reversibilidad. Pero se puede adivinar qué contraseña lo generó, comparando miles o millones de contraseñas con sus hashes hasta encontrar una coincidencia.
Uno de los algoritmos de hash más comunes, aunque obsoleto, es MD5. Transforma cualquier entrada en una cadena de 32 caracteres hexadecimales. El problema es que MD5 es rápido, predecible y ampliamente estudiado, por lo que es vulnerable a ataques como el cracking por diccionario. Ahí es donde entran dos de las herramientas más poderosas que tienes a tu disposición: John the Ripper y Hashcat.
Ambas prueban contraseñas desde un archivo de diccionario como rockyou.txt
, que contiene millones de contraseñas reales filtradas a lo largo del tiempo. John es más simple, más inmediato. Ideal para cuando estás empezando. Hashcat, en cambio, es más agresivo, permite configuraciones avanzadas, y aprovecha la GPU de tu máquina para acelerar el proceso.
Para usarlas, primero debes tener el hash en un archivo, reconocer su tipo (en este caso MD5), y luego lanzar el ataque. A veces las contraseñas no están a la vista. Están disfrazadas. No ves "miclave123", ves algo como f379eaf3c831b04de153469d1bec345e
. Eso no es una contraseña, es un hash y tu trabajo como hacker ético es mirar ese código y preguntarte ¿Qué está ocultando realmente?. Para eso existen John the Ripper y Hashcat.
Son dos herramientas legendarias del cracking de contraseñas. No mágicas. No infalibles. Pero sí poderosas, si sabes cómo hablarles.
John the Ripper nació como una herramienta simple, rápida y eficaz. Su filosofía es directa: tomar un archivo de hashes, compararlos con un diccionario de posibles contraseñas y ver si hay coincidencias. Nada más. Nada menos. Puedes usarlo con este comando:
1john --wordlist=rockyou.txt hashes.txt
John leerá cada línea de rockyou.txt
(un diccionario con millones de contraseñas reales) y generará el hash correspondiente según el tipo (por ejemplo, MD5). Lo comparará con los que tengas en hashes.txt
. Si encuentra una coincidencia, te la mostrará.
Es una herramienta que te invita a empezar sin miedo. Ligera. Humana. Ideal cuando estás dando tus primeros pasos. Pero si lo que buscas es fuerza bruta, potencia cruda y velocidad salvaje, entonces necesitas a Hashcat.
Hashcat fue diseñado para romper hashes a una velocidad absurdamente alta. Usa la GPU de tu máquina (sí, la tarjeta gráfica) para lanzar ataques en paralelo, calculando miles de millones de combinaciones por segundo.
Para usar Hashcat necesitas entender el tipo de hash con el que estás trabajando. Por ejemplo:
m 0
es MD5m 100
es SHA1m 500
es MD5 de UnixY también elegir el modo de ataque. El más común es por diccionario (-a 0
):
1hashcat -m 0 -a 0 hashes.txt rockyou.txt
Hashcat puede parecer intimidante al principio. Pero como muchas cosas en ciberseguridad, cuanto más te acercas, más sentido tiene. Puedes darle reglas, combinaciones, máscaras, técnicas de mutación. Puedes decirle cómo pensar. Cómo insistir y lo mejor es que puedes aprender a observar. A ver los patrones. A comprender que detrás de cada contraseña rota hay una historia de descuido, de prisa, de repetición.
Estás aquí para estudiar esas historias. Para hacerlas visibles. Para fortalecer el sistema, entendiendo sus puntos más débiles. John y Hashcat no hacen el trabajo por ti. Solo reflejan tu esfuerzo, tu comprensión y tu perseverancia. Las contraseñas que logres romper no serán trofeos, serán evidencia de que estás creciendo.
Por ejemplo, con John:
1john --wordlist=rockyou.txt hash.txt
O con Hashcat:
1hashcat -m 0 -a 0 hash.txt rockyou.txt
Ese -m 0
indica que estás trabajando con MD5. Ese -a 0
indica que estás haciendo un ataque por diccionario. En esencia, esto es password cracking: probar y probar hasta que algo encaje. No es cuestión de suerte. Es conocimiento, es herramientas, es decisión.
Y sobre todo, es entender que cada vez que rompes un hash, estás comprendiendo una debilidad humana: contraseñas simples, errores de diseño, puertas mal cerradas. Pero no estás aquí para juzgar eso. Estás aquí para descubrirlo. Para aprender. Para volverte mejor.
No subestimes lo que puedes lograr con una mente curiosa, un diccionario bien elegido y una herramienta bien entendida.