# Shadow RDP: Cómo los atacantes secuestran sesiones de admin en la nube
Los atacantes eludieron la MFA en un entorno híbrido de AD local + Azure usando la función integrada de Shadow RDP de Windows. Se colaron en una sesión activa de administrador sin volver a autenticarse, obteniendo control total sobre recursos de Azure. La brecha pasó desapercibida en los logs de Azure AD hasta que alguien notó la sesión que duraba más de 12 horas.
Condiciones del ataque y primeras señales de alerta
El entorno híbrido contaba con Active Directory local sincronizado mediante Azure AD Connect. Activos críticos como máquinas virtuales y almacenamiento residían en Azure, con MFA obligatoria en todas las cuentas con privilegios.
Azure AD registró solo un inicio de sesión MFA exitoso esa mañana. Todas las acciones posteriores parecieron una extensión fluida de esa sesión. ¿La señal de alerta? Una sesión inusualmente larga: más de 12 horas, sin actividad administrativa nocturna.
| Indicador | Comportamiento normal | Durante el ataque |
|----------|-----------------------|-------------------|
| Duración de sesión Azure AD | 8–9 horas | 24+ horas |
| Solicitudes MFA | Cada mañana o cambio de IP | Ninguna tras el secuestro |
| Dirección IP | Oficina/VPN | Igual que la del admin |
| Procesos | Navegador, PowerShell, RDP | + mstsc /shadow |
| Horario de actividad | 9:00–18:00 | Horas nocturnas |
Análisis técnico de Shadow RDP
Shadow RDP es una función nativa de Windows 10/11 y Server (con rol RDSH) que permite unirse a la sesión activa de otro usuario.
Los atacantes modificaron el registro de la estación de trabajo del admin para un acceso sigiloso:
# Control total sin solicitud de consentimiento (modo 2)
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 2 /f
# Desactivar notificación de observación
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v ShadowNotification /t REG_DWORD /d 0 /f
Modos de Shadow:
- 0 — Deshabilitado
- 1 — Control total con permiso
- 2 — Control total sin permiso
- 3 — Solo visualización con permiso
- 4 — Solo visualización sin permiso (usado en este ataque)
También ajustaron las reglas del Firewall de Windows Defender para puertos RDP.
Comando de secuestro de sesión: mstsc /shadow:SESSION_ID /control /noConsentPrompt.
Eventos clave en logs de Windows
Monitorea estos ID de eventos para detectar Shadow RDP:
- Event ID 20508 — Permiso de visualización Shadow concedido
- Event ID 20503 — Sesión de visualización Shadow iniciada
- Event ID 20504 — Sesión de visualización Shadow finalizada
Otros logs para investigación:
| Origen | ID de evento | Captura |
|--------|--------------|---------|
| Security (estación admin) | 4657 | Cambios en registro Shadow/ShadowNotification |
| PowerShell Operational | 4103 | Set-ItemProperty para registro |
| TerminalServices-LocalSessionManager | 20503 | Inicio de sesión Shadow |
| TerminalServices-LocalSessionManager | 20504 | Fin de sesión Shadow |
| Azure AD Sign-in | — | Duración de sesión |
| Azure AD Sign-in | — | Sin MFA en cambio de IP |
Defensas y contramedidas
- GPO para desactivar Shadow RDP: Establece Shadow=0 en hosts no esenciales.
- Limitar sesiones RDP: GPO "Establecer límite de tiempo para sesiones de Terminal Services activas pero inactivas" — 8 horas, con desconexión forzada.
- Acceso condicional de Azure AD:
* Frecuencia MFA: Cada 1–2 horas.
* Reautenticación en cambios de IP.
* Bloquear "Mantenerme conectado" para roles privilegiados.
- Reforzar hosts RDP:
* Modo Admin restringido.
* Credential Guard.
* Remote Credential Guard.
- Estaciones PAW/PAM: Máquinas admin aisladas, reinicio tras uso, sin internet/correo.
- Monitoreo SIEM/SOAR:
* Cambios en registro.
* ID de eventos 20503/20504.
* Correlacionar logs de nube y local.
Lecciones clave
- La MFA no te protege de secuestros de sesión: enfócate en duración de sesiones y monitoreo de procesos.
- Shadow RDP es una función legítima; detectarla vía tweaks de registro y ID de eventos 20503+.
- Entornos híbridos exigen correlacionar logs de Azure AD y Windows.
- Acceso condicional con MFA frecuente es tu base contra secuestros de sesión.
- PAW reduce tu superficie de ataque en endpoints.
— Editorial Team
Aún no hay comentarios.