Agradecimientos: Gracias a Stephanie Fairless y Andrew Brandt por su ayuda en el análisis de este ataque.
Antecedentes
Una simple búsqueda en Google o Bing para descargar un cliente VPN puede parecer una tarea rutinaria, pero también puede exponer a los usuarios a sitios de phishing de credenciales muy convincentes.
En enero de 2026, el equipo Secplicity de WatchGuard publicó una investigación sobre una campaña de robo de credenciales dirigida a proveedores de VPN, que abarcaba sitios de descarga falsificados para los clientes de WatchGuard, F5, Fortinet, SonicWall y Sophos. Esta campaña incluyó dos dominios que suplantaban al propio WatchGuard: watchguard-vpn[.]com y watchguard-vpn[.]net. Los hallazgos incluían un ejecutable .NET que se hacía pasar por su aplicación Mobile VPN with SSL, alojado en un repositorio de GitHub, que enviaba las credenciales ingresadas a un servidor de comando y control (C2). Los investigadores afirmaron que también observaron que Copilot de Bing recomendaba watchguard-vpn[.]net al preguntar sobre "watchguard vpn", aunque en el momento de su investigación ese dominio no tenía "lógica de backend para dirigir a los usuarios a la página de descargas falsificada".
Dos meses después, Microsoft Threat Intelligence informó actividad vinculada específicamente a watchguard-vpn[.]com. Microsoft atribuyó esta iteración más amplia de la campaña a Storm-2561, un actor con motivación financiera que ha estado activo desde mayo de 2025. La cadena de ataque destacada por Microsoft implicaba impulsar sitios falsificados de proveedores en los resultados de búsqueda, entregar un MSI falso pero firmado que carga DLL maliciosas mediante sideloading, robar las credenciales escritas en un cliente falso y luego mostrar un error de instalación y dirigir a la víctima a la descarga real del proveedor para que nada parezca sospechoso después.
Avanzando hasta octubre: el Huntress SOC analizó un incidente relacionado con uno de los dominios iniciales que WatchGuard había reportado en enero: watchguard-vpn[.]net, que era consistente con informes previos de esta campaña de robo de credenciales dirigida a credenciales de VPN de WatchGuard. Sin embargo, una investigación más profunda del incidente mostró que esta última iteración de la cadena de ataque es un poco diferente. En lugar de descargar un cliente falso, el dominio descarga un instalador genuino y válidamente firmado de WatchGuard.
Al 13 de octubre, el dominio principal vinculado a la actividad observada por Huntress (watchguard-vpn[.]net) estaba fuera de línea. Antes de publicar, Huntress notificó a WatchGuard sobre esta campaña activa y compartió los detalles relevantes de la infraestructura.
Figura 1: Flujo completo del phishing de credenciales de VPN de WatchGuard.
Detalles técnicos
Acceso inicial: un error tipográfico y un motor de búsqueda
El 7 de octubre, Huntress Managed Defender marcó actividad sospechosa que se remontaba a la actividad de una cuenta de usuario en un proveedor de servicios administrados. Una investigación más profunda del incidente reveló que un administrador había buscado en Bing "watchguard vpn sll download". Ocho segundos después, hizo clic para ir a www.watchguard-vpn[.]net, una página titulada "WatchGuard Firebox VPN Client".
El clic pasó por la redirección estándar de resultados de Bing bing.com/ck/a, con el destino codificado en el parámetro u= (aHR0cHM6Ly93d3cud2F0Y2hndWFyZC12cG4ubmV0Lw se decodifica como hxxps://www.watchguard-vpn[.]net/). Esta redirección es consistente con un clic estándar en los resultados de búsqueda de Bing y, junto con la aparente ubicación del dominio falsificado en los resultados de búsqueda, respalda clasificar el señuelo como SEO poisoning en lugar de malvertising. Secplicity y Microsoft también han descrito actividad relacionada con esta campaña como SEO poisoning.
Figura 2: El dominio falsificado para una búsqueda rutinaria de descarga de VPN.
Analizamos más de cerca watchguard-vpn[.]net como parte de nuestra investigación.
El dominio malicioso
Video: La cadena de ataque
Cuando los objetivos llegan a watchguard-vpn[.]net, ven un dominio que finge ser el sitio web legítimo de WatchGuard y ofrece una opción para "Download WatchGuard SSL VPN". El sitio web falso de WatchGuard también incluye información sobre productos de WatchGuard y una sección "WatchGuard Mobile VPN Questions" (probablemente destinada a mejorar el posicionamiento SEO).
Irónicamente, al final de la página, el sitio web incluye el siguiente descargo de responsabilidad: "An independent English-language fan site about WatchGuard Mobile VPN. Not an official sales, download, or support channel."
Figuras 3 y 4: El dominio malicioso (izquierda) frente al dominio real y legítimo de WatchGuard (derecha)
Cuando los objetivos hacen clic en el sitio, se los envía a la página de descarga en watchguard-vpn[.]net/index.php, que se hace pasar por una "WatchGuard Support Page" y ofrece varias opciones para descargar la VPN según distintas configuraciones de sistema operativo.
Captura de credenciales: dentro de popup.js
Al hacer clic en cualquiera de las opciones de descarga, se les presenta a las víctimas una ventana emergente que dice "To install WatchGuard SSL VPN, please enter your connection details" y solicita tres datos: Server, Login y Password.
La lógica del phishing reside en un solo archivo, popup.js, de unas 150 líneas de JavaScript simple y sin ofuscar.
Figuras 5 y 6: Se lleva a los objetivos a una página de descarga (izquierda) y, al hacer clic en "Download", se muestra la solicitud de credenciales (derecha)
El cliente legítimo Mobile VPN with SSL también solicita estos tres valores cuando los usuarios se conectan, por lo que la solicitud parece razonable. En particular, el campo "Server" resulta especialmente útil para el atacante: le da la dirección del servidor VPN al que puede autenticarse. El controlador de envío manda el contenido del formulario al dominio de recolección:
La entrada escrita por el usuario se envuelve en JSON y se publica en watchguard-ssl[.]online, etiquetada para indicar si es el primer o segundo intento. El fetch está envuelto en una instrucción try/catch que solo registra una advertencia en la consola en caso de falla, así que incluso si el recolector está caído, el usuario no ve nada inusual.
Curiosamente, la cadena de ataque rechaza a propósito el primer envío en esta ventana emergente del objetivo. El script borra los tres campos y reemplaza el encabezado con texto rojo:
headerText.innerHTML = '<span style="color: #d32f2f;">Incorrect data, please enter again to start installation</span>';
attempt = 2;
Cualquiera que haya escrito mal sus contraseñas ahora escribirá con más cuidado, y cualquiera que no esté seguro de cuál de sus contraseñas aplica probablemente intentará con la otra, así que el atacante obtiene un segundo conjunto de credenciales para validar, con la etiqueta attempt marcando cuál envío ocurrió al final.
Figuras 7 y 8: El mensaje forzado de "Datos incorrectos" después del primer envío (izquierda) y luego el segundo aviso (derecha)
El giro: el payload es el verdadero
Después del segundo envío, la ventana emergente se pone verde ("VPN client installation has started"), y el script crea un enlace oculto y hace clic en él:
const DOWNLOAD_FILE = 'https://cdn.watchguard.com/SoftwareCenter/Files/MUVPN_SSL/12_11_5/WG-MVPN-SSL_12_11_5.exe';
Este es el CDN oficial de WatchGuard.
El archivo es un instalador de Inno Setup para "Mobile VPN with SSL client", versión 12.11.5, con derechos de autor de WatchGuard Technologies.
Lleva una firma Authenticode de WatchGuard Technologies, Inc., emitida por Sectigo Public Code Signing CA R36, con una contrafirma con marca de tiempo del 4 de noviembre de 2025.
Recalculamos el resumen Authenticode SHA256 del archivo (
fb3c39ba…0032ac1f) y coincide con el resumen en la firma, por lo que el binario no se ha modificado desde que WatchGuard lo firmó.
Para los atacantes, el uso de un cliente VPN real y firmado hace que el ataque de phishing sea mucho más convincente y más difícil de detectar. Primero, no hay un instalador troyanizado ni una DLL maliciosa que las defensas de seguridad puedan marcar. Segundo, las víctimas siguen obteniendo el resultado esperado. Como siguen recibiendo un instalador real, esto disipa cualquier sospecha.
Esto es una variante de la misma idea en la cadena de ataque que destacó Microsoft, donde los atacantes enviaban a la víctima al instalador real después para que nada pareciera sospechoso, pero ahora con el cliente falso eliminado de en medio.
En el caso particular que investigamos, el historial del navegador no registró ninguna descarga desde cdn.watchguard.com durante el período en cuestión. Como el script solo activa la descarga después del segundo envío, esto sugiere que el usuario no completó ambas rondas, aunque pudo haber ingresado sus credenciales en la primera ronda. Huntress Managed Defender marcó el incidente 21 segundos después de que se cargara el dominio malicioso, y el SOC pudo brindar a la organización pasos de remediación antes de que el ataque pudiera escalar.
Dominio viejo, backend nuevo
El registro WHOIS de watchguard-vpn[.]net muestra una fecha de creación del 22 de agosto de 2026, con Realtime Register B.V. como registrador. Secplicity registró el mismo dominio en enero resolviendo a 74.208.236[.]39; a partir del 9 de octubre resuelve a 80.249.132[.]140 en hosting de Site BV (LeaseWeb Netherlands, AS60781). Esto indica que el dominio se volvió a registrar después de la observación de WatchGuard en enero, pero la evidencia disponible no establece si los mismos operadores controlaron ambos registros. La iteración actual alojaba un flujo funcional de recolección de credenciales.
El endpoint de recolección de credenciales, watchguard-ssl[.]online, se registró a través de Dynadot el 14 de septiembre de 2026 y resuelve a 158.94.209[.]19 (Omegatech LTD, AS202412, Ámsterdam).
La tabla a continuación describe una línea de tiempo de la infraestructura para los dominios señuelo y de recolección.
Fecha (UTC) | Evento |
|---|---|
13 de ene. de 2026 | Secplicity reporta |
22 de ago. de 2026 |
|
14 de sep. de 2026 |
|
17 y 22 de sep. de 2026 | Envíos en urlscan.io de |
7 de oct. de 2026 | La víctima llega a |
Hasta el 8 de octubre, las detecciones para los dominios vinculados a este ataque eran escasas, lo cual no es del todo sorprendente dado que los dominios en realidad no desplegaban malware. Solo siete proveedores de VirusTotal marcaron el dominio señuelo, y dos marcaron el recolector, sin reportes de AbuseIPDB contra ninguna de las dos IP.
Conclusión
Esta cadena de ataque eleva el nivel al eliminar el componente de malware y hacerlo más difícil de detectar. Los operadores dan a las víctimas una experiencia de instalación convincente mientras evaden muchos controles de seguridad enfocados en endpoints, recolectando credenciales de VPN en el navegador y luego entregando el instalador legítimo y firmado de WatchGuard desde el propio CDN de WatchGuard.
Si crees que ingresaste credenciales en este sitio o en uno similar, debes restablecer de inmediato la contraseña de cada cuenta afectada y tratar el endpoint de VPN asociado con esas credenciales como conocido por el atacante.
Los defensores también deben aplicar la autenticación multifactor (MFA) además del nombre de usuario y la contraseña. Deben monitorear los inicios de sesión de SSL VPN desde proveedores de hosting, ASN desconocidos o países desde los que la cuenta nunca se ha conectado. Los defensores también deben bloquear watchguard-vpn[.]net y watchguard-ssl[.]online, así como las IP descritas en la sección de IOC a continuación. Por último, los defensores deben publicar (y guardar en marcadores) los enlaces oficiales de descarga del cliente VPN, incluyendo software.watchguard.com, en la documentación para clientes.
Indicadores de compromiso (IOC)
Elemento | Descripción |
|---|---|
| Página falsa de descarga de WatchGuard VPN que aloja la ventana modal de credenciales (registrada el 22 de agosto de 2026) |
| Alojamiento del señuelo, Site BV / LeaseWeb Netherlands (AS60781) |
| Endpoint de recolección de credenciales que recibe solicitudes POST en formato JSON (registrado el 14 de septiembre de 2026) |
| Alojamiento del recolector, Omegatech LTD (AS202412), Ámsterdam |
| Script de la ventana modal de captura de credenciales; campos |