El gusano SCKit instala clientes no autorizados de ScreenConnect y retransmisiones de cookies de sesión en cientos de endpoints

Puntos clave

  • Huntress ha observado a atacantes usando comandos Run en paneles alojados en la nube para instalar clientes de ScreenConnect no autorizados en al menos 288 endpoints administrados en 48 organizaciones.

  • Los clientes no autorizados distribuyen SCKit, un kit de herramientas maliciosas personalizado que establece acceso remoto persistente y crea una trampa de retransmisión para interceptar cookies de sesión. 

  • Las versiones más recientes del software de monitoreo y gestión remota (RMM) —26.6.6.9747 y 26.7.6.9783— están afectadas. Huntress está en comunicación con ConnectWise, la empresa matriz de ScreenConnect, respecto a esta actividad. 

  • En un aviso público, ConnectWise compartió que habían identificado cinco extensiones independientes de terceros que podrían estar relacionadas con esta actividad, las cuales deshabilitaron en más de 400 entornos de socios como medida de precaución. Huntress se enteró de que la actividad parece estar relacionada con una de estas extensiones específicas que ConnectWise había deshabilitado, RMM+.  Las versiones 1.0.31 y 1.0.32 contenían una falla grave de autenticación: si un administrador nunca había configurado la clave de acceso de la extensión, RMM+ aceptaba una en blanco.

  • Se recomienda a los defensores tratar cualquier conexión de ScreenConnect a una máquina desconocida como insegura. No hagas triaje de hosts infectados a través de ScreenConnect para evitar propagar malware a tu estación de trabajo y a otras partes de tu entorno. 

Agradecimientos: Un agradecimiento especial a Tanner Filip, Tyler Marzen, Austin Worline, Ethan Williams, Sharon Martin, Ben Bernstein, Andrew Brandt, Jamie Levy, Max Rogers y Aaron Deal por sus contribuciones a esta investigación y redacción.

Actualización: 11/11/26 a las 11:34 p. m. hora del Este

Huntress supo que la actividad parece estar relacionada con una de las extensiones específicas que ConnectWise ya había deshabilitado, RMM+. ConnectWise deshabilitó esta extensión (y varios otros complementos relacionados) en todos los entornos alojados, e instó a los socios on-premises a hacer lo mismo en su aviso público. 

RMM+ es una extensión de terceros para ScreenConnect que permite que otra herramienta administre sesiones de ScreenConnect sin que un técnico trabaje a través de la consola. Nuestro análisis sugiere que la mayoría de las instalaciones de RMM+ que encontramos eran legítimas, por lo general agregadas para un proyecto y dejadas en su lugar. Pero las versiones 1.0.31 y 1.0.32 contenían una falla grave de autenticación: si un administrador nunca había configurado la clave de acceso de la extensión, RMM+ aceptaba una en blanco.

RMM+ omite las cuentas de usuario, los roles y la MFA de ScreenConnect, y autentica las solicitudes con una clave de acceso compartida almacenada en la configuración de la extensión. En las versiones 1.0.31 y 1.0.32, esa clave tenía como valor predeterminado un campo en blanco, lo que significaba que la verificación de autenticación no rechazaba un valor vacío y un llamador podía pasar la verificación cuando no se había configurado ninguna clave.

La parte importante es la configuración de la clave de acceso:

<Setting Name="RMMPlus.AccessKey" IsServerOnly="true">

    <Description>This is like a password. This is required to be sent in the POST request to access the functions. Set to a strong key..</Description>

    <DefaultValue></DefaultValue>

</Setting>

La descripción le indica al administrador que configure una clave segura, pero si está vacía, introducirá la vulnerabilidad.

Esto coincidió con nuestras observaciones en este incidente. Los comandos llegaron a endpoints en varias instancias de ScreenConnect en cuestión de minutos. No hubo actividad de inicio de sesión correspondiente y los comandos aparecieron en los registros revisados vinculados a RMM+.

Un agradecimiento especial a Mendy Green por ayudarnos a validar estos hallazgos.

PUBLICACIÓN ORIGINAL

Contexto

El 11 de noviembre de 2026, Huntress observó a un operador que usaba acceso a múltiples paneles de ScreenConnect alojados en la nube para enviar comandos a grupos de endpoints administrados. Los comandos instalaron clientes de ScreenConnect controlados por el atacante y un kit de herramientas adicional llamado SCKit. Se han visto afectados al menos 288 endpoints en 48 organizaciones que usan Huntress. 

En un aviso publicado a las 22:45 UTC del 11 de noviembre, ConnectWise informó que habían identificado cinco extensiones de terceros independientes que podrían estar asociadas con esta actividad; dijeron que aún no habían identificado un vector de acceso inicial ni el alcance completo del ataque. Deshabilitaron las siguientes extensiones en 400 entornos de socios como precaución:

  • Labtech Plus

  • RMM Plus

  • RMM+

  • RMM Plus Password Link

  • RMM+ Password Link

En septiembre de 2026, Huntress organizó una Respuesta Rápida ante una actividad similar de tipo gusano que generó clientes de ScreenConnect no autorizados en varios entornos de clientes. ConnectWise luego lanzó una actualización de seguridad para abordar una vulnerabilidad crítica de transferencia de archivos (CVE-2026-84869) que obtuvo una calificación de 9,9 en la escala CVSS.

Al analizar esta amenaza, hemos revisado la actividad desde dos frentes. Primero, examinamos lo que se observó en los incidentes que hemos visto, donde los actores de amenazas usaron la función Run command del panel de ScreenConnect para implementar SCKit en múltiples endpoints. 

Luego, analizamos el código del kit para entender cómo fue construido para propagarse desde un endpoint infectado hasta la estación de trabajo de un técnico, y luego a otros endpoints accesibles a través de la sesión de ScreenConnect del técnico. No hemos observado que ese método de propagación funcione con éxito. El intento de toma de control de la consola falló en todos los registros de endpoints recuperados que hemos revisado hasta ahora. 

Huntress continúa respondiendo y dando seguimiento a este incidente del 11 de noviembre; publicamos a continuación más información sobre las tácticas del atacante, un desglose de SCKit e indicadores de compromiso (IoC), con el fin de ayudar a los defensores que responden a este ataque.

Detalles técnicos 

Aproximadamente a las 17:47 UTC del 11 de noviembre de 2026, Huntress observó actividad sospechosa en endpoints asociados con múltiples entornos de ScreenConnect. En total, vimos los 288 endpoints afectados en el transcurso de 90 minutos; alrededor de un tercio de ellos en los primeros 10 minutos. 

La ruta de infección funciona en dos etapas: desde un endpoint infectado hasta un técnico que se conecta a él, y desde la estación de trabajo de un técnico hasta todos los endpoints a los que su panel puede conectarse. Sin embargo, no se ha observado toda la funcionalidad durante los incidentes observados; parte de la funcionalidad se descubrió al analizar los payloads. 

Figura 1: Cronología del ataque en múltiples organizaciones

SCKit en detalle

SCKit es el nombre del kit de herramientas usado para llevar a cabo este ataque. Este kit de herramientas es un paquete de 16 archivos (scripts de PowerShell, scripts por lotes, archivos .cmd de línea de comandos de Windows y otros datos de configuración) diseñado para propagar la infección lateralmente, mediante un proceso de múltiples etapas. 

Figura 2: El contenido del archivo SCKit descifrado

El kit se entrega como un payload cifrado, pero la máquina infectada proporciona la clave de descifrado real para extraer los archivos del paquete SCKit; cuando el gusano envía la solicitud para recuperar el kit desde su infraestructura, pasa el UUID del sistema Windows en el que se está ejecutando como parte de la cadena de consulta de la URL. El servidor devuelve datos de encabezado que incluyen una clave de cifrado, un vector de inicialización y un valor de sal, que el script usa para descifrar el paquete en la carpeta %temp% del objetivo.

Figura 3: Solicitud GET y respuesta del servidor

Como se ve en la figura 3 anterior, la cadena de consulta para recuperar el payload de SCKit incluye el GUID del equipo Windows en el que se ejecuta (texto resaltado superior). El servidor devuelve valores de descifrado que el script usará para extraer el payload en la carpeta %temp% del mismo equipo.

Actividad observada

Inicialmente observamos que la implementación del kit de herramientas llegaba a través de paneles de ScreenConnect, en lugar del comportamiento autorreplicante del kit. Parece que un operador usó la función Run command de las consolas para enviar comandos a varios endpoints a la vez, ejecutándose como SYSTEM.  

Figura 4: Descripción general de la cadena de ataque

El comando primero verificó si existía un cliente de ScreenConnect, luego descargó un instalador de ScreenConnect controlado por el atacante a C:\Windows\TEMP\sc.msi y lo instaló en silencio. Luego escribió un dropper codificado en base64 en C:\Windows\Temp\sckit-run.bat.

El dropper luego se conecta a infraestructura controlada por el atacante y descarga C:\Windows\Temp\sckit-decoder.ps1, y luego obtiene una versión con clave del kit de herramientas SCKit para el sistema específico. Varios de los componentes del kit de herramientas realizan actividad adicional:

  • Panel-Lateral.ps1 intenta tomar el control de la consola (sin éxito)

  • sckit-loader.ps1 descifra y lanza el script específico del equipo k<32 Hex>.ps1

  • k[32 Hex].ps1 luego extrae el kit de herramientas a C:\ProgramData\RelayTrap

  • lab-trap-cleanup-embedded.ps1 limpia la instalación en la carpeta Temp

Figura 5: Secuencia de instalación en un endpoint

La trampa, junto con las políticas de bloqueo, se instalan luego mediante C:\ProgramData\RelayTrap\install.ps1 mientras CWInstall_<8 hex>-c1\

Installer.ps1 agrega exclusiones a Defender e instala un segundo cliente de ScreenConnect controlado por el atacante. 

Finalmente, TrapWatch.ps1 se lanza como SYSTEM, y compila RelayTrap.cs en una copia específica del endpoint de C:\ProgramData\RelayTrap\trapbins\<client id>\RelayTrap.exe y crea una tarea programada llamada TrapWatch. Luego se detiene la instalación legítima de ScreenConnect, se configura para inicio manual, y la copia de ScreenConnect controlada por el atacante se coloca para reemplazarla.

Figura 6: El código fuente en C# del ejecutable RelayTrap parece haber sido generado por un LLM, según las referencias y comentarios detallados en el código fuente que explican exactamente qué está diseñado para hacer

Más funcionalidad en el código

Más allá de lo que hemos observado, reconstruimos una funcionalidad adicional diseñada para propagarse desde la estación de trabajo de un técnico hasta el panel de ScreenConnect. Esto se descubrió a partir del análisis de sus scripts, configuración y herramientas. Hasta la fecha no hemos observado un salto exitoso de un endpoint infectado a una estación de trabajo de un técnico, ni de esa estación de trabajo a otros endpoints.

Figura 7: Funcionalidad adicional, diseñada para propagarse desde las estaciones de trabajo de los técnicos.

Parece que esto se diseñó para esperar a que un técnico se conecte al relé y al endpoint comprometido. Una transferencia de archivo ocurre 2,5 segundos después de establecerse la conexión, y recupera una copia del dropper Run-Lateral-Full.bat desde el endpoint comprometido con la acción configurada en Run.

Este dropper está construido para conectarse a hxxps://ns.mo7sen[.]dev/EadF.php y descargar un loader en la estación de trabajo comprometida. El loader recopila el ID único de la estación de trabajo, lo envía de vuelta a la infraestructura del atacante, la cual devuelve un kit único y encriptado para esa estación de trabajo específica. 

Panel-Lateral.ps1, con el apoyo de LabConfig.ps1, luego roba la cookie de sesión .aspxauth de la estación de trabajo e intenta reproducir la cookie contra el panel para obtener los tokens necesarios para enumerar cualquier otra sesión a la que el técnico tenga acceso. 

A continuación, ToolboxRelayUploader.exe está diseñado para usar el acceso obtenido a cualquier otra sesión para subir un payload, WithUninstall.ps1, al Shared Toolbox del panel. Una solicitud del panel le indica a cada sesión alcanzable que ejecute el elemento del toolbox. Este payload está diseñado para ejecutarse como SYSTEM en esos endpoints, instalando la trampa y extendiendo el ciclo. Aproximadamente 60 segundos después de la transmisión, ToolboxRelayUploader.exe elimina el elemento del Shared Toolbox.

Guía de mitigación

Si usas ScreenConnect, revisa tu entorno ahora, incluso si no has recibido una alerta. Busca actividad masiva inesperada en el historial de Run Command y Toolbox de ScreenConnect, incluyendo comandos o herramientas que no hayas iniciado, y verifica si hay un segundo cliente de ScreenConnect no autorizado en los endpoints administrados.

Si sospechas que un endpoint está afectado:

  • No te conectes a él a través de ScreenConnect. Una sesión interactiva puede provocar que el malware se propague a la estación de trabajo del técnico y luego a otros paneles de ScreenConnect disponibles para ese técnico. Usa la respuesta en vivo de EDR, WinRM u otra herramienta CLI fuera de banda. Si un técnico ya se conectó a un endpoint sospechoso, trata esa estación de trabajo como potencialmente expuesta e investígala desde un dispositivo limpio.

  • Aísla el endpoint y mantenlo aislado hasta que la limpieza esté completa. El aislamiento por sí solo no elimina la persistencia, y se ha observado que los sistemas afectados se reinfectan poco después de que se levanta el aislamiento.

  • Elimina el cliente no autorizado de ScreenConnect y el mecanismo de persistencia. Busca y elimina el servicio de cliente falso, la tarea programada TrapWatch, C:\ProgramData\RelayTrap\, y los archivos del kit de herramientas en %TEMP% (incluyendo sckit-*, Panel-Lateral.ps1, runnew.cmd, ToolboxRelayUploader.exe, y sqlite3.exe). Verifica y elimina el valor RelayTrapLiteAlert en HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Verifica el cliente legítimo de ScreenConnect por separado antes de eliminar nada.

  • Revoca el acceso que pudo haberse expuesto. Desde un dispositivo limpio, cierra las sesiones web activas de ScreenConnect y rota las credenciales afectadas de ScreenConnect. Como el kit de herramientas puede robar tokens de sesión del navegador, revoca también las sesiones potencialmente expuestas del navegador y del proveedor de identidad.

  • Revisa e investiga la actividad del panel. Audita el historial de Run Command y Toolbox de ScreenConnect en busca de ejecuciones no reconocidas, y usa los registros de auditoría de la instancia para investigar el acceso al panel y determinar qué sistemas y estaciones de trabajo de técnicos pueden estar afectados.

  • Usa SIEM para la búsqueda de amenazas. Si usas Huntress SIEM, asegúrate de que ScreenConnect esté conectado como fuente de datos para ayudar a Huntress a buscar actividad sospechosa de administrador en todo tu entorno a gran escala.

No pongas un endpoint de nuevo en servicio hasta que se haya eliminado el cliente falso y su mecanismo de persistencia, y se haya verificado el sistema en busca de reinfección. Continúa monitoreando los paneles de ScreenConnect y los endpoints en busca de actividad sospechosa.

Indicadores de compromiso (IOC)

Ten en cuenta que los hashes de archivo son indicadores débiles para esta actividad, ya que los scripts se reconstruyen con diferentes valores incorporados, y el ejecutable de la trampa se compila por separado en cada endpoint.

Elemento

Descripción

185.99.255[.]28 (hostname: screen)

Servidor de ScreenConnect del atacante; sirve el instalador del cliente

newnewnew.gotdns[.]org

Relay del atacante, resuelve a la IP anterior

sc.payproofkit[.]com (155.94.150[.]39, hostname: WIN-FB5CKHMU4E1)

Panel de ScreenConnect controlado por el atacante. Está en la lista de exclusión del malware, en Panel-Lateral-free.ps1 y lab-context.json, para que el malware no infecte la propia infraestructura del atacante. 

soxnewwork.homedns[.]org

Relay del atacante que resuelve a 185.99.255[.]28 y también está en la lista de exclusión. RelayTrap.cs lo nombra como el relay (puerto 81) para el cliente falso ed630cc2c873b091. 

cdn007-digitaldownloads[.]com

Dominio C2, originalmente marcado por BlackPoint

hxxps://ns.mo7sen[.]dev/EadF.php?p=4

Stager

hxxps://ns.mo7sen[.]dev/EadF.php?p=5

Entrega una copia de la herramienta de línea de comandos SQLite, que el malware usa para leer las bases de datos de cookies del navegador y robar las cookies de sesión de ScreenConnect. 

2588ef5c15954b10,

ed630cc2c873b091

IDs de clientes falsos

Addmin

Nombre de participante del atacante

/Bin/ScreenConnect.ClientSetup.msi?...&c=Exploited<N> Actor Name: Addmin

Patrón de instalador

Panel-Lateral-free.ps1


SHA256: 94b93c649b0ae0281352da9d01761fa9195ab1e6ac7010af3b9ba1646355eb11

El script instalador principal del gusano, pero sin un archivo de configuración. 

Panel-Lateral.ps1


SHA256: 

7a9aca9fdd4dcc13fe497cabdb13ca1e5d6a529271c8aa495e5ca1c1c80271ec

El script instalador principal del gusano. Roba la cookie de inicio de sesión de SC de un técnico, y luego envía una carga a cada sesión a la que el técnico tenga permiso de acceder

LabConfig.ps1


SHA256: 

b93f10f30ee453d1e1c046fec9d141c41d7680be5cd46c3aeb3febe0f4953b4d

Una biblioteca auxiliar que descifra cookies, sondea los paneles de SC y genera URL de instalador de clientes falsos

SCKit/trapkit/RelayTrap.cs


SHA256: 

3c7a98f0fdb6235b8076319c74dc1085f7b349b6d750416dd0cadb07d7972ec4

Código fuente de la trampa. Reutiliza las bibliotecas de código propias del cliente real de ScreenConnect del equipo y sus detalles de conexión para tomar el lugar de ese cliente en el relay legítimo de SC, de modo que el endpoint siga pareciendo normal. 

SCKit/trapkit/TrapWatch.ps1


SHA256: 

d2ed7a7bf4f8ac9c7969e9b3a07ebd4dda0d858f372c876ac0a041611698de9a

Se ejecuta como SYSTEM cada 10 segundos; detiene los clientes legítimos de ScreenConnect y toma el control de su slot de conexión.

SCKit/trapkit/install.ps1


SHA256: 

4a1dd3cd2ea14368afadf7e9dfdd63b104e3981ef8c85bbb6510919b810af04b

Configura la trampa en C:\ProgramData\RelayTrap, agrega la tarea de inicio TrapWatch y la clave Run RelayTrapLiteAlert, y añade reglas de SRP/AppLocker que bloquean la ejecución de archivos enviados a través de las carpetas temporales de ScreenConnect. 

ToolboxRelayUploader.exe


SHA256: 

8cb5f48bbe70b5248db7f327f3d1ad6649df5c767d2a7e0711ee147fd92e06af

Un archivo PE .NET de 32 bits que carga las propias bibliotecas de ScreenConnect del cliente y se conecta a una sesión como técnico (el rol de Host), usando un token de acceso robado. Luego sube el payload al Shared Toolbox del panel (AddToToolbox), y --delete lo elimina de nuevo después de la transmisión para cubrir el rastro. 

SCKit/trapkit/Lite-Alert.ps1


SHA256: 

cf50d73fa8117a758093b1344de41cd6a6ccddc645cdda1fa91a9264efe93956

Se ejecuta al iniciar sesión el usuario y registra los eventos "file run" de ScreenConnect (ID de evento 201) y los nuevos servicios de cliente de ScreenConnect instalados, con las alertas en pantalla desactivadas a propósito. 

Stage0Loader.ps1


SHA256: 

81cc2baa35b798d6084bd078662fa29ff28df02c46c6ccdb2b43bde97d19f781

Obtiene un payload desde EadF.php?p=1 (que solo se descifra en el equipo que lo descarga), lo descifra con el salt fijo, lo escribe en %TEMP%\k<guid>.ps1, lo ejecuta oculto y luego lo elimina. 

SCKit/Release-Machine.cmd


SHA256: 

c31e6f075cd77e01839aebce32ed35659a9ee962d102aca53040bb5e297410a9

Elimina la trampa usando solo herramientas integradas de Windows: borra la tarea TrapWatch, termina RelayTrap.exe, limpia las reglas de SRP/AppLocker y reinicia todos los servicios de cliente de ScreenConnect 

SCKit/Recover-ExecutionPolicy.cmd


SHA256: 

eda7c30d798a19b6699a45fbcba503cf778594df9163c61c2f96bb2d2b9fb45

Elimina solamente las reglas de SRP/AppLocker y detiene el servicio AppLocker, para cuando esas reglas han bloqueado el propio powershell.exe. 

Lab-context.json


SHA256: 

0bd84c776dc01f784a617e73fc77b269f847fc4a062ffd489e4692869724bf08

Archivo de configuración que viaja con el kit. Apunta al gusano hacia el panel del atacante y contiene la clave RSA y los valores de ID de cliente falsos. 

SCKit/trapkit/payload/TRAP-PROOF.bat


SHA256: 

454c43d296b1276bde9a4f6ff1da2221cb35ccdb2fc7991bdd572e45bce12a8a

Agrega una línea a %PUBLIC%\RELAY-TRAP-PROOF.txt y lo abre en el Bloc de notas. Sin embargo, en modo completo, el decodificador coloca el dropper junto a él como [payload]\Run-Lateral-Full.bat 

Stop-LabTrap.bat


SHA256: 

5dd3a6ba806ac472663e243cfc1c034c534d5d9a42ec362c3dbf0f8d950148d0

Hace lo mismo que el dropper, pero ejecuta el decodificador en -Mode cleanup. Cleanup obtiene el limpiador Stop-LabTrap.ps1 desde EadF.php?p=6, lo ejecuta con privilegios elevados y luego inicia el nuevo kit a menos que se haya definido -NoReArm. 

Run-Lateral-Full.bat


SHA256: 

43b7a5e56f9e6c7b74e1ce2b7b5af63f383084625fcc2d3a5985fa1059e2db95

Es el dropper: establece BATPATH en su propia ruta, descarga el decodificador desde EadF.php?p=4 a %TEMP%\sckit-decoder.ps1, y lo ejecuta oculto en -Mode full. El decodificador luego copia este mismo .bat en la carpeta de payload de la trampa para que se transmita al siguiente equipo. 

runnew.cmd


SHA256: 

50659748723e906c8b3d3c0386bd4cf692f693a3e23639398c1a14d0c31fed61

Descarga EadF.php con curl.exe a %TEMP%\sckit-loader.ps1 y lo ejecuta oculto; este es el archivo que el modo full envía a cada objetivo. 

desktop-vmc0ifs,

send,

sc-observation-lab

Nombres de equipos excluidos como objetivo cuando el gusano envía su payload a cada sesión en un panel, probablemente para evitar que el atacante infecte sus propios dispositivos

También te podría interesar