
Um repositório de módulos de configuração do sysmon
Este é um repositório de configuração do Microsoft Sysinternals Sysmon baixe aqui, organizado de forma modular para facilitar a manutenção e a geração de configurações específicas.
Tenha em mente que qualquer uma destas configurações deve ser considerada um ponto de partida; o ajuste por ambiente é recomendado.
Nota: para obter ainda mais valor do evento FileExecutable, considere incluir também a versão mais atualizada da configuração do LOLdrivers no config. Você pode fazer isso facilmente pegando o arquivo e adicionando-o na pasta 29_file_execute_detected e gerando uma nova configuração.
O sysmonconfig.xml neste repositório é gerado automaticamente após uma mesclagem bem-sucedida pelo script PowerShell e um carregamento bem-sucedido pelo Sysmon em uma execução do Azure Pipeline. Mais informações sobre como gerar uma configuração personalizada, incorporando seus próprios módulos, aqui
| Tipo | Config | Descrição |
|---|---|---|
| default | sysmonconfig.xml | Esta é a configuração balanceada, a mais utilizada; mais informações aqui |
| default+ | sysmonconfig-with-filedelete.xml | Esta é a configuração balanceada, a mais utilizada; mais informações, incluindo salvamentos de arquivos do FileDelete |
| verbose | sysmonconfig-excludes-only.xml | Esta é a configuração muito verbosa; todos os eventos são incluídos, apenas os módulos de exclusão são aplicados. Ela não deve ser usada em produção sem validação, pois gera uma quantidade significativa de dados e pode impactar o desempenho. Mais informações aqui |
| super verbose | sysmonconfig-research.xml | Uma configuração com verbosidade extrema. O volume de logs esperado deste arquivo é significativamente alto. REALMENTE NÃO USE EM PRODUÇÃO! Esta configuração é apenas para pesquisa; ela usará muito mais CPU/Memória. Habilite somente antes de executar a técnica a ser investigada e, ao terminar, carregue uma configuração mais leve. |
| MDE augment | sysmonconfig-mde-augmentation.xml | Uma configuração para complementar o Defender for Endpoint, com o objetivo de ampliar as informações e ter o mínimo de sobreposição possível. Ela é baseada na configuração padrão/balanceada e não gerará todos os eventos do Sysmon; há comentários no config. Em benefício da resposta a incidentes (IR), considere usar o config somente com exclusões e ingerir apenas os eventos de enriquecimento. (Blog com mais explicações em breve) |
Além da documentação abaixo, há também um vídeo sobre como usar este projeto.
Versões mais antigas ainda estão disponíveis nos branches, mas não são tão completas quanto o branch atual.
Para entender os novos recursos nas versões, dê uma olhada no meu pequeno post no blog e em artigos mais recentes, ou assista à minha palestra no DerbyCon
Nota: Recomendo usar um número mínimo de configurações em seu ambiente por vários motivos óbvios, como: manutenção, igualdade de saída, gerenciabilidade etc. Mas faça configurações personalizadas para Controladores de Domínio, Servidores e estações de trabalho.
Recomendo fortemente analisar os configs antes de implementá-los em seu ambiente de produção. Isso permite que você tenha registros (logs) tão acionáveis quanto possível e o mínimo de ruído possível.
Você precisará instalar e observar os resultados da configuração em seu próprio ambiente antes de implantá-la amplamente. Por exemplo, você precisará excluir ações do seu antivírus; caso contrário, ele provavelmente encherá seus logs com informações inúteis.
$> 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
As funções abaixo com grande agradecimento a mbmy
Nova função:
Find-RulesInBasePath - recebe um caminho base (ex.: C:\folder\sysmon-modular) e encontra todos os arquivos de regras xml candidatos com base em um padrão regex
Exemplo:
PS C:\Users\sysmon\sysmon-modular> Find-RulesInBasePath -BasePath C:\users\sysmon\sysmon-modular\ -OutputRules | Out-File available_rules.txt
Novos parâmetros do Merge-AllSysmonXml:
-BasePath - encontra todos os arquivos de regras xml candidatos a partir de um caminho informado com base em padrão regex e os mescla
Exemplo:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\
-ExcludeList - Combinado com -BasePath, recebe uma lista de regras e as exclui das regras encontradas antes da mesclagem
Exemplo:
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 - Combinado com -BasePath, encontra todas as regras disponíveis no caminho base, mas mescla apenas aquelas definidas em uma lista
Exemplo:
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 O BasePath precisa ser o caminho completo para os arquivos do sysmon-modular (por exemplo, c:\tools\sysmon-modular), caso contrário o PowerShell não conseguirá localizá-los, resultando em uma configuração padrão.
Exemplo de formato da lista 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
Construindo uma configuração com todas as regras do sysmon-modular para determinados IDs de evento (incluir diretório inteiro) e depois desabilitando todos os IDs de evento sem regras importadas
Exemplo:
# 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
}
}
Exemplo de formato da lista Include/Exclude (para famílias inteiras de regras/eventos):
1_process_creation
5_process_ended
11_file_create
23_file_delete
7_image_load
17_18_pipe_event
Execute com direitos de administrador
sysmon.exe -accepteula -i sysmonconfig.xml
Execute com direitos de administrador
sysmon.exe -c sysmonconfig.xml
Este é um novo recurso, criado por cnnrshd
Os configs gerados com este script mantêm comentários e a indentação XML adequada é aplicada, aumentando a legibilidade e permitindo uma referência cruzada mais fácil dos arquivos de regras.
exemplo de comando
python merge_sysmon_configs.py config_lists/default_list/default_list.csv -f csv -b templates/sysmon_template.xml -o test.xml
** Esta forma de gerar conteúdo ainda é nova e experimental. Ainda não há suporte para as versões personalizadas, como as versões MDE augment e somente exclusões.
Existem três principais configurações do Sysmon:
@SwiftOnSecurity: ótima introdução passo a passo de muitas das configurações. Comece com 1 comando https://github.com/SwiftOnSecurity/sysmon-config/.
@cyb3rops: um fork do SwiftOnSecurity, de vanguarda e proativo. https://github.com/Neo23x0/sysmon-config
@olafhartong: este repositório, que se concentra em ser muito fácil de manter, com notas detalhadas de regras para resposta guiada e SIEM.
Um excelente guia da comunidade por @Carlos_Perez: https://github.com/trustedsec/SysmonCommunityGuide
Pull requests / tickets de issues e novas adições serão muito apreciados!
Comecei uma série de posts no blog cobrindo este repositório;
Eu me esforço para mapear todas as configurações para a estrutura ATT&CK sempre que o Sysmon for capaz de detectá-la. Observe que esta é uma possível entrada de log que pode levar a uma detecção; nem em todos os casos esta é a única telemetria para essa técnica. Além disso, pode haver mais técnicas relacionadas a essa regra; a mapeada é a que considerei mais provável.