
A repository of sysmon configuration modules
이 저장소는 Microsoft Sysinternals Sysmon 다운로드 구성 저장소로, 모듈식으로 구성되어 특정 구성을 더 쉽게 유지 관리하고 생성할 수 있습니다.
이러한 구성들은 모두 시작점으로 간주해야 하며, 환경별 튜닝을 적극적으로 권장합니다.
참고: FileExecutable 이벤트에서 더 많은 가치를 얻으려면 최신 버전의 LOLdrivers 구성을 병합하는 것도 고려하세요. 해당 파일을 가져와 29_file_execute_detected 폴더에 추가한 후 새 구성을 생성하면 쉽게 수행할 수 있습니다.
저장소 내의 sysmonconfig.xml은 PowerShell 스크립트에 의한 병합과 Azure Pipeline 실행에서 Sysmon 로드가 성공한 후 자동으로 생성됩니다. 자체 모듈을 통합하여 사용자 지정 구성을 생성하는 방법에 대한 자세한 내용은 여기를 참조하세요.
아래 문서 외에도 이 프로젝트 사용 방법에 대한 동영상이 있습니다.
이전 버전은 여전히 브랜치에서 사용할 수 있지만 현재 브랜치만큼 완전하지는 않습니다.
버전에 추가된 기능을 이해하려면 제 간단한 블로그 게시물과 최신 글을 확인하거나 DerbyCon 발표를 시청하세요.
참고: 유지보수, 출력 동일성, 관리 용이성 등 여러 명백한 이유로 환경 내에서 사용하는 구성 수를 최소화하는 것을 권장합니다. 하지만 도메인 컨트롤러, 서버 및 워크스테이션에는 맞춤형 구성을 만드십시오.
프로덕션 환경에 적용하기 전에 구성을 검토하는 것을 적극 권장합니다. 그래야 실행 가능한 로깅을 최대한 확보하고 노이즈를 최대한 줄일 수 있습니다.
광범위하게 배포하기 전에 먼저 자체 환경에 설치하고 구성 결과를 관찰해야 합니다. 예를 들어, 바이러스 백신의 작업을 제외해야 합니다. 그렇지 않으면 쓸모없는 정보로 로그가 가득 차기 쉽습니다.
$> 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
아래 함수는 mbmy에게 큰 감사를 표합니다.
새 함수:
Find-RulesInBasePath - 기본 경로(예: C:\folder\sysmon-modular)를 받아 정규식 패턴에 따라 모든 후보 xml 규칙 파일을 찾습니다.
예시:
PS C:\Users\sysmon\sysmon-modular> Find-RulesInBasePath -BasePath C:\users\sysmon\sysmon-modular\ -OutputRules | Out-File available_rules.txt
Merge-AllSysmonXml 새 매개 변수:
-BasePath - 정규식 패턴을 기반으로 제공된 경로에서 모든 후보 xml 규칙 파일을 찾아 병합합니다.
예시:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\
-ExcludeList - -BasePath와 함께 사용하면 규칙 목록을 가져와 병합 전에 발견된 규칙에서 제외합니다.
예시:
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 - -BasePath와 함께 사용하면 기본 경로에서 사용 가능한 모든 규칙을 찾지만 목록에 정의된 규칙만 병합합니다.
예시:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\ -IncludeList C:\users\sysmon\sysmon-modular\include_rules.txt
참고 BasePath는 sysmon-modular 파일의 전체 경로여야 합니다(예: c:\tools\sysmon-modular). 그렇지 않으면 PowerShell이 해당 파일을 찾을 수 없어 기본 구성이 생성됩니다.
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
특정 이벤트 ID에 대한 모든 sysmon-modular 규칙으로 구성 생성(전체 디렉터리 포함) 후 가져온 규칙이 없는 모든 이벤트 ID 비활성화
예시:
# 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
}
}
Include/Exclude 목록 형식 예시(전체 규칙/이벤트 패밀리용):
1_process_creation
5_process_ended
11_file_create
23_file_delete
7_image_load
17_18_pipe_event
관리자 권한으로 실행하세요.
sysmon.exe -accepteula -i sysmonconfig.xml
관리자 권한으로 실행하세요.
sysmon.exe -c sysmonconfig.xml
이것은 cnnrshd가 만든 새로운 기능입니다.
이 스크립트로 생성된 구성은 주석을 유지하며 적절한 XML 들여쓰기가 적용되어 가독성이 높아지고 규칙 파일 간 상호 참조가 쉬워집니다.
예시 프롬프트
python merge_sysmon_configs.py config_lists/default_list/default_list.csv -f csv -b templates/sysmon_template.xml -o test.xml
** 이와 같은 구성 생성 방식은 아직 새롭고 실험적입니다. MDE augment 및 exclude-only 버전 같은 사용자 지정 버전은 아직 지원되지 않습니다.
세 가지 주요 Sysmon 구성이 있습니다:
@SwiftOnSecurity: 다양한 설정에 대한 훌륭한 입문 가이드입니다. 명령 1개로 시작하세요 https://github.com/SwiftOnSecurity/sysmon-config/.
@cyb3rops: SwiftOnSecurity 구성의 포크로, 최첨단이고 선제적입니다. **https://github.com/Neo23x0/sysmon-config
@olafhartong: 이 저장소로, 안내된 대응과 SIEM을 위한 상세한 규칙 메모를 제공하며 유지보수가 매우 용이한 데 중점을 둡니다.
뛰어난 커뮤니티 가이드 @Carlos_Perez: https://github.com/trustedsec/SysmonCommunityGuide
Pull request / 이슈 티켓 및 새로운 추가 사항은 크게 환영합니다!
이 저장소를 다루는 블로그 게시물 시리즈를 시작했습니다:
저는 Sysmon이 탐지할 수 있을 때마다 모든 구성을 ATT&CK 프레임워크에 매핑하기 위해 노력합니다. 이는 탐지로 이어질 수 있는 가능한 로그 항목이며, 모든 경우에 해당 기법에 대한 유일한 텔레메트리라는 것은 아닙니다. 또한 해당 규칙과 관련된 기법이 더 있을 수 있으며, 매핑된 기법은 제가 가장 가능성이 높다고 판단한 것입니다.
| 유형 | 구성 | 설명 |
|---|
| 기본 | sysmonconfig.xml | 균형 잡힌 구성으로 가장 많이 사용되며, 자세한 정보는 여기에서 확인하세요. |
| 기본+ | sysmonconfig-with-filedelete.xml | 균형 잡힌 구성으로 가장 많이 사용되며, FileDelete 파일 저장에 대한 정보도 포함됩니다. |
| 상세 | sysmonconfig-excludes-only.xml | 매우 자세한 구성으로 모든 이벤트가 포함되며 제외 모듈만 적용됩니다. 검증 없이 프로덕션 환경에서 사용해서는 안 되며, 상당한 양의 데이터를 생성하고 성능에 영향을 줄 수 있습니다. 자세한 정보는 여기에서 확인하세요. |
| 초고 상세 | sysmonconfig-research.xml | 극도로 상세한 구성입니다. 이 파일에서 예상되는 로그 양은 매우 많으므로 절대 프로덕션 환경에서 사용하지 마십시오! 이 구성은 연구용으로만 사용되며 CPU/메모리를 훨씬 더 많이 사용합니다. 조사할 기술을 실행하기 직전에만 활성화하고, 작업이 끝나면 더 가벼운 구성을 로드하세요. |
| MDE 증강 | sysmonconfig-mde-augmentation.xml | Defender for Endpoint를 보강하기 위한 구성으로, 정보를 보강하고 중복을 최대한 줄이기 위한 것입니다. 기본/균형 구성에 기반하며 Sysmon에 대한 모든 이벤트를 생성하지는 않습니다. 구성 내에 주석이 있습니다. IR(사고 대응)을 위해서는 제외 전용 구성(excludes only)을 사용하고 보강 이벤트만 수집하는 것을 고려하세요. (더 자세한 설명이 담긴 블로그 곧 게시 예정) |