Hackit!2013 : Level 2

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…

3 comentarios en «Hackit!2013 : Level 2»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.