Les presentamos la solución al Desafío 22 de ESET Latinoamérica publicado la semana pasada. Antes que nada, queremos felicitar a todos los que participaron y esperamos lo hayan disfrutado tanto al resolverlo como nosotros cuando lo armamos. El ganador es Daniel Correa, quien resolvió correctamente el desafío y fue el primero en dar la respuesta. Con esto se ha hecho acreedor de una licencia para la última versión de nuestro ESET Smart Security.
Este desafío consistía en analizar el tráfico de red de una de las máquinas infectadas en una organización y determinar sobre que parámetros se habían realizado las pruebas así como también encontrar la respuesta. En primera instancia, se debía abrir el archivo pcap descargado con alguna herramienta que permita realizar un análisis. En este caso, utilizaremos Wireshark, ya que es una de las más conocidas. Luego, una forma rápida de ver todas las peticiones realizadas es aplicando un filtro “http.request”, como se puede observar a continuación:
Una vez aplicado el filtro, si se presta atención, se puede ver como se realizan múltiples peticiones sobre un archivo llamado “validacion.php”. Si se hace clic con el botón derecho y se selecciona “follow tcp stream” puede verse que responde con un color. A continuación, puede visualizarse una captura del stream:
En esta instancia, puede notarse que cada petición sobre el archivo “validación.php” responde con un color al azar. Asimismo, si se observan los parámetros de la petición es posible ver que entre cada una el “User-Agent” va cambiando como puede apreciarse en la siguiente imagen:
Ya habiendo identificado que se realizaron pruebas sobre el “User-Agent”, si se sigue buscando en las peticiones, se encuentra una donde la respuesta es “bingo”. El sentido común nos indica que esta respuesta no es un color como las demás, por lo que se trata de una petición que nos debe llamar la atención. Entonces mirando el “User-Agent” vemos que este tiene un formato que no es válido tal como se indica en la siguiente imagen:
Este tipo de cadenas, sobre todo aquellas que terminan con un signo “=” podría indicarnos que se trata de una codificación en base 64. Recurriendo a cualquier decodificador en Internet resulta que esa cadena es “QuieroMiLicenciaESET”. Por lo tanto ya se encontró algo que puede servirnos en el análisis.
Si se continua viendo las peticiones con el filtro “http.request”, se puede observar que se descargó el archivo “Descarga.rar”. Sin embargo, es necesario reconstruir este archivo a partir de la captura. Para ello recurrimos a otra herramienta llamada Network Miner. Con esta herramienta, también es necesario cargar el archivo pcap. De esa forma, existe la solapa “files” que permite ver todos los archivos contenidos dentro de la propia captura. Si se busca el archivo "rar" es posible reconstruirlo tal como se ve en la siguiente imagen:
Al intentar descomprimir el archivo, se puede ver que requiere contraseña. Sin embargo, a esta altura ya contamos con la frase “QuieroMiLicenciaESET”. Si se utiliza esa cadena, se logra obtener el archivo descomprimido correspondiente a una imagen. Abriendo la imagen con cualquier editor vemos la frase “lo esencial es invisible a los ojos”. Esta famosa cita de Saint-Exupéry en El Principito, sugiere sutilmente, que la respuesta se encuentra escondida.
Generalmente, las imágenes contienen metadatos. Es posible ver ellos con diferentes herramientas. Sin embargo, en este caso, si miramos las propiedades de las imágenes vemos que obtenemos la frase de respuesta “Persevera y triunfarás” tal como puede verse en la siguiente captura:
De esta forma, ha sido posible acceder al archivo y entender como el malware, a partir de un user-agent secreto, pudo descargar el archivo desde el servidor. Si bien esto fue un desafío, este tipo de características suelen verse presentes en casos reales de códigos maliciosos. Es por eso que este tipo de actividades permiten aprender un poco más sobre el análisis de malware.
Fernando Catoira
Analista de Seguridad