Solución al reto del UK Cyber Security Challenge (1)

Tras un pequeño tropiezo hace un par de meses, el pasado lunes por fin se abrieron las puertas virtuales del Cyber Security Challenge UK, una web con retos de hacking y una interesante iniciativa del gobierno británico, el SANS Institute y otras entidades y empresas con el objetivo de atraer a todos los talentos del mundo de la seguridad informática. Eso sí, desafortunadamente la competición está abierta sólo para británicos residentes en Reino Unido, aunque (al menos) han publicado un código que podemos descifrar sin inscribirnos.

Dado que mi bebé todavía no ha nacido (…qué poquito me queda…) y que además disfruto de la jornada intensiva, tengo tiempo y por qué no, ¡vamos a intentarlo!

Primero descargamos el código y le echamos un vistazo. Es fácil pensar que probablemente el código esté codificado en Base64, así que procedemos a intentar decodificarlo. Para ello utilizamos un decoder online, introducimos el texto y salvamos el binario:


El siguiente paso es ver qué es exactamente el binario descargado. Para ello abrimos el fichero con un editor hexadecimal y en seguida observamos en la cabecera que se trata de un formato JFIF (JPEG File Interchange Format):


¡Es una imagen! Renombramos el fichero y vemos la siguiente viñeta:


Después de leer la tira (bastante buena por cierto), llama la atención la URL http://xkcd.com/538/. Se trata de un sitio de webcomics de donde han obtenido la imagen.

De lo que no hay duda es que el reto no acaba aquí, no puede tratarse tan sólo un tonta decodificación en Base64, así que la imagen debe contener algo oculto

He de reconocer que en este punto me atasqué bastante, ya que me rompí la cabeza con los datos EXIF, analizando la imágen y haciendo un montón de pruebas con Exiftool y JPEGSnoop.

Sin embargo ahora seguiremos por el buen camino y descargaremos la imagen original de la web para compararla con la imagen del reto.

Al abrir ambas en seguida nos damos cuenta: la imagen del reto contiene un sospechoso borde que la diferencia de la original.

Aumentamos el zoom para observarlo detenidamente:


Nos acercamos un poquito más…


Y ya está, de repente se ve claro: dos líneas de píxeles, negro o blanco, 1 o 0, es decir, tenemos un código binario.

Empezamos con lo más lógico, asociamos el píxel en blanco a 0 y el negro a 1:


Así con todas las líneas en sentido de las agujas del reloj: arriba, derecha, abajo e izquierda, hasta obtener el siguiente código:

010000110111100101110010011011100110011001110010001000000111001101100010011110010111100101100010011010100010000001100111011101010111011001100110001000000111100101110110011000010111100000111010001000000010000000100000001000000010000000100000011101010110011101100111011000110110011000111010001011110010111101110000011011000110111101110010011001010110011001110010011100000110100001100101011101100110011101101100011100000111010101101110011110010111100101110010011000010111010001110010001011100110001001100101011101000010111001101000011110000010111100111000001100110011010001110111011001110110001100101110011101010110011101111010011110010010000001110101011001110110011101100011011001100011101000101111001011110111000001101100011011110111001001100101011001100111001001110000011010000110010101110110011001110110110001110000011101010110111001111001011110010111001001100001011101000111001000101110011000100110010101110100001011100110100001111000001011110011100000110011001101000111011101100111011000110010111001110101011001110111101001111001000000

Y lo convertimos a ASCII:

Cyrnfr sbyybj guvf yvax: uggcf://plorefrphevglpunyyratr.bet.hx/834wgc.ugzy uggcf://plorefrphevglpunyyratr.bet.hx/834wgc.ugzy

Esto ya tiene muy buena pinta. Sin duda alguna el ASCII parece contener varias URLs codificadas y, tal y como vemos por el órden de los caracteres y la sintaxis, parece tratarse de un cifrado de rotación, en concreto 13 posiciones. Si, es nada más y nada menos que ROT13 y procedemos también a decodificarlo con alguna utilidad online:


Ya tenemos el mensaje:

Please follow this link: https://cybersecuritychallenge.org.uk/834jtp.html https://cybersecuritychallenge.org.uk/834jtp.html

Bien, como véis parece que esto no termina aquí. Pinchamos el nuevo enlace y obtenemos un nuevo código:

68edcdec4e2c8eae8d2c8e2dedcd6e04d2042fedae52ceac04ccedaecd8c042ccd8c046cedad0e8dac8eac8c048e0dac044aa82889046c0d2c8d8daccdecacc5042bedae4e04ee2dcd046ced8cac042d6e04046c2f4c664ea76e666cae4e268e2f456c0d088d8d66cdecac6546c6a506e6a546062606c504a141a1410a8dac2c6eac04acad2c2d8d048e0d2d6e046ced8cac048eed04edae4e048eac2cad042c8e04adac8c2d2c086c2f4cac4e6eac6cae4e2d8e2f6c0d2c8d8daccdecacc5ed4eecc5ae6dc50429cc042fedae524eac048e0dac04cc2d4e6e8e040eac4e6eedcd048eed048ced046eed85042ccd8c046c2ccd040e4eedceac042fedae04adacac8e048e0dac04ac8d2dec2d4c2d8d2d8e2f046c4e2d8eac4e2d2c0405484e2d8e2d6e0d046c2d8e2d4faccd046cae4e4eaccd8e8d2f044eac6e2d8caccd8e042dcd048e0dac04aa692504eeac04ee2d8d8d044cac042dcd048eedae6c0d048eed042c8cce2d6eac040dedee048eed046c8d2c2dad042fedae4e040e4e2d4facc504eaac8d8d048cedcdac042ccd8c04eceded8c048dae6c6d042dcd048e0dac04682f4cac4e046aac6cae4e2d8e2f04680d2c8d8daccdecac046cedad0eac8e2d8e2dedcd6e048e2c6d2dcdec040e8d2c6cac048e0d4eedaeec0dedae8e048e0dac044eac6e8e04edcc048e0dac042fac2c4ec5

¡Comienza la segunda parte del reto!

Comentarios