Malware VOID#GEIST
Investigadores de ciberseguridad han descubierto una sofisticada campaña de malware multietapa que se basa en scripts por lotes para distribuir cargas útiles de troyanos de acceso remoto (RAT) cifrados. La campaña, identificada como VOID#GEIST, implementa varias familias de RAT, como XWorm, AsyncRAT y Xeno RAT.
La cadena de ataque utiliza un script por lotes ofuscado que inicia una secuencia de acciones diseñadas para evadir la detección. Estas acciones incluyen el lanzamiento de un script por lotes adicional, la preparación de un entorno de ejecución Python legítimo integrado y el descifrado de cargas útiles de shellcode cifradas. El shellcode se ejecuta directamente en memoria tras inyectarse en instancias independientes del proceso de Windows explorer.exe mediante una técnica conocida como inyección de Llamada a Procedimiento Asíncrono (APC) Early Bird.
Tabla de contenido
Entrega de malware basada en scripts: un modelo de amenaza moderno
Los actores de amenazas modernos están abandonando cada vez más el malware ejecutable independiente tradicional en favor de sistemas de distribución en capas basados en scripts que imitan el comportamiento legítimo del usuario. En lugar de implementar binarios ejecutables portátiles (PE) convencionales, los atacantes orquestan canales multicomponente que combinan diversas tecnologías legítimas y entornos de scripting.
Los componentes típicos utilizados dentro de estos marcos incluyen:
- Scripts por lotes utilizados para orquestar la secuencia de infección.
- Comandos de PowerShell que facilitan la preparación de carga útil sigilosa.
- Tiempos de ejecución legítimos integrados que garantizan la portabilidad entre sistemas.
- Shellcode sin procesar ejecutado directamente en la memoria para mantener la persistencia y el control.
Este enfoque de ejecución sin archivos reduce significativamente las posibilidades de detección en disco. Cada etapa parece relativamente inofensiva al examinarse de forma independiente y, a menudo, se asemeja a una actividad administrativa rutinaria, lo que permite a los actores de amenazas operar en entornos comprometidos sin generar alertas de seguridad inmediatas.
Acceso inicial mediante phishing y la infraestructura de Cloudflare
El punto de entrada del ataque comienza con un script malicioso por lotes distribuido mediante correos electrónicos de phishing. El script se obtiene de la infraestructura alojada en un dominio de TryCloudflare. Una vez ejecutado, el script evita deliberadamente los intentos de escalada de privilegios y, en su lugar, opera estrictamente dentro de los límites de permisos del usuario conectado.
Esta estrategia permite que el malware se establezca inicialmente y se integre en las operaciones rutinarias de usuario. Al evitar acciones que requieren privilegios elevados, el ataque reduce la probabilidad de activar advertencias de seguridad o avisos administrativos.
Técnicas de distracción visual y ejecución sigilosa
Tras su ejecución, la primera etapa del malware lanza un documento señuelo para distraer a la víctima. Google Chrome se abre en pantalla completa para mostrar un documento financiero o una factura en formato PDF. Mientras el usuario se centra en el documento, la actividad maliciosa continúa en segundo plano.
Simultáneamente, se ejecuta un comando de PowerShell para reiniciar el script por lotes original con parámetros de ejecución ocultos. El uso del parámetro -WindowStyle Hidden impide que aparezca una ventana de consola visible, lo que garantiza que la actividad maliciosa permanezca oculta al usuario.
Persistencia mediante la ejecución de inicio a nivel de usuario
Para mantener la persistencia tras reiniciar el sistema, el malware implementa un script por lotes auxiliar en el directorio de inicio del usuario de Windows. Esta ubicación garantiza que el script se ejecute automáticamente cada vez que la víctima inicia sesión en el sistema.
Este mecanismo de persistencia es intencionadamente sutil. En lugar de utilizar técnicas más intrusivas, como modificar las claves del registro del sistema, crear tareas programadas o instalar servicios, el malware se basa exclusivamente en el comportamiento de inicio estándar del usuario. Dado que este enfoque opera completamente dentro del contexto de los privilegios del usuario actual, evita la activación de solicitudes de escalada de privilegios y reduce la probabilidad de detección por parte de las herramientas de monitorización del registro.
Marco de recuperación y descifrado de carga útil
Durante la siguiente etapa de la cadena de infección, el malware contacta con un dominio TryCloudflare para recuperar componentes adicionales de la carga útil, empaquetados en archivos ZIP. Estos archivos contienen los módulos necesarios para descifrar y ejecutar las cargas útiles finales del malware.
El archivo descargado normalmente contiene los siguientes componentes:
- runn.py: un cargador basado en Python responsable de descifrar e inyectar módulos de shellcode cifrados en la memoria
- new.bin – carga útil de shellcode cifrada asociada con XWorm
- xn.bin – carga útil de shellcode cifrada correspondiente a Xeno RAT
- pul.bin – carga útil de shellcode cifrada correspondiente a AsyncRAT
- a.json, n.json y p.json: archivos clave utilizados por el cargador de Python para descifrar las cargas útiles del shellcode dinámicamente durante el tiempo de ejecución
Este diseño modular permite a los atacantes preparar diferentes cargas útiles de forma independiente y activarlas solo cuando sea necesario.
Tiempo de ejecución de Python integrado para portabilidad y sigilo
Una vez extraído el archivo, el malware implementa un entorno de ejecución de Python legítimo, incrustado y obtenido directamente de python.org. La incrustación de un intérprete legítimo elimina la dependencia de cualquier instalación de Python que pueda existir en el sistema comprometido.
Desde la perspectiva del atacante, este paso ofrece varias ventajas estratégicas. El malware se convierte en un entorno de ejecución autónomo capaz de descifrar e inyectar cargas útiles sin necesidad de dependencias externas. Esto mejora la portabilidad entre diferentes sistemas, aumenta la fiabilidad y contribuye al sigilo operativo mediante el uso de componentes de software legítimos.
Ejecución en memoria de múltiples cargas útiles RAT
El entorno de ejecución de Python integrado se utiliza para ejecutar el script del cargador runn.py. El cargador descifra el shellcode asociado con XWorm y lo inyecta en una instancia en ejecución de explorer.exe mediante la inyección Early Bird APC.
Para implementar Xeno RAT, el malware utiliza un binario legítimo de Microsoft llamado AppInstallerPythonRedirector.exe, que se utiliza para invocar Python y ejecutar los componentes necesarios. La misma técnica de inyección se reutiliza posteriormente para implementar AsyncRAT, lo que garantiza que todas las cargas útiles se ejecuten completamente en memoria sin dejar artefactos ejecutables tradicionales en el disco.
Balizamiento de comando y control y arquitectura modular
La etapa final del ataque consiste en enviar una baliza HTTP mínima a la infraestructura de Comando y Control (C2) controlada por el atacante, alojada en TryCloudflare. Esta baliza confirma que el sistema ha sido comprometido con éxito y está listo para recibir nuevas instrucciones.
Aunque se desconocen los objetivos específicos de la campaña, la cadena de infección presenta una arquitectura altamente modular. En lugar de implementar una única carga útil de malware de gran tamaño, los atacantes introducen componentes de forma incremental en múltiples etapas. Este diseño mejora la flexibilidad operativa y la resiliencia.
Desde la perspectiva de la detección, un indicador de comportamiento notable surge a lo largo de la campaña: la inyección repetida de procesos en explorer.exe en intervalos cortos. Este patrón puede servir como una señal sólida para los defensores que intentan correlacionar la actividad sospechosa en las diferentes etapas del ciclo de vida del ataque.