了解 Sysmon 設定檔

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 的基礎。 理解結構結構、過濾語意、規則邏輯及真實世界模式,對於建立可擴展且長期研究價值的配置至關重要。