InvisiMole es un spyware muy completo cuyas capacidades le permiten competir con otras herramientas de espionaje activas. El modus operandi de los dos componentes maliciosos de InvisiMole convierten la computadora afectada en una cámara de video permitiendo a los atacantes ver y escuchar lo que sucede en el interior de la oficina de la víctima o del lugar en el que se encuentre el dispositvo infectado. De esta manera, los operadores de InvisiMole acceden al sistema, monitorean sus actividades y roban su información.

Nuestra telemetría indica que los actores detrás de este malware han estado activos por lo menos desde 2013, aunque la herramienta de ciberespionaje nunca había sido analizada hasta que fue detectada por los productos de ESET en computadoras comprometidas en Ucrania y Rusia.

La campaña estuvo dirigida a blancos de ataque específicos, por lo que no es extraño que el ratio de infección haya sido muy bajo, con solo unas doce computadoras afectadas.

InvisiMole presenta una arquitectura modular, comenzando su travesía con una DLL para comprometer el sistema, con características de wrapper, y desarrolla sus actividades utilizando dos módulos adicionales que están embebidos dentro de sus recursos. Ambos módulos están enriquecidos con funcionalidades de backdoor, lo cual les permite recopilar cuanta información sea posible del blanco de ataque.

Para permitir al malware residir dentro del sistema por un largo período de tiempo, los autores tomaron medidas adicionales para evitar captar la atención del usuario comprometido. La forma en que fue propagado el spyware es algo que lo determinarán investigaciones futuras. Aunque todos los vectores de infección son posibles, incluso que hayan sido instalados mediante el acceso físico a la computadora.

Instalación y persistencia

La primera parte del malware que buscábamos es un wrapper DLL compilado con Free Pascal. A partir de nuestra telemetría, observamos que este DLL se aloja en la carpeta de Windows, enmascarado como un archivo de librería mpr.dll legítimo con un valor  falso en el parámetro version info.

Figura 1 – El wrapper DLL contiene una librería mpr.dll legítima, con los nombres e información de versión asociadas. .

No hemos visto un wrapper DLL nombrado de forma diferente; sin embargo, insinuaciones en el código del DLL indicarían que podría haber otros con el nombre fxsst.dll o winmm.dll.

La primera alternativa para ejecutar el malware es mediante lanzando la DLL en el boot del sistema operativo. Estando alojado en la misma carpeta como explorer.exe, el wrapper DLL es cargado durante el inicio de Windows en el proceso de Windows Explorer en lugar de la librería legítima ubicada en la carpeta %windir%\system32.

Descubrimos versiones 32-bit como 64-bit del malware, lo cual hace que sea funcional en ambas arquitecturas.

Otros métodos de carga y persistencia son posibles como alternativa a la toma de posesión de DLL. El wrapper DLL exporta una función llamada GetDataLength. Cuando esta función es llamada, el DLL corrobora si el proceso fue cargado por algunos de los siguientes procesos: rundll32.exe, explorer.exe o svchost.exe como proceso principal, y si esto ocurre ejecuta el payload. Esto sugiere otros posibles métodos de persistencia ─mediante la programación de una tarea (en otras palabras, haciendo a svchost.exe como proceso principal) o a través de la instalación en una clave de registro de inicio (siendo el proceso principal explorer.exe).

Independientemente del método de persistencia, el comportamiento del malware y del payload actual es el mismo en todos los casos. El wrapper DLL corre ambos módulos almacenados en sus recursos, nombrados RC2FM y RC2CL, y (si se utilizó la toma de posesión del DLL) finalmente carga la librería legítima en el proceso explorer.exe con el fin de no alterar la operatoria normal de la aplicación y de esta manera mantenerse oculto.

Figura 2 – Funciones exportadas del wrapper DLL

Análisis técnico

Se desconoce la fecha exacta en que el malware fue compilado, ya que las muestras recientes del wrapper DLL fueron manipuladas por el autor del malware asginando manualmente los valores de fecha de compilación del archivo  en cero. Sin embargo, durante nuestra investigación encontramos una versión temprana del malware con fecha del 13 de octubre de 2013, con lo cual la fecha de compilación de versiones posteriores seguramente sea más reciente.

Figura 3 – El timestamp de la compilación es seteado en cero en la totalidad de las últimas muestras.

Cifrado y descifrado

Para incrementar el grado de sigilosidad, el malware se protege a sí mismo de ser visto por administradores y analistas a través del cifrado tanto de sus strings como de sus archivos internos, datos de configuración y redes de comunicación. Mientras que el módulo RC2FM utiliza una serie de cifrados personalizados, el wrapper DLL y el módulo RC2CL comparten una particular rutina para todos los propósitos, especialmente para descifrar otros módulos del malware embebidos en el wrapper DLL.

Un script que permite extraer los módulos RC2FM y RC2CL embebidos en el wrapper DLL utilizando esta rutina está disponible en el repositorio de investigación de malware de ESET en Github.

Figura 4 – Rutina de cifrado utilizada en todas las muestras (descompilado y desarmado)

Módulo RC2FM

En primer lugar, el módulo RC2FM más pequeño contiene un backdoor que soporta quince comandos. Estos son ejecutados en la computadora afectada cuando los atacantes dan las instrucciones. El módulo está diseñado para realizar varias modificaciones en el sistema, pero también ofrece una serie de comandos para espiar.

Una opción de logueo se implementa en todo el archivo, pero el nombre del archivo de log no está configurado en la muestra analizada. Esto sugiere que solo fue utilizada durante el desarrollo del malware.

Red de comunicación

Este módulo se comunica con los servidores C&C que son hardcodeados en la muestra o actualizados posteriormente por los atacantes.

Además, el modulo es capaz de alcanzar los servidores C&C, incluso si hay un proxy configurado en la computadora infectada. Si fracasa una conexión directa, el módulo intenta conectarse a cualquiera de sus servidores C&C utilizando proxies localmente configurados o proxies configurados para varios navegadores (Firefox, Pale Moon y Opera).

RC2FM puede incluso inspeccionar la lista de aplicaciones recientemente ejecutadas y buscar específicamente ejecutables de navegadores portables:

  • FirefoxPortable.exe
  • OperaPortable.exe
  • Run waterfox.exe
  • OperaAC.exe
  • Palemoon-Portable.exe

Si la víctima utiliza uno de estos navegadores portables con un servidor proxy configurado, el malware puede darse cuenta de ello en las preferencias de usuario y utilizar ese proxy para comunicarse con sus servidores C&C.

La comunicación con los servidores C&C consiste en una serie de solicitudes HTTP GET y POST, como se puede ver en la Figura 5. La solicitud cifrada incluye un identificador de PC y timestamp, y opcionalmente algún otro dato. Vale la pena destacar que el módulo RC2FM utiliza varios métodos de cifrado (variaciones de una simple rutina de cifrado XOR), a diferencia de otras partes de InvisiMole.

Figura 5 – Ejemplo de una solicitud enviada al servidor C&C por el módulo RC2FM.

Luego de registrar satisfactoriamente a la víctima con el servidor C&C, son descargados datos adicionales, los cuales serán interpretados en la computadora local como comandos de backdoor.

Capacidades

RC2FM soporta comandos para crear listas de información básica del sistema y realizar pequeños cambios en el sistema, pero también incluye unas funcionalidades de spyware. Cuando es requerido por el atacante, es capaz de activar remotamente el micrófono de la computadora comprometida y capturar sonidos. Los audios registrados son convertidos en MP3 utilizando una librería legítima, lame.dll, la cual es descargada y manipulada por el malware.

Otra manera en la que el malware puede interferir en la privacidad de la víctima es haciendo capturas de pantalla, utilizando otro de los comandos del backdoor.

El malware también monitorea todos las unidades rígidas o removibles mapeadas en el sistema local. Cuando una nueva unidad es insertada, crea una lista de los nombres de todos los archivos en el disco y los almacena cifrados en un archivo.

Cuando se envía el comando apropiado, todos los datos recolectados pueden en última instancia ser enviados a los atacantes.

Comandos de backdoor

Como se muestra más abajo, soporta quince comandos. La función interpreter del backdoor se visualiza en la Figura 6.

 

Command ID Command description
0 List information about mapped drives, list files in a folder, list network shares
2 Create, move, rename, execute or delete a file, delete a directory using the specified path
4 Open a file, set the file pointer to the file beginning
5 Close a previously opened file
6 Write data into a previously opened file
7 Modify file times / delete a file
8 Open a file, set the file pointer to the end of the file
10 Modify file times / delete a file
12 Search files by supplied file mask in a specified directory
13 Take a screenshot
14 Upload or modify files with internal data
15 Record sound using input audio devices, list available devices, send recordings, change configuration
16 Check whether this module currently has any files open
17 Update list of C&C servers
19 Create, set, copy, enumerate or delete the specified registry keys or values

 

 

 

 

Figura 6 – Función interpreter del backdoor (original y posterior a nuestro análisis, modificada con la funcionalidad Group Nodes de IDA Pro para mayor legibilidad).

Módulo RC2CL

El módulo RC2CL es también un backdoor con grandes capacidades de espionaje. Es iniciado por el wrapper DLL y lanzado al mismo momento que el módulo RC2FM. Este es más complejo y ofrece funcionalidades para recolectar toda la información posible de la computadora infectada, más que para realizar cambios en el sistema.

Resulta interesante que existe una opción en el módulo RC2CL para desactivar la funcionalidad de backdoor y actuar como proxy. En este caso, el malware desactiva el firewall de Windows y crea un servidor que retransmite la comunicación entre un cliente y el servidor C&C o entre dos clientes.

Comunicación de la red

El malware se comunica con sus servidores C&C a través de un TCP socket. Mensajes enviados por un cliente imitan el protocolo HTTP, pero nótese la inválida expresión “HIDE” HTTP en el ejemplo de la Figura 7.

Estas solicitudes comprenden: un identificador de la computadora comprometida, el tipo de solicitud, y el cifrado de datos que serán enviados al atacante. Es decir, los resultados del comando del backdoor o la solicitud de más instrucciones.

Figura 7 – Ejemplo de una solicitud enviada al servidor C&C por el módulo RC2CL.

Capacidades

Dependiendo de los comandos recibidos, el backdoor puede llevar a cabo varias acciones en la computadora afectada. Backdoors comunes a menudo soportan comandos como operación de archivos de sistema, ejecución de archivos, manipulación de la clave de registro o activación remota del Shell. Este spyware permite éstas y muchas otras instrucciones más ─sus 84 comandos proveen al atacante con todo lo necesario para observar de cerca a la víctima.

El malware puede inspeccionar la computadora afectada y proveer diversos tipos de datos; desde información de sistema, como por ejemplo, una lista de procesos activos, servicios en ejecución, unidades cargadas o unidades disponibles, hasta información de la red, incluyendo la tabla IP de reenvío y la velocidad de la conexión a Internet.

InvisiMole es capaz de revisar redes inalámbricas habilitadas en el sistema comprometido. Puede grabar información como las direcciones SSID y MAC de los puntos de acceso Wi-Fi visibles. Estos datos pueden luego compararse con la base de datos pública, permitiendo a los atacantes rastrear la geolocalización de la víctima.

Otros comandos pueden proveer información sobre los usuarios de la máquina comprometida, sus cuentas y sesiones previas.

El programa instalado en la computadora comprometida es de especial interés. ¿Qué programas están instalados en el sistema? ¿Cuál de ellos son ejecutados de manera automática en cada inicio del sistema o registro de usuario? ¿Qué programas son usados por un usuario en particular? Si los atacantes están interesados, están a solo un comando de distancia de esta información valiosa.

Al malware se le pueden dar instrucciones para que busque documentos recientemente utilizados u otra clase de archivos interesantes. Puede monitorear directorios específicos y unidades extraíbles, reportar cualquier cambio y filtrar archivos según la elección del atacante.

El malware puede habilitar o deshabilitar el Control de cuentas de Usuario (UAC) o incluso sortear el UAC y trabajar con los archivos en lugares seguros sin tener privilegios de administrador (ver más aquí). Si el malware se está ejecutando como proceso de explorer.exe, el cual es autoelevado, puede crear un objeto COM elevado y utilizarlo para borrar o mover archivos en locaciones que requieren permisos de administración.

Lo que es incluso más perturbador es que puede activar la webcam y el micrófono de la víctima de manera remota y espiar a la víctima tomándole fotos y grabando el sonido del ambiente. La actividad de la pantalla puede monitorearse mediante la captura de impresiones de pantalla. Lo que es particularmente interesante de InvisiMole es que no solo guarda las usuales capturas de pantalla donde se genera una foto de la pantalla, sino que también puede hacer capturas de forma separada para cada una de las ventanas abiertas, lo cual ayuda al atacante a obtener información precisa sin importar que las ventanas estén solapadas.

Además, uno de los comandos del backdoor es utilizado para reemplazar los contenidos de los drivers con los siguientes nombres:

  • blbdrive.sys
  • compbatt.sys
  • secdrv.sys

No hemos observado que los atacantes realmente usen este comando, pero especulamos con que lo utilizan para obtener persistencia adicional en sistemas 32-bit.

Aunque el backdoor es capaz de interferir con el sistema (por ejemplo, desloguear a un usuario, finalizar un proceso o apagar el sistema), en su mayoría proporciona operaciones pasivas. Siempre que sea posible, intenta esconder sus actividades.

Por ejemplo, el malware hurga en lugares interesantes en el sistema, lee documentos recientes o incluso modifica algunos archivos. Como esto deja rastros en el sistema y puede despertar sospechas en la víctima, ya que cada actividad realizada en el archivo deja una evidencia al cambiar la fecha del último acceso o modificación realizado en el archivo,, el malware siempre restaura las fechas del último acceso o modificación.

Otro ejemplo de cómo los autores del malware intentan actuar de forma encubierta se ve en cómo manipulan los rastros que quedaron en el disco. El malware recopila datos sensibles, los cuales son almacenados temporalmente en archivos y eliminados una vez que fueron satisfactoriamente cargados al servidor C&C. Ya que los archivos eliminados pueden ser recuperados por un administrador de sistemas experimentado debido a que algunos pueden quedar en disco, incluso luego de haber sido eliminado ayudando en una  investigación del ataque,,  el malware InvisiMole tiene la habilidad de auto eliminar todos los archivos, pero primero reescribe los datos en un archivo con ceros y bytes aleatorios y recién ahí se elimina el archivo, haciendo más difícil su recuperación.

Almacenamiento interno

La configuración del backdoor y los datos recopilados son almacenados en uno de dos lugares: en un directorio de trabajo o en llaves de registro del sistema. . Una porción sustancial del conjunto de comandos del backdoor se dedica a manipular estas ubicaciones de almacenamiento y sus contenidos.

La ubicación del directorio de trabajo es determinada por las instrucciones del servidor remoto. El directorio es utilizado como almacenamiento temporal para archivos que contienen datos de la computadora comprometida.  Dichos archivos comparten: criterio de nombramiento, algoritmo de cifrado y estructura. Están cifrados por una simple variación del cifrado XOR, el cual es utilizado en todos los componentes del malware. El tipo de archivo puede derivar de la secuencia de control de 4-byte ubicada al inicio del archivo.

 

A pesar de ser un espacio de almacenamiento para los datos recopilados, el directorio de trabajo es también donde se aloja una copia legitima de la aplicación WinRAR. Esta aplicación es  utilizada por los atacantes para comprimir los datos que serán filtrados del equipo de la víctima.

En las llaves de registro  se almacenan datos de configuración, así como también una lista de los archivos en el directorio de trabajo. Los datos son empaquetados por intermedio de una rutina Zlib implementada en el binario del malware y cifrados de igual manera que los archivos internos.

Subdirectory name File name Control sequences File content
\ ~mrc_%random%.tmp 932101DA Audio recordings
\ ~src_%random%.tmp 958901DA Audio recordings
\ ~wbc_%random%.tmp 938901DA Webcam photos
sc\ ~sc%random%.tmp DFE43A08 Screenshots
~zlp\ zdf_%random%.data B1CBF218 Zlib-compressed packages
~lcf\ tfl_%random% C0AFF208 Internal data
fl_%timestamp%\strcn%num%\ fdata.dat A1CAF108 Data from removable drives
fl_%timestamp%\strcn%num%\ index.dat BAAB0019 Data from removable drives
Winrar\ WinRAR.exe - Copy of a legitimate application
Winrar\ comment.txt - -
Winrar\ descript.ion - -
Winrar\ Default.SFX - -
Winrar\ main.ico - -

Comandos del backdoor

El backdoor cuenta con más de ocho comandos que utilizan el directorio de trabajo y las llaves de registro para almacenar sus resultados intermedios y los datos de configuración. La gráfica de la interpretación del backdoor se muestra en la figura 8.

Aproximadamente, un tercio de los comandos están dedicados a la lectura y actualización de los datos de configuración almacenados en el registro. El resto de los comandos están listados en la tabla que sigue.

Command ID(s) Command description
4 List information about files in a directory
6 Upload a file
20 List information about active processes
22 Terminate a process by ID
24 Execute a file
26 Delete a file
28 Get the IP forward table
30 Write data to a file
31 Sleep
38 List account information
40 List information about services on the system
42 List information about loaded drivers
43 Collect basic system information (computer name, OS version, memory status, local time, drive information, configured proxy information, system and process DEP policy…)
44 List installed software
46 List local users and session information
48 List applications accessed by users
52 Create a directory structure
78 Create a remote shell
81 Execute a command via a remote shell
91 Enable/disable UAC
93 Log off the user/shutdown/restart the system
101 Monitor and record changes in the specified directories
103 Delete directories
109 Turn the monitor on/off/onto standby
120 Capture screenshots of the display/active windows
126 Capture screenshots of the display/active windows & update configuration data
130 List information about resources on unmapped drives
132 Rename/move a file, modify create/access/write times of the file to the given values
134 List information about recently opened files
152 Disconnect (previously connected) remote drives
155 Create/delete a registry key, set/delete a registry key value, or enumerate registry values/keys/data
159, 161 Disable routing/firewall, create a proxy server on a specified port
172 Repeatedly display a dialog requesting the user to reboot the computer
175 Bypass UAC to manipulate a file
177 Create and write a file, set the create/access/modify times
181 Remove all system restore points
183 Drop (legitimate) WinRAR components
185 Add files to a password-protected archive (password = "12KsNh92Dwd")
187 Decrypt, unpack and load a DLL, load executables from its resources RC2CL, RC2FM
189 Create a system restore point
191 Extract a password-protected archive (12KsNh92Dwd)
193 Modify an encrypted file
195 Restart itself after the primary process finishes
197 Send 198 bytes of data hardcoded in the sample
199 Rename/move a file
206 Decrypt, unpack and load a DLL, load executables from its resources RC2CL, RC2FM
211 Upload collected information (captured screenshots, audio recordings, etc.)
213 List information about active windows
218 API for recording input audio devices
220 API for capturing webcam photos
224 List files executed with each system start
226 List information about enabled wireless networks (MAC address, SSID, beacon interval)
228 Drop a Zlib-compressed package

 

Figura 8 – Función interpreter del backdoor (original y posterior a nuestro análisis, modificada utilizando la funcionalidad Group Nodes de IDA Pro para una mejor lectura).

Conclusión

InvisiMole es un spyware completamente equipado cuyas capacidades pueden perfectamente competir con otras herramientas de espionaje que se han visto en actividad.

Solo cabe preguntarnos por qué los autores decidieron usar dos módulos con capacidades que se superponen. Se puede pensar que el módulo más pequeño, RC2FM, es utilizado como una herramienta de reconocimiento inicial, mientras que el módulo más grande, RC2CL, es utilizado en los blancos que resultan de interés. Sin embargo, este no es el caso, ya que ambos módulos son lanzados simultáneamente. Otra posible explicación es que los módulos puedan haber sido diseñados por varios autores y luego ensamblados de forma conjunta para ofrecer al operador del malware un rango más complejo de funcionalidades.

Si bien el malware solo utiliza unas pocas técnicas para evadir la detección y el análisis, en los pocos blancos de gran importancia en los que se utilizó logró mantenerse fuera de los radares de detección por al menos cinco años.

Indicadores de Compromiso (IoCs)

Una completa y comprensiva lista de los IoCs, servidores C&C, junto con las claves de registro y valores puede encontrarse en GitHub.