Windows本身系統稽核功能不足,而WHIDS可以即時監控Windows系統上的事件日誌,並利用自定義的規則進行規則比對來發掘系統內潛在的資安威脅。在本文中將以Windows 11為例來示範如何運用與安裝WHIDS。
工具程式WHIDS是開源碼社群中少數支援Windows系統「端點偵測與回應」(Endpoint Detection and Response,EDR)的解決方案,透過即時監控Windows系統上的事件日誌(Event Log),並利用自定義的規則(Gene Rule)進行規則比對,來發掘系統上潛在的資安威脅。為了補足Windows系統本身系統稽核功能的不足,WHIDS會利用Sysmon優異的系統稽核功能來取得更深入的事件日誌,進而對Windows系統進行全面性監控。在本文中,將以Windows 11為例來說明如何運用與安裝WHIDS。
‧WHIDS官方網址:https://github.com/0xrawsec/whids
‧Gene官方網址:https://github.com/0xrawsec/gene
‧Sysmon官方網址:https://learn.microsoft.com/zh-tw/sysinternals/downloads/sysmon
安裝WHIDS
在安裝WHIDS之前,必須先啟用Windows系統上的PowerShell Module記錄功能(Logging)。以系統管理員身分執行「命令提示字元」進入文字介面環境後,再執行gpedit.msc來啟動群組原則編輯器,而後依序點選「電腦設定→系統管理範本→Windows元件→Windows PowerShell→開啟模組記錄」,如圖1所示。
圖1 啟用PowerShell Module記錄功能。
接著,點選「已啟用」及模組名稱,並輸入「MicroSoftPowerShell.*」,表示要監控MicroSoftPowerShell,過程如圖2所示。
圖2 設定監控MicroSoftPowerShell。
在開啟記錄PowerShell Module功能後,接下來開啟作業系統上的稽核服務(Audit Service Creation),同樣執行gpedit.msc。然後,依序點選「電腦設定→Windows設定→安全性設定→進階稽核原則設定→系統→啟用稽核安全性系統延伸」,如圖3所示。
圖3 開啟作業系統上的稽核服務。
在完作業系統所需要的相關設定後,就可以開始安裝WHIDS。
下載最新版本的WHIDS(在此為V1.7)後,以系統管理員身分執行manager.bat。便會出現如圖4所示的安裝畫面,直接選擇「Install WHIDS from scratch」。
圖4 安裝時選擇「Install WHIDS from scratch」。
之後,就會將Sysmon(在此版本為V13)和WHIDS相關組態檔及執行檔安裝至作業系統上,並以系統服務(Service)的型式運作。
接下來,說明WHIDS所使用之組態檔(檔名為config.toml)常用的選項:
表示要監控的來源Windows Event Log的類型,WHIDS將提供稽核記錄的來源視為個別的Channel,例如Sysmon的Channel名稱為Microsoft-Windows-Sysmon/Operational。
更詳盡的Channel說明,可參考WHIDS官方網站上關於Channels的說明。一般來說,此選項通常會設定為all,表示要監控所有的來源。
設定儲存WHIDS運作(例如啟動或結束)相關資訊的檔案位置。
設定是否要記錄所有的資訊,一般來說會設定為false。
設定當觸發相關規則時,要儲存ALERT資訊的目錄位置。
指定所使用的規則檔案位置。
安裝完成後,如果沒有特殊的需求,使用預設的設定即可運作。
接著,說明其所使用的規則檔格式(json格式)。以設定記錄執行Taskkill.exe指令為例,範例規則如圖5所示。
圖5 規則格式範例。
有關於規則格式,簡單說明如下:
Name:設定為該規則的名稱。
Tags:設定該規則的屬性名稱。
meta:設定該規則詳細的資訊。包括EventIDs用來設定要監控的事件編號,對應至Sysmon的事件編號;Channels則是設定要監控的資訊來源,以Sysmon為例即為Microsoft-Windows-Sysmon/Operational。
Matches:設定符合條件的相關資訊。
Condition:假如符合此區段的條件設定即觸發此規則,如本例為表示當使用者執行TaskKill.exe就會觸發此規則。
當WHIDS補捉到符合條件的使用者操作後,就會將相關資訊(包含執行指令、時間等資訊)以json格式記錄於alert.log,圖6所示為執行TaskKill.exe指令的Log資訊。
圖6 執行TaskKill.exe指令的Log資訊。
在簡單說明WHIDS後,接下來介紹Sysmon。
什麼是Sysmon
Sysmon是由Sysinternals公司(現已被微軟所收購)所開發的系統稽核軟體,主要功能在於監控微軟作業系統,並增強系統稽核能力,提供更全面的系統稽核功能。以下為Sysmon執行時常用的參數:
-h:指定要使用的雜湊(Hash)演算法,例如SHA1、MD5。
-n:設定是否要監控系統上網路的連線資訊,如果要記錄網路連線資訊(事件編號為3),在啟動時就必須設定此參數。
-s:顯示目前組態檔的設定。
-u:解除Sysmon的相關安裝。
-accepteula:設定Sysmon可自動載入相關所需要的驅動程式,若沒有設定此選項,就必須在載入驅動程式的過程中,以一問一答的方式來確認是否要載入相關的模組。
-c:指定組態檔的名稱,可將執行所需的相關組態資訊設定於此檔案中,在執行時就會依照此檔案內的設定來執行。
接著,繼續說明Sysmon所使用的組態檔,設定樣式如圖7所示。
圖7 Sysmon所使用的組態檔設定樣式。
Sysmon常用組態當中的EventFiltering,是主要的設定區間,使用者可在此區間內設定欲記錄的事件(以唯一的事件編號來表示)。而常用的事件編號說明,則如表1所示。
系統測試
在使用者安裝WHIDS後,就會將Sysmon和WHIDS同步安裝並啟動。可先行使用「服務管理員」來查看是否在運作中,如圖8所示。
圖8 使用「服務管理員」查看Sysmon和WHIDS是否正在運作中。
在確認Sysmon和WHIDS以服務型式運作後,因預設組態會記錄所有程式的執行,因此可利用執行記事本(notepad.exe)程式進行測試。在執行Notepad後,查看系統上的「事件檢視器」來確認Sysmon是否有正常的運作。如圖9所示,確認已記錄相關執行Notepad的資訊。
圖9 已記錄相關執行Notepad的資訊。
在初步確認Sysmon已正常運作後,就可以自行定義所需的功能來執行Sysmon,如下為僅記錄所有程式執行及檔案刪除的組態檔,檔名為config.xml:
接著,重新啟動Sysmon服務,並指定使用config.xml,相關設定如圖10所示(在啟動參數中設定相關參數)。
圖10 重新啟動Sysmon服務,並指定使用config.xml。
接著,可利用執行systeminfo.exe(查看系統資訊指令)的方式,由於WHIDS預設規則有設定監控systeminfo.exe的規則,因此會在alert.log記錄相關的資訊,如圖11所示。至此,就表示WHIDS已正常地運作了。
圖11 監控systeminfo.exe。
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>