Sysmon 的設定檔定義了 Sysmon 記錄哪些遙測數據,哪些會忽略。 由於 Sysmon 捕捉的是詳細且低階的系統活動,組態設計直接決定所得資料的實用性、效能及調查價值。
本文說明 Sysmon 設定檔的結構、過濾規則的評估方式,以及在將 Sysmon 作為內建 Windows 功能部署時,如何推理配置設計。
設定檔
設定檔透過指定全域設定與事件過濾規則來定義 Sysmon 的行為。 它們讓部署預設配置和過濾捕捉事件變得更容易。
在內建的 Sysmon 中,設定是透過 Windows 設定機制進行,並在執行時進行評估。 設定更新會立即生效,並且在重啟後持續存在。
基本配置結構
一個簡單的 Sysmon 設定 XML 檔案長這樣:
<Sysmon schemaversion="4.82">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>
<!-- Do not log process termination -->
<ProcessTerminate onmatch="include" />
<!-- Log network connection if the destination port equals 443 -->
<!-- or 80, and process isn't InternetExplorer -->
<NetworkConnect onmatch="include">
<DestinationPort>443</DestinationPort>
<DestinationPort>80</DestinationPort>
</NetworkConnect> <NetworkConnect onmatch="exclude">
<Image condition="end with">iexplore.exe</Image>
</NetworkConnect>
</EventFiltering>
</Sysmon>
這個例子說明:
全域配置項目
事件特定過濾
結合包含與排除規則以平衡可見性與雜訊
結構描述版本
設定檔在標籤上包含 schemaversion 屬性 <Sysmon> 。 此版本獨立於 Sysmon 二進位版本,允許 Sysmon 正確解析舊有的設定檔。
結構版本管理:
保持 Sysmon 更新間的相容性
允許安全新增功能
確保舊有配置能持續運作
配置項目
組態條目定義全域 Sysmon 行為。 它們影響的是事件的豐富化或處理方式,而非產生哪些事件類型。
| 項目 | 值 | 預設值 | 描述 |
|---|---|---|---|
| 檔案目錄 | 字串 | 賽蒙 | 每個磁碟區根目錄,當啟用 ile-delete 歸檔時,已刪除檔案會被歸檔。 目錄由系統存取控制(ACL)保護。 |
| 支票撤銷 | 布林值 | True | 控制驗證已簽署二進位檔時是否執行數位簽章撤銷檢查。 |
| 複製刪除PE | 布林值 | False | 透過將已刪除的執行檔 (PE) 檔案複製到歸檔目錄來保存。 |
| CopyOnDeleteSIDs | 弦樂 | 無 | 以逗號分隔的帳號 SID 清單,該帳戶已刪除檔案會被保留。 |
| CopyOnDeleteExtensions | 弦樂 | 無 | 已刪除檔案的程序名稱會被保留。 |
| DNS查詢 | 布林值 | True | 啟用網路事件的反向 DNS 查詢,將 IP 位址解析為主機名稱。 |
| 車手名稱 | 字串 | 自動生成 | 指定 Sysmon 驅動程式及服務映像的名稱。 |
| 雜湊演算法 | 弦樂 | 無 | 雜湊演算法應用於檔案。 支援的數值包括 MD5、SHA1、SHA256、IMPHASH 或 * (所有) 。 |
配置項目控制事件豐富化與處理,而非事件選擇。
配置結構與事件定義
Sysmon 配置基於明確定義的結構,描述:
支援的活動類型
可用於篩選的欄位
欄位資料類型
此結構定義了設定檔可表達的內容,並確保 Sysmon 版本間的解析一致性。
部分組態項目啟用功能性 (如雜湊或豐富) ,但事件仍須明確啟用並過濾。<EventFiltering>
以下範例展示了 RawAccessRead 事件類型的結構定義:
<event name="SYSMON_RAWACCESS_READ" value="9" level="Informational" template="RawAccessRead detected" rulename="RawAccessRead" version="2">
<data name="UtcTime" inType="win:UnicodeString" outType="xs:string"/>
<data name="ProcessGuid" inType="win:GUID"/>
<data name="ProcessId" inType="win:UInt32" outType="win:PID"/>
<data name="Image" inType="win:UnicodeString" outType="xs:string"/>
<data name="Device" inType="win:UnicodeString" outType="xs:string"/>
</event>
這說明了:
每個事件都會暴露一組固定的場
過濾規則中只能使用結構定義欄位
欄位類型限制有效的過濾條件
事件過濾
事件過濾控制哪些 Sysmon 事件被記錄。 每種事件類型在 下都有自己的過濾標籤 <EventFiltering>。
| 身份標籤 | 事件 | 描述 |
|---|---|---|
| 1 | ProcessCreate | 流程建立 |
| 2 | 檔案創建時間 | 檔案建立時間 |
| 3 | NetworkConnect | 網路連線 |
| 4 | 不適用 | Sysmon 服務狀態變更 (無法過濾) |
| 5 | ProcessTerminate | 程序終止 |
| 6 | 驅動負載 | 驅動程式已裝填 |
| 7 | 影像載入 | 圖片已載入 |
| 8 | CreateRemoteThread | 遠端執行緒建立 |
| 9 | RawAccessRead | 原始磁碟存取 |
| 10 | ProcessAccess | 已存取的程序 |
| 11 | 檔案建立 | 檔案建立 |
| 12–14 | 登錄事件 | 登錄檔修改 |
| 15 | 檔案創建串流雜湊 | 建立的檔案串流 |
| 16 | 不適用 | Sysmon 設定變更 (無法過濾) |
| 17–18 | 管道事件 | 命名管道活動 |
| 19–21 | WmiEvent | WMI活動 |
| 22 | DNSQuery | DNS 查詢 |
| 23 | 檔案刪除 | 檔案刪除 (已歸檔) |
| 24 | 剪貼板變更 | 剪貼板內容變更 |
| 25 | 流程篡改 | 製程影像變更 |
| 26 | 檔案刪除偵測到 | 檔案刪除 (已記錄) |
| 27–29 | FileBlock / 檔案可執行檔 | 可執行檔案事件 |
包含與排除規則
每個事件過濾器指定一個 onmatch 屬性:
包含 – 僅記錄匹配事件
排除 – 除匹配事件外,所有事件均被記錄
排除規則永遠優先於包含規則。
規則邏輯與條件
規則會參考事件欄位並套用條件。
同場規則的行為為 OR
不同場規則的行為為 AND
| 條件 | 描述 |
|---|---|
| is | 完全相符 |
| 包含 | 子串匹配 |
| 以 開頭/以 結尾 | 前綴或後綴 |
| image | 路徑感知影像匹配 |
| 包含任意 / 包含所有 | 多值匹配 |
| 排除* | 負匹配 |
| 少於 / 多於 | 字典序比較 |
命名規則
規則名稱可用以提供稽核背景:
<NetworkConnect onmatch="exclude">
<Image name="network iexplore" condition="contains">iexplore.exe</Image>
</NetworkConnect>
命名規則提升調查的清晰度與可維護性。
規則群組
規則群組允許對邏輯規則組合進行明確控制:
<EventFiltering>
<RuleGroup name="group 1" groupRelation="and">
<ProcessCreate onmatch="include">
<Image condition="contains">timeout.exe</Image>
<CommandLine condition="contains">100</CommandLine>
</ProcessCreate>
</RuleGroup>
<RuleGroup groupRelation="or">
<ProcessTerminate onmatch="include">
<Image condition="contains">timeout.exe</Image>
<Image condition="contains">ping.exe</Image>
</ProcessTerminate>
</RuleGroup>
<ImageLoad onmatch="include"/>
</EventFiltering>
規則群組允許:
精確行為匹配
每個事件類型有不同的邏輯
規則重複減少
配置變更的可見性
每當 Sysmon 設定更新時,Sysmon 會產生一個設定變更事件,提供可稽核性與變更追蹤。
設計原則
有效的 Sysmon 配置:
從廣泛開始,隨著時間逐步精進
排除已知良性活性
保留調查背景
避免過於具體的規則
一旦排除遙測資料,就無法追溯性恢復。
設定檔無法做到的事
設定檔:
不要偵測到威脅
請勿產生警報
不要分類行為
不要替換 SIEM 或 EDR 邏輯
他們定義的是存在哪些證據,而不是如何解讀。
摘要
Sysmon 設定檔是有效部署 Sysmon 的基礎。 理解結構結構、過濾語意、規則邏輯及真實世界模式,對於建立可擴展且長期研究價值的配置至關重要。