En este post trataremos un caso puntual de TrojanDownloader en donde comenzaremos a ver las distintas etapas de un ataque y lo que el cibercriminal busca obtener a partir de él.
Durante el análisis de códigos maliciosos es común encontrarnos con algunos patrones que se repiten una y otra vez. Entre esta serie de situaciones algunas familias de malware se utilizan para fines específicos. De hecho, varias veces en nuestro Blog hemos reportado casos en dónde alguna variante de Win32/TrojanDownloader ha sido utilizada para vulnerar la seguridad de los usuarios e infectar sus sistemas. En esta oportunidad, estaremos analizando una nueva variante para comprender más acerca de esta importante familia de códigos maliciosos.
Esta familia cumple un rol sencillo sin embargo efectivo. En la mayoría de las situaciones se trata de archivos de muy poco tamaño, que pueden estar disfrazado por algún tipo de software y su objetivo es saltear los mecanismos de seguridad para descargar otra amenaza desde algún lugar en Internet. En otras palabras, se aseguran de que si no son detectados por las soluciones de seguridad, el otro código malicioso que descarga también podrá ejecutarse sin ser detectado. Por otro lado, si el primer archivo es detectado, no continúa la descarga minimizando las probabilidades de que el ataque sea descubierto.
Para poder conocer de qué sitio se descarga la otra amenaza, podemos utilizar distintas técnicas y análisis. Vamos a ver algunas de ellas para ver cómo se complementan y qué se puede inferir desde el punto de vista de un analista de malware. En primera instancia, podemos abrir la muestra en un debugger, y tratar de mirar las strings (cadenas de texto) para ver si existe algún tipo de información relevante. Según la variante de esta familia, dicha información podría estar cifrada o codificada a través de algún tipo de encriptación u ofuscamiento:
En este caso, a través de un breve análisis estático del código malicioso es posible identificar dos puntos importantes del mismo. Primero, encontramos una dirección URL a la cual podría conectarse para descargar otra amenaza y en segundo lugar el nombre con el que lo almacenaría en disco (WindowsSecurityUpdate.exe).
Con esta información, sabemos que al ejecutar el código malicioso, hay que analizar si se conecta a esa dirección URL y con qué nombre guarda el archivo en el sistema. En este momento nos es útil realizar un análisis dinámico para capturar el tráfico de red y ver si crea algún archivo en el sistema con ese nombre.
Para comprobar nuestra hipótesis, utilizamos una máquina virtual, configuramos las herramientas como por ejemplo Wireshark para capturar el tráfico de red y Process Monitor para ver qué cambios realiza en el sistema y ejecutamos el código malicioso. Para verificar la conexión al sitio web que encontramos, podemos poner un filtro en las solicitudes de DNS (Domain Name Service), y luego analizar la comunicación. Como pueden ver en la siguiente captura, es posible ver que se realice un GET al sitio malicioso y la respuesta del servidor es un archivo ejecutable, ya que el header file del archivo es un MZ:
Entonces, analizando el tráfico de red nos fue posible corroborar que este código malicioso se conecta a un sitio web y descarga otro archivo ejecutable detectado por ESET Smart Security como una variante del troyano Win32/Agent.UTK. Ahora deberíamos verificar dónde se guarda este archivo dentro del sistema. Si bien habíamos encontrado datos importantes durante el análisis estático, ahora tenemos que comprobarlos. Utilizando Process Monitor, podemos aplicar filtros para ver las escrituras de archivos en el sistema (WriteFile) y ver qué es lo que encontramos:
Como pueden ver, primero se guarda el archivo descargado dentro de la carpeta de archivos temporales de Internet "C:Documents and SettingsAdministradorConfiguración localArchivos temporales de InternetContent.IE589EFSDQRsss[1].exe" para luego dejar una copia en los archivos temporales del sistema "C:Documents and SettingsAdministradorConfiguración localTempWindowsSecurityUpdate.exe". De esta manera, el cibercriminal se asegura que esta segunda amenaza no será detectada y la variante de Win32/TrojanDownloader que utilizó ha logrado su cometido: infectar el sistema y actuar como un dropper, para ejecutar una amenaza completamente distinta.
Uno de los puntos a destacar de este análisis es demostrar cómo algunas familias de códigos maliciosos son utilizadas para fines específicos, como por ejemplo la familia de malware de Win32/TrojanDownloader, que primero busca infectar un sistema para luego descargar otro tipo de amenazas. En un próximo post, veremos el análisis del segundo archivo descargado y cuál es su objetivo.
Pablo Ramos
Security Researcher