El pasado 29 de junio publicamos el desafío ESET #42 en el que los participantes debían encontrar el flag oculto para determinar si un empleado estaba exfiltrando datos confidenciales de su empresa. En esta oportunidad, además de presentar la solución al desafío, anunciamos quiénes fueron los participantes que primero lograron resolverlo y que obtuvieron un premio. Recordamos que los tres primeros en resolverlo (en este caso fueron dos los participantes que lograron hacerlo) se ganaron una licencia de ESET Mobile Security para Android y el primero se lleva, además de la licencia, acceso para realizar uno de los cursos disponibles en nuestra plataforma Academia ESET.
Los primeros y únicos dos participantes que lograron resolver el desafío fueron:
- Yehude Huayhua Jurado (primer premio)
- @rextco
Los ganadores deberán comunicarse por mensaje privado a través de alguna de nuestras redes sociales, como Facebook, Twitter o Instagram, indicando su nombre y dirección de correo para que podamos hacer entrega del premio. Desde ya, agradecemos a todos aquellos que participaron y dedicaron parte de su tiempo a intentar resolver el desafío. A continuación, presentamos la solución al reto.
Resolución del desafío #42 de ESET
El desafío comienza con la descarga del instalador “CoolCalculator.msi”.
Antes de proceder a ejecutar el instalador, comenzaremos analizándolo con la herramienta SuperOrca, la cual puede descargarse de forma gratuita.
Al abrir el instalador con la herramienta, en el menú ubicado a la izquierda podremos observar muchas tablas con diferente información sobre el mismo. En primer lugar, nos dirigiremos a la pestaña “File”, donde se listan los archivos que utiliza el instalador.
Aquí observamos dos archivos:
- CoolCalculator 3.0.exe: pareciera ser el ejecutable que será instalado, ya que comparte el nombre con el instalador.
- zip: este archivo comprimido tiene un nombre sospechoso.
Encontramos dos archivos, uno de los cuales tiene aspecto sospechoso. En este punto intentaremos confirmar si es un archivo legitimo utilizado en el proceso de instalación o no. Para ello, nos dirigimos a la pestaña “FeatureComponents”.
Aquí podemos observar el ejecutable “CoolCalculator 3.0.exe”, accesos directos, etc., pero no hay ninguna información sobre el archivo .zip observado previamente y lo mismo sucede al revisar las demás pestañas. Esto refuerza las sospechas de que ese archivo es inusual.
Finalmente, para confirmar que “GkeYegksDf.zip” no es parte del proceso de instalación, procederemos a ejecutar el instalador y nos dirigiremos al directorio donde instaló el software.
Como puede observarse, solo se instaló el ejecutable aparentemente legítimo. Por lo tanto, nos interesará conseguir ese archivo .zip para analizarlo y ver si se lo está utilizando para exfiltrar la información.
Para conseguirlo, simplemente procedemos a extraer el contenido del instalador con algún software de compresión como 7zip.
Una vez extraído su contenido, podremos observar muchos archivos. El que nos interesa es aquel llamado “disk1”, que a su vez también podremos extraer con 7zip.
Al realizar esto obtendremos tanto el .exe instalado previamente como él .zip sospechoso. El siguiente paso será intentar descomprimirlo. Sin embargo, al hacer esto nos encontraremos con que el .zip está cifrado y protegido por una contraseña que desconocemos.
En este punto tenemos la opción de seguir analizando el instalador MSI en búsqueda de más información. Sin embargo, para el caso puntual de este desafío no se encontrará nada de utilidad y, por ende, será necesario analizar el ejecutable “CoolCalculator 3.0.exe” en busca de la contraseña.
A la hora de realizar esto hay múltiples alternativas de caminos a seguir, desde un análisis dinámico hasta ingeniería inversa de manera estática. En este caso no es necesario realizar un análisis muy complejo, simplemente basta con extraer los archivos contenidos en la sección de recursos del ejecutable mediante el uso de alguna herramienta como Resource Hacker (también pública y gratuita).
Al abrir el ejecutable con Resource Hacker nos encontraremos con múltiples recursos y, entre ellos, muchas imágenes. En este caso para resolver el desafío es necesario ser muy observador y encontrar la imagen que tiene características inusuales. Observándolas una por una pareciera que las mismas se corresponden con los componentes de la interfaz del programa. Sin embargo, al llegar a la imagen “VIEW-4” nos encontramos con una imagen de la interfaz completa en una ventana de Windows, lo cual es sospechoso. Si observamos con más detalle, notaremos que hay operaciones escritas en la pantalla de la calculadora. Si observamos con aún más detalle, notaremos que esas operaciones además de contener números contienen letras e incluso una división (“/”), operación que no se encuentra disponible en los botones de la calculadora. Mas aún, si se ejecutó la calculadora y se la utilizó, se sabrá que la misma opera de una manera que no permite escribir una operación completa en el visor.
Todas estas situaciones inusuales indican que el texto presente en el visor podría ser la contraseña del archivo .zip que no podíamos descomprimir. Luego, intentamos descomprimirlo utilizando esa contraseña, la operación es exitosa y se extrae un archivo: QR.png.
La primera opción es escanear el código QR, pero al hacerlo no se obtiene ninguna información relevante. Luego, solo queda la opción de analizar la imagen. Aquí hay nuevamente múltiples caminos posibles a seguir, siendo algunos muy sencillos y otros muy complejos, pero la solución se encuentra siguiendo el más simple: observar la imagen detenidamente buscando algo inusual.
Al hacer esto se observará una irregularidad en el código QR, la cual es aún más fácil de apreciar si se hace zoom. Esta es una línea que claramente no pertenece a la estructura del código QR y cuyos puntos presentan una curiosa combinación de colores.
Esta línea contiene el flag del desafío codificado en los colores de cada uno de los puntos que la forman, por lo que solo resta el paso final: decodificarla.
El color de cada punto está formado por tres componentes R, G y B (red, green, blue). Cada uno de estos componentes puede ser un numero entre 0 y 255. Para conseguir el valor basta con abrir la imagen en una herramienta como Paint y utilizar la herramienta para tomar el color de cada punto de la línea.
En este caso la codificación es un mapeo directo entre cada una de las componentes RGB de cada punto y un carácter ASCII. Por lo tanto, la conversión de estos números a caracteres es trivial y puede ser llevada a cabo mediante herramientas online gratuitas. Al realizar esta conversión, se obtendrá el flag del desafío en texto plano.
Agradecemos nuevamente a todos los participantes y esperamos que hayan disfrutado de este desafío. Como siempre, en caso de tener alguna o inquietud sobre los pasos pueden utilizar la sección de comentarios y les responderemos a la brevedad :)
¡Hasta pronto!