Rootkit Avatar: inserción de código malicioso en el kernel
Hacia el principio de mayo, los investigadores de ESET publicaron información
preliminar acerca del rootkit identificado
bajo la firma Win32/Rootkit.Avatar
(el
misterioso rootkit con API, SDK y Yahoo Groups para la comunicación
C&C). Una de las cuestiones más importantes que no fue cubierta en dicha
publicación es: ¿Qué funcionalidades y
plugins instala Avatar en las máquinas infectadas? La
investigación continúa y actualmente se están siguiendo los rastros de esta
familia de malware. Luego, a mediados de julio se encontró una muestra de
Win32/Rootkit.Avatar con un centro de comando y control activo.
En este post se demostrará que la actividad de Avatar continúa latente, y se
brindarán detalles acerca de sus mecanismos de defensa en modo
kernel.
La información de configuración para las muestras analizadas mantiene el formato que se había visto antes. Cuando al archivo con la configuración se le quita el cifrado, se puede observar lo siguiente:
Sin embargo, el centro de comando principal que se observa en la información
de configuración no estaba funcionando en el momento de este análisis, por lo
que se analizó el sistema de control alternativo, el cual
utiliza Yahoo Groups. En este sentido, si el método de
comunicación principal no está disponible, Avatar utiliza otro: el
payload intenta buscar mensajes en Yahoo Groups usando parámetros
especiales. La explicación detallada de este mecanismo de comunicación puede
encontrarse en el análisis
previo de esta amenaza. Los parámetros de búsqueda en grupos utilizados
específicamente para esta botnet lucen como la siguiente URL:
hxxp://finance.groups.yahoo.com/group/I62TUUWM/. Por lo tanto, luego de
realizar una prueba y observar que el malware efectuó esta búsqueda, se encontró
el siguiente grupo de Yahoo con un mensaje cifrado:
La descripción del grupo está cifrada con el algoritmo RSA y una clave privada de 1024 bits en la información de configuración del bot. Luego de ser descifrado, el mensaje luce así:
En el caso que se analizó, el C&C principal que se encontraba en el archivo de configuración no se encontraba activo, por lo que el bot intentó utilizar el segundo canal de comunicación a través de Yahoo Groups. Así, luego de lograr la comunicación exitosa con este segundo centro de comando y control, el bot recibió el siguiente comando para la obtención de módulos adicionales:
Estas instrucciones descargan dos módulos adicionales en las máquinas infectadas:
Mecanismos de autodefensa de Avatar
Al infectar un sistema, este malware modifica uno de los drivers legítimos que ya se encuentran instalados en la máquina, y almacena sus módulos y payload en una ubicación oculta creada hacia el final del disco duro. Luego, protege las áreas correspondientes en el disco ante operaciones de lectura o escritura, de tal modo de permanecer indetectable en el sistema. Para lograr esto, Avatar realiza un hook al driver miniport de almacenamiento (este tipo de drivers incluyen USB, Audio, SCSI y adaptadores de red). Esta aproximación no es nueva y ya ha sido utilizada antes por amenazas complejas, como TDL3/4, Olmasco, y otras.
Posteriormente, intenta camuflar esos hooks para que parezca un driver en modo kernel legítimamente cargado. Para ser más específicos, este malware duplica la imagen del driver miniport cargado, correspondiente al disco duro, y la inserta en el espacio de direcciones de una sección de memoria correspondiente al kernel, modificándola para poder interceptar lecturas o escrituras en el disco. A continuación se observan las modificaciones realizadas al sistema luego de la infección con Avatar:
En otras palabras, este malware realiza un mapeo de la imagen original del driver en modo kernel a una sección de memoria dentro del kernel, usando una de sus secciones para inyectar código malicioso. Luego Avatar busca la sección a infectar (llamada ‘INIT’), donde el campo de atributos contiene el valor IMAGE_SCN_MEM_DISCARDABLE. Esto significa que los contenidos de la sección se desalojan de la memoria luego de ser inicializado el driver, de tal modo de que el malware aproveche el espacio liberado para almacenar allí el código malicioso. Como resultado, este código se ubicará en direcciones que corresponden a la imagen legítima y, por lo tanto, no hará saltar las alarmas del software de seguridad. El malware luego renombra la sección como ‘NONPAGED’ y remueve el valor IMAGE_SCN_MEM_DISCARDABLE de los atributos, insertando el código malicioso en la misma.
Los campos de la estructura DRIVER_OBJECT correspondientes al driver miniport del disco duro también son modificados para reflejar los cambios:
Si se intenta leer la imagen del driver modificado en el disco, de tal modo de compararla con la instancia cargada en el espacio del kernel (la falsa), el malware interceptará el resultado de tal operación, devolviendo el driver sin modificar. Como resultado, es probable que la diferencia real que existe entre ambos pase desapercibida. A pesar de esto, la firma digital del driver modificado no es válida.
Actualización de HiddenFsReader
La herramienta forense de ESET, HiddenFsReader, ha sido actualizada, de tal modo de que funcione adecuadamente con el sistema de archivos escondido de Avatar. Una captura del sistema de archivos oculto se observa a continuación:
HiddenFsReader sólo puede funcionar correctamente con una infección activa de Avatar. Esto es así dado que, para poder descifrar el sistema de archivos oculto, es necesario extraer diez bytes de una clave de cifrado almacenada en el driver Avatar que se genera aleatoriamente para cada infección. Posteriormente a la desinfección no es posible restaurar ningún archivo de la partición oculta, pero esta información puede ser de ayuda cuando se está realizando una investigación dado que pueden revelarse datos interesantes sobre nombres de archivos y directorios dentro de la partición oculta. Estos nombres son generados aleatoriamente para cada máquina infectada.
Win32/Rootkit.Avatar es un ejemplo interesante de malware con múltiples técnicas para evadir los enfoques forenses comúnmente utilizados, haciendo el análisis más difícil
La información de configuración para las muestras analizadas mantiene el formato que se había visto antes. Cuando al archivo con la configuración se le quita el cifrado, se puede observar lo siguiente:
La descripción del grupo está cifrada con el algoritmo RSA y una clave privada de 1024 bits en la información de configuración del bot. Luego de ser descifrado, el mensaje luce así:
En el caso que se analizó, el C&C principal que se encontraba en el archivo de configuración no se encontraba activo, por lo que el bot intentó utilizar el segundo canal de comunicación a través de Yahoo Groups. Así, luego de lograr la comunicación exitosa con este segundo centro de comando y control, el bot recibió el siguiente comando para la obtención de módulos adicionales:
Estas instrucciones descargan dos módulos adicionales en las máquinas infectadas:
- cr.mod (Win32/Agent.UZD) – cliente de proxy SOCKS5
- loader29.mod (Win32/TrojanDownloader.Zurgop.AZ) – también conocido como Smoke bot downloader
Mecanismos de autodefensa de Avatar
Al infectar un sistema, este malware modifica uno de los drivers legítimos que ya se encuentran instalados en la máquina, y almacena sus módulos y payload en una ubicación oculta creada hacia el final del disco duro. Luego, protege las áreas correspondientes en el disco ante operaciones de lectura o escritura, de tal modo de permanecer indetectable en el sistema. Para lograr esto, Avatar realiza un hook al driver miniport de almacenamiento (este tipo de drivers incluyen USB, Audio, SCSI y adaptadores de red). Esta aproximación no es nueva y ya ha sido utilizada antes por amenazas complejas, como TDL3/4, Olmasco, y otras.
Posteriormente, intenta camuflar esos hooks para que parezca un driver en modo kernel legítimamente cargado. Para ser más específicos, este malware duplica la imagen del driver miniport cargado, correspondiente al disco duro, y la inserta en el espacio de direcciones de una sección de memoria correspondiente al kernel, modificándola para poder interceptar lecturas o escrituras en el disco. A continuación se observan las modificaciones realizadas al sistema luego de la infección con Avatar:
En otras palabras, este malware realiza un mapeo de la imagen original del driver en modo kernel a una sección de memoria dentro del kernel, usando una de sus secciones para inyectar código malicioso. Luego Avatar busca la sección a infectar (llamada ‘INIT’), donde el campo de atributos contiene el valor IMAGE_SCN_MEM_DISCARDABLE. Esto significa que los contenidos de la sección se desalojan de la memoria luego de ser inicializado el driver, de tal modo de que el malware aproveche el espacio liberado para almacenar allí el código malicioso. Como resultado, este código se ubicará en direcciones que corresponden a la imagen legítima y, por lo tanto, no hará saltar las alarmas del software de seguridad. El malware luego renombra la sección como ‘NONPAGED’ y remueve el valor IMAGE_SCN_MEM_DISCARDABLE de los atributos, insertando el código malicioso en la misma.
Los campos de la estructura DRIVER_OBJECT correspondientes al driver miniport del disco duro también son modificados para reflejar los cambios:
- DriverInit – punto de entrada de la imagen del driver
- DriverStart – dirección base de la imagen en memoria
- MajorFunctions – arreglo de puntos de entrada de los handlers de los drivers, incluyendo IRP_MJ_INTERNAL_CONTROL
- DriverUnload – la rutina ejecutada al descargar el driver de memoria
- DriverExtension->AddDevice – la rutina responsable del manejo de dispositivos Plug & Play
Si se intenta leer la imagen del driver modificado en el disco, de tal modo de compararla con la instancia cargada en el espacio del kernel (la falsa), el malware interceptará el resultado de tal operación, devolviendo el driver sin modificar. Como resultado, es probable que la diferencia real que existe entre ambos pase desapercibida. A pesar de esto, la firma digital del driver modificado no es válida.
Actualización de HiddenFsReader
La herramienta forense de ESET, HiddenFsReader, ha sido actualizada, de tal modo de que funcione adecuadamente con el sistema de archivos escondido de Avatar. Una captura del sistema de archivos oculto se observa a continuación:
HiddenFsReader sólo puede funcionar correctamente con una infección activa de Avatar. Esto es así dado que, para poder descifrar el sistema de archivos oculto, es necesario extraer diez bytes de una clave de cifrado almacenada en el driver Avatar que se genera aleatoriamente para cada infección. Posteriormente a la desinfección no es posible restaurar ningún archivo de la partición oculta, pero esta información puede ser de ayuda cuando se está realizando una investigación dado que pueden revelarse datos interesantes sobre nombres de archivos y directorios dentro de la partición oculta. Estos nombres son generados aleatoriamente para cada máquina infectada.
Win32/Rootkit.Avatar es un ejemplo interesante de malware con múltiples técnicas para evadir los enfoques forenses comúnmente utilizados, haciendo el análisis más difícil
0 comentarios:
Publicar un comentario