Analizando el gusano BUNDPIL – Parte I


Esta será la primera entrada de una serie en la que estaremos analizando un malware algo curioso, bien pensado y programado además, que sale de los ya trillados métodos de propagación mediante dispositivos extraíbles, estaremos viendo los métodos usados por este gusano tanto para su difusión como para su estancia y desarrollo en la PC infectada. Veamos de qué se trata

Inspeccionando el malware

Al verificar un dispositivo extraíble infectado con este gusano lo único que vemos en la raíz es un acceso directo con el nombre de la unidad USB y su capacidad. Al habilitar la vista de archivos ocultos nos podemos percatar de otra serie de ficheros un poco extraños

analisis (3)

A simple vista son un poco dudosos, aunque un usuario común los podría tomar por ficheros del propio sistema operativo, y esa exactamente es la idea :P. Aún así el antivirus de guardia rápidamente los lleva a cuarentena diciéndome que tengo al gusano BUNDPIL conviviendo en mi dispositivo extraíble

analisis (4)

Analizando el contenido de cada uno de ellos tenemos lo siguiente.

analisis (5)

analisis (6)

analisis (7)

Tenemos tres ficheros binarios y el último con cabecera de fichero ejecutable, así que investigando un poco más a fondo obtenemos lo siguiente del último archivo

analisis (10)

Ahí está, las características del binario no dicen que se trata de una DLL. Entonces, tenemos dos ficheros binarios y una DLL. Al ver también las propiedades del acceso directo nos percatamos del destino al que apunta

analisis (8)

La cadena completa sería la siguiente:

C:\WINDOWS\system32\rundll32.exe ~$WPZ.FAT32,_ldr@16 desktop.ini RET TLS ” “

Pasamos a explicar las diferentes partes que la componen. La parte en amarillo corresponde a una aplicación de Windows dedicada a ejecutar funciones de diferentes librerías (DLL). El texto en verde corresponde a la librería que contiene la función a ejecutar, la parte azul es la función que exporta dicha librería y que será ejecutada, lo que sigue y está marcado en rojo serían los parámetros que se pasarán a dicha función.

Entonces, hasta ahora tenemos que el acceso directo ejecutará una función contenida en la librería pasándole cuatro parámetros, el primero es el fichero que acabamos de analizar: desktop.ini, los restantes son tres cadenas: RET, TLS y “ ”.

Ejecutando la shellcode

Vamos a ver entonces que es lo que hace la famosa función _ldr@16. Las primeras líneas de la misma lucen como esto

analisis (9)

Veamos ahora las partes más importantes y las acciones que lleva a cabo. Luego de inicializar algunos datos y verificar que se han pasado los valores esperados, la función ejecuta el cuarto parámetro con la siguiente llamada

analisis (2)

Como la cadena no tiene ninguna ruta de fichero correcta, esta acción no se ejecuta correctamente. Luego de esto crea un Mutex usando como nombre el segundo parámetro

analisis (11)

E intenta abrir además un Mutex nombrado como el tercer parámetro: TLS, en caso de existir sale de la función sin más. En este caso continúa y lo siguiente que hace es abrir en modo binario y lectura el fichero pasado como primer parámetro: desktop.ini, reserva memoria y copia el contenido del archivo a la misma, finalmente intenta ejecutar dichos bytes.

Lo primero que hace la shellcode es obtener la dirección base de la librería kernel32.dll para luego localizar las API’s LoadLibraryA/GetProcAddress. Con los punteros a estas dos funciones ahora garantiza poder acceder a la API que desee de la librería que desee y en efecto lo próximo que hace es crearse su propia IAT, cargando las librerías y obteniendo las funciones que utilizara más adelante.

Una vez ha culminado de hacer lo anteriormente descrito se dispone a descargar un fichero desde internet utilizando para esto la API URLDownloadToFileA.

analisis (12)

Intenta descargar desde la web “http://suckmycocklameavindustry.in/” (que traducido sería algo como: “chupamelaidiotaindustriaantivirus” :o) un fichero y guardarlo como “Thumbs.db” en el directorio actual, luego de esto pasa a crear el directorio “C:\Temp” y toma el fichero “Thumbs.db” (ya sea el recién descargado o el que se encontraba en la raíz del dispositivo extraíble con anterioridad si lo anterior falló) para descifrar su contenido y crear el fichero “C:\Temp\TrustedInstaller.exe” con el contenido decifrado. Para concluir su trabajo ejecuta el archivo .EXE recién creado con la API WinExec.

analisis (13)

Hasta aquí hemos visto el interesante método de ejecución que utiliza el gusano para infectar una PC, valiéndose de un acceso directo para poner en acción una shellcode (desktop.ini) que es ejecutada a través de una librería perteneciente al mismo malware (~$WPZ.FAT32) por una aplicación del propio sistema operativo (rundll32.exe). En la siguiente entrada veremos las acciones maliciosas que se desencadenan una vez se pone en funcionamiento el ejecutable “TrustedInstaller.exe” y todo lo que trae consigo, que todavía es bastante ;).

Nos vemos en la próxima parte

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s