
Un repository di moduli di configurazione sysmon
Questo è un repository di configurazioni per Sysmon di Microsoft Sysinternals (scarica qui), strutturato in modo modulare per semplificare la manutenzione e la generazione di configurazioni specifiche.
Tieni presente che ciascuna di queste configurazioni va considerata un punto di partenza: la messa a punto per ambiente è fortemente consigliata.
Nota: per ottenere ancora più valore dall'evento FileExecutable, valuta di integrare nella configurazione anche la versione più aggiornata della config LOLdrivers. Puoi farlo facilmente recuperando il file e aggiungendolo nella cartella 29_file_execute_detected, quindi generando una nuova configurazione.
Il file sysmonconfig.xml nel repository viene generato automaticamente dopo un merge riuscito tramite lo script PowerShell e un caricamento riuscito da parte di Sysmon in un'esecuzione di Azure Pipeline. Ulteriori informazioni su come generare una configurazione personalizzata, includendo i tuoi moduli, qui
| Tipo | Config | Descrizione |
|---|---|---|
| default | sysmonconfig.xml | Questa è la configurazione bilanciata, la più utilizzata, maggiori informazioni qui |
| default+ | sysmonconfig-with-filedelete.xml | Questa è la configurazione bilanciata, la più utilizzata, maggiori informazioni incluse le registrazioni dei file FileDelete |
| verbose | sysmonconfig-excludes-only.xml | Questa è la configurazione molto verbosa: tutti gli eventi sono inclusi, vengono applicati solo i moduli di esclusione. Non dovrebbe essere usata in produzione senza validazione; genererà una quantità significativa di dati e potrebbe influire sulle prestazioni. Maggiori informazioni qui |
| super verbose | sysmonconfig-research.xml | Una configurazione con verbosità estrema. Il volume di log atteso da questo file è significativamente alto: davvero NON USARE IN PRODUZIONE! Questa configurazione è solo per ricerca e richiederà molta più CPU/Memoria. Abilitala solo prima di eseguire la tecnica da investigare; al termine, carica una configurazione più leggera. |
| MDE augment | sysmonconfig-mde-augmentation.xml | Una configurazione per potenziare Defender for Endpoint, pensata per arricchire le informazioni e avere la minima sovrapposizione possibile. Si basa sulla configurazione predefinita/bilanciata e non genererà tutti gli eventi per Sysmon; nella configurazione sono presenti commenti. A beneficio dell'IR, valuta di usare la configurazione solo esclusioni e acquisire solo gli eventi di arricchimento. (Blog con ulteriori motivazioni in arrivo) |
Oltre alla documentazione qui sotto, c'è anche un video su come utilizzare questo progetto.
Le versioni precedenti sono ancora disponibili nei branch, ma non sono complete come il branch attuale
Per comprendere le funzionalità aggiunte nelle versioni, dai un'occhiata al mio piccolo post sul blog e agli articoli più recenti, oppure guarda il mio talk al DerbyCon
Nota: Consiglio di utilizzare un numero minimo di configurazioni nel tuo ambiente per molteplici ovvie ragioni, come manutenzione, uniformità dell'output, gestibilità e così via. Ma crea configurazioni su misura per Domain Controller, Server e workstation.
Consiglio vivamente di esaminare le configurazioni prima di implementarle nel tuo ambiente di produzione. Questo ti consente di ottenere un logging il più possibile utilizzabile e con il minimo rumore.
Dovrai installare e osservare i risultati della configurazione nel tuo ambiente prima di distribuirla su larga scala. Ad esempio, dovrai escludere le azioni del tuo antivirus, che altrimenti riempiranno probabilmente i tuoi log con informazioni inutili.
$> git clone https://github.com/olafhartong/sysmon-modular.git
$> cd sysmon modular
$> . .\Merge-SysmonXml.ps1
$> Merge-AllSysmonXml -Path ( Get-ChildItem '[0-9]*\*.xml') -AsString | Out-File sysmonconfig.xml
Di seguito le funzioni, con un grande ringraziamento a mbmy
Nuova funzione:
Find-RulesInBasePath - accetta un percorso di base (ad es. C:\folder\sysmon-modular) e trova tutti i file di regole xml candidati in base a un pattern regex
Esempio:
PS C:\Users\sysmon\sysmon-modular> Find-RulesInBasePath -BasePath C:\users\sysmon\sysmon-modular\ -OutputRules | Out-File available_rules.txt
Nuovi parametri di Merge-AllSysmonXml:
-BasePath - trova tutti i file di regole xml candidati da un percorso fornito in base a un pattern regex e li unisce
Esempio:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\
-ExcludeList - In combinazione con -BasePath, accetta un elenco di regole e le esclude dalle regole trovate prima del merge
Esempio:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\ -ExcludeList C:\users\sysmon\sysmon-modular\exclude_rules.txt
-IncludeList - In combinazione con -BasePath, trova tutte le regole disponibili dal percorso di base ma unisce solo quelle definite in un elenco
Esempio:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\ -IncludeList C:\users\sysmon\sysmon-modular\include_rules.txt
NOTA Il BasePath deve essere il percorso completo dei file sysmon-modular (ad esempio c:\tools\sysmon-modular), altrimenti PowerShell non riuscirà a individuarli, con il risultato di una configurazione predefinita.
Esempio di formato dell'elenco Include/Exclude:
3_network_connection_initiated\include_native_windows_tools.xml
12_13_14_registry_event\exclude_internet_explorer_settings.xml
12_13_14_registry_event\exclude_webroot.xml
17_18_pipe_event\include_winreg.xml
19_20_21_wmi_event\include_wmi_create.xml
2_file_create_time\exclude_chrome.xml
3_network_connection_initiated\include_native_windows_tools.xml
3_network_connection_initiated\include_ports_proxies.xml
8_create_remote_thread\include_general_commment.xml
8_create_remote_thread\include_psinject.xml
9_raw_access_read\include_general_commment.xml
Creare una configurazione con tutte le regole sysmon-modular per determinati event ID (includendo l'intera directory) e poi disabilitare tutti gli event id senza regole importate
Esempio:
# generate the config
$sysmonconfig = Merge-AllSysmonXml -BasePath . -IncludeList $workingFolder\include.txt -VerboseLogging -PreserveComments
# flip off any rule groups where rules were not imported
foreach($rg in $sysmonconfig.SelectNodes("/Sysmon/EventFiltering/RuleGroup [*/@onmatch]"))
{
$ruleNodes = $rg.SelectNodes("./* [@onmatch]")
if( $ruleNodes -eq $null `
-or $ruleNodes.ChildNodes.count -gt 0)
{
# no rule nodes found (unlikely) or more than one rule found
continue
}
# RuleGroup with only one rule node
$ruleNode = $ruleNodes[0]
if($ruleNode.onmatch -eq "exclude" -and $ruleNode.ChildNodes.count -eq 0 )
{
$message = "{0} {1} has no matching conditions. Toggled to 'include' to limit output" -f $ruleNode.Name,$rg.Name
Write-Warning $message
$ruleNode.onmatch = "include"
$comment = $sysmonconfig.CreateComment($message)
$rg.AppendChild($comment) | Out-Null
}
}
Esempio di formato dell'elenco Include/Exclude (per intere famiglie di regole/eventi):
1_process_creation
5_process_ended
11_file_create
23_file_delete
7_image_load
17_18_pipe_event
Eseguire con diritti di amministratore
sysmon.exe -accepteula -i sysmonconfig.xml
Eseguire con diritti di amministratore
sysmon.exe -c sysmonconfig.xml
Questa è una nuova funzionalità, creata da cnnrshd
Le configurazioni generate con questo script mantengono i commenti e viene applicata una corretta indentazione XML, aumentando la leggibilità e consentendo un più facile riferimento incrociato dei file di regole
esempio di prompt
python merge_sysmon_configs.py config_lists/default_list/default_list.csv -f csv -b templates/sysmon_template.xml -o test.xml
** Questa modalità di generazione dei contenuti è ancora nuova e sperimentale. Non è ancora previsto il supporto per le versioni personalizzate come la MDE augment e le versioni solo esclusioni.
Ci sono tre principali configurazioni Sysmon:
@SwiftOnSecurity: ottima guida introduttiva a molte delle impostazioni. Inizia con 1 comando https://github.com/SwiftOnSecurity/sysmon-config/.
@cyb3rops: Un fork di SwiftOnSecurity, all'avanguardia e proattivo. **https://github.com/Neo23x0/sysmon-config
@olafhartong: Questo repository, che si concentra sull'essere molto manutenibile con note dettagliate sulle regole per una risposta guidata e per i SIEM.
Un'ottima guida comunitaria di @Carlos_Perez: https://github.com/trustedsec/SysmonCommunityGuide
Pull request / ticket di issue e nuove aggiunte saranno molto apprezzati!
Ho iniziato una serie di post sul blog che trattano questo repository;
Mi sforzo di mappare tutte le configurazioni al framework ATT&CK ogni volta che Sysmon è in grado di rilevarlo. Nota: questa è una possibile voce di log che potrebbe portare a un rilevamento; non in tutti i casi questa è l'unica telemetria per quella tecnica. Inoltre, potrebbero esserci più tecniche correlate a quella regola; quella mappata è quella che ho ritenuto più probabile.