Los investigadores de ESET analizaron una serie creciente de downloaders de OilRig que el grupo ha utilizado en varias campañas a lo largo de 2022 para mantener el acceso a organizaciones objetivo de especial interés, todas ellas ubicadas en Israel. Estos downloaders ligeros, a los que llamamos SampleCheck5000 (SC5k v1-v3), OilCheck, ODAgent y OilBooster, se destacan por utilizar una de varias API legítimas de servicios en la nube para la comunicación de C&C y la exfiltración de datos: las API de Microsoft Graph OneDrive o Outlook, y la API de Microsoft Office Exchange Web Services (EWS).
En todos los casos, los downloaders utilizan una cuenta compartida (de correo electrónico o almacenamiento en la nube) operada por OilRig para intercambiar mensajes con los operadores de OilRig; la misma cuenta suele ser compartida por varias víctimas. Los downloaders acceden a esta cuenta para descargar comandos y payloads adicionales preparadas por los operadores, y para cargar la salida del comando y los archivos preparados.
Descubrimos el primero de la serie, el downloader SC5k (v1), en noviembre de 2021, cuando se utilizó en la campaña Outer Space de OilRig, documentada en nuestra reciente artículo. En esta blogspot nos centramos en todos los sucesores de SC5k que OilRig desarrolló a lo largo de 2022, con una nueva variación introducida cada pocos meses; también examinaremos más de cerca los mecanismos empleados por estos downloaders. También comparamos estos downloaders con otros backdoors de OilRig que utilizan protocolos de C&C basados en correo electrónico, y que fueron reportados a principios de este año por Trend Micro (MrPerfectionManager) y Symantec (PowerExchange).
Por último, este blogpost también amplía nuestra presentación de LABScon 2023, en la que profundizamos en cómo OilRig mantiene el acceso a organizaciones israelíes seleccionadas: todos los downloaders estudiados aquí se desplegaron en redes que habían sido afectadas previamente por múltiples herramientas de OilRig, lo que subraya el hecho de que OilRig es persistente a la hora de dirigirse a las mismas organizaciones, y está decidido a mantener su posición en las redes comprometidas.
Puntos clave de este blogpost:
- OilRig desarrolló y utilizó activamente una serie de downloaders con una lógica similar a lo largo de 2022: tres nuevos -ODAgent, OilCheck, OilBooster- y versiones más recientes del SC5k.
- Los downloaders utilizan varias API legítimas de servicios en la nube para la comunicación de C&C y la exfiltración de datos: Microsoft Graph OneDrive API, Microsoft Graph Outlook API y Microsoft Office EWS API.
- Los objetivos, todos en Israel, incluían una organización del sector sanitario, una empresa de fabricación, una organización gubernamental local y otras.
- Todos los objetivos se habían visto afectados anteriormente por varias campañas de OilRig.
Atribución
OilRig, también conocido como APT34, Lyceum, Crambus, o Siamesekitten, es un grupo de ciberespionaje que ha estado activo desde al menos 2014 y comúnmente se cree que tiene su sede en Irán. Sus objetivos son gobiernos de Oriente Medio y diversos sectores empresariales, como el químico, el energético, el financiero y el de las telecomunicaciones.
OilRig llevó a cabo la campaña de DNSpionage en 2018 y 2019, que se dirigió a víctimas en el Líbano y los Emiratos Árabes Unidos. En 2019 y 2020, OilRig continuó sus ataques con la campaña HardPass, que utilizó LinkedIn para atacar a víctimas de Oriente Medio en los sectores energético y gubernamental. En 2021, OilRig actualizó su backdoor DanBot y comenzó a desplegar los backdoors Shark, Milan y Marlin, como se menciona en la edición T3 2021 del Informe de Amenazas de ESET. En 2022 y 2023, el grupo llevó a cabo varios ataques contra entidades gubernamentales locales y organizaciones sanitarias en Israel, utilizando sus nuevos backdoors Solar y Mango. En 2023, OilRig atacó organizaciones en Oriente Medio con los backdoords PowerExchange y MrPerfectionManager, y herramientas relacionadas para recopilar credenciales de cuentas de buzón internas y luego aprovechar estas cuentas para la exfiltración.
Atribuimos los downloaders SC5k (v1-v3), ODAgent, OilCheck y OilBooster a OilRig con un alto nivel de confianza, basándonos en estos indicadores:
- Objetivos
- Estos downloaders se desplegaron exclusivamente contra organizaciones israelíes, lo que concuerda con los objetivos típicos de OilRig.
- Los sectores verticales observados de las víctimas también coinciden con los intereses de OilRig; por ejemplo, hemos visto a OilRig atacar anteriormente el sector sanitario israelí, así como el sector gubernamental local de Israel.
- Similitudes de código
- Los downloaders SC5k v2 y v3 evolucionaron de forma natural a partir de la versión inicial, utilizada anteriormente en una campaña de OilRig en el espacio exterior. ODAgent, OilCheck y OilBooster comparten una lógica similar, y todos utilizan varios proveedores de servicios en la nube para sus comunicaciones de C&C, al igual que SC5k, Marlin, PowerExchange y MrPerfectionManager.
- Aunque no son exclusivos de OilRig, estos downloaders tienen un bajo nivel de sofisticación y a menudo son innecesariamente ruidosos en el sistema, una práctica que ya habíamos observado anteriormente en su campaña Out to Sea.
Resumen
En febrero de 2022, detectamos un nuevo downloader de OilRig, al que denominamos ODAgent por su nombre de archivo: ODAgent.exe. ODAgent es un downloader C#/.NET que, de forma similar al backdoor Marlin de OilRig, utiliza la API de Microsoft OneDrive para las comunicaciones de C&C. A diferencia de Marlin, que admite una amplia lista de comandos de backdoor, las capacidades de ODAgent se limitan a la descarga y ejecución de cargas útiles, y a la filtración de archivos organizados.
ODAgent fue detectado en la red de una empresa manufacturera en Israel - curiosamente, la misma organización fue afectada previamente por el downloader SC5k de OilRig, y más tarde por otro nuevo, OilCheck, entre abril y junio de 2022. SC5k y OilCheck tienen capacidades similares a ODAgent, pero utilizan servicios de correo electrónico basados en la nube para sus comunicaciones de C&C.
A lo largo de 2022, observamos que el mismo patrón se repetía en múltiples ocasiones, con nuevos downloaders desplegados en las redes de anteriores objetivos de OilRig: por ejemplo, entre junio y agosto de 2022, detectamos los downloaders OilBooster, SC5k v1 y SC5k v2 y el backdoor Shark, todos ellos en la red de una organización gubernamental local de Israel. Más tarde detectamos otra versión de SC5k (v3) en la red de una organización sanitaria israelí, que también había sido víctima de OilRig.
SC5k es una aplicación C#/.NET cuyo propósito es descargar y ejecutar herramientas adicionales de OilRig utilizando la API Office Exchange Web Services (EWS). Las nuevas versiones introdujeron cambios para dificultar a los analistas la recuperación y el análisis de las cargas útiles maliciosas (SC5k v2), así como una nueva funcionalidad de exfiltración (SC5k v3).
Todos los downloaders, resumidos en la Figura 1, comparten una lógica similar pero tienen diferentes implementaciones y muestran una complejidad creciente con el tiempo, alternando binarios C#/.NET con aplicaciones C/C++, variando los proveedores de servicios en la nube utilizados indebidamente para la comunicación C&C, y otras especificidades.
OilRig sólo ha utilizado estos downloaders contra un número limitado de objetivos, todos ubicados en Israel y, según la telemetría de ESET, todos ellos fueron atacados de forma persistente meses antes por otras herramientas de OilRig. Como es común que las organizaciones accedan a los recursos de Office 365, los downloaders de OilRig potenciados por el servicio en la nube pueden así mezclarse más fácilmente en el flujo regular de tráfico de red - aparentemente también la razón por la que los atacantes eligieron desplegar estos downloaders a un pequeño grupo de objetivos especialmente interesantes repetidamente.
En el momento de redactar este informe, las organizaciones afectadas (exclusivamente israelíes, como se ha indicado anteriormente) eran las siguientes
- una empresa manufacturera (SC5k v1, ODAgent y OilCheck),
- una organización gubernamental local (SC5k v1, OilBooster, y SC5k v2),
- una organización sanitaria (SC5k v3) y
- otras organizaciones no identificadas de Israel (SC5k v1).
Desafortunadamente, no tenemos información sobre el vector de ataque inicial utilizado para comprometer los objetivos discutidos en este blogpost - no podemos confirmar si los atacantes han sido capaces de comprometer con éxito las mismas organizaciones repetidamente, o si de alguna manera lograron mantener su posición en la red entre el despliegue de diversas herramientas.
Análisis técnico
En esta sección, ofrecemos un análisis técnico de los downloaders de OilRig utilizados a lo largo de 2022, con los detalles de cómo abusan de diversos servicios de almacenamiento en la nube y proveedores de correo electrónico basados en la nube para sus comunicaciones de C&C. Todos estos downloaders siguen una lógica similar:
- Utilizan una cuenta compartida (de correo electrónico o de almacenamiento en la nube) para intercambiar mensajes con los operadores de OilRig; la misma cuenta puede utilizarse contra múltiples víctimas.
- Acceden a esta cuenta para descargar comandos y cargas útiles adicionales preparadas por los operadores, y para cargar la salida del comando y los archivos preparados.
En nuestro análisis, nos centramos en estas características de los downloaders:
- Particularidades del protocolo de comunicación de red (por ejemplo, Microsoft Graph API frente a Microsoft Office EWS API).
- El mecanismo utilizado para distinguir entre los distintos mensajes cargados por el atacante y los cargados por el downloader en la cuenta compartida, incluido el mecanismo para distinguir entre los mensajes cargados por distintas víctimas.
- Los detalles específicos de cómo los downloaders procesan los comandos y las cargas útiles se descargan de la cuenta compartida.
La Tabla 1 resume y compara cómo los downloaders individuales implementan estas características; a continuación, analizamos en detalle el primer downloader (SC5k) y el más complejo (OilBooster) como ejemplos de herramientas que abusan de los servicios de correo electrónico basados en la nube y de los servicios de almacenamiento en la nube, respectivamente.
Tabla 1. Resumen de las principales características de los downloaders de OilRig que abusan de proveedores legítimos de servicios en la nube
Mechanism |
SC5k v1 |
SC5k v2 |
SC5k v3 |
OilCheck |
OilBooster |
ODAgent |
C&C protocol |
A shared Microsoft Exchange email account, C&C communication embedded in draft messages. |
A shared OneDrive account; files with various extensions to distinguish action types. |
||||
Network communications |
Microsoft Office EWS API |
Microsoft Graph (Outlook) API |
Microsoft Graph (OneDrive) API. |
|||
Victim identification mechanism |
The sg extended property of the email draft is set to <victimID>. |
An unknown extended email property is set to <victimID>. |
From field has the username portion of the email address set to <victimID>. |
The zigorat extended property of the email draft is set to <victimID>. |
All communication for, and from, the specific victim is uploaded to a victim-specific subdirectory named <victimID>. |
|
Keep-alive message |
The type extended property of the email draft is set to 3; the current GMT time is in the email body. |
An unknown extended property of the email draft is set to 0; the email body is empty. |
The From field of the email draft is set to <victimID>@yahoo.com; the current GMT time is in the email body. |
The type extended property of the email draft is set to 3; the current GMT time is in the email body. |
A file named <victimID>/setting.ini. |
A file named <victimID>/info.ini. |
File for download |
The type extended property of the email draft is set to 1; the attached file has any extension other than .json. |
An unknown extended property of the email draft is set to 1; the attached file has any extension other than .bin. |
The From field of the email draft is set to <victimID>@outlook.com, with the message category set to file. |
The type extended property of the email draft is set to 1; the attached file has a .biz extension. |
A file with a .docx extension in the <victimID>/items subdirectory. |
A non-JSON file in the <victimID>/o subdirectory. |
Exfiltrated file |
The type extended property of the email draft is set to 2; the attached file has the .tmp1 extension. |
An unknown extended property of the email draft is set to 2; the attached file has a .tmp extension. |
The From field of the email draft is set to <victimID>@aol.com, with the file category. |
The type extended property of the email draft is set to 2; the attached file has a .biz extension. |
A file with a .xlsx extension in the <victimID>/items subdirectory. |
A non-JSON file in the <victimID>/i subdirectory. |
Command for execution |
The type extended property of the email draft is set to 1; the attached file has a .json extension. |
An unknown extended property of the email draft is set to 1; the attached file has a .bin extension. |
The From field of the email draft is set to <victimID>@outlook.com, without the file category. |
The type extended property of the email draft is set to 1; the attached file has any extension other than .biz. |
A file with a .doc extension in the <victimID>/items subdirectory. |
A JSON file in the <victimID>/o subdirectory. |
Command output |
The type extended property of the email draft is set to 2; the attached file has a .json extension. |
An unknown extended property of the email draft is set to 2; the attached file has a .bin extension. |
The From field of the email draft is set to <victimID>@aol.com, with the text category. |
The type extended property of the email draft is set to 2. |
A file with a .xls extension in the <victimID>/items subdirectory. |
A JSON file in the <victimID>/i subdirectory. |
downloader SC5k
El downloader SampleCheck5000 (o SC5k) es una aplicación C#/.NET, y el primero de una serie de downloaders ligeros de OilRig que utilizan servicios en la nube legítimos para su comunicación de C&C. Hemos documentado brevemente la primera variante en nuestro reciente blogpost, y desde entonces hemos descubierto dos variantes más recientes.
Todas las variantes de SC5k utilizan la API de Microsoft Office EWS para interactuar con una cuenta de correo Exchange compartida, como forma de descargar cargas útiles y comandos adicionales, y para cargar datos. Los borradores de correo electrónico y sus adjuntos son el vehículo principal para el tráfico de C&C en todas las versiones de este downloader, pero las versiones posteriores aumentan la complejidad de este protocolo de C&C (SC5k v3) y añaden capacidades de evasión de detección (SC5k v2). Esta sección se centra en destacar estas diferencias.
Cuenta Exchange utilizada para la comunicación C&C
En tiempo de ejecución, SC5k se conecta a un servidor Exchange remoto a través de la API EWS para obtener payloads y comandos adicionales para ejecutar desde una cuenta de correo electrónico compartida con el atacante (y normalmente con otras víctimas). Por defecto, se accede a una cuenta de Microsoft Office 365 Outlook a través de la URL https://outlook.office365.com/EWS/Exchange.asmx utilizando credenciales codificadas, pero algunas versiones de SC5k también tienen la capacidad de conectarse a otros servidores Exchange remotos cuando está presente un archivo de configuración con un nombre codificado(setting.key, set.idl) y las credenciales correspondientes en su interior.
Hemos visto las siguientes direcciones de correo electrónico utilizadas por versiones de SC5k para la comunicación C&C, la primera de las cuales dio nombre al downloader:
- samplecheck5000@outlook.com
- FrancesLPierce@outlook.com
- SandraRCharles@outlook.com
En SC5k v2, la URL predeterminada de Microsoft Exchange, la dirección de correo electrónico y la contraseña no se incluyen en el módulo principal, sino que el código del downloader se ha dividido en varios módulos. Sólo hemos detectado variaciones de la aplicación principal, que inicia sesión en un servidor Exchange remoto, recorre los correos electrónicos del directorio Drafts y extrae cargas útiles adicionales de sus archivos adjuntos. Sin embargo, esta aplicación depende de dos clases externas que no estaban presentes en las muestras detectadas y que probablemente estén implementadas en el módulo o módulos que faltan:
- La clase init debería proporcionar una interfaz para obtener la dirección de correo electrónico, el nombre de usuario y la contraseña necesarios para iniciar sesión en la cuenta Exchange remota, así como otros valores de configuración del otro módulo.
- La estructura de la clase debería implementar funciones utilizadas para el cifrado, la compresión, la ejecución de cargas útiles descargadas y otras funciones de ayuda.
Es probable que estos cambios se introdujeran para dificultar a los analistas la recuperación y el análisis de las cargas maliciosas, ya que las dos clases que faltan son cruciales para identificar la cuenta de Exchange utilizada para la distribución del malware.
Protocolo de C&C y exfiltración
En todas las versiones, el downloader SC5k se conecta repetidamente a un servidor Exchange remoto utilizando la clase ExchangeService.NET del espacio de nombres Microsoft.Exchange.WebServices.Data para interactuar con la API EWS. Una vez conectado, SC5k lee mensajes de correo electrónico con archivos adjuntos en el directorio Drafts para extraer comandos del atacante y cargas útiles adicionales. A la inversa, en cada conexión, SC5k extrae archivos de un directorio de almacenamiento local mediante la creación de nuevos borradores de correo electrónico en la misma cuenta de correo electrónico. La ruta al directorio de almacenamiento varía según las muestras.
Resulta interesante la forma en que tanto los operadores como las distintas instancias de este downloader pueden distinguir entre los distintos tipos de borradores en la cuenta de correo electrónico compartida. Por un lado, cada borrador de correo electrónico lleva incorporado un <victimID>, lo que permite utilizar la misma cuenta de Exchange para varias víctimas de OilRig:
- Para v1 y v2, el downloader transmite el <victimID> como un atributo personalizado del borrador de correo electrónico a través del método SetExtendedProperty.
- Para v3, el downloader incorpora el <victimID> en el campo From del borrador de correo electrónico.
El <victimID> se genera normalmente utilizando la información del sistema comprometido, como el ID de volumen del sistema o el nombre del equipo, como se muestra en Figura 2.
Además, se pueden utilizar varias propiedades de correo electrónico para distinguir entre los mensajes creados por los operadores (comandos, cargas útiles adicionales) y los mensajes creados por las instancias de malware (salidas de comandos, archivos exfiltrados). SC5k v1 y v2 utilizan las extensiones de archivo (de los adjuntos del borrador) para hacer esa distinción, mientras que SC5k v3 utiliza los campos From y MailItem.Categories del borrador de correo electrónico para distinguir entre varias acciones. En cada punto, los borradores de correo electrónico en la cuenta de correo electrónico compartida pueden servir para varios propósitos, como se resume en la Tabla 2 y se explica a continuación. Tenga en cuenta que las direcciones de correo electrónico utilizadas en el campo De no son auténticas; como SC5k nunca envía mensajes de correo electrónico reales, estos atributos sólo se utilizan para distinguir entre diferentes acciones maliciosas.
Tabla 2. Tipos de mensajes de correo electrónico utilizados por SC5k Tipos de mensajes de correo electrónico utilizados por SC5k v3 para las comunicaciones de C&C
From |
MailItem.Categories |
Created by |
Details |
<victimID>@yahoo.com |
N/A |
SC5k v3 instance |
Created to register the victim with the C&C server, and renewed periodically to indicate that the malware is still active. |
<victimID>@outlook.com |
file |
C&C server |
Attached file is decrypted, decompressed, and dumped on the victim’s computer. |
<victimID>@outlook.com |
Other than file |
C&C server |
Attached command is decrypted, decompressed, then passed as an argument to a file already present on the compromised machine, presumably a command interpreter. |
<victimID>@aol.com |
file |
SC5k v3 instance |
Created to exfiltrate a file from a staging directory. |
<victimID>@aol.com |
text |
SC5k v3 instance |
Created to send command output to the C&C server. |
Más específicamente, SC5k v3 procesa (y luego elimina) aquellos mensajes de correo electrónico de la cuenta compartida de Exchange que tienen el campo From configurado como <victimID>@outlook.com, y distingue entre comandos y cargas útiles adicionales por la categoría del mensaje(MailItem.Categories):
- Para las cargas útiles, el archivo adjunto se desencripta XOR utilizando la clave codificada &5z, luego se descomprime gzip y se vuelca en el directorio de trabajo.
- Para los comandos shell, el borrador adjunto se decodifica en base64, se desencripta XOR y luego se ejecuta localmente utilizando cmd.exe o, en el caso de SC5k v3, utilizando un intérprete de comandos personalizado ubicado bajo el nombre <baseDirectory>\*Ext.dll. A continuación, este archivo se carga mediante Assembly.LoadFrom y se invoca su método extend con el comando pasado como argumento.
Para comunicarse con los atacantes, SC5k v3 crea borradores de mensajes con un campo From diferente: <victimID>@aol.com. Adjuntos a estos mensajes hay salidas de comandos recibidos previamente, o contenidos del directorio local de preparación. Los archivos siempre se comprimen con gzip y se cifran con XOR antes de cargarse en el buzón compartido, mientras que los comandos de shell y las salidas de comandos se cifran con XOR y se codifican con base64.
Por último, SC5k v3 crea repetidamente un nuevo borrador en la cuenta compartida de Exchange con el campo From configurado como <victimID>@yahoo.com, para indicar a los atacantes que esta instancia de descarga sigue activa. Este mensaje keep-alive, cuya construcción se muestra en la Figura 3, no tiene ningún adjunto y se renueva con cada conexión al servidor Exchange remoto.
Otras herramientas OilRig que utilizan el protocolo C&C basado en correo electrónico
Además de SC5k, se han descubierto posteriormente (en 2022 y 2023) otras herramientas OilRig notables que abusan de las API de servicios de correo electrónico legítimos basados en la nube para la exfiltración y ambas direcciones de su comunicación de C&C.
OilCheck, un downloader C#/.NET descubierto en abril de 2022, también utiliza borradores de mensajes creados en una cuenta de correo electrónico compartida para ambas direcciones de la comunicación de C&C. A diferencia de SC5k, OilCheck utiliza la API Microsoft Graph basada en REST para acceder a una cuenta de correo electrónico compartida de Microsoft Office 365 Outlook, no la API Microsoft Office EWS basada en SOAP. Mientras que SC5k utiliza la clase ExchangeService.NET incorporada para crear las solicitudes de API de forma transparente, OilCheck construye las solicitudes de API manualmente. Las principales características de OilCheck se resumen en la Tabla 1.
A principios de 2023, se documentaron públicamente otras dos backdoors OilRig: MrPerfectionManager(Trend Micro, febrero de 2023) y PowerExchange(Symantec, octubre de 2023), que utilizan protocolos de C&C basados en correo electrónico para filtrar datos. Una diferencia notable entre estas herramientas y los downloaders de OilRig estudiados en este blogpost es que las primeras utilizan el servidor Exchange de la organización víctima para transmitir mensajes de correo electrónico desde y hacia la cuenta de correo electrónico del atacante. En cambio: con SC5k y OilCheck, tanto el malware como el operador accedían a la misma cuenta de Exchange y se comunicaban creando borradores de correo electrónico, sin enviar nunca un mensaje real.
En cualquier caso, los nuevos hallazgos confirman la tendencia de OilRig a alejarse de los protocolos basados en HTTP/DNS utilizados anteriormente para utilizar proveedores legítimos de servicios en la nube como forma de ocultar su comunicación maliciosa y enmascarar la infraestructura de red del grupo, mientras sigue experimentando con varios sabores de dichos protocolos alternativos.
downloader OilBooster
OilBooster es un ejecutable portátil (PE) de 64 bits escrito en Microsoft Visual C/C++ con las bibliotecas OpenSSL y Boost enlazadas estáticamente (de ahí su nombre). Al igual que OilCheck, utiliza la API Microsoft Graph para conectarse a una cuenta de Microsoft Office 365. A diferencia de OilCheck, utiliza esta API para interactuar con una cuenta de OneDrive (no Outlook) controlada por los atacantes para la comunicación C&C y la exfiltración. OilBooster puede descargar archivos del servidor remoto, ejecutar archivos y comandos shell, y exfiltrar los resultados.
Resumen
Tras la ejecución, OilBooster oculta su ventana de consola (a través de la API ShowWindow) y verifica que se ejecutó con un argumento de línea de comandos; de lo contrario, termina inmediatamente.
OilBooster construye entonces un <victimID> combinando el nombre de host y el nombre de usuario del ordenador comprometido: <hostname>-<username>. Este identificador se utiliza posteriormente en la comunicación C&C: OilBooster crea un subdirectorio específico en la cuenta compartida de OneDrive para cada víctima, que luego se utiliza para almacenar comandos de backdoor y cargas útiles adicionales (cargadas por los operadores), resultados de comandos y datos exfiltrados (cargados por el malware). De este modo, varias víctimas pueden compartir la misma cuenta de OneDrive.
La Figura 4 muestra la estructura de la cuenta OneDrive compartida y el directorio de trabajo local, y resume el protocolo de C&C.
Como se muestra en la Figura 4, el operador de OilRig carga comandos de backdoor y cargas útiles adicionales en el directorio específico de la víctima en OneDrive, como archivos con las extensiones .doc y .docx, respectivamente. En el otro extremo del protocolo de C&C, OilBooster carga los resultados de los comandos y los datos filtrados como archivos con las extensiones .xls y .xlsx, respectivamente. Tenga en cuenta que no se trata de archivos originales de Microsoft Office, sino de archivos JSON con valores cifrados XOR y codificados en base64.
La Figura 5 muestra OilBooster generando instancias de dos hilos en un bucle indefinido, durmiendo durante 153.123 milisegundos después de cada iteración:
Ambos hilos interactúan con la cuenta compartida de OneDrive:
- Un subproceso de descarga gestiona la comunicación con el C&C y ejecuta las cargas descargadas.
- Un subproceso de exfiltración extrae datos del directorio de almacenamiento local.
El subproceso de descarga se conecta a la cuenta de OneDrive controlada por el atacante e itera a través de todos los archivos con las extensiones .doc y .docx, que luego se descargan, descifran y analizan para extraer y ejecutar cargas útiles adicionales en el host comprometido. Se utiliza un subdirectorio local llamado items en el directorio de trabajo actual (donde se despliega OilBooster) para almacenar los archivos descargados. Como se muestra en la Figura 6, cada intento de conexión se gestiona en una instancia de hilo independiente, que se lanza una vez cada 53.123 milisegundos.
El hilo de exfiltración itera sobre otro subdirectorio local, denominado tempFiles, y exfiltra su contenido a la cuenta compartida de OneDrive, que se carga allí como archivos individuales con la extensión .xlsx. El directorio de almacenamiento se limpia de esta forma una vez cada 43.123 milisegundos en una instancia de subproceso independiente, como también se muestra en la Figura 6.
Comunicación de red
Para la comunicación de C&C y la exfiltración, OilBooster utiliza la API Microsoft Graph para acceder a la cuenta compartida de OneDrive, utilizando una variedad de peticiones HTTP GET, POST, PUT y DELETE al host graph.microsoft. com a través del puerto estándar 443. Para ser breves, también utilizaremos la API Microsoft Graph para acceder a la cuenta compartida de OneDrive. Para abreviar, también nos referiremos a estas solicitudes como solicitudes API de OneDrive. La comunicación encriptada es facilitada por la biblioteca OpenSSL enlazada estáticamente, que maneja la comunicación SSL.
Para autenticarse con la cuenta de OneDrive, OilBooster primero obtiene el token de acceso OAuth2 de la plataforma de identidad de Microsoft (el servidor de autorización) enviando una solicitud POST con el siguiente cuerpo sobre el puerto 443 a login.microsoftonline.com/common/oauth2/v2.0/token, usando credenciales codificadas:
client_id=860b23a7-d484-481d-9fea-d3e6e129e249 &redirect_uri=https://login.live.com/oauth20_desktop.srf &client_secret=<redacted> &refresh_token=<redacted> &grant_type=refresh_token
OilBooster obtiene así un nuevo token de acceso, que se utilizará en la cabecera Authorization de las siguientes peticiones a la API de OneDrive, junto con un nuevo token de actualización. OilBooster también dispone de un canal de reserva para solicitar un nuevo token de actualización a su servidor de C&C tras 10 conexiones consecutivas sin éxito al servidor de OneDrive. Como se muestra en la Figura 7, el nuevo token puede ser adquirido mediante el envío de una simple solicitud HTTP GET en el puerto 80 a host1[.]com/rt.ovf (un sitio web legítimo, probablemente comprometido), que debe ser seguido por el nuevo token de actualización en texto claro en la respuesta HTTP.
Las distintas conexiones de red realizadas por OilBooster se resumen en Figura 8.
Bucle downloader
En el bucle downloader, OilBooster se conecta repetidamente a la cuenta compartida de OneDrive para obtener una lista de archivos con las extensiones .docx y .doc en el subdirectorio específico de la víctima denominado <victimID>/items/ enviando una solicitud HTTP GET a través del puerto 443 a esta URL:
graph.microsoft.com/v1.0/me/drive/root:/<victimID>/items:/children?$filter=endsWith(name,'.doc')%20or%20endsWith(name,'.docx')&$select=id,name,file
Si la conexión no tiene éxito (el estado de respuesta HTTP_STATUS_DENIED ) después de 10 intentos, OilBooster se conecta a su servidor de C&C de reserva, host1[.]com/rt.ovf, para adquirir un nuevo token de actualización, como se discutió anteriormente.
Alternativamente, si el directorio especificado aún no existe(HTTP_STATUS_NOT_FOUND), OilBooster primero registra a la víctima en la cuenta compartida de OneDrive enviando una solicitud HTTP POST a través del puerto 443 a esta URL: graph.microsoft.com/v1.0/me/drive/items/root:/<victimID>:/children con la cadena JSON {"name": " items", "folder":{}} como cuerpo de la petición, como se muestra en Figura 9. Esta petición crea toda la estructura de directorios <victimID>/items al mismo tiempo, que más tarde será utilizada por los atacantes para almacenar comandos y cargas útiles adicionales camufladas como archivos .doc y .docx.
En conexiones posteriores (con HTTP_STATUS_OK), OilBooster procesa estos archivos para extraer y ejecutar las cargas útiles. OilBooster primero descarga cada archivo de la cuenta de OneDrive y lo elimina de OneDrive después de procesar el archivo.
Finalmente, después de revisar todos los archivos .doc y .docx descargados del subdirectorio de OneDrive, OilBooster registra la última marca de tiempo de conexión (la hora GMT actual) creando un nuevo archivo llamado setting.ini en el subdirectorio OneDrive de la víctima, a través de una solicitud HTTP PUT en el puerto 443 hecha a esta URL: graph.microsoft.com/v1.0/me/drive/root:/<victimID>/setting.ini:/content.
Procesamiento de archivos .doc
Los archivos con extensión. doc descargados de la cuenta compartida de OneDrive son en realidad archivos JSON con comandos cifrados que se ejecutarán en el host comprometido. Una vez que se descarga un archivo <filename>.doc, OilBooster analiza los valores denominados s (parte de la clave de descifrado) y c (comando cifrado) del contenido del archivo. Primero descifra en base64 y luego descifra en XOR el valor c, utilizando una clave que se crea añadiendo los dos últimos caracteres del valor s a los dos últimos caracteres de <nombredearchivo>.
Después del descifrado, OilBooster ejecuta la línea de comandos en un nuevo hilo utilizando la API CreateProcessW, y lee el resultado del comando a través de una tubería sin nombre conectada al proceso. A continuación, OilBooster carga el resultado del comando en la cuenta compartida de OneDrive como un nuevo archivo llamado <nombredearchivo>.x ls enviando una solicitud HTTP PUT a través del puerto 443 a graph.microsoft.com/v1.0/me/drive/root:/<victimID>/items/<nombredearchivo>.xls:/content.
Procesamiento de archivos .docx
Los archivos con la extensión.docx descargados de la cuenta compartida de OneDrive son, de hecho, archivos comprimidos y cifrados con el nombre <nombredearchivo>.<extensiónoriginal>.docx que se descargarán y descomprimirán en el sistema comprometido. OilBooster descarga primero el archivo cifrado en el directorio local denominado <currentdir>\items, utilizando el nombre de archivo completo original.
En el siguiente paso, lee y descifra el contenido del archivo utilizando un cifrado XOR con . <extensión original > como clave de descifrado, y lo suelta en el mismo directorio en un archivo llamado <nombredelarchivo>.<extensiónoriginal>.doc, mientras que el primero se elimina. Por último, OilBooster lee y descomprime con gzip el archivo descifrado, coloca el resultado en el mismo directorio dentro de un archivo llamado <nombredearchivo>.<extensiónoriginal>, y elimina el otro.
Nótese la creación innecesaria de varios archivos en el proceso - esto es típico de OilRig. Anteriormente describimos las ruidosas operaciones del grupo en hosts comprometidos en su campaña Out to Sea..
Bucle de exfiltración
En el bucle de exfiltración, OilBooster realiza un bucle sobre el contenido del directorio local llamado <currentdir>\tempFiles, y sube el contenido de los archivos a la carpeta de la víctima en la cuenta compartida de OneDrive. Cada archivo se procesa de la siguiente manera
- OilBooster gzip comprime el archivo original <nombredearchivo> . <extensiónoriginal> y escribe el resultado en un archivo llamado <nombredearchivo>.<extensiónoriginal>.xlsx en el mismo directorio.
- A continuación, cifra el archivo comprimido utilizando un cifrado XOR y .<extensión original> como clave. Si no hay extensión de archivo, se utiliza 4cx como clave por defecto.
Por último, el archivo cifrado se carga en la cuenta de OneDrive y se elimina el archivo local.
downloader ODAgent: El precursor de OilBooster
ODAgent es una aplicación C#/.NET que utiliza la API Microsoft Graph para acceder a una cuenta de OneDrive controlada por el atacante para la comunicación y exfiltración de C&C. En resumen, ODAgent es un precursor C#/.NET de OilBooster. Al igual que OilBooster, ODAgent se conecta repetidamente a la cuenta compartida de OneDrive y lista el contenido de la carpeta específica de la víctima para obtener cargas útiles adicionales y comandos de backdoor.
Como se muestra en la Figura 10, ODAgent analiza los metadatos de cada archivo remoto. A continuación, utiliza el valor de la clave mimeType asociada al archivo para distinguir entre los comandos backdoor (formateados como archivos JSON) y las cargas útiles cifradas, a diferencia de OilBooster, que utiliza las extensiones de archivo para esa distinción. Tras procesar un archivo localmente, ODAgent elimina el original del directorio remoto de OneDrive a través de la API de OneDrive.
Si el archivo descargado es un archivo JSON, ODAgent analiza los argumentos a1 (ID de comando), a2 (comando backdoor cifrado) y a3 (secreto). Primero obtiene la clave de sesión XORando el secreto proporcionado con el valor codificado 15a49w@]. A continuación, descodifica en base64 y descifra por XOR el comando backdoor utilizando esta clave de sesión. La tabla 3 lista todos los comandos backdoor soportados por ODAgent.
Tabla 3. Comandos backdoor soportados por ODAgent Comandos backdoor soportados por ODAgent
Backdoor command |
Description |
odt> |
Returns the path to the current working directory. |
dly><delaytime> |
Configures the number of seconds to wait after each connection to <delaytime>. |
<commandline> |
Executes the specified <commandline> via the native API and returns the command output. |
Otros archivos (no JSON) descargados de la cuenta compartida de OneDrive son archivos y cargas útiles adicionales, ambos cifrados. ODAgent XOR descifra estos archivos con la clave codificada 15a49w@], y los suelta en el directorio local <currentdir>\o bajo el mismo nombre de archivo. Si el archivo original tiene una extensión .c, su contenido también se descomprime con gzip (y la extensión se elimina del nombre del archivo).
Al final de cada conexión, ODAgent sube el contenido del directorio local <currentdir>\i al directorio <victimID>/i de la cuenta compartida de OneDrive, conservando los nombres de archivo originales con la extensión .c añadida.
Conclusión
A lo largo de 2022, OilRig desarrolló una serie de nuevos downloaders, todos ellos utilizando una variedad de servicios legítimos de almacenamiento en la nube y de correo electrónico basado en la nube como sus canales de C&C y exfiltración. Estos downloaders se desplegaron exclusivamente contra objetivos en Israel, a menudo contra los mismos objetivos en pocos meses. Dado que todos estos objetivos se vieron afectados anteriormente por otras herramientas de OilRig, llegamos a la conclusión de que OilRig utiliza esta clase de downloaders ligeros pero eficaces como su herramienta preferida para mantener el acceso a las redes de interés.
Estos downloaders comparten similitudes con los backdoors MrPerfectionManager y PowerExchange, otras adiciones recientes al conjunto de herramientas de OilRig que utilizan protocolos de C&C basados en correo electrónico, excepto que SC5k, OilBooster, ODAgent y OilCheck utilizan cuentas de servicios en la nube controladas por el atacante, en lugar de la infraestructura interna de la víctima. Todas estas actividades confirman un cambio continuo a proveedores legítimos de servicios en la nube para la comunicación de C&C, como forma de ocultar la comunicación maliciosa y enmascarar la infraestructura de red del grupo.
Al igual que el resto del conjunto de herramientas de OilRig, estos downloaders no son especialmente sofisticados y, de nuevo, son innecesariamente ruidosos para el sistema. Sin embargo, el continuo desarrollo y prueba de nuevas variantes, la experimentación con varios servicios en la nube y diferentes lenguajes de programación, y la dedicación a volver a comprometer los mismos objetivos una y otra vez, hacen de OilRig un grupo a tener en cuenta.
Para cualquier consulta sobre nuestra investigación publicada en WeLiveSecurity, por favor contáctenos en threatintel@eset.com.
ESET Research ofrece informes privados de inteligencia APT y fuentes de datos. Para cualquier consulta sobre este servicio, visite la página de ESET Threat Intelligence.
IoCs
Archivos
SHA-1 |
Filename |
Detection |
Description |
0F164894DC7D8256B66D0EBAA7AFEDCF5462F881 |
CCLibrary.exe |
MSIL/OilRig.A |
OilRig downloader - SC5k v1. |
2236D4DCF68C65A822FF0A2AD48D4DF99761AD07 |
acrotray.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v1. |
35E0E78EC35B68D3EE1805EECEEA352C5FE62EB6 |
mscom.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v1. |
51B6EC5DE852025F63740826B8EDF1C8D22F9261 |
CCLibrary.exe |
MSIL/OilRig.A |
OilRig downloader - SC5k v1. |
6001A008A3D3A0C672E80960387F4B10C0A7BD9B |
acrotray.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v1. |
7AD4DCDA1C65ACCC9EF1E168162DE7559D2FDF60 |
AdobeCE.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v1. |
BA439D2FC3298675F197C8B17B79F34485271498 |
AGSService.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v1. |
BE9B6ACA8A175DF61F2C75932E029F19789FD7E3 |
CCXProcess.exe |
MSIL/OilRig.A |
OilRig downloader - SC5k v1. |
C04F874430C261AABD413F27953D30303C382953 |
AdobeCE.exe |
MSIL/OilRig.A |
OilRig downloader - SC5k v1. |
C225E0B256EDB9A2EA919BACC62F29319DE6CB11 |
mscom.exe |
MSIL/OilRig.A |
OilRig downloader - SC5k v1. |
E78830384FF14A58DF36303602BC9A2C0334A2A4 |
armsvc.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v1. |
EA8C3E9F418DCF92412EB01FCDCDC81FDD591BF1 |
node.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v1. |
1B2FEDD5F2A37A0152231AE4099A13C8D4B73C9E |
consoleapp.exe |
Win64/OilBooster.A |
OilRig downloader - OilBooster. |
3BF19AE7FB24FCE2509623E7E0D03B5A872456D4 |
owa.service.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v2. |
AEF3140CD0EE6F49BFCC41F086B7051908B91BDD |
owa.service.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v2. |
A56622A6EF926568D0BDD56FEDBFF14BD218AD37 |
owa.service.exe |
MSIL/OilRig.D |
OilRig downloader - SC5k v2. |
AAE958960657C52B848A7377B170886A34F4AE99 |
LinkSync.exe |
MSIL/OilRig.F |
OilRig downloader - SC5k v3. |
8D84D32DF5768B0D4D2AB8B1327C43F17F182001 |
AppLoader.exe |
MSIL/OilRig.M |
OilRig downloader - OilCheck. |
DDF0B7B509B240AAB6D4AB096284A21D9A3CB910 |
CheckUpdate.exe |
MSIL/OilRig.M |
OilRig downloader - OilCheck. |
7E498B3366F54E936CB0AF767BFC3D1F92D80687 |
ODAgent.exe |
MSIL/OilRig.B |
OilRig downloader - ODAgent. |
A97F4B4519947785F66285B546E13E52661A6E6F |
N/A |
MSIL/OilRig.N |
Help utility used by OilRig's OilCheck downloader - CmEx. |
Red
IP |
Domain |
Hosting provider |
First seen |
Details |
188.114.96[.]2 |
host1[.]com |
Cloudflare, Inc. |
2017-11-30 |
A legitimate, likely compromised website misused by OilRig as a fallback C&C server. |
Técnicas ATT&CK de MITRE
Esta tabla se ha elaborado utilizando la versión 14 del marco MITRE ATT&CK.
Tactic |
ID |
Name |
Description |
Resource Development |
Acquire Infrastructure: Domains |
OilRig has registered a domain for use in C&C communications. |
|
Acquire Infrastructure: Server |
OilRig has acquired a server to be used as a backup channel for the OilBooster downloader. |
||
Acquire Infrastructure: Web Services |
OilRig has set up Microsoft Office 365 OneDrive and Outlook accounts, and possibly other Exchange accounts for use in C&C communications. |
||
Develop Capabilities: Malware |
OilRig has developed a variety of custom downloaders for use in its operations: SC5k versions, OilCheck, ODAgent, and OilBooster. |
||
Establish Accounts: Cloud Accounts |
OilRig operators have created new OneDrive accounts for use in their C&C communications. |
||
Establish Accounts: Email Accounts |
OilRig operators have registered new Outlook, and possibly other, email addresses for use in their C&C communications. |
||
Stage Capabilities |
OilRig operators have staged malicious components and backdoor commands in legitimate Microsoft Office 365 OneDrive and Outlook, and other Microsoft Exchange accounts. |
||
Execution |
Command and Scripting Interpreter: Windows Command Shell |
SC5k v1 and v2 use cmd.exe to execute commands on the compromised host. |
|
Native API |
OilBooster uses the CreateProcessW API functions for execution. |
||
Defense Evasion |
Deobfuscate/Decode Files or Information |
OilRig’s downloaders use string stacking to obfuscate embedded strings, and the XOR cipher to encrypt backdoor commands and payloads. |
|
Execution Guardrails |
OilRig’s OilBooster requires an arbitrary command line argument to execute the malicious payload. |
||
Hide Artifacts: Hidden Window |
Upon execution, OilBooster hides its console window. |
||
Indicator Removal: File Deletion |
OilRig’s downloaders delete local files after a successful exfiltration, and delete files or email drafts from the remote cloud service account after these have been processed on the compromised system. |
||
Indirect Command Execution |
SC5k v3 and OilCheck use custom command interpreters to execute files and commands on the compromised system. |
||
Masquerading: Match Legitimate Name or Location |
OilBooster mimics legitimate paths. |
||
Obfuscated Files or Information |
OilRig has used various methods to obfuscate strings and payloads embedded in its downloaders. |
||
Discovery |
System Information Discovery |
OilRig’s downloaders obtain the compromised computer name. |
|
System Owner/User Discovery |
OilRig’s downloaders obtain the victim’s username. |
||
Collection |
Archive Collected Data: Archive via Custom Method |
OilRig’s downloaders gzip compress data before exfiltration. |
|
Data Staged: Local Data Staging |
OilRig’s downloaders create central staging directories for use by other OilRig tools and commands. |
||
Command and Control |
Data Encoding: Standard Encoding |
OilRig’s downloaders base64 decode data before sending it to the C&C server. |
|
Encrypted Channel: Symmetric Cryptography |
OilRig’s downloaders use the XOR cipher to encrypt data in C&C communication. |
||
Fallback Channels |
OilBooster can use a secondary channel to obtain a new refresh token to access the shared OneDrive account. |
||
Ingress Tool Transfer |
OilRig’s downloaders have the capability to download additional files from the C&C server for local execution. |
||
Web Service: Bidirectional Communication |
OilRig’s downloaders use legitimate cloud service providers for C&C communication. |
||
Exfiltration |
Automated Exfiltration |
OilRig’s downloaders automatically exfiltrate staged files to the C&C server. |
|
Exfiltration Over C2 Channel |
OilRig’s downloaders use their C&C channels for exfiltration. |
||
Exfiltration Over Web Service: Exfiltration to Cloud Storage |
OilBooster and ODAgent exfiltrate data to shared OneDrive accounts. |
||
Exfiltration Over Web Service |
SC5k and OilCheck exfiltrate data to shared Exchange and Outlook accounts. |