Il modo migliore per tenere traccia dell'enumerazione del nome utente Brute-Force / tentativi falliti di nome utente AD


9

Abbiamo un server Windows che ha un'applicazione che risiede su di esso, che utilizza le credenziali di dominio durante l'accesso all'applicazione. Durante un recente test con penna, i tester sono stati in grado di utilizzare l'applicazione per elencare nomi utente di dominio validi in base alla risposta dell'applicazione (ha fornito una risposta diversa per un nome utente non valido rispetto a una password non valida).

L'applicazione è stata riparata in modo da non rivelare queste informazioni, ma sento anche che avremmo dovuto rilevare questo attacco poiché ci sono stati oltre 2000.000 tentativi di nome utente non validi in un breve periodo di tempo. Non l'abbiamo visto, anche quando i nostri amministratori stavano guardando da vicino Active Directory. Apparentemente, gli errori sono sempre comparsi nel registro eventi locale del server in cui è stata installata l'applicazione.

La mia domanda: 1) Esiste un modo per ottenere che Active Directory registri queste richieste di nome utente non riuscite in una posizione centrale in modo che possiamo notare un picco in esse?

2) In caso contrario, qual è il modo migliore per monitorare e rilevare attivamente questo tipo di attacco in futuro (si spera senza dover acquistare troppe nuove attrezzature).

Grazie per l'aiuto.

Risposte:


11

Ottima domanda

Prima di tutto, considero la maggior parte dei "tester di penetrazione" dei kiddies degli script. Il mio pregiudizio potrebbe non essere giusto o accurato, ma sto inserendo questo disclaimer in modo che se rilevi qualche cinismo nel mio tono, sai da dove proviene. Non sto dicendo che non ci sono nessun pentesters qualificati, ma questa è la mia generalità spazzare.

(Squadra blu per la vita!)

La mia domanda: 1) Esiste un modo per ottenere che Active Directory registri queste richieste di nome utente non riuscite in una posizione centrale in modo che possiamo notare un picco in esse?

Non hai fornito informazioni sufficienti per consentire a chiunque di rispondere a questa domanda in modo completo e sicuro. Hai detto che la tua applicazione conteneva un difetto che consentiva agli aggressori di enumerare gli account utente. Sto cercando di capire in che modo ritieni che AD debba eseguire la registrazione per la tua applicazione.

Apparentemente, gli errori sono sempre comparsi nel registro eventi locale del server in cui è stata installata l'applicazione.

Apparentemente gli errori sono comparsi nel registro eventi sul server? O gli errori sono comparsi nel registro eventi sul server? In tal caso, cosa hanno detto esattamente gli eventi? Chi li ha registrati? La tua applicazione? O Windows? Vai a scoprire e potrei essere in grado di aggiungere ulteriori chiarimenti alla mia risposta.

Ho intenzione di uscire su un arto qui sulla base della tua presunzione che questi eventi avrebbero dovuto essere registrati da Active Directory in qualche modo ... cosa succederebbe se i tuoi pentester non stessero effettivamente sfruttando un difetto nella tua applicazione, ma invece stessero usando un difetto molto noto nello stesso Kerberos per enumerare i nomi utente? Kerberos stesso contiene quello che considererei un difetto di progettazione in cui un utente malintenzionato può tentare migliaia e migliaia di tentativi di "pre-autenticazione" (ovvero un attacco di forza bruta) e il KDC risponderà in modo diverso a seconda che l'account utente esista o meno. Questo non è un comportamento specifico di Active Directory, ma si applica anche a MIT Kerberos, Heimdal, ecc. Il KDC risponderà conKDC_ERR_PREAUTH_REQUIREDse è stato presentato un nome utente valido senza dati di pre-autorizzazione, anche senza tentare un'autenticazione effettiva. In questo modo è possibile enumerare i nomi utente da un KDC. Ma poiché l'attaccante (o lo strumento utilizzato dall'attaccante come KrbGuess - perché i pentester sono al meglio quando usano gli strumenti di altre persone) non deve continuare con un tentativo di autenticazione completo, nulla viene registrato perché no è stata tentata l'autenticazione effettiva!

Ora, alla prossima domanda:

2) In caso contrario, qual è il modo migliore per monitorare e rilevare attivamente questo tipo di attacco in futuro (si spera senza dover acquistare troppe nuove attrezzature).

Un paio di cose.

In primo luogo, ci sono prodotti a livello aziendale a pagamento progettati per rilevare questo tipo di attacchi (tra molti altri). Molti fornitori offrono tali prodotti e i consigli sui prodotti sono fuori tema per Serverfault, ma basti dire che sono fuori servizio Là. Molti di questi prodotti funzionano richiedendo la configurazione del mirroring delle porte tra i controller di dominio e questi "raccoglitori di dati" in modo che possano vedere e analizzare letteralmente ogni pacchetto che entra o esce dai controller di dominio.

(Mi dispiace, quel genere di cose rientra nella tua clausola "senza acquistare troppe cose nuove".)

Un'altra cosa che potrebbe aiutarti è la voce di registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

LogLevel = 1

Documentato qui .

Se si abilita questa voce del Registro di sistema, è necessario essere inondati di eventi nel registro eventi di sicurezza relativi agli errori Kerberos che indicano che è richiesta la pre-autenticazione Kerberos. Un esempio di un tale evento:

A Kerberos Error Message was received:
 on logon session DOMAIN\serviceaccount
 Client Time: 
 Server Time: 12:44:21.0000 10/9/2012 Z
 Error Code: 0x19 KDC_ERR_PREAUTH_REQUIRED
 Extended Error: 
 Client Realm: 
 Client Name: 
 Server Realm: DOMAIN
 Server Name: krbtgt/DOMAIN
 Target Name: krbtgt/DOMAIN@DOMAIN
 Error Text: 
 File: e
 Line: 9fe
 Error Data is in record data.

Ma questo potrebbe aiutarti o meno se non specifica da dove provenga esattamente lo tsunami delle richieste Kerberos. Questo ci riporta a quei prodotti di rilevamento delle intrusioni aziendali che ho citato in precedenza.

E non dimenticare l'inoltro di eventi di Windows che può far sì che i tuoi server inoltrino gli eventi a una posizione centralizzata per essere analizzati da qualsiasi strumento tu possa avere a tua disposizione.

L'intera risposta è stata finora basata sul protocollo Kerberos, che non posso nemmeno dare per scontato perché hai fornito così pochi dettagli nel tuo post. Tuttavia, spero che questo aiuti almeno un po '.


Grazie per la risposta. Ricontrolverò lunedì, ma credo che i registri eventi siano gli eventi standard di Windows per l'accesso non riuscito al server locale (ad esempio, sarebbero l'equivalente di un accesso non riuscito tramite RDP con un nome utente non valido). Non è assolutamente specifico per l'applicazione. Per l'enumerazione dell'autenticazione Kerberos, credo che i tester della penna dovrebbero trovarsi sulla nostra intranet locale. Loro non erano. L'applicazione è disponibile pubblicamente su Internet con un'autorizzazione basata su moduli standard che chiama il sistema operativo sotto copertura.
Doug,

0

Questa è una domanda interessante a cui mi piacerebbe sentire una risposta adeguata. Ho trovato alcune informazioni che Doug potrebbe trovare utili, tuttavia, ritengo che potrebbero essere leggermente inadeguate. Qualcun altro può probabilmente fornire una risposta estesa:

Accedi al server su cui desideri archiviare le informazioni di controllo, Esegui -> RSOP.MSC -> Configurazione computer -> Impostazioni di Windows -> Impostazioni di sicurezza -> Criteri locali -> Criteri di controllo -> "Controlla eventi di accesso all'account" & " Eventi di accesso di controllo "

La spiegazione per "eventi di accesso all'account" recita:

Controlla eventi di accesso all'account

Questa impostazione di sicurezza determina se il sistema operativo controlla ogni volta che questo computer convalida le credenziali di un account.

Gli eventi di accesso all'account vengono generati ogni volta che un computer convalida le credenziali di un account per cui è autorevole. I membri del dominio e le macchine non appartenenti al dominio sono autorevoli per i loro account locali; i controller di dominio sono tutti autorevoli per gli account nel dominio. La convalida delle credenziali può essere a supporto di un accesso locale o, nel caso di un account di dominio Active Directory su un controller di dominio, può essere a supporto di un accesso a un altro computer. La convalida delle credenziali è stateless quindi non esiste un evento di disconnessione corrispondente per gli eventi di accesso all'account.

Se viene definita questa impostazione di criterio, l'amministratore può specificare se controllare solo gli esiti positivi, solo gli errori, sia gli esiti positivi che i guasti, oppure se non controllare affatto tali eventi (ovvero né esiti positivi o negativi).

La spiegazione per "eventi di accesso" recita:

Controlla eventi di accesso

Questa impostazione di sicurezza determina se il sistema operativo controlla ogni istanza di un utente che tenta di accedere o disconnettersi da questo computer.

Gli eventi di disconnessione vengono generati ogni volta che viene terminata una sessione di accesso dell'account utente connesso. Se viene definita questa impostazione di criterio, l'amministratore può specificare se controllare solo gli esiti positivi, solo gli errori, sia gli esiti positivi che i guasti, oppure se non controllare affatto tali eventi (ovvero né esiti positivi o negativi).

Dovresti essenzialmente abilitare quei criteri, definire le impostazioni dei criteri e scegliere "fallimento" se vuoi solo monitorare i tentativi falliti. Se lo desideri, potresti monitorare anche i successi, ma potrebbe essere un po 'più difficile analizzare se sei solo preoccupato di cercare questo tipo di attacco.

Se sei preoccupato per configurazioni simili a cui i tuoi sistemi potrebbero essere vulnerabili, ti consiglio di esaminare le impostazioni STIG ( link ), se utilizzate insieme a uno scanner SCAP, può davvero aiutare a evidenziare alcuni dei rischi che la tua organizzazione potrebbe essere di fronte. Il visualizzatore STIG tende a sollevare alcuni falsi positivi, ma se leggi i dettagli di ciò che ogni problema ha, potresti trovarlo un non principiante.


1
Suggerirei le basi MSFT o nist, DISA fa ipotesi sull'ambiente piuttosto che proteggere l'host come entità. Sì, è necessario un controllo adeguato. Leggevo anche le migliori pratiche per proteggere il white paper di Active Directory.
Jim B,

Ottimo punto, Jim B! Non avevo considerato questo aspetto.
Sawta,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.