
A repository of sysmon configuration modules
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 é fortemente 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
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;
Superpoderes de detecção de endpoints a baixo custo - parte 2 - Implantar e Manter
Superpoderes de detecção de endpoints a baixo custo - parte 3 - Adulteração do Sysmon
Uma comparação entre o Sysmon e o Microsoft Defender for Endpoint
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.
| 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) |