ADWS y el camino oculto hacia la enumeración de Active Directory
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El artículo describe un método sigiloso para la enumeración de Active Directory a través del protocolo Active Directory Web Services (ADWS) sobre el puerto TCP 9389. Al depender de ADWS en lugar de LDAP estándar en los puertos 389 o 636, los atacantes pueden evitar muchas detecciones de red comunes y alertas de EDR. Este enfoque abusa de los protocolos administrativos legítimos y herramientas para disfrazar la actividad de reconocimiento.
Investigación
La investigación examina las capas técnicas detrás de ADWS, incluyendo .NET Message Framing, NegotiateStream y la codificación binaria SOAP NBFSE. Explica cómo estos componentes mejoran la seguridad operativa al oscurecer el tráfico de red y hacer más difícil identificar la fuente de las consultas. El autor también presenta una herramienta de prueba de concepto llamada ADWSHound para demostrar y validar la técnica.
Mitigación
Las mitigaciones recomendadas incluyen monitorear el tráfico sobre el puerto TCP 9389, habilitar el registro de diagnóstico del Servicio de Directorio con el Evento 1644 y aplicar auditoría de acceso a través de SACLs en objetos de directorio sensibles. Las organizaciones también deben considerar desplegar objetos carnada para detectar enumeraciones no autorizadas. Correlacionar los eventos del Servicio de Directorio por ID de Operación puede ayudar aún más a reconstruir la actividad de enumeración sospechosa.
Respuesta
Si se detecta este comportamiento, los respondedores deben investigar el origen de la conexión al puerto 9389 e identificar cualquier proceso que carezca de una razón legítima para comunicarse a través de ADWS. La cuenta utilizada para las consultas del directorio debe correlacionarse con sesiones activas en todo el entorno para localizar el sistema comprometido. El Evento 4662 también debe revisarse en busca de signos de acceso no autorizado a objetos protegidos.
Flujo de Ataque
Detecciones
Posible abuso del Active Directory Web Services (ADWS) para Descubrimiento de Cuentas / Grupos / Sistemas (vía red_conexión)
Ver
Detectar Consultas LDAP vía ADWS con el Módulo AD de PowerShell [Log del Evento de Seguridad de Microsoft Windows]
Ver
Detección de Enumeración de ADWS a través de Indicadores de Red [Windows Sysmon]
Ver
Ejecución de Simulación
Prerequisito: La verificación previa del telemetría y línea base debe haberse completado exitosamente.
Motivo: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) destinada a 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 del Ataque y Comandos: Un adversario ha obtenido acceso inicial a una estación de trabajo y está intentando enumerar usuarios del dominio para facilitar el movimiento lateral. Para evitar la detección por herramientas básicas basadas en firmas, el atacante decide usar el módulo oficial de Active Directory de Microsoft PowerShell. Ejecutan
Get-ADUserpara obtener una lista de todos los usuarios en el dominio. Esta acción fuerza al Active Directory Web Services (ADWS) a procesar la consulta LDAP, que, debido a tener habilitado el registro de diagnóstico, genera un Evento de Windows 1644 que contiene el texto «Get-ADUser», activando así nuestra regla de detección. -
Script de Pruebas de Regresión:
# Asegúrese de que el módulo de Active Directory esté disponible if (!(Get-Module -ListAvailable ActiveDirectory)) { Write-Error "Este script requiere el módulo de Active Directory RSAT." return } Write-Host "[+] Iniciando Simulación: Enumeración LDAP vía Get-ADUser" -ForegroundColor Cyan # Active la detección consultando a un solo usuario utilizando el patrón Get-AD* # Se espera que esto genere un ID de Evento 1644 en el log del Servicio de Directorio try { Get-ADUser -Filter * -ResultSetSize 1 | Out-Null Write-Host "[+] Comando de simulación ejecutado correctamente." -ForegroundColor Green Write-Host "[+] Verifique los logs del Servicio de Directorio por un Evento ID 1644 que contenga 'Get-AD*'" -ForegroundColor Yellow } catch { Write-Host "[-] Error al ejecutar el comando: $($_.Exception.Message)" -ForegroundColor Red } -
Comandos de Limpieza:
# No se hicieron cambios permanentes en la base de datos AD. # Si los niveles de diagnóstico del registro se aumentaron manualmente, reviértalos: # Set-ItemProperty -Path "HKLM:SystemCurrentControlSetServicesNTDSDiagnostics" -Name "16 LDAP Interface Contained" -Value 0 Write-Host "[+] Limpieza completa. No hay cambios de estado para revertir." -ForegroundColor Cyan