Nos dicen que tenemos que recuperar el contenido de un archivo .rar que han protegido con un password. Dentro de ese archivo parece ser que podremos encontrar información sobre un repositorio de código (al que accederemos con una contraseña, que tendremos que recuperar). Pero el primer paso será obtener el password que protege el archivo RAR. Lo único que se sabe es que ese password cumple lo siguiente:
<? echo sha1(md5($password)); ?> 77134aa1b02b61cd841d2a81bf64796a31234e28 |
Teóricamente las funciones de resumen criptográfico (o funciones hash) md5 y sha1 no tienen función inversa. O dicho de otro modo, existe md5(X) para todo X, pero no existe una función Y tal que Y(md5(x))=x. Para colmo de males, el resultado de md5(x) se ha pasado por la función sha1 : sha1(md5(x)). Entonces, ¿qué podemos hacer? Bueno, supongamos que alguien decide generar una tabla para «todo» X, almacenando los resultados. Algo como md5(«a») –> guardar, md5(«aa»)–>guardar, md5(«aaa») –> guardar, md5(«aab»)–> guardar…. etc. Guardar todo eso puede ser muy costoso, sobre todo si la longitud de X empieza a crecer y además, combinamos letras (mayúsculas y minúsculas), números y caracteres no alfanuméricos. Hay «trucos» para no tener que guardarlo todo (ver Rainbow Tables), pero en general, es inviable llegar más allá de passwords de más de 8 o 9 caracteres si tratamos con pass que contienen todos esos símnbolos (Ophcrack guarda esas tablas.. ojito, habamos de ficheros de entre 500GB y 2TB 🙂
¿Y nos tenemos que descargar esos mastodontes sólo para probar? No. Además, los enlaces que indico no sirven para el algoritmo sha1… Vale, ¿entonces qué? Bueno, hay otros sitios web que nos permiten pasarle un hash sha1 o md5 para ver si están indexados en sus bases de datos. Crackstation.net es una de esas webs 😉 Y qué casualidad, tienen ese pass indexado… Una vez recuperado, procederemos a descomprimir el .rar. Veremos que hay un directorio .m2, con 2 archivos: settings.xml y settings-security.xml. Son 2 ficheros que se usan para acceder a un repositorio de código Maven… El 2º guarda una contraseña maestra, a partir de la cual se ha generado la que aparece en settings.xml. ¿Hay alguna forma de, teniendo la contraseña maestra, saber cuál es la palabra o frase que se cifró para obtener la contraseña de settings.xml? Por supuesto, ése será nuestro siguiente paso…
Que cabronazos, yo que pensaba que con sha1(md5()) no encontraríais la password en tablas ya existentes.
La próxima vez sha1(md5(sha1(md5(md5(sha1(password)))))).
Tsk, tsk, tsk… no hay que decir palabrotas… XDDD
Que $DEITY nos pille confesados con esa ristra sha1+md5!
Hola chicos,
sus dejo mi granito de arena para completar info sobre el nivel.
http://drcymo.blogspot.com.es/2013/08/hackit-2013-nivel-2-parte-i.html