SOC Prime Bias: Medio

06 Ene 2026 18:50

Del Código a la Cobertura (Parte 2): La Pesadilla del Espacio en Blanco

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Del Código a la Cobertura (Parte 2): La Pesadilla del Espacio en Blanco
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El artículo explica cómo los filtros LDAP producidos por las herramientas de Impacket son normalizados por Active Directory de maneras que introducen espacios en blanco inconsistentes en ID de Evento 1644 registros. Estos cambios de formato pueden romper las detecciones que dependen de coincidencias exactas de cadenas, incluso cuando la lógica del filtro subyacente es idéntica. El autor muestra por qué la lógica básica de “contiene” es frágil y explica cómo construir detecciones Sigma resilientes usando expresiones regulares que toleran diferencias de espaciado, cambios de mayúsculas y variaciones de operadores.

Investigación

Para validar el problema, el autor revisó registros reales de Evento 1644 de producción y documentó múltiples permutaciones de espacios en blanco del mismo filtro LDAP de bits (por ejemplo, variantes de userAccountControl&524288 con diferente espaciado, colocación de paréntesis y formato). Se probaron varios enfoques de detección—comenzando con verificaciones de cadenas estáticas y progresando hacia patrones regex cada vez más flexibles—hasta que la regla coincidió de manera confiable con todas las representaciones observadas sin sobreactuación.

Mitigación

Adoptar detecciones basadas en regex que permitan espacios en blanco opcionales, soporte coincidencias insensibles a mayúsculas y considere ambos estilos de operadores AND/OR. Para mantener un rendimiento razonable, realice un pre-filtrado en el nombre del atributo objetivo antes de aplicar la lógica regex más costosa. Finalmente, valide continuamente las detecciones contra un corpus curado de “pared de la vergüenza” que capture cada variante de espaciado y formato vista en el campo. operator styles. To keep performance reasonable, pre-filter on the target attribute name before applying the more expensive regex logic. Finally, continuously validate detections against a curated “wall of shame” corpus that captures every whitespace and formatting variant seen in the field.

Respuesta

Cuando se activa una coincidencia de filtro LDAP sospechosa, notifique al SOC para evaluar la actividad potencial de descubrimiento de privilegios o enumeración relacionada con la escalación. Correlacione el evento con el host/IP de origen, el usuario solicitante y otros atributos LDAP para determinar intención y alcance. Si ocurren falsos positivos, ajuste umbrales y condiciones de reglas mientras preserva la cobertura para variantes de formato conocidas.

Flujo de Ataque

Todavía estamos actualizando esta parte. Regístrese para recibir notificaciones

Notify Me

Ejecución de Simulación

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

Justificación: 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.

  • Narrativa de Ataque y Comandos:
    Un adversario con credenciales de dominio de bajo privilegio desea localizar cuentas privilegiadas para movimiento lateral. Ellos elaboran un filtro LDAP que realiza un AND de bits en userAccountControl para aislar cuentas con la bandera ADMINISTRADOR (valor 524288). Para evadir la coincidencia de cadenas simples, añaden espacios en blanco y paréntesis adicionales exactamente como lo espera la regla Sigma. Construya la cadena de filtro LDAP con variaciones de espacios en blanco.

    1. Ejecute la búsqueda LDAP usando
    2. (a través de PowerShell) contra el controlador de dominio. (a través de PowerShell) contra el controlador de dominio. Verifique que el Registro de Eventos de Seguridad registre el Evento 1644 que contiene el filtro elaborado.
    3. Verify that the Security Event Log records Event 1644 containing the crafted filter.
  • Script de Prueba de Regresión:

    # --------------------------------------------------------------
    # Simular filtro de bits LDAP que debería activar la regla Sigma
    # --------------------------------------------------------------
    
    # Parámetros
    $DomainController = "dc01.example.com"
    $BaseDN = "DC=example,DC=com"
    $Filter = "(   userAccountControl   &   524288   )"
    $Attributes = "distinguishedName,samAccountName,userAccountControl"
    
    # Ejecutar consulta LDAP
    try {
        $result = [ADSI]"LDAP://$DomainController/$BaseDN"
        $searcher = New-Object System.DirectoryServices.DirectorySearcher($result)
        $searcher.Filter = $Filter
        $searcher.PropertiesToLoad.AddRange($Attributes.Split(','))
        $searcher.PageSize = 1000
    
        $entries = $searcher.FindAll()
        foreach ($entry in $entries) {
            $dn = $entry.Properties["distinguishedname"][0]
            $sam = $entry.Properties["samaccountname"][0]
            $uac = $entry.Properties["useraccountcontrol"][0]
            Write-Output "Found: $sam ($dn) – UAC=$uac"
        }
    } catch {
        Write-Error "LDAP query failed: $_"
    }
  • Comandos de Limpieza:

    # No se realizaron cambios persistentes; solo cierre la conexión ADSI.
    Write-Output "Limpieza completa."