Rootkit Avatar: inserción de código malicioso en el kernel

La siguiente publicación es una traducción y adaptación del post “Avatar rootkit: the continuing saga“, escrito por Aleksandr Matrosov, Anton Cherepanov y Eugene Rodionov, y publicado en We Live Security.

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:

configuración rootkit avatar

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:

grupo de yahoo utilizado por avatar

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í:

mensaje descifrado avatar

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:

comando ejecutado por avatar

Estas instrucciones descargan dos módulos adicionales en las máquinas infectadas:

En el análisis que se realizó de esta amenaza en mayo, se dejó una pregunta sin responder acerca de la naturaleza del payload descargado, dado que no toda la funcionalidad del C&C se encontraba activa en ese momento. Sin embargo, en el análisis actual se reconoció un plugin SOCKS5 y un módulo adicional con Smoke bot.

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:

metodo de inyección de código de 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

Luego de dichas modificaciones, el código malicioso cargado en la nueva sección en la imagen falsa es capaz de interceptar solicitudes de lectura/escritura al disco, protegiendo las áreas del disco que contienen los componentes del rootkit. A continuación, el malware limpia los rastros del driver original que quedaron en el sistema, de tal modo de ocultar las direcciones de los puntos de entrada para los handlers originales de E/S.

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

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.

Traducido y adaptado por Matías Porolli
Especialista de Awareness & Research

Autor , ESET

Síguenos