A fines de diciembre volvimos con un nuevo desafío para poner a prueba a nuestros lectores, que consistía en hallar la bandera (flag) que se escondía dentro de algún archivo. A diferencia de otros, para resolverlo era necesario aplicar la lógica y la deducción, permanecer atentos a todas las pistas que pudieran surgir en el camino y poner en funcionamiento el pensamiento lateral.
Y dado que los aires del nuevo año que comienza nos tienen entusiasmados por lo que vendrá, ¡decidimos premiar a 4 ganadores que obtendrán su licencia de ESET Internet Security por un año! Por ello, felicitamos a:
- Mariano Marino
- Omar Espino,
- Facundo Basso
- Equipo: #TeamVilo, formado por: TanKesh Yeah , |-o-| (-o-) |-o-| #Team🍺 y Adrián
Y ahora sí, sin más preámbulos les presentamos la solución a nuestro desafío #36 y les explicamos paso a paso cómo encontrar la bandera:
- Obtener la Clave #1 del archivo pdf.
Al descomprimir el .zip encontramos 4 archivos en su interior. El primero que vamos a analizar es “algo”. Al abrir el archivo con un editor de texto, podemos ver que se trata de un archivo PDF, según indica la cabecera. Por lo tanto, abrimos el mismo con Acrobat Reader o cualquier otro lector PDF.
Dentro del archivo encontramos una pista que nos indica que la bandera que buscamos comienza con “ESET_”. Pero esta no es toda la información que contiene el archivo. Si seleccionamos todo el documento encontramos que hay un texto oculto:
LXVI CXVII XCVIII XCVIII CVIII CI LXVI CXI XCVIII XCVIII CVIII CI
El texto corresponde a números romanos, los cuales pasados a decimal son:
66 117 98 98 108 101 66 111 98 98 108 101
A su vez, si lo pasamos a ASCII obtenemos la primera clave, a la que llamaremos Clave #1:
BubbleBobble
- Obtener la Clave #2 del archivo de audio
A continuación, analizamos el archivo “bipbip”. Nuevamente, si abrimos el mismo con un editor de texto veremos que corresponde a un archivo de audio .wav. Antes de prestar atención al audio en sí, utilizamos la herramienta Steghide para buscar un mensaje oculto dentro del audio:
Para extraer el mensaje vamos a necesitar la contraseña, que es la Clave #1 que obtuvimos en el paso anterior.
Al leer el mensaje encontramos el siguiente texto:
S25haHQgdW95IE9pcmFtISBUdWIgcnVvIFNzZWNuaXJwIHNpIG5pIHJlaHRvbmEgZWx0c2FjIQ
Convertimos de base64 a ASCII y luego aplicamos la función de Invertir el texto y obtenemos la Clave #2:
Thank you Mario! But our Princess is in another castle!
- Obtener la Clave #3 de la imagen
Con la Clave #2 que obtuvimos en el paso anterior, podemos descomprimir el archivo “otro archivo.7z”. Una vez descomprimido, obtenemos una imagen en formato bmp.
Abrimos la imagen y hacemos zoom en el borde superior de la misma, hasta encontrar un borde de colores:
Este borde es en realidad un código de colores. Con un editor de imágenes y la herramienta cuentagotas, obtenemos el código hexadecimal de cada uno de los colores:
Obtenemos la siguiente secuencia de colores (la cual se repite varias veces):
21726b 72697a 672065 6c2069 766a20 666976 7a6c68 2070a1 202c75 66666e 677676 69794b 20796a 6c6973 706c58 206664 726363 207644
Nuevamente, si pasamos de hexadecimal a ASCII obtenemos:
!rkrizg el ivj fivzlh p¡ ,uffngvviyK yjlisplX fdrcc vD
Por último, invertimos el texto y desciframos con ROT 9 para obtener la Clave #3:
Me llamo Guybrush Threepwood, ¡y quiero ser un pirata!
Nota: El número hexadecimal A1 corresponde al carácter ASCII “¡” (Signo de exclamación abierto). Dado que este signo no existe en el idioma inglés, algunos sitios pueden no reconocerlo correctamente.
- Obtener la Clave #4 del video:
Utilizando la Clave #3 descomprimimos el archivo restante “un archivo.7z”, del cual se obtiene el archivo “video.mp4”. Si vemos el video vamos a encontrar algunas pistas escondidas y codificadas, pero la clave que estamos buscando se encuentra en las propiedades del archivo.
En el campo “URL” vamos a encontrar oculto un código binario:
Una vez obtenido el número binario, vamos a aplicar el complemento. Es decir, vamos a cambiar los 0 por 1 y los 1 por 0 y obtenemos:
01000111 01110010 01110101 01101110 01100100 01110011 01110100 01100101 01101100 01101100 01110101 01101110 01100111 00111010 00100000 01000111 00100000 01010100 00100000 01000001 00100000 00101111 00101111 00100000 01010010 01101001 01101110 01100111 01110011 01110100 01100101 01101100 01101100 01110101 01101110 01100111 00111010 00100000 01000001 00100000 01000001 00100000 01000001 00100000 00101111 00101111 00100000 01010111 01100001 01101100 01111010 01100101 01101110 01101100 01100001 01100111 01100101 00111010 00100000 00110100 00100000 00110010 00100000 00110101 00100000 00101111 00101111 00100000 01010011 01110100 01100101 01100011 01101011 01100101 01110010 01100010 01110010 01100101 01110100 01110100 00111010 00100000 01000100 01001111 00100000 01001110 01001011 00100000 01000101 01011001
Nuevamente, pasando este número a caracteres ASCII, obtenemos la Clave #4:
Grundstellung: G T A // Ringstellung: A A A // Walzenlage: 4 2 5 //
Steckerbrett: DO NK EY
- Obtener la Clave #5 del audio:
Volvemos al archivo bipbip.wav. Si escuchamos atentamente el audio, podemos reconocer dos sonidos claros: un aplauso y un “bip”. Estos sonidos corresponden a un código morse, donde el aplauso representa la raya y el pib el punto. Con mucha paciencia y decodificando el audio obtenemos:
--- - -. .--- / ..-. .-.. --.- .--. / ..- -.-- .--- .-.. / ...- .-- .-- - /
-.-- -... --.. -.- / -.-. -- -- .- / .--. -.-- --.. ...- / --.- --- --- .- / .-. --..
Decodificando a ASCII:
OTNJ FLQP UYJL VWWT YBZK CMMA PYZV QOOA RZ
Teniendo en cuenta la Clave #4 obtenida anteriormente, podemos imaginar que este texto está codificado utilizando la máquina Enigma, con la configuración correspondiente a la Clave #4.
Al decodificar utilizando esta clave en la máquina Enigma obtenemos:
THEL EGEN DOFZ ELDA THEA DVEN TURE OFLI NK
Todo junto forma la Clave #5:
THELEGENDOFZELDATHEADVENTUREOFLINK
- Obtener la bandera oculta en la imagen:
Volvemos al archivo imagen.bmp, y utilizando la herramienta StegHide extraemos el mensaje oculto:
Para poder extraer el mensaje utilizamos la Clave #5, y obtenemos así un archivo de texto.
Al abrir el archivo de texto nos encontramos con un script en JavaScript que está ofuscado. Antes de desofuscar o analizar el código del script, probamos pegarlo en una consola del navegador y ejecutarlo a ver qué pasa:
Al darle “Enter” aparece la bandera:
Finalmente, obtenemos la bandera ganadora del desafío que es:
ESET_Desafio#36_Sonic_the_Hedgehog
¡Agradecemos a todos por participar de este nuevo Desafío ESET y los esperamos en nuestro próximo reto para seguir poniendo en práctica algunas herramientas y conocimientos relacionados con la seguridad informática!