Tabla de contenidos:
- Introducción
- Cadena de infección
- Árbol de procesos
- Campaña 1:
– Persistencia
– Archivos por lotes
– Script de PowerShell
– Cargador
– Xworm/Remcos - Campaña 2
- Conclusión
- COI
- Detecciones
- TTP de ATAQUE MITRE
Introducción:
Campañas de amenazas recientes han revelado un uso cada vez mayor de cargadores basados en BAT para distribuir troyanos de acceso remoto, como XWorm y Remcos. Estas campañas suelen comenzar con un archivo ZIP, generalmente alojado en plataformas de apariencia confiable como ImgKit, y están diseñadas para aparentar contenido legítimo y así incitar a la interacción del usuario.
Tras la extracción, el archivo ZIP contiene un script BAT altamente ofuscado que sirve como etapa inicial de la cadena de infección. Estos archivos BAT utilizan técnicas avanzadas para evadir la detección estática y son responsables de ejecutar cargadores basados en PowerShell que inyectan la carga útil del RAT directamente en la memoria. Este enfoque permite la ejecución sin archivos, una tendencia creciente en el malware moderno para eludir las defensas de los endpoints.
Un avance notable en esta campaña es el uso de archivos SVG para distribuir scripts BAT maliciosos. Estos archivos SVG contienen JavaScript incrustado que activa la cadena de ejecución al renderizarse en entornos vulnerables o incrustarse en páginas de phishing. Esta técnica pone de manifiesto una tendencia hacia el uso de formatos de archivo no tradicionales para la distribución de malware, aprovechando sus capacidades de scripting para evadir la detección.
Cadena de infección:

Árbol de procesos:

Campaña 1:
Durante el análisis de la Campaña 1, identificamos múltiples scripts BAT asociados a ella, lo que indica un panorama de amenazas en constante evolución. Algunos de estos scripts parecen estar en desarrollo activo y contienen código parcial o en fase de prueba, mientras que otros son completamente funcionales y capaces de ejecutar la cadena de ataque completa, incluyendo la descarga y ejecución de la carga útil.
La imagen a continuación muestra dos archivos BAT:
- Método 1: Entregado directamente como archivo adjunto mediante EML (archivo de correo electrónico).
- Método 2: Descargado a través de una URL alojada en la plataforma ImageKit.
Esta variación en los métodos de distribución sugiere que los actores de amenazas están experimentando con diferentes enfoques para mejorar las tasas de éxito de la infección y evadir los mecanismos de detección.

Persistencia:
El malware logra persistencia creando un archivo BAT en la carpeta de inicio de Windows. Esto garantiza que el script malicioso se ejecute automáticamente cada vez que el usuario inicia el sistema o inicia sesión en su cuenta.

Archivos por lotes:
La siguiente figura muestra el script BAT en su forma ofuscada junto con su versión desofuscada.

Script de PowerShell:
A continuación, la figura muestra la ventana del proceso de PowerShell y los argumentos de la línea de comandos utilizados durante la ejecución. Esto proporciona información sobre cómo el malware utiliza PowerShell para la entrega de carga útil en memoria. Analizaremos el script de PowerShell en detalle en las siguientes secciones para comprender su función en la implementación de XWorm.


Este comando de PowerShell ejecuta el script decodificando una cadena codificada en Base64 y ejecutándola en memoria. Utiliza -nop para evitar cargar el perfil de usuario, -w hidden para ocultar la ventana e iex (Invoke-Expression) para ejecutar el contenido decodificado.
Script desofuscado:

Dividimos el script desofuscado en dos partes. La primera parte del script de PowerShell está diseñada para localizar y ejecutar un código ofuscado incrustado en un archivo por lotes (aoc.bat) ubicado en el directorio del perfil del usuario actual. Primero, recupera el nombre de usuario de las variables de entorno para construir la ruta completa a aoc.bat. Lee todas las líneas usando codificación UTF-8 e itera a través de cada una, buscando específicamente líneas que comiencen con un prefijo de comentario de tres puntos (:::), seguido de una cadena codificada en Base64. Al encontrar dicha línea, intenta decodificar la cadena Base64 en una matriz de bytes, luego la convierte en una cadena Unicode asignada a la variable $ttzhae. Esta cadena decodificada ($ttzhae) contiene una capa adicional de script de PowerShell, que luego se ejecuta en memoria usando Invoke-Expression. Esto permite al atacante incrustar y ejecutar lógica maliciosa de PowerShell compleja o de múltiples etapas de forma encubierta dentro de un comentario de archivo por lotes aparentemente inofensivo, lo que permite una ejecución sigilosa y sin archivos.

El script desactiva programáticamente dos mecanismos clave de seguridad de Windows, AMSI (Interfaz de análisis antimalware) y ETW (Seguimiento de eventos para Windows), para evadir la detección. Aprovecha la reflexión de .NET y la creación dinámica de delegados para resolver funciones nativas como GetProcAddress, GetModuleHandle, VirtualProtect y AmsiInitialize. Usando estas, localiza y modifica la función AmsiScanBuffer en memoria con una instrucción (mov eax, 0; ret), eludiendo así el análisis de AMSI. De manera similar, desactiva el seguimiento de eventos sobrescribiendo el inicio de EtwEventWrite con una instrucción de retorno. Estas modificaciones en memoria permiten que la actividad maliciosa de PowerShell se ejecute sigilosamente, sin ser registrada ni analizada por endpoint protection Amigables. .

En la segunda parte del script de PowerShell, primero recupera el nombre del usuario actual del entorno y construye la ruta a un archivo llamado aoc.bat ubicado en el directorio del perfil del usuario. Luego, ejecuta cargas útiles incrustadas como ensamblados .NET cifrados y comprimidos ocultos dentro de este archivo por lotes. El script busca específicamente una línea de comentario con el prefijo ::, que contiene una cadena de carga útil codificada en Base64. Esta cadena se divide en dos partes usando la barra invertida (\) como delimitador. Cada parte se decodifica en Base64, se descifra en AES usando una clave y un IV predefinidos (en modo CBC con relleno PKCS7), seguido de la descompresión GZIP como se ilustra en las figuras adjuntas. El resultado son dos ensamblados .NET separados, ambos cargados y ejecutados directamente en memoria. El primer ensamblado se invoca sin argumentos, mientras que el segundo se ejecuta con '%*' pasado como una entrada de línea de comandos simulada.

La segunda carga útil juega un papel más crítico. Funciona como un cargador responsable de ejecutar el malware final, que es el troyano de acceso remoto (RAT) XWorm.

Cargador
El cargador está diseñado para evadir la detección, desactivar el registro de eventos y ejecutar cargas útiles integradas directamente en la memoria. Esto se logra descifrando y ejecutando ejecutables .NET mediante Assembly.Load o ejecutando código shell descifrado mediante VirtualProtect y delegados.



Capacidades del cargador:
- Evadir la detección

- Deshabilitar el registro de eventos

- Extraer y ejecutar cargas útiles integradas
Aquí, identificamos varios cargadores que utilizan técnicas de ejecución en memoria para evadir la detección y persistir de forma sigilosa. Algunos de estos cargadores contienen ejecutables .NET cifrados, que se descifran en tiempo de ejecución y se ejecutan directamente desde la memoria mediante Assembly.Load seguido de .EntryPoint.Invoke, lo que permite al cargador ejecutar código administrado sin escribir el ejecutable en el disco.
En cambio, otras variantes tienen código shell cifrado en lugar de un binario. Estas variantes descifran el código shell, modifican las protecciones de memoria mediante VirtualProtect para hacerlo ejecutable y luego lo ejecutan mediante un delegado creado mediante Marshal.GetDelegateForFunctionPointer. Como se muestra en las siguientes figuras,

- Persistencia

gusano x
Anteriormente, a principios de este año, informamos sobre XWorm y Remcos , proporcionando un análisis en profundidad de su funcionalidad principal, capacidades avanzadas como el registro de pulsaciones de teclas, la ejecución remota de comandos, la exfiltración de datos y sus métodos de persistencia y evasión.

Además de XWorm, varias variantes de la misma campaña también utilizaron Remcos , un troyano de acceso remoto (RAT) comercial ampliamente conocido que ofrece una variedad de capacidades, incluyendo acceso remoto al escritorio, registro de pulsaciones de teclas, ejecución de comandos, manipulación de archivos, captura de pantallas y exfiltración de datos.
Campaña 2:
La Campaña 2 introduce un cambio notable en la distribución de malware al aprovechar archivos SVG (Gráficos Vectoriales Escalables) con JavaScript incrustado, utilizados principalmente en ataques de phishing. Estos SVG maliciosos están diseñados para simular imágenes legítimas y se muestran en entornos de software vulnerables (como visores de imágenes o clientes de correo electrónico obsoletos) o se incrustan en páginas web de phishing diseñadas para atraer a usuarios desprevenidos. Ahora, el JavaScript incrustado en el archivo SVG actúa como un mecanismo de activación, iniciando la descarga automática de un archivo ZIP al abrir o previsualizar el SVG.
Este archivo ZIP descargado contiene un script BAT ofuscado, que sirve como vector de acceso inicial para el malware. Una vez ejecutado el script BAT, ya sea manualmente por el usuario o mediante tácticas de ingeniería social, inicia una cadena de infección de varias etapas similar a la observada en la Campaña 1. En concreto, el script BAT invoca comandos de PowerShell para decodificar y ejecutar un archivo ejecutable (EXE) directamente en memoria. Este archivo ejecutable se encarga de descifrar e implementar la carga útil final, que en esta campaña es el troyano de acceso remoto (RAT) XWorm.
El uso de SVG como mecanismo de entrega representa una evolución notable en la metodología de ataque, ya que los archivos de imagen suelen considerarse inofensivos y suelen ser excluidos de la inspección exhaustiva de contenido por las herramientas de seguridad tradicionales. Al explotar las capacidades de scripting de los SVG, los actores de amenazas pueden eludir eficazmente las defensas perimetrales y entregar cargas maliciosas de forma sigilosa y sin archivos.
Conclusión:
Estas campañas ponen de relieve una tendencia creciente en el uso de scripts ofuscados, malware sin archivos y formatos de archivo no tradicionales como SVG para distribuir troyanos de acceso remoto como XWorm y Remcos. Al incrustar cargas útiles en archivos BAT y ejecutarlas mediante PowerShell, los atacantes eluden eficazmente las defensas estáticas. La transición del uso de SVG en ataques de phishing a la distribución de malware subraya aún más la necesidad de la detección de comportamiento, la inspección de contenido y una mayor concienciación del usuario para contrarrestar estas amenazas en constante evolución.
IOCS:
| MD5 | Archivo |
| EDA018A9D51F3B09C20E88A15F630DF5 | BAT |
| 23E30938E00F89BF345C9C1E58A6CC1D | JS |
| 1CE36351D7175E9244209AE0D42759D9 | CARGADOR |
| EC04BC20CA447556C3BDCFCBF6662C60 | GUSANO X |
| D439CB98CF44D359C6ABCDDDB6E85454 | REMCOS |
Detecciones:
Trojan.LoaderCiR
Troyano.GenericFC.S29960909
TTP del ATAQUE MITRE:
| Táctica | Identificación y nombre de la técnica | Mareas Ideales para Lecciones |
| Ejecución | T1059.001 – Intérprete de comandos y scripts: PowerShell | PowerShell se utiliza para interpretar comandos, descifrar datos e invocar cargas útiles. |
| T1106 – Ejecución mediante API | El script utiliza API .NET (por ejemplo, Assembly.Load, Invoke) para ejecutar cargas útiles en la memoria. | |
| Evasión de defensa | T1027 – Archivos o información ofuscados | Las cargas útiles están codificadas en Base64, encriptadas con AES y comprimidas para evitar detecciones estáticas. |
| T1140 – Desofuscar/Decodificar archivos o información | El script decodifica y descomprime las cargas útiles antes de la ejecución. | |
| T1055.012 – Inyección de proceso: Inyección de ensamblado .NET | Las cargas útiles se cargan en la memoria | |
| T1036 – Enmascaramiento | El contenido malicioso está oculto en el archivo por lotes. | |
| Persistencia | T1053 – Tarea/Trabajo programado | Establecer persistencia a través del menú de inicio. |
| Acceso inicial | T1204 – Ejecución del usuario | La ejecución depende de que un usuario ejecute manualmente el archivo por lotes |
| Comando y control | T1132 – Codificación de datos | Base64 y el cifrado se utilizan para codificar comandos o cargas útiles. |
| T1219 – Software de acceso remoto | Xworm proporciona acceso remoto completo y control sobre el host infectado. | |
| Acceso a credenciales | T1056.001 – Captura de entrada: Registro de teclas | XWorm incluye una funcionalidad de registro de teclas para robar la información y las credenciales del usuario. |
| exfiltración | T1041 – Exfiltración sobre el canal C2 | Los datos robados se filtran a través del mismo canal C2 utilizado por Xworm. |
Escrito por
Vaibhav Billade
Rumana Siddiqui



