
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拡張や除外のみバージョンなどのカスタムバージョンにはまだ対応していません。
主要なSysmon設定は3つあります:
@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
プルリクエスト / イシューチケット、新しい追加は大いに歓迎します!
このリポジトリに関する一連のブログ記事を開始しました;
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の利点のため、除外のみの設定を使用し、補完となるイベントのみを取り込むことを検討してください。(詳細な根拠を説明するブログは近日公開予定) |