Solución al reto de verano de ReversingLabs

El pasado Miércoles 14, ReversingLabs publicó un interesante reto en el que podíamos descargar un zip y, a partir de éste, debíamos obtener una contraseña. El reto estuvo abierto apenas dos días. Hoy ReversingLabs ha publicado la solución y nos parece interesante mostrarla paso a paso, a nuestra manera y en castellano.

Primero descargamos el zip 'r.zip'. Al abrirlo y descomprimirlo, comprobaremos que el zip contiene un directorio 'r' y dentro del mismo otro fichero 'r.zip'. Si descomprimimos de nuevo el segundo archivo 'r.zip' veremos que contiene un tercero y así sucesivamente, "hasta el infinito y más allá". Se trata sin duda de un divertido fichero que se reproduce así mismo, digamos un fichero zip 'quine', 'All The Way Down'.

No obstante, se trata sin duda de un (buen) distraimiento. Abrimos el fichero zip con un editor hexadecimal, eliminamos de la cabecera el bucle y salvamos el fichero como 'x.zip':


Como podemos observar, la cadena de texto 'zu7z' nos invita a pensar que el fichero ahora necesita 7-zip para descomprimirse. Efectivamente, lo abrimos con la herramienta y podemos ver su contenido.

Primero otro fichero comprimido 'puzzle.cab':


Y dentro de 'puzzle.cab' la imagen 'ReversingLabs.png':



Los esfuerzos ahora se centran en esta última imágen. La abrimos con el editor hexadecimal y en seguida nos llama la atención el chunk 'pSWD', cuyo nombre invita a pensar que se trata del ansiado password:


Sin duda este chunk no corresponde con las especificaciones del formato de imágenes PNG:


Y además y curiosamente el CRC está invertido:


Tenemos entonces hasta ahora:

- chunk pSWD: 70 53 57 44
- datos: 53 8B 32 72 78 BB AB 65 47 47 28 89 99 FB CD A1
- CRC: C5 70 B6 CD (que debería ser al revés, CD B6 70 C5, aunque corregirlo no nos aporta nada nuevo)

Si nos fijamos, por su longitud y formato, los datos de la password parecen tratarse de un hash md5. Buscamos inmediatamente si ese hash se ha "pre-reventado" ya en alguna página a tal efecto, y vemos que se ha intentado...


...pero no se ha obtenido todavía ninguna clave:


Desafortunadamente hasta este punto llegué (si, caí en una de las principales trampas) y no pensé que la clave principal no estaba en la imagen, si no en el último fichero comprimido que la contenía: 'puzzle.cab'.

Tal y como comentan en el blog de Reversing Labs, escaneando el CAB con su herramienta NyxEngine hubiésemos descubierto también información oculta o estenografiada:


Concretamente: Data start: 0x5a; Data size: 0x0000f6

A continuación obtenemos el bloque especificado...


... y guardamos la siguiente cadena:

UmFyIRoHAM6Zc4AADQAAAAAAAAA8MSAOyRZcWCVhcEFcUfpP4JdbtU2derwgjSYp+BpxVYkWJPDtQ/TITifo4qO7qyYz+yLpd9+6nkwwxmomWHbHK0Bt6UPHOwL/p
EKm6IGXo/5dioeP66Fq5brTldgiZ7do5bbFjykQIsx6PMCBre4iUJ7jcwrwD2MDs69XwuuHL+fMKy9hDUJQPDEgDskWXFjp6jPWFXoWVSNb4H1zjQpW

Luego la decodificamos en base64, y descubrimos que se trata de un rar:


A continuación salvamos el binario (botón 'decode') y al abrirlo vemos que nos solicita una contraseña:


¿Y cuál es la contraseña? Pues evidentemente tiene que ser la del significativo chunk de la anterior imagen, pero en minúsculas: '538b327278bbab654747288999fbcda1'.

Probamos y vemos que existe un fichero file en su interior:


Los descomprimimos y abrimos y... ¡¡bingo!!


Además y para más inri, ¡la contraseña es el famoso código secreto del logotipo del USCYBERCOM!.

Por último sólo nos queda transmitir nuestra más sincera admiración y felicitaciones a Tomislav y al equipo de ReversingLabs por este magnífico reto. ¡Ya estamos deseando ver otro nuevo!

1 comentarios :