Buenas a todos una vez más mis queridos hackers! En el caso de hoy hablaremos de un caso de phising que detecte en un servidor de Discord de un personaje importante. Tras su detección se informo al staff pertinente para que tomará acciones por su cuenta, por motivos de privacidad no se mencionara directamente el nombre de dicho personaje.
Aviso previo
Las herramientas y técnicas mencionadas en este artículo no deben utilizarse nunca fuera de entornos controlados y autorizados, como laboratorios propios, máquinas virtuales aisladas o sistemas sobre los que se disponga de permiso expreso por escrito.
Interactuar con infraestructura de un atacante sin las debidas precauciones puede exponer tu equipo a malware, alertar al atacante de que su campaña ha sido detectada, contaminar evidencias útiles para una investigación y acarrear consecuencias legales, aunque la intención sea buena.
Si recibes un mensaje sospechoso: no hagas clic, no descargues adjuntos y no respondas. Repórtalo a los moderadores o al canal correspondiente y, si lo necesitas, contacta con INCIBE en el 017.
Todos los indicadores de este artículo están defanged (
hxxps,[.]) para evitar clics accidentales.
Ficha del caso
| Campo | Detalle |
|---|---|
| Fecha del análisis | 29 de agosto de 2026 |
| Autor | KeltichCibSec |
| Enlace analizado | hxxps://best-ai-tool[.]duckdns[.]org/track/ZKaxhX |
| Vector | Mensaje enviado a través de un bot de Discord (La Cabra 2.0) |
| Público objetivo | Miembros de un servidor de Discord |
| Estado | Análisis y recopilación de evidencias |
1. Resumen
El enlace se presenta como una supuesta herramienta de inteligencia artificial, pero en realidad no muestra nada útil: carga una pantalla de "Loading", incrusta un vídeo de TikTok y, en segundo plano, ejecuta un script de JavaScript alojado en el propio dominio del atacante.
Ese script:
- Recopila información detallada del navegador y del dispositivo.
- Solicita acceso a la ubicación.
- Solicita acceso a la cámara y, si se concede, toma hasta tres fotografías que envía a un servidor remoto.
Lo especialmente grave es el contexto: la campaña se dirige a un servidor de Discord con usuarios de edades muy variadas, incluidos menores.
El gancho: un falso puesto de staff
Los atacantes aprovecharon que el servidor había abierto recientemente postulaciones para formar parte del staff. El mensaje ofrecía a los usuarios —sobre todo a los más jóvenes— la última plaza de "vigilante" que supuestamente quedaba libre, con la condición de rellenar un formulario y "verificar la cuenta por seguridad", aceptando todo lo que pidiera la web.
Para hacer llegar el mensaje utilizaron un fallo en el código que fue reportado previamente a los developers del bot La Cabra 2.0, que permite enviar avisos (warns) a cualquier usuario con el que se comparta servidor. El resultado es un mensaje que parece una notificación oficial de moderación:

Mensaje recibido. Los nombres de usuario y del servidor se han ocultado.
La instrucción de "aceptar todo lo que salga" no es casual: es exactamente lo que el script necesita para obtener la ubicación y activar la cámara.
En pocas palabras: es un enlace que rastrea al visitante con un comportamiento muy invasivo. No hay ningún motivo para considerarlo fiable.
2. Qué contiene la página
La página se compone de dos elementos principales.
Un iframe con contenido de TikTok, que sirve de distracción:
Un script propio del atacante:
El script recibe dos parámetros desde la página:
| Dato | Valor | Función |
|---|---|---|
trackingId |
ZKaxhX |
Identifica el enlace o la víctima concreta |
serverUrl |
hxxps://best-ai-tool[.]duckdns[.]org |
Servidor al que se envían los datos |
Durante la revisión, la página se quedó indefinidamente en "Loading". Sin embargo, el script pudo descargarse y analizarse de forma estática, lo que permite ver con claridad qué información intenta recopilar y a dónde la envía.
3. Información que recopila
Algunos datos se obtienen directamente al cargar la página; otros dependen de que el navegador los exponga o de que el usuario conceda permisos.
| Categoría | Datos concretos |
|---|---|
| Red | Dirección IP pública |
| Navegador | Navegador y sistema operativo (navigator.userAgent) |
| Preferencias | Idioma y zona horaria |
| Pantalla | Resolución |
| Dispositivo | Tipo aproximado: iPhone, Android, Windows, Mac, Linux… |
| Batería | Porcentaje y si está cargando |
| Hardware | Núcleos de CPU y memoria aproximada |
| Almacenamiento web | Uso y cuota estimada |
| Conexión | Tipo de red, velocidad y latencia |
| Permisos | Estado de los permisos de cámara y ubicación |
| Ubicación | Latitud, longitud, precisión y enlace a Google Maps (con permiso) |
| Cámara | Hasta tres fotografías (con permiso) |
Por separado, la mayoría de estos datos no son secretos. El problema es que el script los reúne y los asocia a un identificador de seguimiento concreto, construyendo un perfil de cada víctima.
4. Cómo funciona el script, paso a paso
4.1 Identifica la visita
Busca en la página una etiqueta <script> que contenga el identificador de seguimiento y la dirección del servidor. Si falta alguno de los dos, deja de ejecutarse. El identificador ZKaxhX permite al servidor relacionar todas las peticiones con el mismo enlace o víctima.
4.2 Obtiene la IP pública
Consulta un servicio externo legítimo para conocer la IP pública del visitante:
La IP no revela una dirección exacta, pero sí el proveedor de Internet y una ubicación aproximada.
4.3 Recopila datos del navegador y del dispositivo
Guarda el user agent, el idioma, la resolución y la zona horaria, e intenta clasificar el dispositivo (iPhone, Android, Windows, Mac o Linux). Cuando el navegador lo permite, consulta además la batería, la memoria, los núcleos de CPU, el almacenamiento web y datos de la conexión.
Con todo ello se genera una huella digital del dispositivo (fingerprint) que, sin identificar por sí sola a una persona, permite reconocerla o relacionar distintas visitas.
4.4 Solicita la ubicación
Comprueba primero el estado del permiso de geolocalización y después intenta obtener la posición:
Si el usuario acepta, guarda:
- Latitud
- Longitud
- Precisión estimada
- Enlace de Google Maps con las coordenadas
Si lo rechaza, registra la denegación y continúa con el resto del proceso.
4.5 Envía los datos al servidor
Todo lo recopilado (IP, datos técnicos, red, permisos y ubicación si se obtuvo) se envía mediante una petición POST a:
4.6 Solicita acceso a la cámara
El navegador muestra un aviso y el usuario debe aceptarlo expresamente. Si lo hace, el script crea un elemento de vídeo oculto y conecta la cámara a él, de modo que la víctima no ve nada en pantalla.
4.7 Toma y envía tres fotografías
Con la cámara activa, el script dibuja el fotograma en un canvas, lo convierte a JPEG codificado en Base64 y lo envía a:
| Momento aproximado | Acción |
|---|---|
| 1 segundo | Captura y envía la primera foto |
| 2 segundos | Captura y envía la segunda foto |
| 3 segundos | Captura y envía la tercera foto |
Formato del envío:
Al terminar, apaga la cámara y elimina los elementos temporales de la página. Esto no borra las imágenes, que ya están en el servidor del atacante.
4.8 Informa del estado final de los permisos
Por último, envía de nuevo una petición a /data indicando qué permisos se concedieron:
Los errores se silencian con bloques del tipo .catch(() => {}), de modo que si alguna petición falla, la víctima no recibe ningún aviso.
5. A dónde va la información
| Destino | Uso | Información |
|---|---|---|
hxxps://api.ipify[.]org/?format=json |
Consultar la IP pública | Devuelve la IP del visitante |
hxxps://best-ai-tool[.]duckdns[.]org/data?trackingId=ZKaxhX |
Recibir datos y permisos | Metadatos del navegador y dispositivo, IP, ubicación y estado de permisos |
hxxps://best-ai-tool[.]duckdns[.]org/photo?trackingId=ZKaxhX |
Recibir imágenes | Hasta tres fotografías de la cámara |
Aunque el vídeo de TikTok se muestra en la página, los datos no se envían a TikTok, sino al dominio del atacante.
6. Qué no se observó
En el código no aparecen funciones para robar contraseñas, leer archivos personales o acceder a otras pestañas, ni se detectó la descarga de ningún ejecutable.
Eso no convierte el sitio en seguro. El script recopila una gran cantidad de información y, con los permisos adecuados, obtiene la ubicación exacta y fotografías de la víctima. Además, nada indica quién administra el servidor ni cuánto tiempo conserva los datos.
7. Reconocimiento pasivo de la infraestructura
7.1 Panel de Coolify expuesto
Durante el reconocimiento pasivo del dominio se observó que el puerto 8000 redirige a una ruta /login con la interfaz de Coolify, con campos de correo y contraseña y el aviso de que el registro está deshabilitado.

No se introdujeron credenciales ni se intentó acceder al panel.
Coolify es una plataforma PaaS autogestionada (una alternativa self-hosted a servicios como Heroku o Vercel) que permite desplegar aplicaciones, bases de datos, copias de seguridad y servicios con proxy inverso. Encaja perfectamente con una campaña cuyo objetivo es almacenar datos de víctimas.
7.2 Servicios y ubicación del host
Consultando la IP asociada al dominio en Censys (un motor de búsqueda de dispositivos expuestos similar a Shodan):

| Campo | Valor |
|---|---|
| IP | 185.226.93[.]154 |
| Sistema operativo | Canonical Linux (Ubuntu) |
| ASN | AS205196 – BIG CORE LLC |
| Ubicación | Estambul, Turquía (VPS) |
| Puertos abiertos | 22/SSH, 80/HTTP, 443/HTTPS, 2222/SSH, 3128/HTTP, 6001/HTTP, 6002/HTTP, 8000/HTTP |
La misma IP resuelve otros subdominios que podrían formar parte de la misma infraestructura:
7.3 Los puertos coinciden con la documentación de Coolify
Según la documentación oficial de Coolify, una instalación self-hosted requiere exactamente estos puertos:
| Puerto | Uso según Coolify |
|---|---|
8000 |
Acceso HTTP al dashboard |
6001 |
Comunicaciones en tiempo real |
6002 |
Acceso por terminal |
22 |
SSH |
80 |
Generación de certificados SSL vía proxy inverso |
443 |
Tráfico HTTPS |

La propia documentación recomienda cerrar 8000, 6001 y 6002 una vez que el panel se sirve a través de un dominio personalizado. Que sigan abiertos sugiere una instalación rápida y poco cuidada, típica de infraestructura desplegada para una campaña concreta.
Nota: el uso de DuckDNS no demuestra por sí solo que un sitio sea malicioso; es un servicio legítimo de DNS dinámico. La sospecha surge del conjunto: seguimiento individual, recopilación masiva de datos, solicitud de ubicación y captura de cámara en una página que no explica lo que hace.
8. Evaluación del riesgo
| Aspecto | Nivel de riesgo | Motivo |
|---|---|---|
| Seguimiento del visitante | 🔴 Alto | Usa un ID específico para asociar cada visita |
| Recopilación técnica | 🟠 Medio-alto | Reúne numerosos datos del navegador, dispositivo y conexión |
| Geolocalización | 🔴 Alto | Obtiene coordenadas precisas si se autoriza |
| Acceso a la cámara | 🟣 Crítico | Toma y envía tres fotos sin mostrar nada en pantalla |
| Robo de contraseñas | ⚪ No observado | No hay funciones explícitas para ello en el script |
| Transparencia | 🔴 Muy baja | Muestra "Loading" y oculta el vídeo de la cámara |
El agravante principal es el público objetivo: fotografías y ubicación exacta de menores en manos de un desconocido.
9. Conclusión
El enlace carga contenido externo como distracción y ejecuta un script de seguimiento que consulta la IP pública, recopila datos técnicos del dispositivo y, si la víctima concede permisos, obtiene su ubicación exacta y tres fotografías. Los metadatos se envían a /data y las imágenes a /photo, en un servidor autogestionado con Coolify alojado en un VPS de Turquía.
Aunque no se observó robo de contraseñas ni de archivos, el comportamiento es demasiado invasivo para considerarlo legítimo. El enlace debe tratarse como malicioso.
10. Recomendaciones
Si has abierto el enlace:
- No vuelvas a abrirlo.
- Revoca los permisos concedidos al sitio desde la configuración del navegador (Configuración → Privacidad → Permisos del sitio).
- Si aceptaste la cámara o la ubicación, avisa a un adulto de confianza o al equipo de moderación.
Si eres moderador o administrador de un servidor de Discord:
- Revisa qué bots tienen capacidad de enviar mensajes directos a los miembros y limita sus permisos.
- Deja claro a la comunidad que el staff nunca pedirá rellenar formularios externos ni aceptar permisos de cámara o ubicación.
- Reporta el mensaje y la cuenta a Discord Trust & Safety.
- Reporta el problema a los desarrolladores del bot utilizado.
Si hay menores afectados:
- Informa a sus familias.
- Si se han podido capturar imágenes o ubicación de un menor, denuncia ante la Policía Nacional o la Guardia Civil. INCIBE ofrece asesoramiento gratuito en el 017.
Indicadores de compromiso (IOCs)
Referencias
hxxps://best-ai-tool[.]duckdns[.]org/track/ZKaxhX— Página analizadahxxps://best-ai-tool[.]duckdns[.]org/script.js— Script JavaScript analizadohxxps://api.ipify[.]org/?format=json— Servicio utilizado para consultar la IP pública- Coolify – Firewall (documentación oficial)
Análisis realizado por KeltichCibSec con fines educativos y de concienciación. Todas las pruebas se hicieron de forma pasiva y en un entorno controlado.