04 de junio de 2025

De código abierto a potencial amenaza: análisis de la evolución de Chaos RAT

Autores: Santiago Pontiroli, Gabor Molnar, Kirill Antonenko

Resumen

  • La Unidad de investigación de amenazas (TRU) de Acronis ha identificado nuevas variantes de Chaos RAT, una familia de malware conocida, en recientes ataques a sistemas Linux y Windows.
  • Chaos RAT es una herramienta de administración remota (RAT) de código abierto que se detectó por primera vez en 2022. Evolucionó bastante en 2024, y TRU ha descubierto nuevas muestras en 2025.
  • Los investigadores de TRU descubrieron una vulnerabilidad crítica en el panel web de Chaos RAT que permite a los atacantes ejecutar código remoto en el servidor. Parece ser que esta última muestra de Chaos RAT tenía como finalidad atraer a las víctimas para que descargaran una utilidad de solución de problemas de red para entornos Linux.
  • Desarrollado en Golang, Chaos RAT ofrece compatibilidad multiplataforma con sistemas Windows y Linux, otro claro ejemplo de cómo las herramientas legítimas pueden contener vulnerabilidades y de cómo los ciberdelincuentes pueden sacar provecho de ellas.
  • Si bien su uso general sigue siendo limitado, muestras recientes confirman que Chaos RAT sigue activo. Su bajo perfil de detección genera oportunidades para el espionaje, la exfiltración de datos y el establecimiento de bases para ransomware y otras operaciones posteriores a la vulneración.
  • En este análisis técnico, el equipo de Acronis TRU se centra en una variante de Linux y comparte estrategias prácticas de detección, entre las que se incluyen las reglas de YARA, los indicadores de compromiso y algunos consejos para detectar amenazas mediante EDR y defenderse de ellas.

Introducción

Chaos RAT es una herramienta de administración remota (RAT) de código abierto escrita en Golang, que ofrece soporte multiplataforma para sistemas Windows y Linux. Inspirado en marcos populares como Cobalt Strike y Sliver, Chaos RAT proporciona un panel de administración en el que los usuarios pueden crear cargas útiles, establecer sesiones y controlar las máquinas comprometidas. Aunque el malware basado en Golang tiende a ser más lento y de mayor tamaño en comparación con el escrito en C++ u otros lenguajes de programación habituales, se beneficia de las funciones de compilación cruzada de Golang, lo que se traduce en un menor tiempo de desarrollo y una mayor flexibilidad.

Acronis
Figure 1

Diseñado originalmente como una herramienta legítima para la administración remota, la naturaleza de código abierto de Chaos RAT ha despertado el interés de los ciberdelincuentes, que lo están empezando a utilizar con fines maliciosos. Aunque su desarrollo empezó en 2017, no fue hasta noviembre de 2022 cuando se observó por primera vez que Chaos RAT se utilizó en un ataque real. Desde entonces, han seguido apareciendo variantes de Linux en circulación, utilizadas principalmente en campañas de minería de criptomonedas. En este análisis se profundiza en la arquitectura de Chaos RAT, su uso en ataques activos y sus métodos de detección y mitigación.

Anatomía de Chaos RAT: código, funciones y comunicación

Entrega

Chaos RAT suele llegar a las víctimas a través de mensajes de correo electrónico de phishing que contienen enlaces o archivos adjuntos maliciosos. Las muestras iniciales desplegaban un script malicioso (no relacionado con la herramienta de administración remota RAT) diseñado para modificar el archivo /etc/crontab, un planificador de tareas que los ciberdelincuentes suelen utilizar para la persistencia en sus ataques. Este mecanismo permite al atacante actualizar o cambiar la carga útil sin tener que volver a tocar el sistema de destino, ya que se obtiene de forma remota cada vez que se ejecuta un "cron job" (una tarea programada que se ejecuta de forma automática a intervalos regulares). Las primeras campañas utilizaron esta técnica para distribuir mineros de criptomonedas y Chaos RAT por separado, lo que indica que Chaos se empleaba principalmente para reconocer y recopilar información sobre los dispositivos comprometidos.

Acronis
Figure 2

En esta última muestra detectada en VirusTotal y enviada desde la India, un archivo comprimido tar.gz denominado NetworkAnalyzer.tar.gz contenía la carga útil final de Chaos RAT. No se conocen los detalles sobre cómo recibió el paquete la víctima, pero la información disponible apunta a que se utilizó un señuelo para convencerla de descargar una utilidad de solución de problemas de la red para entornos Linux.

Acronis
Figure 3

Descripción general

El código fuente más reciente de Chaos RAT, que aún recibe mantenimiento de forma activa, está disponible en GitHub y se actualizó por última vez en octubre de 2024. Esta versión se centra exclusivamente en la creación de clientes de 64 bits, con soporte para sistemas Windows y Linux. Su desarrollo continuo sugiere mejoras y ampliaciones constantes con el fin de ampliar la compatibilidad, perfeccionar las funciones de generación de carga útil y reforzar los protocolos de comunicación.

Panel de administración

El panel de administración de Chaos RAT sirve como interfaz centralizada para compilar, gestionar y controlar las cargas útiles. Además, ofrece un panel de control sencillo al que se puede acceder mediante un navegador, con diversas funcionalidades para que los atacantes o los investigadores interactúen con los sistemas comprometidos. Aunque el número de paneles de administración detectados es bajo, la aparición de nuevas muestras en VirusTotal y la baja tasa de detección indican que Chaos RAT sigue utilizándose en ataques reales.

Acronis
Figure 4

El panel de administración se puede iniciar localmente al ejecutar el comando siguiente:

PORT=8080 SQLITE_DATABASE=chaos go run cmd/chaos/main.go

Una vez que el servicio se inicia, se puede acceder al panel a través de cualquier navegador web en http://localhost:8080 con las credenciales de inicio de sesión predeterminadas admin:admin.

"Admin panel" (Panel de administración) incluye pestañas para administrar clientes, generar cargas útiles y supervisar campañas. "Dashboard" (Panel de control) muestra las ID de cada cliente, sus direcciones IP, los detalles de sus sistemas operativos y las estadísticas de sus conexiones. "Payload Generator" (Generador de carga útil) permite a los usuarios crear cargas útiles de 64 bits para Windows y Linux, con opciones como "Run Hidden" (Ejecutar en segundo plano) para Windows.

Acronis
Figure 5
Acronis
Figure 6

La pestaña "Remote Shell" (Shell remoto) permite ejecutar comandos en tiempo real en sistemas Windows o Linux. La pestaña "Settings" (Configuración) permite realizar cambios de configuración, incluidas las credenciales, los puertos y las rutas de la base de datos.

Acronis
Figure 7

La scheda Gestione clienti visualizza i clienti connessi, con dettagli come ID, sistema operativo, indirizzo IP e timestamp dell'ultima visualizzazione. Supporta l'esecuzione di comandi singoli o multipli. La scheda Esplora file consente di sfogliare, caricare, scaricare, eliminare ed eseguire file, con attraversamento ricorsivo.

Acronis
Figure 8

Ejecución

Mientras que la variante de Windows tiene la opción "Run Hidden" (Ejecutar en segundo plano) en el paso de compilación, que oculta el resultado de la consola, Linux no la tiene. Al ejecutarse, imprime la dirección del servidor y el estado de la conexión.

Acronis
Figure 9

Aún es posible que los sistemas Linux supriman este resultado redirigiéndolo al dispositivo ‘/dev/null’.

La principal diferencia entre las versiones antiguas de Chaos RAT y las muestras más recientes es que las antiguas (imagen de la izquierda) almacenan la dirección IP, el puerto y otros datos como solo texto sin codificar, excepto el valor del token, que se codifica en Base64 en ambos casos. En la variante más reciente (imagen de la derecha), todos los datos se almacenan como una única cadena codificada en Base64, con una llamada adicional a una función que se encarga de leerla.

Acronis
Figure 10

Recientemente hemos analizado dos binarios detectados, compilados con la última versión del proyecto Chaos RAT. Uno de ellos (Muestra 2) se empaquetó adicionalmente mediante la utilidad UPX.

Datos de configuración descodificados

Cada muestra contiene un objeto de configuración codificado en Base64 con nombres de campo aleatorios. Cuando se descodifican, los campos se asignan a valores clave, como el puerto del servidor C2, la dirección IP y un token JWT que se utiliza para la autorización.

Muestra 1

SHA256:1e074d9dca6ef0edd24afb2d13cafc5486cd4170c989ef60efd0bbb0

{
 	"86pYnySllR": "5223",
	"S7mOecuru0": "176.65.141.63",
	"vu2Yr4lh2E": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3Njk1ODEyMzQsInVzZXIiOiJkZWZhdWx0In0.gQ7sfb0DF74yrFsdCO1dy1Vb3YBhEv2utn7PdcB4kC4"
}

Muestra 2

SHA256:a51416ea472658b5530a92163e64cfa51f983dfabe3da38e0646e92fb14de191

{
 	"Svy1ITNLYV": "7419",
 	"WiBZgQLch7": "91.208.197.40",
	"bIffmObdNe": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3NzI0NTg2NTYsInVzZXIiOiJkZWZhdWx0In0.5crbatKoe-6CogXJwgzOl_RSBnydG5l_Lf-ahO2HAu0"
}

Como se puede observar, aunque los nombres de los campos son aleatorios para evitar que se detecten patrones sencillos, su estructura y su finalidad siguen siendo coherentes.

Desglose de JWT

Los JSON Web Tokens (JWT) incrustados siguen el formato estándar y solo difieren en su fecha/hora de caducidad (campo exp):

Muestra 1

{
   "alg":"HS256",
   "typ":"JWT"
}
{
   "authorized":true,
   "exp":1769581234,
   "user":"default"
}

 Muestra 2

{
   "alg":"HS256",
   "typ":"JWT"
}
{
   "authorized":true,
   "exp":1772458656,
   "user":"default"
}

Este token se utiliza para autenticar y autorizar las comunicaciones cliente-servidor con la infraestructura de comando y control.

Comportamiento posterior a la configuración

Una vez que se ha analizado la configuración, el malware inicia una rutina de recopilación de información. Esta función recopila datos detallados del host, que pueden incluir metadatos del sistema, detalles de la red e identificadores potenciales que ayudan a los operadores a crear un perfil de la máquina infectada.

  • Nombre del host
  • Nombre actual
  • Dirección MAC
  • Dirección IP
  • Hora actual
  • Nombre del sistema operativo (SO)
  • Arquitectura del sistema operativo (SO)

Cuando el sistema recupera el nombre del SO, asigna una variable global que se utiliza para determinar las rutas de ejecución de las funciones específicas de cada SO. El sistema establece el valor en "1" para los sistemas Windows y en "0" para Linux. Tras configurar esta variable, la herramienta de administración remota (RAT) inicializa servicios adicionales compatibles con los clientes compilados, y adapta la funcionalidad en función del SO detectado.

Acronis
Figure 11

A continuación, la herramienta RAT entra en un bucle infinito, en el que supervisa constantemente la disponibilidad del servidor. Si no puede acceder al servidor, vuelve a intentarlo cada 30 segundos. Una vez establecida la conexión, la herramienta RAT envía los datos del sistema recopilados al servidor y comprueba si hay comandos entrantes en intervalos de 30 segundos.

Acronis
Figure 12

Para comunicarse con el servidor, el cliente añade una de las siguientes cadenas a la dirección IP y al puerto antes de enviar la solicitud:

  • /client — Inicia una nueva conexión.
  • /health — Comprueba si el servidor está disponible.
  • /device — Envía información del dispositivo.

Si el cliente no puede conectarse al servidor, mostrará el siguiente mensaje:

Acronis
Figure 13

Para obtener comandos del servidor, lee el último mensaje obtenido de la conexión establecida. Cada mensaje del servidor llega en formato JSON, por lo que el cliente de Chaos RAT lo deserializa en primer lugar.

Acronis
Figure 14

A continuación, toma el valor del comando y carga un conjunto de cadenas predefinidas (comandos disponibles). Estas cadenas se compararán con los valores obtenidos para determinar qué operación llevar a cabo.

Acronis
Figure 15

Conjunto de comandos y funciones

  • getos — Recopila información del sistema, como el nombre del sistema operativo, la versión, la arquitectura, el nombre de usuario, la dirección MAC, la dirección IP y la fecha/hora actuales.
  • screenshot — Toma una captura de pantalla mediante la biblioteca kbinani/screenshot, la codifica en formato PNG y, a continuación, la envía al servidor después de codificarla en Base64.
  • restart — Reinicia el sistema. Utiliza "shutdown -r -t 00" en Windows y "reboot" en Linux.
  • shutdown — Apaga el sistema. Utiliza "shutdown -s -t 00" en Windows y "poweroff" en Linux.
  • lock — Bloquea el sistema Windows mediante la función LockWorkStation de user32.dll. No es compatible con Linux.
  • sign-out — Cierra la sesión del usuario. Utiliza el comando "shutdown -L" en Windows. No es compatible con Linux.
  • explore — Enumera los archivos y directorios de una ruta especificada. Proporciona los nombres de archivo y las fechas/horas de modificación. Admite el recorrido recursivo de directorios.
  • download — Carga un archivo especificado desde el cliente hasta el servidor. Iniciada mediante una solicitud POST sin codificar en Base64.
  • upload — Descarga un archivo especificado desde el servidor al cliente mediante una solicitud GET y escribe los datos en un archivo local.
  • delete — Elimina un archivo especificado del sistema de archivos del cliente.
  • open-url — Abre una URL en el navegador predeterminado. Utiliza el comando "start" en Windows y la utilidad "xdb" en Linux.

Desglose detallado de los comandos principales

GetOS

Este comando obtiene información del sistema, como el nombre del sistema operativo (SO), la versión, la arquitectura, el nombre del usuario, las direcciones MAC e IP, y la fecha y hora actuales.

Acronis
Figure 16

Screenshot

Este comando se ha tomado de otro proyecto de código abierto. Después de tomar una captura de pantalla, la pasa a la función de codificación para transformarla al formato PNG. Antes de enviarla al servidor, también la codifica en Base64. En el servidor, esta imagen se guardará en la carpeta de descargas.

Acronis
Figure 17

Reboot y shutdown

La ejecución de estos comandos depende del sistema operativo. Para Windows, utiliza el comando "shutdown -r -t 00" para reiniciar el sistema, y el comando "shutdown -s -t 00" para apagarlo. Para Linux, utiliza los comandos "reboot" y "poweroff".

Acronis
Figure 18

Lock y sign-out

Estos comandos solo se admiten en la versión para Windows. Para la operación "lock", utiliza la función "LockWorkStation" de "user32.dll":

Rundll32.exe user32.dll, LockWorkStation

El comando "sign-out" se ejecuta con el comando "shutdown -L".

Acronis
Figure 19

File explorer

Esta funcionalidad se utiliza para enumerar los archivos del sistema. Comienza desde el directorio de inicio y ejecuta la función "ReadDir". A continuación, comprueba el tipo de cada archivo encontrado. Si el archivo es un directorio, toma solo su nombre y lo añade a la lista:

{
   "path":"/home/dev/go",
   "files":null,
   "directories":[
      "bin",
      "pkg"
   ]
}

Si el directorio de la lista contiene archivos, además de su nombre, también devuelve la fecha de su última modificación:

{
   "path":"/home/dev",
   "files":[
      {
         "filename":".bash_history",
         "mod_time":"2025-03-06T10:28:28.788848322Z"
      },
      {
         "filename":".bash_logout",
         "mod_time":"2024-03-31T08:41:03Z"
      },
      {
         "filename":".bashrc",
         "mod_time":"2024-03-31T08:41:03Z"
      }
   ]
}

Download y upload

Cuando el comando de descarga llega al cliente, debe cargarlo en el servidor. El comando contiene la ruta completa del archivo como parámetro.

Acronis
Figure 20

En primer lugar, el cliente leerá el contenido del archivo y creará una solicitud POST, en la que también se escribirán los datos del archivo. A continuación, también establece Cookies, que contienen un token de configuración y un tipo de contenido. Esta solicitud se enviará sin codificarse en Base64.

Acronis
Figure 21

Cuando el archivo de carga llega al cliente, se descarga el archivo y, a continuación, se pasa como argumento en el sistema local. Para ello, envía una solicitud GET al servidor y escribe los datos obtenidos en el archivo.

Acronis
Figure 22

En ambos casos, después de descargar o cargar un archivo, se envía un paquete adicional que contiene la ruta completa del mismo para indicar que la operación se ha completado correctamente. En caso de que se produzca algún fallo, enviará un paquete con el resultado "0".

Open URL

En sistemas Windows, utiliza el comando "start", forzándolo a abrir la URL en el navegador predeterminado del sistema. En los sistemas Linux, utiliza la utilidad "xdb" para la misma finalidad.

Acronis
Figure 23

Command execution

Chaos RAT coloca comandos terminales en el campo "command" de la solicitud, por lo que, en el lado del cliente, si no coincide con ninguno de los comandos anteriores, pasará el comando al terminal. El resultado de la ejecución del comando se enviará al servidor.

Acronis
Figure 24

Después de ejecutar el comando, codifica el resultado en Base64 y lo envía al servidor en formato JSON. Cada cliente utiliza la dirección MAC del host como su propia ID.

Acronis
Figure 25
Acronis
Figure 26

Chaos RAT permite a los atacantes tomar el control... del controlador

Chaos RAT terminó siendo víctima de sus propias artimañas. Una vulnerabilidad crítica en su panel web permitía a los atacantes ejecutar código remoto en el servidor, lo que daba la vuelta a la tortilla a la herramienta diseñada para controlar a los demás.

La vulnerabilidad: CVE-2024-30850

La función BuildClient del backend de Chaos RAT era el origen del problema. Esta función tomaba las entradas del usuario, como la dirección del servidor, el puerto y el nombre del archivo, para construir un comando de shell que generara los binarios del agente. A pesar de que se validaba parcialmente la entrada, el uso de exec.Command("sh", "-c", buildCmd) permitía que las entradas maliciosas inyectaran comandos arbitrarios. Esto abrió la puerta a que los usuarios autenticados ejecutaran código en el servidor que alojaba la herramienta RAT.

Acronis
Figure 27

El exploit: CVE-2024-31839

Un atacante podría crear una retrollamada de agente falsificada, aprovechando un exploit XSS en el panel de administración. Al incrustar scripts maliciosos en los datos del agente, podían ejecutar JavaScript en el contexto de la sesión del navegador del administrador. Esta combinación de inyección de comandos en el lado del servidor y XSS en el lado del cliente creó un potente vector de ataque.

La sorpresa: la broma del "Rickrolling"

Por ejemplo, Chebuya, investigador de seguridad y experto en Rickrolling, demostró el exploit al conseguir que el panel de administración de Chaos RAT reprodujera el vídeo de Rick Astley de la canción "Never Gonna Give You Up" (el "Rickrolling" es una broma "maliciosa" que consiste precisamente en eso). Consulte el informe completo de Chebuya para obtener un desglose detallado: Remote code execution on CHAOS RAT via spoofed agents.

Acronis
Figure 28

Impacto 

El malware es capaz de gestionar archivos, revertir el acceso a shell y redirigir el tráfico de red. Estas capacidades podrían facilitar el espionaje, la exfiltración de datos o servir como punto de apoyo para el lanzamiento de ransomware y otras operaciones posteriores a un ataque. 

Su naturaleza de código abierto facilita que los actores de amenazas lo modifiquen y reutilicen, creando nuevas variantes que pueden evadir la detección basada en firmas. Esto también complica la atribución, ya que varios actores pueden usar herramientas similares sin vínculos claros, difuminando la línea entre el ciberdelito y la actividad patrocinada por un estado. 

Ejemplos 

Se ha observado que varios grupos de amenazas persistentes avanzadas (APT) utilizan troyanos de acceso remoto (RAT) de código abierto en sus operaciones. APT41 y APT36 han empleado NjRAT, mientras que APT10 ha utilizado QuasarRAT. Se sabe que Blind Eagle (APT-C-36) utiliza AsyncRAT. Además, tanto APT34 como APT35 han aprovechado Pupy RAT en sus campañas. 

¿Por qué usar Chaos RAT o cualquier malware de código abierto? 

1. Integración: El uso de malware disponible públicamente ayuda a los grupos APT a integrarse en el ruido de la ciberdelincuencia cotidiana. Si actores de bajo nivel usan ampliamente un RAT, es más difícil determinar si un actor sofisticado o un script kiddie ejecuta una campaña específica. 

2. Velocidad y costo: Incluso las APT con buenos recursos necesitan actuar con rapidez o escalar sus operaciones a múltiples objetivos. El malware de código abierto ofrece un conjunto de herramientas "suficientemente bueno" que se puede personalizar e implementar rápidamente. 

3. Evasión de atribución: Cuando varios actores usan el mismo malware de código abierto, se enturbia la atribución. No es tan fácil vincular la actividad a un grupo específico basándose únicamente en el malware, lo que proporciona cobertura a los actores de amenazas avanzadas en operaciones sensibles. 

Conclusión

Lo que empieza siendo una herramienta para desarrolladores puede convertirse de la noche a la mañana en el arma preferida de los ciberdelincuentes. Esta herramienta de administración remota (RAT) basada en Golant ofrece una interfaz web sencilla y controles de sistema potentes para Windows y Linux, con shells inversos, manipulación de archivos y ejecución de comandos remotos en sistemas comprometidos.

Se ha detectado todo un caos en circulación, lo que representa un problema de cada vez mayor envergadura en términos de ciberseguridad: la utilización de software de código abierto como arma. Con sus funciones de despliegue rápido, su sigiloso modus operandi en Linux y su configuración flexible, es un recordatorio de que el código abierto es un arma de doble filo, que en manos equivocadas puede ser bastante peligrosa.

Detección de Acronis 

Acronis Cyber Protect Cloud detecta con éxito varios componentes de Chaos RAT como "Trojan.Linux.ChaosRAT.A", como se puede ver en las siguientes capturas de pantalla.  

Acronis
Figure 29
Acronis
Figure 30
Acronis
Figure 31

Recientemente, Acronis ha anunciado que ofrecerá soporte para sistemas Linux mediante Acronis EDR. Esta mejora amplía la cobertura de EDR a entornos mixtos, lo que permite proteger los recursos informáticos de Windows y macOS en su totalidad, y ahora, también los de Linux. Cuando Acronis EDR identifica archivos o procesos sospechosos o maliciosos en sistemas Linux, estas detecciones se asignan automáticamente al marco MITRE ATT&CK, que ofrece una visión más profunda de las posibles amenazas.

Con esta actualización, se admiten varias acciones de corrección para dispositivos Linux. Entre dichas acciones se incluyen la detención de procesos maliciosos, la puesta en cuarentena de archivos y la incorporación de elementos a la lista de permitidos o bloqueados, así como la recuperación de los sistemas afectados a partir de copias de seguridad.

Esta nueva funcionalidad es compatible con los sistemas operativos Ubuntu 22.04 y CentOS 7.x, y también está disponible con Acronis XDR.

Indicadores de compromiso

Archivos

Acronis

YARA

Acronis

Referencias y publicaciones relacionadas (por orden cronológico)

  1. Tuit sobre Chaos RAT (por Cyberteam008) 15 de abril de 2025.  https://x.com/Cyberteam008/status/1889516549129802007
  2. GitHub Advisory Database. tiagorlampert CHAOS vulnerable to Cross Site Scripting (CVE-2024-31839) 12 de abril de 2024. https://github.com/advisories/GHSA-c5rv-hjjc-jv7m
  3. Remote code execution on CHAOS RAT via spoofed agents (por Chebuya)  5 de abril de 2024.  https://blog.chebuya.com/posts/remote-code-execution-on-chaos-rat-via-spoofed-agents/
  4. Tuit sobre CVE-2024-30850 (por Chebuya)  5 de abril 5 de 2024.  https://x.com/_chebuya/status/1776371049095192847
  5. MAL_LNX_Chaos_Rat_Dec22 (regla Valhalla de Nextron-Systems) 14 de diciembre de 2022.  https://valhalla.nextron-systems.com/info/rule/MAL_LNX_Chaos_Rat_Dec22
  6. Chaos is a Go-based Swiss army knife of malware (blog de Lumen)  28 de septiembre de 2022.  https://blog.lumen.com/chaos-is-a-go-based-swiss-army-knife-of-malware/
  7. CHAOS: Herramienta de administración remota (repositorio de GitHub)  https://github.com/tiagorlampert/CHAOS