
Raccoglie e analizza i log di autenticazione di AD e Azure AD per rilevare attacchi di lateral movement utilizzando il rilevamento anomalie basato su grafi, visualizzando pattern sospetti con timeline interattive e GIF.
L'analizzatore di movimento laterale (LATMA) raccoglie i log di autenticazione dal dominio e dagli ambienti Azure AD e cerca potenziali attacchi di movimento laterale e attività sospette. Il movimento laterale può avvenire nell'ambiente AD o tra cloud e on-prem. Lo strumento visualizza i risultati con diagrammi che mostrano i modelli di movimento laterale. Questo strumento contiene due moduli, uno che raccoglie i log e uno che li analizza. È possibile eseguire ciascun modulo separatamente; il raccoglitore di log eventi deve essere eseguito su una macchina Windows in un ambiente di dominio Active Directory con Python 3.8 o superiore. L'analizzatore può essere eseguito su una macchina Linux e su una macchina Windows.
Il Raccoglitore di Log Eventi ha due funzionalità: la scansione dei controller di dominio per i log di autenticazione NTLM riusciti e degli endpoint per i log di autenticazione Kerberos riusciti, e la raccolta dei log di accesso da Azure AD. La raccolta dei log dall'ambiente AD richiede l'accesso alle porte LDAP/S 389 e 636 e alla porta RPC 135 del controller di dominio e dei client. Inoltre, richiede privilegi di amministratore di dominio o un utente nel gruppo Lettori dei log eventi o con permessi equivalenti. Questo è necessario per estrarre i log eventi da tutti gli endpoint e controller di dominio. Per la raccolta degli accessi, è necessario avere un'applicazione nell'ambiente Azure AD e fornire le informazioni rilevanti nel file di configurazione. Assicurati che l'utente utilizzato per la raccolta degli accessi non sia configurato con 2FA.
Il raccoglitore raccoglie i log NTLM dall'evento 8004 sui controller di dominio e i log Kerberos dall'evento 4648 sui client. Genera come output un file in formato CSV delimitato da virgole con tutto il traffico di autenticazione disponibile. L'output contiene i campi host sorgente, destinazione, nome utente, tipo di autenticazione, SPN e timestamp nel formato %Y/%m/%d %H:%M. Il raccoglitore richiede le credenziali di un utente valido con privilegi di visualizzazione degli eventi sull'intero ambiente e interroga i log specifici per ciascun protocollo.
Verifica che i protocolli Kerberos e NTLM siano sottoposti a audit nell'ambiente utilizzando i criteri di gruppo:
Il raccoglitore raccoglie solo gli accessi riusciti da dispositivi ibridi o uniti ad Azure AD. Questi accessi rappresentano movimenti riusciti tra asset dell'ambiente Azure AD e on-prem o viceversa Il raccoglitore richiede le seguenti informazioni per raccogliere i dati:
L'Analizzatore riceve come input un foglio di calcolo con dati di autenticazione formattati come specificato nella struttura di output del Raccoglitore. Cerca attività sospette con l'algoritmo di analisi del movimento laterale e rileva anche ulteriori IoC di movimento laterale. La sorgente e la destinazione dell'autenticazione devono essere formalizzate con nome NetBIOS e non indirizzi IP.
LATMA riceve un lotto di richieste di autenticazione e invia un avviso quando rileva attacchi di movimento laterale sospetti. Definiamo quanto segue:
Grafo di autenticazione: Un grafo orientato che contiene informazioni sul traffico di autenticazione nell'ambiente. I nodi del grafo sono computer, e gli archi sono autenticazioni tra i computer. Gli archi del grafo hanno gli attributi: tipo di protocollo, data dell'autenticazione e l'account che ha inviato la richiesta. I nodi del grafo contengono informazioni sul computer che rappresentano, dettagliate di seguito.
Grafo di movimento laterale: Un sottografo del grafo di autenticazione che rappresenta il movimento dell'attaccante. Il grafo di movimento laterale non è sempre un percorso nel sottografo; in alcuni attacchi l'attaccante si muove in molte direzioni diverse.
Avviso: Un sottografo che l'algoritmo sospetta faccia parte del grafo di movimento laterale.
LATMA esegue diverse azioni durante la sua esecuzione:
Raccolta di informazioni: LATMA monitora il comportamento normale degli utenti e delle macchine e li caratterizza. L'apprendimento è utilizzato successivamente per decidere quali richieste di autenticazione si discostano dal comportamento normale e potrebbero essere coinvolte in un attacco di movimento laterale. Per un periodo di apprendimento di tre settimane LATMA non emette alcun avviso e impara solo l'ambiente. L'apprendimento continua dopo queste tre settimane.
Costruzione del grafo di autenticazione: Dopo il periodo di apprendimento ogni autenticazione rilevante viene aggiunta al grafo di autenticazione. È fondamentale filtrare solo le autenticazioni rilevanti, altrimenti il numero di archi che il grafo contiene potrebbe essere troppo grande. Filtriamo sui seguenti tipi di protocollo: NTLM e Kerberos con i servizi "rpc", "rpcss" e "termsrv."
L'aggiunta di un'autenticazione al grafo può attivare un processo di avviso. In generale, un nuovo arco può creare un nuovo avviso, unirsi a un avviso esistente o unire due avvisi.
Ogni richiesta di autenticazione monitorata da LATMA viene utilizzata per l'apprendimento e memorizzata in una struttura dati dedicata. Innanzitutto, identifichiamo i sink e gli hub. Definiamo sink come macchine a cui accedono molti (almeno 50) account diversi, come un portale aziendale o un server di exchange. Definiamo hub come macchine da cui molti account diversi (almeno 20) effettuano l'autenticazione, come proxy e VPN. Le autenticazioni verso sink o da hub sono considerate benigne e quindi vengono rimosse dal grafo di autenticazione.
Oltre alla classificazione di base, LATMA abbina gli account alle macchine da cui si autenticano frequentemente. Se un account si autentica da una macchina per almeno tre giorni diversi in un periodo di tre settimane, significa che questo account corrisponde alla macchina e qualsiasi autenticazione di questo account da quella macchina è considerata benigna e rimossa dal grafo di autenticazione.
Gli IoC di movimento laterale sono:
White cane - Account utente che si autenticano da una singola macchina verso molteplici in un tempo relativamente breve.
Bridge - L'account utente X si autentica dalla macchina A alla macchina B e successivamente, dalla macchina B alla macchina C. Questo IoC indica potenzialmente un attaccante che avanza effettivamente dal suo punto di partenza iniziale (A) verso una macchina di destinazione che serve meglio gli obiettivi dell'attacco.
Switched Bridge - L'account utente X si autentica dalla macchina A alla macchina B, seguito dall'account utente Y che si autentica dalla macchina B alla macchina C. Questo IoC indica potenzialmente un attaccante che scopre e compromette un account aggiuntivo lungo il suo percorso e usa il nuovo account per avanzare (un esempio comune è l'account X che è un utente di dominio standard e l'account Y che è un utente amministratore)
Weight Shift - White cane (vedi sopra) dalla macchina A alle macchine {B1,…, Bn}, seguito da un altro White cane dalla macchina Bx alle macchine {C1,…,Cn}. Questo IoC indica potenzialmente un attaccante che ha determinato che la macchina B servirebbe meglio gli scopi dell'attacco e d'ora in poi usa la macchina B come sorgente per ulteriori ricerche.
Blast - L'account utente X si autentica dalla macchina A verso molteplici macchine in un lasso di tempo molto breve. Un esempio comune è un attaccante che installa/esegue ransomware su un numero massivo di macchine simultaneamente
Output:
L'analizzatore produce diversi file:
utilizzo
Il Raccoglitore
Argomenti obbligatori:
Utilizzo binario Apri il prompt dei comandi e naviga fino alla cartella del binario. Esegui gli eseguibili con gli argomenti specificati sopra.
Nei file di esempio hai diversi campioni di ambienti reali (alcuni contengono attacchi di movimento laterale e altri no) che puoi fornire come input per l'analizzatore.
Esempio di utilizzo