Solución al Desafío ESET #27

Una semana después de haber publicado nuestro Desafío ESET #27 queremos felicitar a Henry Sánchez, quien fue el primero en solucionar el reto. Además queremos resaltar el buen trabajo de Juan Esteban Valencia Pantoja y Emiliano del Castillo, quienes también llegaron a solucionar el desafío y encontraron cómo se estaban filtrando los correos electrónicos.

Ahora veamos los pasos necesarios para llegar a entender qué es lo que estaba pasando con el ejecutable que debíamos analizar. Al descargar el archivo y ejecutarlo para tratar de hacer un análisis dinámico, era factible que no pasara nada sospechoso en la máquina de análisis, a menos que en esta estuviera corriendo el conocido cliente de correo Outlook. Así que como este tipo de comportamiento es poco usual en entornos de análisis, no tenemos más remedio que decompilar el archivo y tratar de entender el código.

Una vez que logramos decompilar el archivo, nos encontramos con más de 12 mil líneas de código en AutoIt. Tener una cantidad tan grande de líneas puede ser un problema para llevar adelante el análisis, pero si observamos con cuidado nos podemos percatar de que muchas de estas líneas de códigos son librerías por defecto que se importaron en el código, seguramente al ser compilado.

Después de descartar las líneas de código relacionadas con las funciones importadas, nos quedamos con unas cuantas funciones para llevar a cabo nuestro análisis. De estas funciones nos encontramos con que están ofuscadas, lo cual nos da un primer indicio de que se puede tratar de las funciones que realizan la acción maliciosa.

En estos casos, teniendo en cuenta cómo desofuscar un malware en AutoIt, lo primero que podemos hacer es tratar de determinar cuál es la función que está utilizando este script para desofucar las líneas de código que no se pueden entender. En la siguiente captura podemos ver que hay una función que se repite con mayor frecuencia, lo que nos da una alerta de qué es lo que buscamos:

FuncionCapturas Desafio ESET
Si buscamos esta función dentro del código, tal como podemos ver en la siguiente captura, podemos entender cómo es que está funcionando. De hecho, esta función recibe dos parámetros. Operando con estos parámetros en un ciclo que recorre la longitud del segundo parámetro de la función, utiliza la función BitXOR para luego ir concatenando los resultados:

FuncionDesofuscar
Luego de aislar esta función para entender de qué se tratan las cadenas ofuscadas, podemos entender qué es lo que está pasando. De esta forma, nos podemos dar cuenta de que esta porción de código se queda a la espera de que el proceso “OUTLOOK.EXE” se ejecute para empezar a tomar una serie de capturas de pantalla que nombra de forma aleatoria y las va guardando en la carpeta C:\WINDOWS\system32\.

De esta forma, el atacante captura lo que la víctima está viendo en pantalla una vez que ejecuta el cliente de correo Outlook, por lo cual deja la posibilidad para que la información sea robada. Ahora es necesario determinar de qué forma el atacante sustrae esta información de la máquina. En la siguiente captura, podemos encontrar unas líneas de código que utilizan unas funciones de conexión a un servidor FTP.FuncionFTP
Si desofuscamos también estas líneas, nos encontraremos con que se realiza una conexión al  servidor “ftp.malicioso.ir.ti“, con el nombre de usuario “MalwUser” y contraseña  “miclave123“, dejando así la comunicación establecida para enviar información desde el dispositivo de la víctima.

¡Muchas gracias a todos por participar de este nuevo Desafío ESET! Esperamos que se hayan entretenido resolviéndolo tanto como nosotros preparándolo, y recuerden que los esperamos en el próximo reto para seguir poniendo en práctica algunas herramientas y conocimientos relacionados con la seguridad informática.

Autor , ESET

Síguenos