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_REQUIRED
se è 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 '.