Resumen
XWorm es una herramienta relativamente versátil que se descubrió en 2022. Permite a los atacantes llevar a cabo una variedad de funciones, que incluyen el acceso a información confidencial, la obtención de acceso remoto y la implementación de malware adicional. La naturaleza multifacética de XWorm es atractiva para los actores de amenazas, como lo demuestra su presunto uso a principios de este año por parte de actores de amenazas como NullBulge y TA558.
A través de los esfuerzos de búsqueda de Netskope Threat Labs, descubrimos la última versión de XWorm en la naturaleza. En esta entrada del blog, desglosaremos lo siguiente:
- La cadena de infección que conduce a la ejecución de XWorm.
- Ejecución evasiva del cargador de DLL de XWorm a través de la carga de código reflectante.
- La inyección de XWorm en un proceso legítimo.
- Las características Nuevo de XWorm, que incluyen la eliminación de complementos y un comando de red que informa el tiempo de respuesta de XWorm, junto con otros comandos notables.
- Notificación al atacante después de una infección mediante Telegram.
Flujo de ejecución de XWorm
A continuación se muestra el resumen del flujo de ejecución de XWorm:

- La cadena de infección comienza con WSF descargando y ejecutando un script de PowerShell alojado en paste.ee
- El script de PowerShell realiza las siguientes acciones:
A. Crea tres scripts, a saber, VsLabs.vbs, VsEnhance.bat, y VsLabsData.ps1.
B. Crea una tarea programada.
C. Envía una notificación de Telegram al atacante. - La tarea programada ejecuta el VBScript denominado VsLabs.vbs.
- VBScript ejecuta un archivo por lotes denominado VsEnhance.bat.
- El archivo por lotes ejecuta un script de PowerShell denominado VsLabsData.ps1.
- El script de PowerShell carga un archivo DLL malintencionado a través de la carga de código reflexivo.
- La DLL maliciosa inyecta XWorm en un proceso legítimo y lo ejecuta.
Cuentagotas XWorm entregado a través de un archivo de script de Windows (WSF)
La cadena de infección comienza con un archivo de script de Windows (WSF), probablemente entregado a través de phishing. El archivo del FSM comienza con varios párrafos sobre la Administración de la Seguridad Social a través de una serie de líneas comentadas. Sin embargo, termina con un VBScript que descarga y ejecuta un script de PowerShell mediante Wscript.Shell. Para evitar la detección estática, el comando para descargar el script de PowerShell está codificado en hexadecimal y requiere la concatenación de cadenas.


Análisis de scripts de PowerShell
VBScript descarga un script de PowerShell almacenado en Paste.ee, un sitio web legítimo de Pastebin. El uso de sitios web legítimos para almacenar código malicioso ayuda a los atacantes a pasar desapercibidos para el defensor. Para evitar la detección a través de la conexión, el script de PowerShell realiza la ofuscación de varias cadenas, incluidos los caracteres de escape y la concatenación de cadenas. El script de PowerShell crea una carpeta denominada "Objetos visuales" en la ruta de acceso: "C:\ProgramData\Music\Visuals". Después, genera PowerShell, batch y VBScripts (VsLabsData.ps1, VsEnhance.bat, y VsLabs.vbs) y lo almacena en la carpeta creada.
El VBScript denominado VsLabs.vbs inicia la cadena de ejecución mediante la ejecución de un archivo por lotes denominado VsEnhance.bat mediante WScript.Shell. Y el VsEnhance.bat ejecuta el script de PowerShell denominado VsLabsData.ps1.


VsLabsData.ps1
VsLabsData.ps1 realiza las siguientes acciones:
- Defina dos cargas útiles como cadenas hexadecimales utilizando $cake variable para XWorm (XClient3.exe) y $oven para el cargador de DLL (NewPE2).
- Cree una tarea programada denominada 'MicroSoftVisualsUpdater'.
- Envía una notificación al atacante a través de Telegram.
- Ejecute el cargador de DLL que inserta XWorm en un proceso legítimo.
Echemos un vistazo más de cerca a cómo el script de PowerShell realiza estos pasos.
Persistencia
La persistencia de XWorm se logra a través de una tarea programada denominada MicrosoftVisualUpdater. Esta tarea se desencadena un minuto después de su creación y, a continuación, seguirá desencadenándose cada 15 minutos. Está configurado para ejecutar el VsEnhance.bat VBscript.

Notificación de telegrama
Una vez que el script de PowerShell VsLabsData.ps1 complete su rutina, enviará un mensaje de Telegram al atacante. El mensaje contiene la dirección IP pública de la víctima, con una atribución a "XYZCRYPTER" como atacante.

NewPE2 ejecutado a través de la carga de código, inyectando XWorm en un proceso legítimo
A diferencia de las instancias de XWorm notificadas anteriormente en las que se descargó la carga, el archivo analizado almacena las cargas reales dentro del script de PowerShell mediante las variables $cake y $oven. Para evitar la detección estática, XWorm y NewPE2 se definen como cadenas hexadecimales y se separan con un guión bajo. Una vez que se reemplazan los guiones bajos, el cargador se ejecuta mediante la carga de código reflexivo.


La carga de código reflectante comienza cargando los bytes en la memoria mediante el método Load de la clase Assembly. A continuación, recupera el objeto Type de la clase 'PE' y el método 'Execute' dentro del espacio de nombres 'NewPE' del ensamblado cargado.

El método "Execute" del cargador se utiliza para inyectar XWorm en un proceso legítimo (C:\Windows\Microsoft.Net\Framework\v4.0.30319\RegSvcs.exe). Podemos observar este comportamiento tras la detonación. Cuando RegSvcs se ejecuta a través del método "Execute" del cargador, podemos ver el XWorm inyectado en el espacio de memoria del proceso legítimo.
Una vez que se completa la inyección y XWorm se ejecuta a través del proceso legítimo, el cargador de PowerShell finaliza, dejando solo el proceso legítimo con un archivo firmado digitalmente por Microsoft.


Análisis de XWorm
XWorm es un binario compilado de .NET denominado XClient3.exe. El binario ya es detectado por DetectItEasy y por varios proveedores de antivirus en Virustotal, lo que podría ser la razón por la que no se escribió en el disco en primer lugar.

La aplicación comienza descifrando la configuración de XWorm, incluidos el dominio y el puerto C2, el delimitador de comandos, la clave AES y la versión de XWorm. A partir de los ajustes incluidos, podemos confirmar que este XWorm es la versión 5.6.

Estas configuraciones están en formato base64 y encriptadas AES ECB. Para descifrar esta configuración, utiliza el valor MD5 de la cadena "rZ2W67345HrmrYRB" como clave. Necesitamos agregar el hash MD5 a su valor original en el índice 15.


Configuración de XWorm
Anfitrión | ziadonfire[.] trabajo[.] Gd (89.116.164.56) |
---|---|
Puerto | 7000 |
Clave (AES Encriptación key) | |
SPL (delimitador) | |
Groub (versión) | XWorm V5.6 |
USBNM | USB.exe |
Conexión C2 a través de zócalo
XWorm inicia la conexión de red con el servidor C2 a través del socket. El constructor del socket muestra que se conectaría al C2 mediante una dirección IP a través de TCP. Se utiliza la dirección IP del dominio C2. También está configurado para manejar el envío y la recepción de datos a través de un socket de alrededor de 50 KB. Para mantener la conexión, XWorm hace ping al servidor C2 cada 10-15 segundos y monitorea una respuesta de pong cada milisegundo.


Reconocimiento
Después de conectarse inicialmente, recopilará y enviará la información del dispositivo de la víctima al atacante. Esto proporciona al atacante información inicial antes de realizar acciones maliciosas. La información recopilada incluye el nombre de host, el nombre de usuario, los controladores, los detalles de la CPU y la GPU, si el usuario es un administrador, si el antivirus está instalado y un ejecutable llamado "USB.exe". La información se enlaza con la cadena delimitadora y la versión de XWorm.

Comandos Nuevo en v5.6
Se encuentran algunos comandos en la versión 5.6 en comparación con las versiones anteriores informadas. Una de ellas es la posibilidad de eliminar los plugins almacenados. XWorm es capaz de cargar y guardar plugins que pueden llevar a cabo múltiples funciones personalizadas. El comando "RemovePlugins" le da a XWorm la capacidad de limpiar la información del complemento almacenada en el registro en caso de que quieran limpiar artefactos. El atacante será notificado una vez que se eliminen los complementos.

Mientras tanto, el comando "Pong" parece ser una herramienta de red para los atacantes que informan sobre el tiempo de respuesta de XWorm. La variable "Intervalo" es el número de milisegundos que XWorm recibe una respuesta Pong de la función "Ping" del C2.

Modificación de archivos de hosts
Otro dominio destacable de XWorm es su capacidad para leer y modificar el archivo host de la víctima. Esto proporciona un medio para que el atacante realice ataques relacionados con DNS. El archivo hosts en Windows es un archivo de texto sin formato que se utiliza para asignar nombres de host a direcciones IP manualmente. Anula la resolución DNS proporcionada por la red. El comando "Hosts" permite a XWorm enviar una copia del archivo hosts al atacante. Mientras que el comando "Shosts" permite al atacante enviar su propio archivo de hosts y sobrescribir el de la víctima. Una vez sobrescrito, enviará un mensaje al atacante confirmando su éxito.

Lanzar un ataque DDoS
Otro comando de XWorm es lanzar un ataque de denegación de servicio (DoS) a un objetivo. Cuando la víctima recibe un comando "StartDDos", inicialmente abortaría cualquier actividad de denegación de servicio en curso, luego generaría un subproceso Nuevo que envía una solicitud POST usando socket cada 2.5 segundos. El atacante proporcionará la dirección IP del objetivo, el número de puerto y la duración del ataque.


Captura de pantalla
Otra función de XWorm es recopilar una captura de pantalla de la pantalla de la víctima. Primero recupera las dimensiones de la pantalla principal y las pasa para crear un mapa de bits. A continuación, captura el contenido de la pantalla mediante CopyFromScreen, que se almacena en la memoria mediante MemoryStream en formato JPEG y se envía al atacante mediante un socket.
Formato del mensaje:
"#CAP",
<Xwormmm>
Datos de las víctimas
<Xwormmm>
Base64 e imagen comprimida

A continuación se muestra una lista de todos los comandos que se encuentran dentro de XWorm:
Mandar | Description |
---|---|
peste | Envía "pong" junto con el valor del intervalo de ping |
Rec | Reinicia la aplicación |
CERRAR | Cierra la aplicación |
desinstalar | Elimina el archivo ejecutable colocado en varias rutas de acceso de archivo |
actualizar | Reinicia la aplicación con la información del proceso Nuevo |
DW | Acepte el comando de PowerShell, escriba el comando en un archivo dentro de la carpeta temporal y ejecútelo |
FM | Ejecuta un comando comprimido y en base64 |
EN | Descarga un archivo y lo ejecuta |
Urlopen | Envía una solicitud GET a una URL enviada desde C2 |
Urlhide | Envía una solicitud GET a una URL enviada desde C2, pero está oculta para la víctima. |
PCSapagón | Apagar la máquina de la víctima |
PCRestart | Reinicie la máquina de la víctima |
PCLogoff | Cierra la sesión de la víctima en la máquina |
RunShell | Ejecuta un proceso en segundo plano |
DDoS | Enviar un mensaje "DDos" al C2 |
StartDDos | Inicialmente detiene cualquier actividad DDoS. A continuación, envía una solicitud POST utilizando un socket cada 2,5 segundos utilizando un agente de usuario aleatorio por solicitud. |
StopDDos | Detiene cualquier actividad DDoS de la aplicación |
StartReport (Informe de inicio) | Recibe una lista de nombres de procesos de C2. Informa qué procesos se están ejecutando. |
StopReport (Informe de parada) | Anula el envío de Informe |
Xchat | Envía los siguientes datos a C2: Recuento de procesadores Nombre de usuario Nombre del dispositivo Sistema operativo Formato del mensaje: " |
Hosts | Leer y enviar el contenido del archivo hosts. Formato del mensaje: "Anfitriones", (Datos de Xchat) Ruta de acceso del archivo Hosts Aloja el contenido del archivo |
Anfitriones | Modifica y guarda un archivo (que probablemente sea el archivo hosts) y, a continuación, envía un mensaje para confirmar que el cambio se ha realizado correctamente. |
Complemento | Recopila el complemento de C2 |
savePlugin | Guarda la información del complemento en el registro |
EliminarPlugins | Eliminar la información del complemento en el registro |
Fuera de líneaObtener | Esto envía un mensaje de error que dice "Offlinekeylogger not enabled d" |
$cap | Captura una captura de pantalla y la envía al atacante |
Conclusión
XWorm es una herramienta multifacética que puede proporcionar una amplia gama de funciones al atacante. En esta entrada del blog, desglosamos cómo un atacante puede entregar y ejecutar sigilosamente XWorm, junto con sus funcionalidades y métodos. La cadena de ejecución, la configuración de XWorm y los IOC pueden ayudar a los defensores a identificar XWorm dentro de su entorno y buscar posibles actualizaciones. Netskope Threat Labs continuará monitoreando XWorm y otros programas maliciosos que realicen técnicas similares.
Detección de Netskope
- Netskope Threat Protection
- Gen:Variant.Jalapeño.683
- Netskope Advanced Threat Protection proporciona una cobertura proactiva contra esta amenaza.
- Gen.Detect.By.NSCloudSandbox.tr
- ByteCode-MSIL.Backdoor.XWorm
Iocs
Todos los IOC relacionados con esta campaña se pueden encontrar en nuestro repositorio de GitHub.