Los investigadores de ESET han descubierto una nueva plataforma de espionaje que presenta una arquitectura compleja, una serie de medidas para dificultar su detección y el análisis, y dos características sobresalientes. La primera es su plugin GSM que utiliza el protocolo de comando AT, y la segunda es la utilización de Tor para sus comunicaciones de red. Los investigadores de ESET llamaron a la plataforma de ciberespionaje: Attor.

Objetivos de Attor

La operación de ciberespionaje de Attor es altamente dirigida: logramos rastrear el accionar de Attor, al menos, hasta el año 2013; sin embargo, solo identificamos unas pocas docenas de víctimas. A pesar de eso, pudimos aprender más sobre las víctimas a las cuales está dirigida a través del análisis de los componentes del malware.

Por ejemplo, para poder informar sobre las actividades de la víctima, Attor monitorea los procesos activos para tomar capturas de pantalla de las aplicaciones seleccionadas. Esto solo es realizado en ciertas aplicaciones: aquellas con substrings específicas en el nombre del proceso o en el título de la ventana.

Además de los servicios estándar, como son los navegadores web populares, las aplicaciones de mensajería instantánea y los servicios de correo electrónico, la lista de aplicaciones específicas contiene varios servicios rusos, como se detalla en la Tabla 1.

Table 1. Domains misused in the campaign
#colspan#
Process name/window title substring Context
ОДНОКЛАССНИКИ (transl. Classmates) Russian social network (Odnoklassniki)
AGENTVKONTAKTE Russian social network (VKontakte)
WEBMONEY Online payment system used in Russia (WebMoney)
MAIL.YANDEX, ЯНДЕКС.ПОЧТА (transl. Yandex.Mail), MAIL.RU, POCHTA (transl. Mail), MAGENT Russian email services (Mail.ru, Yandex.Mail)
ПРИГЛАШЕНИЕ ДРУЖИТЬ (transl. Friend request) Russian text
ВАМ СООБЩЕНИЕ (transl. Message for you) Russian text
MULTIFON Russian VoIP service
QIP, INFIUM Russian IM application (QIP)
RAMBLER Russian search engine (Rambler)

La lista incluye las dos redes sociales más populares en Rusia (Odnoklassniki, VKontakte) y un servicio de VoIP proporcionado por un operador de telecomunicaciones ruso (Multifon). Nuestra conclusión es que Attor se dirige específicamente a los hablantes rusos, lo que se ve respaldado por el hecho de que la mayoría de los objetivos se encuentran en Rusia, como se ve en la Figura 1. Otros objetivos se encuentran en Europa del Este e incluyen misiones diplomáticas, además de instituciones gubernamentales.

Figura 1. Países afectados por Attor

Además de su orientación geográfica y por idioma, los creadores de Attor parecen estar interesados ​​específicamente en los usuarios preocupados por su privacidad.

Attor está configurado para realizar capturas de pantalla de las utilidades de firma digital/cifrado, del servicio VPN HMA, de servicios de correo electrónico como Hushmail y The Bat!, los cuales ofrecen cifrado de extremo a extremo, y de la utilidad de cifrado de disco TrueCrypt.

El uso de TrueCrypt por parte de la víctima es seguido de cerca en otra parte de Attor. Monitorea los dispositivos de disco rígido conectados a la computadora comprometida y busca la presencia de TrueCrypt. En caso de detectar esta utilidad, determina qué versión es enviando IOCTL al controlador TrueCrypt (0x222004 (TC_IOCTL_GET_DRIVER_VERSION) y 0x72018 (TC_IOCTL_LEGACY_GET_DRIVER_VERSION)). Dado que estos son códigos de control específicos de TrueCrypt y no códigos estándar, los autores del malware deberán comprender el código open source del instalador de TrueCrypt. No hemos visto antes el uso de esta técnica ni la hemos visto documentada en otro malware.

Figura 2. El plugin Device monitor envía al driver de TrueCrypt códigos de control no estándar específicos de TrueCrypt para determinar qué versión de la utilidad es.

Arquitectura de la plataforma

Attor está compuesto por un dispatcher y plugins cargables, los cuales se implementan como bibliotecas de enlaces dinámicos (DLL). El primer paso de un compromiso consiste en droppear todos estos componentes en el disco y cargar la DLL del dispatcher.

El dispatcher es el núcleo de toda la plataforma: funciona como unidad de administración y sincronización para los plugins adicionales. En cada inicio del sistema, se auto inyecta en casi todos los procesos en ejecución y carga todos los plugins disponibles dentro de cada uno de estos procesos. Como excepción, Attor evita la inyección en algunos procesos relacionados con el sistema y con productos de seguridad.

Todos los plugins dependen del dispatcher para implementar funcionalidades básicas. En lugar de llamar directamente a las funciones de la API de Windows, los plugins utilizan una referencia a una función auxiliar (un dispatcher de funciones) implementado por la DLL del dispatcher. Cuando los plugins son cargados se les pasa una referencia al dispatcher de funciones. Debido a que los plugins se inyectan en el mismo proceso que el dispatcher, comparten el mismo espacio de direcciones y, por lo tanto, son capaces de llamar a esta función directamente.

Las llamadas al dispatcher de funciones toman como argumentos el tipo de función y su identificador numérico. Este diseño hace que sea más difícil analizar componentes individuales de Attor sin tener acceso al dispatcher, ya que traduce el identificador especificado a una función significativa que luego es ejecutada.

La Figura 3 ilustra una parte de un plugin llamando al dispatcher de funciones en varias ocasiones. En el desensamblado a la derecha, hemos reemplazado los identificadores numéricos (que recuperamos tras realizar ingeniería inversa al dispatcher) con nombres descriptivos. En nuestro whitepaper encontrará un análisis completo de la interfaz del dispatcher.

Figura 3. Los plugins adicionales utilizan funciones implementadas en el módulo principal mediante llamadas al dispatcher de funciones (denominado aquí como helperFnc).

Además, el dispatcher es el único componente de la plataforma que tiene acceso a los datos de configuración. Los plugins de Attor recuperan sus datos de configuración del dispatcher a través de la interfaz, como se describió anteriormente.

Plugins

Los plugins de Attor son enviados a la computadora comprometida como archivos DLL cifrados asimétricamente con RSA. Los plugins solo son recuperados de manera completa en la memoria, utilizando la clave pública RSA embebida en el dispatcher. Como resultado, es difícil obtener los plugins de Attor y descifrarlos sin acceso al dispatcher.

Pudimos recuperar ocho de los plugins de Attor, algunos en varias versiones (ver Tabla 2). Asumiendo que la numeración de los plugins es continua y que los operadores de Attor probablemente utilicen diferentes conjuntos de plugins por cada víctima, sospechamos incluso que hay más plugins que aún no se han descubierto.

Table 2. The analyzed plugins and their versions
#colspan# #colspan#
Plugin ID Analyzed versions Functionality
0x01 0x0E Device monitor
0x02 (no version), 0x0C Screengrabber
0x03 (no version), 0x08, 0x09, 0x0B, 0x0C Audio recorder
0x05 0x0A File uploader
0x06 0x0A Command dispatcher/SOCKS proxy
0x07 0x02, 0x04, 0x09, 0x0A Key/clipboard logger
0x0D 0x03 Tor client
0x10 0x01 Installer/watchdog

Los plugins son responsables de la persistencia de la plataforma (plugin Instalador/Watchdog), de recopilar información confidencial (Device monitor, Capturador de pantalla, Grabadora de audio, Registrador de clave/portapapeles) y de la comunicación a través de la red con el servidor C&C (Cargador de archivos, Dispatcher de comandos/SOCKS proxy, Cliente Tor).

Attor tiene incorporados mecanismos para añadir nuevos plugins, para actualizarse y para exfiltrar automáticamente los datos recopilados y los archivos de registro. Estos mecanismos se ilustran en la Figura 4.

En las siguientes secciones nos enfocamos en los plugins responsables de dos características que se destacan y que le dieron su nombre a Attor: la realización de fingerprinting GSM mediante comandos AT y la elaboración de una comunicación de red mediante Tor.

Figura 4. Arquitectura de Attor. Tenga en cuenta que si bien ID 0x06 representa un solo plugin, dividimos la funcionalidad en dos partes para mayor claridad.

Comunicación de red

Los plugins de espionaje de Attor recopilan datos sensibles (como una lista de documentos presentes en el disco) que finalmente son exfiltrados a un servidor remoto, pero estos plugins no se comunican por sí mismos a través de la red.

Solo dos de los componentes de Attor se comunican con su servidor de C&C: el cargador de archivos y el dispatcher de comandos.

Los archivos recopilados por los "plugins de espionaje" (Device monitor, Capturador de pantalla, Grabadora de audio y Registrador de clave/portapapeles) se cargan automáticamente en el servidor de C&C mediante el plugin Cargador de archivos. Estos complementos usan una Carpeta de carga dedicada como carpeta central para almacenar los datos recopilados, y otros complementos la usan para almacenar archivos de registro.

El plugin Dispatcher de comandos descarga comandos y herramientas adicionales del servidor C&C y los interpreta. Nuevamente, utiliza carpetas dedicadas para almacenar sus datos –lo más destacado son plugins recién descargados y actualizaciones de la plataforma, y ​​datos de registro cifrados que contienen el estado/resultados de los comandos ejecutados.

El dispatcher de Attor monitorea las carpetas compartidas y carga cualquier plugin nuevo así como las actualizaciones enviadas a la computadora comprometida.

Esto significa que ni el dispatcher de Attor ni los plugins de espionaje se comunican con el servidor de C&C; solo utilizan carpetas compartidas localmente para almacenar los datos que son exfiltrados y para leer instrucciones adicionales del servidor.

Tanto el Cargador de archivos como el Dispatcher de comandos utilizan la misma infraestructura para llegar al servidor remoto: la comunicación de la red en sí está dispersa en cuatro componentes diferentes de Attor, cada uno implementando una capa diferente.

Attor utiliza Tor: Protocolo del servicio de Onion, con una dirección onion para el servidor de C&C. Para comunicarse con el servidor C&C, cualquier plugin debe establecer primero una conexión con el plugin de Cliente Tor (escuchando en la no predeterminada 127.0.0.1:8045) que es responsable de resolver el dominio onion, elegir un circuito y cifrar los datos en capas. El plugin de Cliente Tor está basado en el Cliente Tor y está personalizado para el diseño de este malware (tor.exe con interacción adicional con el dispatcher de Attor).

El plugin de Cliente Tor debe comunicarse con el dispatcher, el cual implementa las funciones criptográficas. Además, se comunica con el plugin de proxy SOCKS (escuchando en 127.0.0.1:5153) que retransmite las comunicaciones entre el Cliente Tor y el servidor remoto.

Tanto el Cargador de archivos como el Dispatcher de comandos usan FTP; los archivos son cargados/descargados de un servidor FTP que está protegido por credenciales hardcodeadas en la configuración:

  • Servidor C&C: idayqh3zhj5j243t[.]onion
  • Nombre de usuario: do
  • Contraseña: [Redacted]

Los plugins inician sesión en el servidor FTP y copian los datos recopilados o descargan comandos de un directorio específico de la víctima.

En total, la infraestructura para la comunicación con el C&C abarca cuatro componentes de Attor: el dispatcher proporciona funciones de cifrado y tres plugins que implementan el protocolo FTP, la funcionalidad Tor y la comunicación de red actual, como se puede apreciar en la Figura 5. Este mecanismo hace que sea imposible analizar la comunicación de red a menos que todas las piezas del rompecabezas hayan sido recopiladas.

Figura 5. Cuatro componentes de Attor cooperan para permitir la comunicación con el servidor de C&C

Es importante tener en cuenta que Attor utiliza varios trucos adicionales para ocultar sus comunicaciones al usuario y a los productos de seguridad:

Primero, el servidor C&C es un servicio Tor que busca el anonimato y la imposibilidad de ser rastreado.

En segundo lugar, todos los plugins relacionados con la comunicación de la red se activan solamente si se ejecutan dentro del proceso de un navegador web o una aplicación de mensajería instantánea u otras aplicaciones de red (esto es determinado mediante la comparación del nombre del proceso con una lista hardcodeada). Este truco oculta la comunicación de red relacionada con la exfiltración en un flujo de comunicaciones legítimas realizadas por esa aplicación y, por lo tanto, reduce el riesgo de levantar cualquier sospecha.

Fingerprinting GSM

El plugin más curioso del arsenal de Attor recopila información relacionada a dispositivos de módem/teléfono conectados y a unidades de almacenamiento conectadas, y sobre los archivos presentes en estas unidades. Es responsable de la recopilación de metadatos, no de los archivos en sí, por lo que lo consideramos un plugin utilizado para realizar fingerprinting de dispositivos y, por lo tanto, es probable que se utilice como base para el robo de datos adicionales.

Si bien la funcionalidad de Attor para realizar fingerprinting a unidades de almacenamiento es bastante estándar, su fingerprinting de dispositivos GSM es única.

Siempre que un módem o un dispositivo telefónico se conecta a un puerto COM, Device monitor utiliza comandos AT para comunicarse con el dispositivo, a través del puerto serie asociado.

Los comandos AT, también conocidos como conjunto de comandos Hayes, fueron desarrollados originalmente en la década de 1980 para ordenar un módem para que marque, cuelgue o cambie la configuración de la conexión. El conjunto de comandos se amplió posteriormente para admitir funcionalidades adicionales, tanto estandarizadas como específicas del fabricante.

En un paper publicado recientemente, se descubrió que los comandos todavía están en uso en la mayoría de los teléfonos inteligentes modernos. Esos investigadores pudieron bypassear los mecanismos de seguridad y comunicarse con teléfonos inteligentes usando comandos AT a través de su interfaz USB. Miles de comandos fueron recuperados y testeados, incluidos aquellos para enviar mensajes SMS, emular eventos táctiles en pantalla o filtrar información sensible. Esa investigación ilustró que los viejos comandos AT representan un riesgo grave cuando se utilizan de forma incorrecta.

Sin embargo, en cuanto al plugin de Attor, solo podemos especular acerca de por qué se utilizan los comandos AT. Hemos detectado una versión en 64 bits de este plugin en 2019 y podemos confirmar que todavía es parte de la versión más nueva de Attor (que vimos por primera vez en 2018). Por otro lado, parece poco probable que esté dirigido a dispositivos smartphones. El plugin ignora los dispositivos conectados a través de un puerto USB y solo contacta a aquellos conectados a través de un puerto serie (más precisamente, dispositivos cuyos nombres descriptivos coinciden con "COM *").

Una explicación más probable del principal motivo del plugin es que apunta a módems y teléfonos más antiguos. Alternativamente, puede que haya sido utilizado para comunicarse con algunos dispositivos específicos (utilizados por la víctima u organización objetivo) que están conectados al puerto COM o al puerto USB mediante un adaptador de USB a serie. En este escenario, es posible que los atacantes hayan aprendido sobre el uso de estos dispositivos por parte de la víctima utilizando algunas otras técnicas de reconocimiento.

En cualquier caso, el plugin recupera la siguiente información de los dispositivos conectados utilizando los comandos AT enumerados en la Tabla 3:

  • Información básica sobre el teléfono móvil o el módem GSM/GPRS: nombre del fabricante, número de modelo, número IMEI y versión del software
  • Información básica sobre el suscriptor: MSISDN y número IMSI

Table 3. The commands of the AT protocol used by the Device monitor plugin
#colspan#
AT command Functionality
AT Signals start of communication (AT for attention).
AT+MODE=2 Prepares the phone for an extended AT+ command set.
AT+CGSN Requests IMEI number (International Mobile Equipment Identity), which is a unique number to identify a device.
AT+CGMM Requests information about the model of the device (model number).
AT+CGMI Requests name of the device manufacturer.
AT+CGMR Requests the version of the software loaded on the device.
AT+CNUM Requests MSISDN (Mobile Station International Subscriber Directory Number), which is the mapping of the telephone number to the subscriber identity module in a mobile or cellular phone.
AT+CIMI Requests IMSI (International Mobile Subscriber Identity), which is a unique number identifying a GSM subscriber. This number has two parts. The initial part is comprised of six digits in the North American standard and five digits in the European standard. It identifies the GSM network operator in a specific country with whom the subscriber holds an account. The second part is allocated by the network operator to identify the subscriber uniquely.

Tenga en cuenta que existen muchos más comandos AT (específicos del fabricante) que este plugin no utiliza. Es posible que los operadores de malware usen los comandos enumerados para hacer fingerprint de los dispositivos conectados y luego hagan uso de otro plugin con comandos más específicos para extraer información del dispositivo.

Conclusión

Attor es una plataforma de espionaje utilizada para ataques altamente dirigidos contra usuarios de un alto perfil en Europa del Este y usuarios de habla rusa preocupados por la seguridad.

El malware, que ha pasado desapercibido desde 2013, tiene una arquitectura de plugin cargable que se puede utilizar para personalizar la funcionalidad a víctimas específicas. Incluye un plugin inusual para realizar fingerprinting GSM que utiliza el conjunto de comandos AT raramente utilizado e incorpora Tor con el objetivo de mantener el anonimato y la imposibilidad de rastreo.

Nuestra investigación proporciona una visión profunda del malware y sugiere que vale la pena seguir rastreando las operaciones del grupo que lo respalda.

Los nombres de detección de ESET y otros indicadores de compromiso para estas campañas se pueden encontrar en el whitepaper: AT commands, TOR-based communications: Meet Attor, a fantasy creature and also a spy platform.

Agradecimientos a Anton Cherepanov, Peter Košinár y Zoltán Rusnák por su trabajo en esta investigación.

Técnicas de MITRE ATT&CK

Tactic ID Name Description
Execution T1106 Execution through API Attor’s dispatcher uses CreateProcessW API for execution.
T1129 Execution through Module Load Attor’s dispatcher executes additional plugins by loading the respective DLLs.
T1085 Rundll32 Plugin 0x10 schedules rundll32.exe to load the dispatcher.
T1053 Scheduled Task Plugin 0x10 schedules rundll32.exe to be executed on each boot/logon, and subsequently to load the dispatcher.
T1035 Service Execution Attor’s dispatcher can be executed as a service.
Persistence T1037 Logon Scripts Attor’s dispatcher can establish persistence via adding a Registry key with a logon script: HKEY_CURRENT_USER\Environment"UserInitMprLogonScript".
T1050 New Service Attor’s dispatcher can establish persistence by registering a new service. HKEY_LOCAL_MACHINE\SYSTEM\*ControlSet*\Control\SafeBoot\Minimal registry keys are updated to execute the service even in Safe mode and Safe mode with networking.
T1053 Scheduled Task Plugin 0x10 schedules a new task that loads the dispatcher on boot/logon.
Defense Evasion T1140 Deobfuscate/Decode Files or Information Strings are encrypted with a XOR cipher, using a hardcoded key.
Configuration data, log files and plugins are encrypted using a hybrid encryption scheme – Blowfish-OFB combined with RSA.
T1107 File Deletion The collected files and log files are deleted after exfiltration by plugin 0x05.
T1158 Hidden Files and Directories The attributes of log files and directories are set to HIDDEN/SYSTEM/ARCHIVE (or combination of those).
T1036 Masquerading Attor’s dispatcher disguises itself as a legitimate task (i.e., the task name and description appear legitimate).
T1112 Modify Registry Attor’s dispatcher can modify the Run registry key.
T1055 Process Injection Attor’s dispatcher injects itself into running processes, to gain higher privileges and to evade detection. It avoids specific system and Symantec processes.
T1108 Redundant Access Both 32-bit and 64-bit versions of Attor’s dispatcher are executed; also they are injected into almost all processes.
There is a watchdog component, implemented in the dispatcher or as a separate plugin, that reinstalls Attor if it has been removed.
T1099 Timestomp The time of last access to files and registry keys is manipulated after they have been created/modified.
T1497 Virtualization/Sandbox Evasion Attor can detect whether it is executed in some virtualized or emulated environments. If detected, it terminates itself immediately.
Credential Access T1056 Input Capture User credentials can be collected by plugin 0x07 via capturing keystrokes.
Discovery T1083 File and Directory Discovery Plugin 0x01 enumerates files with specific extensions on all hard disk drives and stores file information in encrypted log files.
T1120 Peripheral Device Discovery Plugin 0x01 collects information about inserted storage devices, modems and phone devices.
T1082 System Information Discovery Attor monitors the free disk space on the system.
Collection T1123 Audio Capture Plugin 0x03 is capable of recording audio using available input sound devices.
T1119 Automated Collection Attor automatically collects data about the compromised system.
T115 Clipboard Data Plugin 0x07 collects data stored in the Windows clipboard by using the OpenClipboard and GetClipboardData APIs.
T1074 Data Staged Collected data is staged in a central upload directory prior to exfiltration.
T1056 Input Capture Plugin 0x07 captures keystrokes pressed within the window of the process where Attor is injected.
T1113 Screen Capture Plugin 0x02 captures screenshots of target applications.
Command and Control T1043 Commonly Used Port Attor uses port 21 for C&C communication.
T1188 Multi-hop Proxy Attor uses Tor for C&C communication.
T1079 Multilayer Encryption Attor sends encrypted traffic using Tor, which itself uses multiple layers of encryption.
T1105 Remote File Copy Attor can download additional plugins, updates and other files.
T1071 Standard Application Layer Protocol FTP protocol is used for C&C communication.
T1032 Standard Cryptographic Protocol A combination of Blowfish-OFB and RSA is used for data encryption.
Exfiltration T1020 Automated Exfiltration Exfiltration of the collected data and log files is done automatically by plugin 0x05.
T1022 Data Encrypted Attor encrypts data with a combination of Blowfish and RSA ciphers before sending it to the C&C server.
T1041 Exfiltration Over Command and Control Channel Attor exfiltrates data over the C&C channel.