SOC Prime Bias: Media

04 Jul 2026 07:02 UTC

ADWS y el camino oculto hacia la enumeración de Active Directory

Author Photo
SOC Prime Team linkedin icon Seguir
ADWS y el camino oculto hacia la enumeración de Active Directory
shield icon

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.

<div class="wp-block-socprime-category-attack-flow attack-flow-class" data-title="Attack Flow" data-attack-flow="flowchart TD step_reconnaissance["Reconnaissance: T1482 Domain Trust Discovery, T1046 Network Service Discovery, and T1589.001 Gather Victim Identity Information: Credentials via ADWS SOAP queries"] rules_for_reconnaissance("<b>Rule Name</b>: Possible Active Directory Web Services (ADWS) Abuse for Account / Group / System Discovery (via network_connection)<br/><b>Rule ID

Flujo de Ataque

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-ADUser para 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