IBM X-Force descubre una nueva puerta trasera utilizada para atacar a Ucrania

Primer plano de unas manos escribiendo en un teclado, con vista del monitor del ordenador

Autor

Golo Mühr

Malware Reverse Engineer

IBM

IBM X-Force descubrió un conjunto de malware desconocido hasta ahora (Sheriff backdoor) utilizado en un ataque de ciberespionaje contra una entidad del sector de la defensa de Ucrania durante la primera mitad de 2024. El autor de la amenaza utilizó un popular portal de noticias ucraniano, ukr.net, para alojar la puerta trasera Sheriff. La puerta trasera modular puede ejecutar comandos dirigidos por el atacante, recopilar capturas de pantalla y extraer de forma encubierta los datos de la víctima utilizando la API de almacenamiento en la nube de Dropbox. Durante la investigación, X-Force identificó actividad de amenazas similar a CloudWizard APT y Turla (alias ITG12), ambos grupos de amenazas relacionados con Rusia que tenían como objetivo entidades ucranianas.

Conclusiones principales

  • Un novedoso cargador y una puerta trasera modular se utilizaron en un ataque en la primera mitad de 2024 dirigido al sector de defensa de Ucrania.
  • El módulo Sheriff Downloader descarga una carga útil de ukr.net, un popular portal de noticias ucraniano, lo que sugiere que el sitio web puede haberse visto comprometido para facilitar el ataque
  • La puerta trasera utiliza la API de Dropbox para la comunicación de mando y control (C2) para facilitar la exfiltración de datos cifrados
  • Sheriff permite descargar y gestionar varios módulos, incluido uno de captura de pantalla que se descubrió durante la investigación. Los comandos y los valores de configuración se reciben como comentarios en archivos ZIP.
  • X-Force identificó similitudes con CloudWizard APT y Turla (ITG12), grupos de amenazas del nexo ruso que atacan a entidades ucranianas.

Información general técnica

Durante la investigación, X-Force reconstruyó la siguiente cadena de infección:

Gráfico que representa la cadena de infección
Fig. 1: Cadena de infección

Cargador adjunto

La muestra analizada es una DLL x86 que contiene una única exportación denominada "MyFunc". En ella se encuentra una ruta relativa codificada de forma fija al módulo DLL Sheriff Downloader, en un recurso en ruso denominado "LoaderPath". La ruta codificada es

Local\WPnqv0hW\DZtdI.dll

que se concatena con la siguiente ruta: “%USERPROFILE%\AppData\”.

A continuación, la DLL utiliza la API CLRCreateInstance para alojar el Common Language Runtime (CLR) de .NET. La función Loader.MainCycle.Run de la DLL del módulo Sheriff Downloader se ejecuta mediante el método ExecuteInDefaultAppDomain

Ejecución de alojamiento CLR de fragmento de código
Fig. 2: Ejecución del alojamiento CLR

Esta técnica se detalló recientemente en una entrada de blog de X-Force como una técnica de red team.

Deputy Loader también proporciona las rutas de ambas DLL como argumentos separados por punto y coma ("; "). 

Hombre mirando el ordenador

Refuerce su inteligencia de seguridad 


Manténgase a la vanguardia de las amenazas con noticias e información sobre seguridad, IA y mucho más, semanalmente en el boletín Think. 


Módulo Sheriff Downloader

El módulo Sheriff Downloader es una DLL .NET x86 que contiene una biblioteca (dotnetzip.dll) empaquetada en un recurso mediante Fody Costura. 

La clase "MainCycle" contiene la función principal "Run", que comienza recuperando cuatro valores almacenados en los recursos en ruso del binario.

Captura de pantalla de los recursos de Sheriff Downloader
Fig. 3: Recursos de Sheriff Downloader

Con ellos, la muestra intenta descargar un archivo desde

http://ukr[.]net/8V3fDJ0U/RDZXVh

 

en la carpeta

%APPDATA%\Xpgx2dAn\RDZXVh

Si el archivo ya existe, se omite la descarga y el malware actúa únicamente como cargador. 

A continuación, se descifra la carga útil mediante la biblioteca "SymmetricCrypt" implementada de forma personalizada y la contraseña "BS7imxwRXueassn". El algoritmo parece ser idéntico al cifrado AES integrado en .NET (https://gist.github.com/jbtule/4336842#file-aesthenhmac-cs). 

El archivo ZIP resultante se extrae en la memoria, revelando al menos dos archivos que se ordenan por tamaño. Por último, el primer archivo (Sheriff Main Module) se carga de forma reflexiva como un ensamblado .NET, llamando al método "MainClass.Run". El último archivo (Sheriff Init File) se lee línea por línea y se proporciona al ensamblado en ejecución como un argumento de objeto de lista, junto con las rutas de la DLL Deputy Loader, la DLL Sheriff Downloader y la carga útil descargada "RDZXVh".

Posible compromiso de ukr.net

La URL de descarga suscita inquietudes de inmediato, ya que ukr.net ocupa el cuarto lugar entre los sitios web más visitados de Ucrania, según Semrush. Ukr.net también es un proveedor de servicios de internet (ISP), un popular proveedor de correo electrónico y aloja uno de los portales de noticias más grandes de Ucrania, con más de 100 millones de visitas al mes. Aunque ukr.net parece ofrecer servicios de alojamiento, los usuarios no suelen poder alojar archivos en directorios raíz arbitrarios del servidor web principal. Por tanto, es probable que el actor amenazas haya comprometido ukr.net para instalar la carga útil cifrada de la puerta trasera Sheriff a principios de marzo de 2024. 

En el momento de la investigación, la carga útil no estaba disponible y X-Force no pudo identificar otras cargas útiles maliciosas alojadas en ukr.net. Es posible que el acceso del actor de amenazas fuera limitado en alcance, solo disponible por un corto periodo de tiempo, o que se usara intencionadamente con moderación. El acceso de un actor de amenazas al portal de noticias más grande de Ucrania le permitiría llevar a cabo una serie de ciberataques de gran impacto y operar con mayor ocultación. En este incidente concreto, el actor de amenazas pudo haber abusado del dominio de confianza para instalar malware sin levantar sospechas. 

Módulo principal de Sheriff

El módulo principal Sheriff es una DLL x86 .NET que, a su vez, contiene una biblioteca (dotnetzip.dll) empaquetada en un recurso mediante Costura.

Inicialización y configuración

Al ejecutarse por primera vez, la función "Run" de la clase principal lee los argumentos recibidos como una lista del archivo de inicialización de Sheriff. Asigna los siguientes valores:

_symKey: "tkE7BqJ45HKwOes"
ConfName: "mInv.cfg"
ModulsFolder: "DxyVS1"
UploadLocalFolder: "gyTufW"
_defaultZipExt: "d7r"
refreshToken:
"sPfSlLkE3UcAAAAAAAAAAeUXe9lToajHac8y3w_9mmDptZKSU_Q0wdd4XSCZxfaU:yfw5e008wxkqbxg:ax6a2el8rf4cjo0"
_guid: "W5d2090860fd54c17809fb4da0b42b34d.test"
_asymPrivKey:
"MIICXAIBAAKBgQCuqWqUX60ArocW6V8zJN0vZ0CRAiY2jL+Ohjunh3p7wgac57Lwrmj0NIK80eLAO1zBIWEJZHH8vgapuLbv857SdG0Yw9iyGT2TLIIZH3ITrruJlxj62gMfKml2vRGK1jB4pnwZVTjc3zTO4Oko3Svy3PilTdyGMCp9FWf/ytex9QIDAQABAoGARTT79i6y7kI5ZOqzviAtREs1Wj/vxE2g2Wh22rrj3YXT+PgV/ygcjicAZrEDmAftiNkhCgey4uKo4Tc/xXRSyYlm8U2tNdv2YfC0mL04kUWRowoHZn6iTsm3D60ECSTfi9/WvkJEu2t8ufglGrWKd1atqmpbNl7BrA/+R9EDyUECQQDIWP1jxv6s2wueSov8T1J3tgQJJaazLYImdvCRLjUQ0iTpw12VfCkipATwnkST4NkGgGnAb6NxB4N9Qc5qOPb3AkEA3y3emkmA28f45TiP9WFjsqe+YYZUkL5zuotGP+IrkYvniefqCJSAyWtaN0gGQGjJEUEsVL5tIzewY9Z1/4AHcwJAc+2aYbvp7dep92QncE3t6Ds4Rpq0xQVWRC+asEdOiXcvyNw1MKRxoQvLl/fcsrzul6aCismOh37ThQ0pBaoErQJAdn2ZARtjUczjBXg5XlM9pn3O42J5hXvIX9NQEdzXuuenn51EsRd/JPFdLZqMzyeTERkkGz4bHaaUfP1BGszzpwJBAKF312U3h7fpzpMC10jI8F0M5aEOCgSax6EpW3aJEc6WZ7z4hvnZMpxtuGaEJE98kzpYuzzBJL+qOjmeCBoVS8I="
_asymPubKey:
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBT+7FB360l8kvgAmCUKYjWxcybjTJiq81x0s56g+rxdvxHOlayuYhSb7xJ2JKv/1k1LtnAT9rfhPLJQPvwMsVeeFUvIpc5+ovrIi3Ow0n8n3je1zSqpFRK488XZ9NMDkVSLLQKNcgOYox0eSXPmnTzvNffaFGVnm1EuimsnSjpQIDAQAB"

La siguiente tabla enumera una explicación para cada uno de los argumentos:

Nombre

Explicación

  
_symKeyLa clave AES utilizada para descifrar la configuración

ConfName

Nombre de archivo del archivo de configuración

ModulsFolder

Nombre de la carpeta utilizada para descargar más módulos

UploadLocalFolder

Nombre de la carpeta utilizada para exfiltrar datos

_defaultZipExt

Extensión predeterminada utilizada para identificar archivos ZIP

RefreshToken

Token de actualización de OAuth para la autenticación con la API de Dropbox

_guid

Cadena utilizada junto con el número de serie como ID de víctima

_asymPrivKey

Clave privada RSA utilizada para descifrar los módulos descargados

_asymPubKey

Clave pública RSA utilizada para cifrar datos antes de la exfiltración

Las claves asimétricas provienen de dos conjuntos de claves diferentes, lo que impidió descifrar los datos de exfiltración durante la investigación. 

A continuación, Sheriff crea las carpetas locales de carga y descarga. Si no está presente, el archivo de configuración mlvn.cfg se escribe cuando se ejecuta por primera vez el módulo principal de Sheriff. Después de eso, se puede leer y modificar para mantener configuraciones separadas para cada módulo. El archivo de configuración descifrado contiene los siguientes valores para el módulo "principal", separados por un punto y coma (";"):

  1. RefreshToken
  2. Tamaño máximo de archivo ZIP para datos exfiltrados
  3. Tamaño máximo de archivo para datos exfiltrados antes de la compresión
  4. URL utilizada para recuperar la dirección IP pública de la víctima
  5. Intervalo mínimo (ms) utilizado para descargar y cargar archivos
  6. Intervalo máximo (ms) utilizado para descargar y cargar archivos
[main];sPfSlLkE3UcAAAAAAAAAAeUXe9lToajHac8y3w_9mmDptZKSU_Q0wdd4XSCZxfaU:yfw5e008wxkqbxg:ax6a2el8rf4cjo0;220200960;209715200;https://api.ipify.org;30000;30000
[key];1024

Durante la investigación no se encontró ningún módulo "clave". Este módulo podría haber sido el responsable de establecer la persistencia del cargador secundario DLL, que escribe la siguiente clave de registro:

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\MicrosoftEdgeAutoLaunch_<REDACTED>

La clave contiene el comando para ejecutar la exportación MyFunc del Deputy Loader:

"C:\WINDOWS\SysWOW64\rundll32.exe" "<LOCAL_APPDATA>\GRPRhuI4\T5CBy.dll",MyFunc

Dropbox C2

Las comunicaciones de comando y control se gestionan a través de la clase "DbApiV2", que utiliza la API de Dropbox para crear, buscar, descargar, cargar, mover y analizar archivos y carpetas remotos en Dropbox. Utiliza el token de actualización para obtener un token de acceso temporal para la autenticación a través de la siguiente URL:

https://api.dropbox.com/oauth2/token

Estos endpoints de la API se utilizan para gestionar archivos y carpetas remotos:

https://content.dropboxapi.com/2/files/upload
https://content.dropboxapi.com/2/files/upload_session/start
https://content.dropboxapi.com/2/files/upload_session/finish
https://content.dropboxapi.com/2/files/upload_session/append_v2
https://content.dropboxapi.com/2/files/download
https://api.dropboxapi.com/2/files/delete
https://api.dropboxapi.com/2/files/create_folder
https://api.dropboxapi.com/2/files/list_folder

Antes de intentar descargar archivos, el módulo principal de Sheriff carga un mensaje de registro que contiene la dirección IP pública de la víctima y la lista de módulos cargados. El registro se cifra por XOR usando el ID de la víctima, que consiste en el GUID (de los argumentos o generados aleatoriamente) y el número de serie. Tras el cifrado, el registro se carga en una carpeta de Dropbox cuyo nombre coincide con el ID de la víctima. 

Todos los archivos se recuperan de la carpeta de Dropbox en /<victim_id>/Dow/ y se descargan en la "ModulsFolder" local codificada como "/DxyVS1". Después de la descarga, todos los archivos se eliminan instantáneamente de Dropbox. A continuación, hablaremos de cómo el módulo principal gestiona los archivos descargados. 

El proceso de carga comienza enumerando todos los archivos locales en "UploadLocalFolder", en este caso codificado como "/gyTufW". Dependiendo de sus extensiones, se clasifican en tres categorías:

  1. Los archivos que utilizan el "_defaultZipExt" .d7r codificado de forma fija ya están comprimidos;
  2. Los archivos sin extensión ya están cifrados y listos para cargarse; y,
  3. Todos los demás archivos siguen estando en texto sin cifrar.

La función "PreparingForUpload" comprimirá todos los archivos de texto sin cifrar en un nuevo archivo ZIP. Todos los archivos ZIP se cifran posteriormente utilizando una clave AES generada aleatoriamente que, a su vez, se cifra utilizando la clave RSA pública y se concatena con el archivo cifrado. Durante la ejecución, la función elimina todos los archivos residuales de la carpeta hasta que solo quedan archivos totalmente comprimidos y cifrados. A continuación, se cargan en la carpeta de Dropbox en /<victim_id>/Up/ mientras se eliminan localmente. 

Tanto la función de carga como la de descarga se ejecutan de forma asíncrona y se ejecutan con un temporizador codificado a 30 segundos en la muestra analizada. 

En el momento de la investigación, la cuenta de Dropbox ya no albergaba ningún archivo, como indica el uso del espacio:

{
  "used": 0,
  "allocation": {
    ".tag": "individual",
    "allocated": 2147483648
  }
}

La cuenta de Dropbox asociada muestra la siguiente información:

{
  "account_id": "dbid:AABLMHYTVufS0NLF_cnID1nm_-R9m1aj9ds",
  "name": {
    "given_name": "Poco",
    "surname": "Poco",
    "familiar_name": "Poco",
    "display_name": "Poco Poco",
    "abbreviated_name": "PP"
  },
  "email": "poco.m5.miui.13@gmail.com",
  "email_verified": true,
  "disabled": false,
  "country": "DE",
  "locale": "ru",
  "referral_link": "https://www.dropbox.com/referrals/AABf13Qzpq31wbsquudl7xfwagHIa8GgdZg?src=app9-5618657",
  "is_paired": false,
  "account_type": {
    ".tag": "basic"
  },
  "root_info": {
    ".tag": "user",
    "root_namespace_id": "2199102147",
    "home_namespace_id": "2199102147"
  }
}

Módulos y comandos de Sheriff

La tarea del módulo principal de Sheriff es actuar como orquestador para lanzar y gestionar diferentes módulos. Estos módulos se pueden descargar a través del proceso descrito anteriormente, uno de los cuales se descubrió durante la investigación ("./DxyVS1/dowtuxZml"). 

La función "LoadModuls" itera a través de los archivos descargados, y los descifra utilizando la clave privada RSA y la clave AES resultante. El archivo ZIP descifrado contiene una cadena de comentarios, que se utiliza para analizar el módulo:

Un encabezado PK-ZIP que contiene un comentario al final del archivo
Fig. 4: Un encabezado PK-ZIP que contiene un comentario al final del archivo

El comentario se divide en varios valores mediante el símbolo de barra vertical ("|") y, a su vez, en subvalores separados por punto y coma (";"). 

D|scr;ScreenShot.Shot;LoadDll;KillDll;ConfDll|0|0;None

La siguiente es una descripción de los valores después del análisis:

  1. Comando: "D"
  2. ModInfo (parte de un objeto que mantiene información sobre cada módulo durante la ejecución del módulo principal)
    1. Marcador: "scr"
    2. NameSpace: "ScreenShot.Shot"
    3. LoadMethod: "LoadDll"
    4. KillMethod: "KillDll"
    5. ConfigMethod: "ConfDll"
  3. On/Off (si se debe eliminar el archivo original)
  4. NeedZip (si el módulo requiere que sus resultados se compriman con el módulo principal); Compression (el método de compresión deseado; el predeterminado es Deflate)

Sheriff acepta los siguientes comandos:

Comando y descripción

  • D: Analiza la información ModInfo del comentario y, en función del valor On/Off, elimina el archivo original después de cargar el ensamblado .NET. Para cargar o eliminar el módulo (si ya está cargado), utiliza los valores "LoadMethod" y "KillMethod" respectivamente. El "LoadMethod" toma el "Marker", el "UploadLocalFolder" y el "_defaultZipExt" como argumentos.
  • T: Analiza el ModInfo del comentario, elimina el archivo original y ejecuta el "LoadMethod". El "LoadMethod" toma el "Marker", el "UploadLocalFolder", el "LoadMethod", el "KillMethod" y el "ConfigMethod" como argumentos.
  • E: Solo acepta un único valor (argumento de comando) después del primer símbolo de barra vertical ("|") y ejecuta la función "RunExeInMemory". El archivo del archivo ZIP se coloca en una ruta temporal como %TMP%\<number_of_ticks>.exe y se ejecuta como un proceso nuevo con el argumento si se proporciona. El archivo eliminado y el archivo ZIP se eliminan posteriormente.
  • C: Analiza un archivo de texto dentro del ZIP, línea por línea, que puede contener una lista de comandos personalizados (véase la segunda tabla a continuación).
  • R: Actualiza el módulo principal renombrando el archivo original y escribiendo la carga útil descargada en la ruta original. En función del resultado, se mostrará uno de los dos mensajes de estado: "MainModule was successfully changed" o "MainModule was not changed".

 La segunda tabla detalla una lista de comandos que pueden leerse como un archivo de texto usando el comando "C":

Patrón de comandos

Descripción

(tree)

<path_1>

<path_2>

...

Carga archivos desde una lista de rutas especificadas.

(treedel)

<path_1>

<path_2>

...

Elimina archivos de una lista de rutas especificadas y carga un mensaje de registro “Files were deleted: <number_of_files>”

(cmd);
value1;
value2;...

Ejecuta cada valor como un comando independiente en un nuevo proceso "cmd.exe /c <value> ", lee stdout y stderr, y lo carga como un archivo cifrado RSA en Dropbox. 

[modname];
value1;
value2;...

Inserte la cadena completa en el archivo de configuración. Tenga en cuenta que el "modname" es idéntico al marcador de un módulo.

{modname};
value1;
value2;...

Si el “modname” es “Suicide”, Sheriff matará todos los módulos, eliminará todos los archivos y ejecutará un script de limpieza. Si el “modname” coincide con un módulo cargado, invocará el “KillMethod” y eliminará su archivo correspondiente. 

Fragmento de código que muestra el comando "suicide" del módulo principal del Sheriff
Fig. 5: Comando "suicide" del módulo principal del sheriff

Una vez cargados todos los módulos, la función "Run" del módulo principal recorrerá cada módulo cargado e invocará "ConfigMethod", proporcionando la configuración del módulo correspondiente, tal y como se ha analizado en el archivo de configuración original. Es probable que esto permita a los operadores actualizar fácilmente las configuraciones de varios módulos mientras están en ejecución. 

Módulo de captura de pantalla

Uno de los módulos recuperados durante la investigación es el módulo de capturas de pantalla. Cuando se carga el módulo, recibe los siguientes argumentos del módulo principal:

  1. marker
  2. uploadPath
  3. defaultZip

El módulo aún contiene un valor predeterminado "tgr" para "defaultZip", que se sobrescribe en ese punto. Utilizando el "ConfigMethod" del módulo, el módulo principal también puede especificar los siguientes valores de configuración:

  1. ImageCount (número de capturas de pantalla tomadas hasta que se comprimen). Valor predeterminado = 25
  2. TimerCount (intervalo del temporizador, con qué frecuencia se puede tomar una captura de pantalla). Valor predeterminado = 5 segundos
  3. DefiniteShot (tiempo máximo hasta que se toma definitivamente una captura de pantalla). Valor predeterminado = 15 minutos
  4. BmpQuality (calidad de la captura de pantalla/parámetro de compresión entre 0 y 100). Valor predeterminado = 25
  5. WindowsTitle (lista separada por comas de títulos de ventana que están específicamente destinados a capturas de pantalla).

Una vez iniciado, el módulo comprobará cada 5 segundos (TimerCount) si puede realizar una captura de pantalla. Para hacer una captura de pantalla, debe cumplirse una de las siguientes condiciones:

  1. Que hayan pasado más de 15 minutos desde la última captura de pantalla (DefiniteShot);
  2. Que la ventana en primer plano sea diferente a la de la última captura realizada; o,
  3. Que el título de la ventana en primer plano coincida con cualquiera de las cadenas de la lista "WindowsTitle".

Durante cada captura, si el número de capturas alcanza "ImageCount", las capturas de pantalla existentes se añaden a un archivo ZIP con formato {0:yyyy.MM.dd_HH.mm.ss}.jpg utilizando el objeto "DateTime" de la captura de pantalla.

El nombre del archivo ZIP tiene el formato {0:yyyy.MM.dd_HH.mm.ss.ffff}.<defaultZip> utilizando el objeto "DateTime" en el que se crea el ZIP. El archivo ZIP también recibe un comentario que consiste en el marcador del módulo ("scr"), como se muestra en la captura de pantalla siguiente.

Módulo de captura de pantalla de Sheriff
Fig. 6: Módulo de captura de pantalla de Sheriff

Función Suicide

El módulo principal de Sheriff también contiene una función Suicide que se puede invocar de forma remota. Esta función detiene toda la actividad de descarga y carga, y luego recorre cada módulo para invocar el "KillMethod" correspondiente. A continuación, procede a eliminar todo el directorio que contiene el módulo principal y la carpeta global de Dropbox utilizada para la comunicación C2. A continuación, la función busca la ruta de la DLL del cargador de primera etapa (cargador adjunto) dentro de las subclaves del registro a continuación:

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Cualquier subclave que contenga la ruta se elimina posteriormente. 

Por último, Sheriff inserta las rutas del "cargador" (módulo Sheriff Downloader) y "loadDll" (cargador adjunto) en el siguiente archivo BAT, lo coloca en %TMP% y lo ejecuta.

SET loader="<loader.path>"
SET loadDll="<loadDll.path>"
:loop
IF EXIST %loader% del /F %loader%
IF EXIST %loader% goto loop
:loop1
IF EXIST %loadDll% del /F %loadDll%
IF EXIST %loadDll% goto loop1
rmdir /s /q "<loader.directory_name>"
rmdir /s /q "<loadDll.directory_name>"
(goto) 2>nul & del "%~f0"

El script anterior eliminará los archivos de los módulos Sheriff Downloader y Deputy Loader, así como sus respectivos directorios, antes de eliminarse a sí mismo. 

Técnicas similares de actores de amenazas

Durante el análisis, varios indicadores iniciales apuntan a actores de amenazas con base en Rusia, entre ellos:

  • Deputy Loader y Sheriff Downloader contienen recursos en ruso;
  • La cuenta de Dropbox utiliza la configuración regional rusa; y
  • Se dirigen a Ucrania.

X-Force considera que la puerta trasera Sheriff probablemente se diseñó para el ciberespionaje y la recopilación de información, más que para cometer delitos cibernéticos con fines económicos. El malware se centra en exfiltrar datos y tomar capturas de pantalla, manteniendo un perfil bajo diseñado para compromisos prolongados. Se desarrolló con la clara intención de mantenerse lo más encubierta posible, asegurando que la comunicación y la mayoría de los artefactos que se depositan en el disco permanezcan cifrados. La comunicación en la red se mantiene sigilosa mediante el abuso de la API legítima de Dropbox, así como de ukr.net, un sitio web popular en Ucrania, que se utiliza para escenificar el malware. Sheriff también implementa varias funciones autodestructivas para borrar los rastros después de la ejecución. Por último, el código bien estructurado, la estructura de carpetas, la implementación modular, la información de registro y la amplia funcionalidad y configurabilidad indican un mayor nivel de sofisticación, como cabría esperar de un grupo patrocinado por el Estado. 

La investigación también ha revelado varios solapamientos menores con campañas anteriormente documentadas y atribuidas al conocido grupo de actores de amenazas rusos Turla (también conocido como ITG12). Por ejemplo, la puerta trasera Kazuar .NET del grupo presenta varias similitudes con Sheriff, entre ellas:

  • Kazuar también mantiene una estructura de carpetas un poco similar;
  • Aunque es diferente, Kazuar también genera un GUID y utiliza el número de serie de la víctima;
  • Kazuar también implementa información de registro y utiliza AES y RSA cifrado;
  • Kazuar también es modular, aunque parece referirse a “plugins” en lugar de módulos;
  • Kazuar también utiliza valores de intervalo máximos y mínimos; y,
  • Kazuar admite comandos similares a Sheriff, incluidos "Suicide", captura de pantalla, ejecución de línea de comandos, ejecución binaria, eliminación de archivos, exfiltración y actualización automática.

Cabe destacar que la puerta trasera Crutch, atribuida a Turla por ESET, también utiliza la API de Dropbox para la comunicación C2, de forma similar a Sheriff, aunque no está basada en .NET.

Investigaciones posteriores también revelaron coincidencias entre Sheriff y la puerta trasera Prikormka de la operación Groundbait, entre ellas:

  • Puerta trasera modular con un módulo de descarga, núcleo y captura de pantalla;
  • Prikormka también mantiene dos carpetas en %USERPROFILE%\AppData\Local\ para cargas y descargas;
  • Prikormka también utiliza extensiones personalizadas para identificar los archivos que deben cifrarse y comprimirse antes de su exfiltración;
  • El módulo de captura de pantalla de Prikormka utilizaba ".tgz" como parte de la extensión personalizada, mientras que el módulo de captura de pantalla de Sheriff utilizaba ".tgr"; y
  • Los módulos Prikormka enumeran "Cycle" como una de las funciones de exportación requeridas, que es similar a la clase "MainCycle" utilizada por el módulo Sheriff Downloader.

Kaspersky Labs documentó posteriormente fuertes superposiciones entre Prikormka y CloudWizard APT. X-Force también notó varias similitudes entre Sheriff y CloudWizard, incluyendo:

  • Puerta trasera modular con un módulo principal que gestiona la configuración y C2 para cada módulo;
  • CloudWizard también utiliza AES y RSA para cifrar/descifrar archivos ZIP antes/después de cargarlos y descargarlos;
  • CloudWizard también es compatible con Dropbox como mecanismo C2 con autenticación OAuth;
  • Tanto CloudWizard como Sheriff contienen una función “GetSettings”/”get_Settings” para recuperar la configuración de cada módulo;
  • Tanto el módulo de captura de pantalla de CloudWizard como el de Sheriff admiten un argumento "WindowsTitle", para compararlo con el título de la ventana actual antes de tomar una captura de pantalla;
  • CloudWizard, Prikormka y Sheriff comparten el mismo intervalo de captura de pantalla de 15 minutos; y,
  • Los módulos de listado de archivos de CloudWizard y Prikormka se denominan "tree", que es el nombre que Sheriff utiliza para la exfiltración de una lista de archivos.

X-Force cree que la puerta trasera de Sheriff se utilizó como parte de una operación selectiva. Es posible que el malware esté relacionado con el APT CloudWizard, alineado con Rusia, que se sabe que ha atacado entidades en Ucrania en el pasado. Existe una menor posibilidad de conexión con el clúster de amenazas Turla (ITG12) debido a superposiciones menores en TTP y malware. 

Conclusión

La puerta trasera de Sheriff y su uso en las operaciones de ciberespionaje detalladas en este informe presenta varias características interesantes. En primer lugar, la puerta trasera Sheriff es una herramienta de espionaje modular bien diseñada que permite el acceso a largo plazo al entorno de la víctima. En segundo lugar, su estructura modular y sus características de autodestrucción ponen de manifiesto la preocupación de los desarrolladores por la detección y el análisis de sus herramientas. Además, la capacidad de escenificar el malware en ukr.net también es indicativa de las capacidades avanzadas del actor de amenazas.

Recomendaciones

X-Force recomienda que las personas y entidades asociadas al gobierno, el ejército o el sector de defensa de Ucrania permanezcan en un estado elevado de seguridad defensiva y que:

  • Busque tráfico inusual con servicios de resolución de IP públicas como https://api.ipify[.]org
  • Busque tráfico inusual que se comunique con la API de Dropbox:
    • https://api.dropboxapi.com
    • https://content.dropboxapi.com
  • Instale y configure el software de seguridad de endpoints.
  • Actualice las normas pertinentes de monitorización de la seguridad de la red.

Apéndice técnico

Con el fin de que la atribución sea más transparente y de fomentar una mayor colaboración entre los investigadores, IBM X-Force subió las muestras a VirusTotal. 

Indicador

Tipo de indicador

Contexto

60f20be29cafea3402c8cb396
c1cb43ef21ec1b401ad1d4239c0
a990670daa8d

SHA256

Módulo principal cifrado "RDZxvh"

86b8d48df5787d57836276219
a9e3dbc0d7e56d68cf99b514a
ca55564f818182

SHA256

Archivo de inicialización de Sheriff “n5K3B”

8832fb7ef434a56f9d151d8e1eb
da94544a90a420fee0820b5b0
8d95224763f5

SHA256

Cargador adjunto “t5cby.dll”

8c22326d08a6334181c06e25c6
df35032cd6916cfbe692d66fc8d
b3aa8b70e42

SHA256

Módulo de captura de pantalla cifrada “dowtuxZmI”

8d4df90f4e7fc6d9d08d4b5a27
2037ee7c565def9df180ad1eb08
efe8d357bd4

SHA256

Módulo principal de Sheriff “1Pr3v”

92b9ef4e81610487ea9df255fa83
a8e6c3bd2726ccdb909988e8c8
b919506289

SHA256

Archivo de configuración de Sheriff "mInv.cfg"

e2b892533bd4135004778783b95
e833fca6ee740bf0a1cb2d5d1a44b
93fd7962

SHA256

Archivo ZIP del módulo de capturas de pantalla desencriptado

ec84ae8db92a88109bc68baefc3b
0a9de8579129d7a5a431072f09fdc
b8c7862

SHA256

Módulo de captura de pantalla del Sheriff "NeXSv"

f9e237a939b998fe071e0101904f7d
10cde6ce7b1cb4df1e7d345094af6b
048e

SHA256

Módulo Sheriff Downloader "DZtdI.dll"

http://ukr[.]net/8V3fDJ0U/RDZXV

URL

URL de descarga de Sheriff. Tenga en cuenta que ukr.net es un sitio web legítimo.

https://api.ipify[.]org

URL

Servicio legítimo utilizado para determinar la dirección IP pública, frecuentemente utilizado de forma indebida por los autores de malware.

IBM® X-Force Premier Threat Intelligence ahora está integrado con OpenCTI, brindando inteligencia de amenazas procesable sobre esta actividad de amenazas y más. Acceda a conocimientos sobre los actores de amenazas, el malware y los riesgos del sector. Instale OpenCTI Connector para mejorar la detección y la respuesta, y refuerce su ciberseguridad con la experiencia de IBM X-Force. Manténgase a la vanguardia, integre hoy mismo.

Mixture of Experts | 12 de diciembre, episodio 85

Descifrar la IA: resumen semanal de noticias

Únase a nuestro panel de ingenieros, investigadores, responsables de producto y otros profesionales de talla mundial que se abren paso entre el bullicio de la IA para ofrecerle las últimas noticias y conocimientos al respecto.

Soluciones relacionadas
Servicios de respuesta a incidentes

Mejore el programa de respuesta ante incidentes de su organización, minimice el impacto de una vulneración y experimente una respuesta rápida a los incidentes de ciberseguridad

Explore los servicios de respuesta a incidentes
Soluciones de detección y respuesta a amenazas

Utilice las soluciones de detección y respuesta a amenazas de IBM para reforzar su seguridad y acelerar la detección de amenazas.

Explore las soluciones de detección de amenazas
IBM QRadar SOAR Solutions

Optimice los procesos de toma de decisiones, mejore la eficiencia de los SOC y acelere la respuesta ante incidentes con una solución de orquestación y automatización inteligente.

Explore QRadar SOAR
Dé el siguiente paso

Mejore el programa de respuesta ante incidentes de su organización, minimice el impacto de una vulneración y experimente una respuesta rápida a los incidentes de ciberseguridad

  1. Explore los servicios de respuesta a incidentes
  2. Más información sobre IBM X-Force