SOC Prime Bias: Medio

06 Gen 2026 18:50

Dal codice alla copertura (Parte 2): L’incubo dello spazio bianco

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
Dal codice alla copertura (Parte 2): L’incubo dello spazio bianco
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

L’articolo spiega come i filtri LDAP prodotti dagli strumenti Impacket vengano normalizzati da Active Directory in modi che introducono spaziature incoerenti ID evento 1644 nei log. Questi cambiamenti di formattazione possono interrompere le rilevazioni che si basano sulla corrispondenza esatta delle stringhe, anche quando la logica sottostante del filtro è identica. L’autore mostra perchĂ© la logica di base del “contains” è fragile e guida alla costruzione di rilevazioni Sigma resilienti mediante espressioni regolari che tollerano le differenze negli spazi, nei cambi di maiuscolo/minuscolo e nelle variazioni degli operatori.

Indagine

Per convalidare il problema, l’autore ha esaminato i veri record degli Eventi 1644 dalla produzione e documentato molteplici permutazioni di spazi bianchi dello stesso filtro bitwise LDAP (ad esempio, varianti di userAccountControl&524288 con differenze negli spazi, posizionamento delle parentesi e formattazione). Sono stati provati diversi approcci di rilevazione—partendo da controlli statici delle stringhe e progredendo verso modelli regex sempre piĂą flessibili—fino a che la regola non ha corrisposto in modo affidabile a tutte le rappresentazioni osservate senza superare i limiti.

Mitigazione

Adottare rilevazioni basate su regex che permettono spazi bianchi opzionali, supportano la corrispondenza senza distinzione tra maiuscole e minuscole, e tengono conto di entrambi gli stili di operatori AND/OR. Per mantenere le prestazioni ragionevoli, filtrare preliminarmente sul nome dell’attributo target prima di applicare la logica regex piĂą costosa. Infine, validare continuamente le rilevazioni rispetto a un corpus curato di “wall of shame” che cattura ogni variante di spaziature e formattazioni viste sul 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.

Risposta

Quando viene attivata una corrispondenza sospetta del filtro LDAP, notificare il SOC per valutare potenziali attivitĂ  di enumerazione legate alla scoperta o alla scalata dei privilegi. Correlare l’evento con host/IP di origine, utente richiedente e altri attributi LDAP per determinare intento e portata. Se si verificano falsi positivi, regolare le soglie e le condizioni delle regole mentre si mantiene la copertura per le varianti di formattazione note.

Flusso di Attacco

Stiamo ancora aggiornando questa parte. Iscriviti per ricevere notifiche

Notifica

Esecuzione di Simulazione

Prerequisito: Il Controllo Prevolo di Telemetria e Linee Di Base deve essere stato superato.

Motivo: Questa sezione dettaglia l’esatta esecuzione della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrazione e Comandi di Attacco:
    Un avversario con credenziali di dominio a basso privilegio desidera individuare account privilegiati per il movimento laterale. Creano un filtro LDAP che esegue un AND bitwise su userAccountControl per isolare gli account con il flag AMMINISTRATORE (valore 524288). Per eludere il semplice confronto delle stringhe, aggiungono spazi bianchi e parentesi esattamente come si aspetta la regola Sigma.

    1. Costruire la stringa del filtro LDAP con variazioni di spazi bianchi.
    2. Eseguire la ricerca LDAP utilizzando ldapsearch (tramite PowerShell) contro il controller di dominio.
    3. Verificare che il Registro degli Eventi di Sicurezza registri l’Evento 1644 contenente il filtro creato.
  • Script di Test di Regressione:

    # --------------------------------------------------------------
    # Simula filtro LDAP bitwise che dovrebbe attivare la regola Sigma
    # --------------------------------------------------------------
    
    # Parametri
    $DomainController = "dc01.example.com"
    $BaseDN = "DC=example,DC=com"
    $Filter = "(   userAccountControl   &   524288   )"
    $Attributes = "distinguishedName,samAccountName,userAccountControl"
    
    # Esegui query 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 "Trovato: $sam ($dn) – UAC=$uac"
        }
    } catch {
        Write-Error "LDAP query failed: $_"
    }
  • Comandi di Pulizia:

    # Non sono state apportate modifiche persistenti; solo chiudere la connessione ADSI.
    Write-Output "Pulizia completata."