SOC Prime Bias: Crítico

12 Ene 2026 15:59

BlueDelta (APT28) Suplantación de Credenciales a través de Alojamiento Gratuito y Ngrok

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
BlueDelta (APT28) Suplantación de Credenciales a través de Alojamiento Gratuito y Ngrok
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

BlueDelta, un grupo afiliado al GRU también conocido como APT28/Fancy Bear, llevó a cabo múltiples campañas de robo de credenciales entre febrero y septiembre de 2025. Las campañas utilizaron servicios gratuitos de hospedaje y tunelización para alojar páginas de inicio de sesión falsas de Outlook, Google y Sophos VPN y exfiltrar las credenciales capturadas. Los señuelos incluían documentos PDF legítimos y lenguaje específico de la región para aumentar la credibilidad. La operación tuvo como objetivo entidades del sector energético, investigación nuclear, gubernamentales y académicas en Turquía, Macedonia del Norte y Uzbekistán.

Investigación

Insikt Group de Recorded Future recopiló más de una docena de páginas de phishing alojadas en servicios como Webhook.site, InfinityFree, Byet Internet Services y ngrok. JavaScript en las páginas capturó nombres de usuario, contraseñas e identificadores de las víctimas, envió señales a webhooks controlados por atacantes y luego redirigió a las víctimas a portales auténticos. Múltiples variantes reutilizaron código y modificaron nombres de variables para simplificar el despliegue. La infraestructura tenía una vida corta y utilizó acortadores de enlaces como ShortURL.at.

Mitigación

Bloquear dominios conocidos de hospedaje gratuito y tunelización, monitorear el tráfico saliente hacia servicios de webhook y reforzar el MFA en todas las cuentas con acceso externo. Educar a los usuarios sobre las páginas de phishing que imitan portales de OWA, Google y VPN, especialmente cuando se adjuntan señuelos PDF. Implementar filtrado de red para URLs maliciosas conocidas y aplicar controles de seguridad de correo electrónico para detectar enlaces PDF sospechosos.

Respuesta

Alertar a los analistas de SOC cuando se observen HTTP POSTs a endpoints de webhook conocidos y cuando se carguen páginas de robo de credenciales. poner en cuarentena la página maliciosa, aislar cuentas de usuario afectadas, forzar restablecimientos de contraseñas y revisar registros para detectar movimientos laterales. Realizar una búsqueda de amenazas para otras páginas que utilicen la misma infraestructura y actualizar listas de bloqueos en consecuencia.

«graph TB %% Definiciones de Clase classDef action fill:#99ccff classDef service fill:#ffcc99 classDef tool fill:#cccccc %% Nodos – Reconocimiento recon_info[«<b>Acción</b> – <b>T1591 Recopilar Información de la Org de la Víctima</b>: Recopilar direcciones de correo electrónico públicas y detalles de la organización de los investigadores objetivo.»] class recon_info action recon_roles[«<b>Acción</b> – <b>T1591.004 Identificar Roles</b>: Determinar funciones laborales específicas como analistas de energía, académicos de think-tank y personal de seguridad.»] class recon_roles action %% Nodos – Desarrollo de Recursos resource_dev[«<b>Acción</b> – <b>T1583.006 Adquirir Servicios Web de Infraestructura</b>: Registrar dominios desechables y usar servicios gratuitos de hospedaje/tunelización (Webhook.site, InfinityFree, Byet, ngrok, shorturl.at).»] class resource_dev service %% Nodos – Phishing phishing[«<b>Acción</b> – <b>T1566.001 Spearphishing con Anexo</b>: Enviar un correo electrónico diseñado que contiene un enlace malicioso acortado que redirige a través de varias URLs.»] class phishing action %% Nodos – Ofuscación html_smuggling[«<b>Acción</b> – <b>T1027.006 Contrabando de HTML</b>: La primera redirección sirve HTML que brevemente incorpora un señuelo legítimo en PDF a través de meta-refresh.»] class html_smuggling action %% Nodos – Robo de Credenciales credential_forge[«<b>Acción</b> – <b>T1606 Falsificación de Credenciales Web / T1056.003 Captura de Portal Web</b>: Páginas de inicio de sesión falsificadas (OWA, Google, Sophos VPN) capturan credenciales con JavaScript.»] class credential_forge tool %% Nodos – Captura de Entrada Beacon web_capture_beacon[«<b>Acción</b> – <b>T1056.003 Captura de Portal Web</b>: JavaScript envía una señal de página abierta y las credenciales ingresadas al webhook del atacante.»] class web_capture_beacon tool %% Nodos – Exfiltración exfil_webhook[«<b>Acción</b> – <b>T1567.004 Exfiltración a través de Webhook</b>: POST de datos capturados como JSON a un webhook controlado por el atacante (webhook.site, ngrok-free.app).»] class exfil_webhook service %% Nodos – Comando y Control c2_webprotocol[«<b>Acción</b> – <b>T1071.001 Protocolo de Capa de Aplicación Protocolos Web</b>: Usar tráfico web estándar para comunicación C2.»] class c2_webprotocol service c2_webservice[«<b>Acción</b> – <b>T1102.002 Comunicación Bidireccional de Servicio Web</b>: Mantener un canal persistente bidireccional a través del servicio de webhook.»] class c2_webservice service %% Nodos – Tunelización protocol_tunnel[«<b>Acción</b> – <b>T1572 Tunelización de Protocolo</b>: Aprovechar túneles ngrok para exponer endpoints de exfiltración local a internet.»] class protocol_tunnel tool %% Nodos – Redirección Posterior a Exfiltración post_redirect[«<b>Acción</b> – Redirección Posterior a Exfiltración: Después de capturar datos, las víctimas son enviadas al documento legítimo original o portal VPN para evitar sospechas.»] class post_redirect action %% Conexiones – Flujo recon_info u002du002d>|conduce_a| recon_roles recon_roles u002du002d>|conduce_a| resource_dev resource_dev u002du002d>|habilita| phishing phishing u002du002d>|desencadena| html_smuggling html_smuggling u002du002d>|entrega| credential_forge credential_forge u002du002d>|captura| web_capture_beacon web_capture_beacon u002du002d>|envía_a| exfil_webhook exfil_webhook u002du002d>|soporta| c2_webprotocol c2_webprotocol u002du002d>|utiliza| c2_webservice c2_webservice u002du002d>|depende_de| protocol_tunnel protocol_tunnel u002du002d>|facilita| post_redirect «

Flujo de Ataque

Ejecución de Simulación

Prerequisito: La Verificación Previa de Telemetría y Línea Base debe haber pasado.

Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico erróneo.

  • Narrativa y Comandos del Ataque:

    1. Entrega inicial de phishing: Un atacante envía un correo electrónico de phishing que contiene una URL corta que redirige al webhook.site página.
    2. Interacción de la víctima: La víctima hace clic en el enlace; el navegador sigue la redirección y emite un HTTP GET solicitud a https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7.
    3. Página de captura de credenciales: La página alberga JavaScript que roba las credenciales ingresadas y las envía por POST a la misma URL del webhook, pero el proxy solo registra la solicitud GET inicial, lo cual es suficiente para activar la regla.
    4. Para la prueba, emulamos a la víctima utilizando Invoke-WebRequest de PowerShell para solicitar la exacta URL maliciosa, reproduciendo la misma entrada del registro del proxy.
  • Script de Prueba de Regresión:

    # -------------------------------------------------
    # Simulación de Acceso al Sitio Webhook de BlueDelta (TC-20260109-9X3BZ)
    # -------------------------------------------------
    $maliciousUrls = @(
        "https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7",
        "https://webhook.site/3791f8c0-1308-4c5b-9c82-0dc416aeb9c4"
    )
    
    foreach ($url in $maliciousUrls) {
        try {
            Write-Host "Solicitando URL maliciosa: $url"
            Invoke-WebRequest -Uri $url -UseBasicParsing -Method GET -TimeoutSec 10 | Out-Null
            Write-Host "✅ Solicitud enviada."
        } catch {
            Write-Warning "Solicitud a $url falló: $_"
        }
    }
  • Comandos de Limpieza:

    # Vaciar caché de proxy (si aplica) para evitar entradas residuales
    net stop "Servicio Squid"
    net start "Servicio Squid"
    
    # Eliminar cualquier archivo temporal creado por el script (ninguno en este caso)
    Write-Host "Limpieza completa."