
Questo articolo è la prima parte di una serie sull'analisi delle minacce Sysmon. Tutte le altre parti della serie:
Parte 1. Introduzione all'analisi dei log Sysmon (siamo qui)
Parte 2. Utilizzo dei dati degli eventi Sysmon per individuare minacce
Parte 3. Analisi approfondita delle minacce Sysmon tramite grafi
Se ti occupi di sicurezza informatica, ti capita sicuramente spesso di dover esaminare gli attacchi in corso. Se hai l'occhio allenato, potresti cercare attività anomale nei log grezzi — ad esempio, uno script PowerShell in esecuzione con il comando o uno script VBS che si finge un file Word, semplicemente scorrendo l'ultima attività nel registro eventi di Windows. Ma è davvero un grande grattacapo. Fortunatamente, Microsoft ha creato Sysmon, che rende l'analisi degli attacchi molto più semplice.
Vuoi comprendere le idee di base dietro le minacce visualizzate nei log Sysmon? Scarica la nostra guida e comprendi come gli insider possano osservare silenziosamente gli altri dipendenti. Il problema principale del lavoro con il registro eventi di Windows è la mancanza di informazioni sui processi genitori, ovvero non è possibile comprendere la gerarchia dei processi. Nei registri di Sysmon, al contrario, sono contenuti l'identificativo del processo genitore, il suo nome e la stringa di comando eseguita. Grazie, Microsoft.
Nella prima parte della nostra serie, esamineremo cosa si può fare con le informazioni di base fornite da Sysmon. Nella seconda parte sfrutteremo appieno le informazioni sui processi genitori per creare strutture di corrispondenza più complesse, note come grafi delle minacce. Nella terza parte, considereremo un semplice algoritmo che esamina il grafo delle minacce per cercare attività atipiche attraverso l'analisi del "peso" del grafo. E alla fine, come premio, troverai un metodico (e chiaro) approccio probabilistico per la rilevazione delle minacce.
Parte 1: Introduzione all'analisi dei log di Sysmon
Cosa può aiutarti a capire le complessità del registro eventi? Alla fine – SIEM. Essa normalizza gli eventi e semplifica la loro analisi successiva. Ma non è necessario arrivare così lontano, almeno per il momento. All'inizio, per comprendere i principi del SIEM, sarà sufficiente provare l'ottimo strumento gratuito Sysmon. E sorprendentemente, è facile da usare. Continua così, Microsoft!
Quali sono le funzionalità di Sysmon?
In breve – informazioni utili e leggibili sui processi (vedi le immagini qui sotto). Scoprirai una miriade di dettagli utili che non sono nel registro eventi di Windows, ma la cosa più importante sono i seguenti campi:
- ID del processo (in forma decimale, non hex!)
- ID del processo padre
- La riga di comando del processo
- La riga di comando del processo padre
- Hash dell'immagine del file
- Nomi delle immagini del file
Sysmon si installa sia come driver di dispositivo che come servizio – ulteriori dettagli Il suo vantaggio chiave è la possibilità di analizzare i log provenienti da diversi sorgenti, correlare le informazioni e produrre valori risultanti in un unico registro eventi, situato nel percorso Microsoft -> Windows -> Sysmon -> Operativo. Nelle mie indagini sui log di Windows, da far rizzare i capelli, mi sono trovato a dover continuamente passare, ad esempio, dalla cartella dei log di PowerShell alla cartella "Sicurezza", sfogliando i registri degli eventi in un disperato tentativo di associare i valori tra di loro. Non è affatto un compito facile, e come ho poi capito, era meglio munirsi subito di aspirina.
Sysmon fa un salto qualitativo, fornendo informazioni utili (o, come amano dire i fornitori, efficaci) per aiutare a comprendere i processi fondamentali. Ad esempio, ho avviato una sessione nascosta , simulando il movimento di un insider furbo all'interno della rete. Ecco cosa vedrete nei registri degli eventi di Windows:

Nei registri di Windows appare un certo numero di informazioni sul processo, ma è di scarsa utilità. In aggiunta, gli identificatori di processo sono in forma esadecimale???
Un professionista IT esperto e consapevole delle basi del hacking dovrebbe trovare sospetta una riga di comando. L'uso di cmd.exe per eseguire un'altra operazione con l'invio dell'output a un file con un nome strano somiglia chiaramente a un'azione di software di controllo e gestione. : in questo modo si crea una pseudo-shell utilizzando i servizi WMI.
Ora diamo un'occhiata all'equivalente della registrazione di Sysmon, notando quante informazioni aggiuntive ci fornisce:

Le capacità di Sysmon in un'unica schermata: informazioni dettagliate sul processo in forma leggibile
Non solo vedi la riga di comando, ma anche il nome del file, il percorso dell'applicazione eseguibile, cosa sa Windows su di essa (“Windows Command Processor”), l'identificativo del processo genitore, la riga di comando del genitore, che ha avviato la shell cmd, così come il vero nome del file del processo genitore. Tutto in un unico posto, finalmente!
Dai log di Sysmon possiamo concludere che con alta probabilità questa riga di comando sospetta, che abbiamo visto nei log "grezzi", non è il risultato di un normale funzionamento da parte di un dipendente. Anzi, è stata generata da un processo simile a C2 — wmiexec, come ho menzionato in precedenza — ed è stata direttamente generata dal processo WMI del servizio (WmiPrvSe). Ora abbiamo un indicatore che un attaccante remoto o un insider sta testando l'infrastruttura aziendale.
Presentiamo Get-Sysmonlogs
È fantastico quando Sysmon conserva i log in un unico posto. Ma sarebbe probabilmente ancora meglio se potessimo accedere ai singoli campi del log in modo programmatico — ad esempio, tramite comandi PowerShell. In questo caso si potrebbe scrivere un piccolo script PowerShell che automatizza la ricerca di potenziali minacce!
Non sono stato il primo a avere questa idea. Ed è positivo che in alcuni post di forum e progetti GitHub È già stato spiegato come utilizzare PowerShell per analizzare il log di Sysmon. Nel mio caso, volevo evitare di scrivere righe separate di script di parsing per ogni campo di Sysmon. Pertanto, ho applicato il principio del pigro e, a mio avviso, ho scoperto qualcosa di interessante.
Il primo punto importante è la capacità del comando di leggere i log di Sysmon, filtrare gli eventi necessari e restituire il risultato in una variabile PS, come segue:
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
Se desideri verificare il funzionamento del comando, puoi visualizzare il contenuto del primo elemento dell'array $events, $events[0].Message, per ottenere una serie di righe di testo con un formato molto semplice: nome del campo Sysmon, due punti e poi il valore stesso.

Evviva! L'uscita del log di Sysmon è pronta in formato JSON
Stai pensando la stessa cosa che sto pensando io? Con un po' di ulteriore impegno, è possibile convertire l'uscita in una stringa formattata per JSON e poi caricarla direttamente in un oggetto PS utilizzando il potente comando .
Mostrerò il codice PowerShell per la conversione — è molto semplice — nella prossima parte. Nel frattempo, diamo un'occhiata a cosa può fare il mio nuovo comando chiamato get-sysmonlogs, che ho installato come modulo PS.
Invece di approfondire l'analisi dei log di Sysmon tramite l'ingombrante interfaccia del visualizzatore eventi, possiamo facilmente cercare l'attività incrementale direttamente dalla sessione PowerShell, utilizzando anche il comando PS (alias – «?») per ridurre i risultati mostrati:

Elenco delle shell cmd eseguite tramite WMI. Analisi delle minacce a basso costo con il nostro comando Get-Sysmonlogs
Incredibile! Ho creato uno strumento di interrogazione dei log di Sysmon, come se fosse un database. Nel nostro articolo su si menzionava che questa funzione sarà eseguita dal fantastico strumento descritto, anche se formalmente tramite una vera interfaccia SQL-simile. Sì, EQL è elegante, ma ne parleremo nella terza parte.
Sysmon e analisi dei grafi
Asteniamo e riflettiamo su ciò che abbiamo appena creato. Fondamentalmente, ora abbiamo un database di eventi di Windows accessibile tramite PowerShell. Come ho accennato in precedenza, ci sono connessioni o relazioni tra le registrazioni — tramite ParentProcessId — quindi è possibile ottenere l'intera gerarchia dei processi.
Se hai letto la serie saprai che gli hacker amano creare attacchi complessi e multilivello, in cui ogni processo svolge il suo piccolo ruolo e prepara il terreno per il passo successivo. Queste cose sono estremamente difficili da catturare semplicemente da un log 'grezzo'.
Ma con il mio team Get-Sysmonlogs e la struttura dati aggiuntiva che esamineremo più avanti (ovviamente, è un grafo), avremo un modo pratico per rilevare le minacce — per cui è necessario solo eseguire la ricerca giusta sui vertici.
Come sempre nei nostri progetti di blog DYI, più lavori sull'analisi dei dettagli delle minacce su piccola scala, meglio comprendi quanto sia complesso il rilevamento delle minacce a livello organizzativo. E questa consapevolezza è estremamente importante.
Affronteremo le prime interessanti sfide nella seconda parte dell'articolo, dove inizieremo a collegare tra loro gli eventi Sysmon in strutture molto più complesse.
Fonte: habr.com
