將此篇文章跟 Facebook 上的朋友分享將此篇文章跟 Plurk 上的朋友分享將此篇文章跟 Twitter 上的朋友分享列印轉寄
2019/4/23

作業系統內建太陽春 安裝第三方工具來補強

安裝Sysmon隨時監視 系統稽核記錄不漏失

吳惠麟
作業系統中內建的稽核記錄系統,功能往往過於陽春,因此常常漏失掉最關鍵的重要資訊。如果想額外找一套監視軟體來輔助使用,推薦使用Sysmon工具,以擴充稽核記錄的功能。Sysmon會以系統服務的方式常駐在系統上,隨時監視及記錄系統的任何活動情況。


相信沒有一個系統管理者會否認稽核記錄的重要性,當有資安事件(例如系統被入侵)發生時,通常會藉由檢視系統內的稽核記錄來尋找事件相關的蛛絲馬跡。以一般最常見的微軟作業系統而言,通常會利用事件檢視器來檢視系統的相關事件,但不可否認地,內建的稽核記錄系統的功能往往不符所需,以致於常常未記錄到關鍵的資訊。因此,本文將介紹Sysmon監視軟體,可用來輔助微軟作業系統(在本文中所使用的作業系統為Windows 10)的稽核記錄系統,以擴充稽核記錄的功能。

什麼是Sysmon

Sysmon是一種監視軟體,可用來彌補微軟作業系統事件稽核能力的不足,最早是由Sysinternals(現已併入微軟公司)所開發,並以綠色免費軟體的形式發布。

Sysmon會以系統服務(Service)的方式常駐在系統上,並監視及記錄系統上的活動,除此之外,會依據使用者的設定將相關的活動記錄在微軟作業系統的事件日誌(Event Log)內。Sysmon可記錄的系統事件種類如下所述:

‧當系統上因為執行程式而產生新建程序(Process)後,就會記錄產生該新建程序的完整命令等相關額外資訊,使用者可藉由此資訊來掌握系統上曾執行的指令內容。

‧可利用相關的雜湊演算法為相關的程序或檔案來產生唯一的雜湊值,預設使用SHA1雜湊演算法,但也支援MD5、SHA256等有名的雜湊演算法,此外也可在同一時間內使用多種的演算法來產生雜湊值。

‧為每個程序額外提供GUID(Globally Unique Identifier)編號,讓使用者更容易與微軟系統所記錄到程序事件進行交叉比對。

‧可記錄被系統載入的驅動程式及DLL的簽名資訊與雜湊值等資訊。

‧可記錄利用低階(RAW)型式讀取磁碟機資料的相關資訊。

‧可記錄網路的連線狀態等相關資訊,包括來源IP位址、來源通訊埠以及主機名稱等資訊。若要記錄此類資訊,在Sysmon軟體啟動時,須啟用監控網路連線功能。

‧當偵測到檔案發生變化時,例如新建檔案或檔案內容發生變動,可記錄相關的資訊。

‧提供豐富的過濾規則,讓使用者能夠更有彈性地利用組態來記錄相關資訊。

在說明如何安裝使用Sysmon軟體之前,先來說明微軟事件日誌。

了解微軟事件日誌

為了稽核的目的,通常作業系統或網路設備會提供記錄的功能。在系統發生異常時,可記錄系統當下的相關資訊。一般而言,此類的紀錄通常會遵循標準的Syslog(一種用於在網際網路協定TCP/IP網路中傳遞記錄檔訊息的標準)格式,微軟作業系統當然也不例外。

基本上,微軟系統所記錄的事件紀錄,大致上遵循Syslog的標準,但有稍許的擴充。其中最大的特色在於,微軟針對每種事件特別定義了一個事件編號(Event ID),每個事件編號均是唯一的,且個別的事件編號均代表系統某個事件,例如在Windows 10上,事件編號4624(不同的微軟作業系統可能會有不同的事件編號)表示使用者已成功地登入到作業系統裡,使用者只要檢閱事件紀錄中的4624紀錄,即可得知曾登入系統的相關資訊。如圖1所示,即為事件檢視器中的登入紀錄。


▲圖1 檢視事件檢視器內的登入紀錄。


基本上,微軟作業系統將事件紀錄大致分為下列幾種類型:

應用程式事件

此類事件紀錄主要是在記錄應用程式所發生的事件,並以嚴重性來區分事件等級,可區分為以下三種等級:錯誤(嚴重等級最高,通常是發生如應用程式資料遺失或應用程式發生無預期的錯誤而停止服務等事件時)、警告(嚴重等級次高,通常在應用程式可能會在後續執行時發生問題時進行記錄)、資訊(僅是在記錄應用程式的執行情形,例如成功地啟動程式或載入驅動等相關資訊)。

安全性相關事件

此類事件紀錄主要是記錄可能會對系統造成危害的事件,最常見的事件就是使用者嘗試登入系統失敗,或使用者已正常登入系統等紀錄。

安裝事件

此類事件紀錄主要記錄系統上軟體安裝的相關資訊,最常見的就是微軟更新程式的安裝紀錄。

系統事件

此類事件紀錄主要是記錄系統上一般常見的操作,例如系統服務(Service)的啟動或停止等資訊。在簡單的說明事件紀錄後,接著說明如何安裝與使用Sysmon。

安裝Sysmon監視軟體

先連結至網址「https://docs.microsoft.com/zh-tw/sysinternals/downloads/sysmon」,取得Sysmon的最新版本,本文使用的版本為9.0。

Sysmon是個綠色軟體,在下載解壓縮後,直接使用其中的主要執行程式(名稱為sysmon.exe)即可,並不需要進行安裝,執行的語法如下:

 
sysmon [組態選項]


常用組態選項說明

以下是Sysmon在執行時常用的組態選項,分別加以說明:

-c:指定組態檔的名稱,將執行所需的相關組態資訊設定於此檔案中,在執行時即會依照此檔案內的設定來執行。

-h:指定要使用的雜湊(Hash)演算法,例如SHA1、MD5。

-n:設定要監控系統上網路的連線資訊,如果要記錄網路連線的資訊便須設定此組態。

-s:顯示組態檔的設定。

-u:反安裝Sysmon程式,亦即停止Sysmon的執行。

-accepteula:設定Sysmon可自動載入相關所需要的驅動程式,若沒有設定此選項,便會在載入驅動程式的過程中,以應答的方式詢問使用者是否要載入。

此外,Sysmon提供了一個XML格式來讓使用者設定執行時所需使用的組態,圖2所示便為一個簡單的組態檔。


▲圖2 XML格式的簡單組態檔。


組態檔內常用欄位說明

接下來,繼續說明組態檔中常用的欄位(Tag):

HashAlgorithms

HashAlgorithms欄位可用來設定所要使用的雜湊演算法。

EventFiltering

這是主要的設定區間,使用者可在此區間中設定欲記錄的事件。

在Sysmon啟動後,就會攔截如表1所示的系統事件(每個事件均定義個別的事件編號),並根據後續使用者所定義的過濾條件來決定是否要記錄在系統日誌內。




ProcessCreate

用來設定當系統上有程序新建時的處理方式,使用者可在此區段中設定欲排除紀錄的程序名稱,以下範例即表示不記錄DllHost.exe所產生的程序(#為註解):

 

<ProcessCreate onmatch="exclude">
#設定排除
#如果產生程序的指令符合,即符合排除條件
<CommandLine condition="is">C:\
Windows\system32\DllHost.exe></
commandLine>
  </ProcessCreate>



FileCreateTime

設定當系統上有新建檔案時的處理方式,使用者可在此區段中設定欲排除記錄的程序名稱,以下範例表示不記錄安裝程式(Setup)所產生的新建檔案:

 

<FileCreateTime onmatch="exclude">
 <Image condition="contains">
setup</Image> 
</FileCreateTime>



NetworkConnect

用來設定監控系統上網路連線的處理方式,使用者可在此區段中設定欲監控的網路連線行為,如下範例為表示記錄nmap.exe(這是有名的通訊埠掃描程式,可用來掃描目的主機通訊埠的資訊)的執行情形以及對其他主機的SSH連線:

 

<NetworkConnect onmatch="include
">
  <Image condition="image"> nmap.
exe</Image>
  <DestinationPort condition="is"
>22</DestinationPort>
</NetworkConnect>



其實設定一個適當組態檔並不容易,必須對微軟系統有相當的了解,才有辦法設定適當的組態檔來發揮Sysmon的功能。幸好在開源碼社群中已有相關的解決方案,可至網址「https://github.com/SwiftOnSecurity/sysmon-config/blob/master/README.md」取得組態檔(這是針對一般環境所撰寫的組態檔),而後再根據自己的環境進行修改即可。

在簡單的說明組態檔後,接下來即可執行Sysmon(組態檔以上述網址所下載的組態檔為例)。首先,使用者要先以系統管理者的權限來執行命令列(cmd.exe),不可使用一般使用者的權限執行,否則會發生權限不足的錯誤。如圖3所示,執行如下指令,設定要監控網路連線:


▲圖3 開始監控網路連線。


 
sysmon.exe -accepteula -n -i 
sysmonconfig-export.xml


由於Sysmon會以服務的型式常駐在系統上執行,因此在成功執行後,可利用檢查系統服務的方式來確認是否已啟動,如圖4所示。


▲圖4 以檢查系統服務的方式確認Sysmon是否已經啟動。


系統實作

以偵測主機上執行nmap.exe掃描其他主機的動作及以SSH連線到其他主機為例,來測試Sysmon的記錄功能。首先,在主機上執行以下指令來啟動Sysmon:

 
sysmon.exe -accepteula -n -i 
sysmonconfig-export.xml


由於Nmap並非微軟的內建的程式,因此請至Nmap官方網站下載並安裝,之後再以Nmap掃描其他台主機,在掃描完成後,即可檢查事件檢視器「應用程式與服務記錄檔」中「Microsoft」下「Windows」的「Sysmon」→「Operation」是否有產生一組事件編號為「1」的紀錄,如圖5所示。


▲圖5 確認是否已經產生一組事件編號為1的紀錄。


接著,同樣在主機上以SSH連線至其他台主機,然後檢查事件檢視器同樣的位置是否有相關的資訊,如圖6所示,將會產生事件編號為「3」的紀錄,並記錄連線的目的IP與目的通訊埠等資訊。


▲圖6 產生事件編號為3的紀錄。


<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>

這篇文章讓你覺得滿意不滿意
送出
相關文章
詳述GandCrab演化史 從入侵管道防禦降低風險
活用WAC管理平台 輕鬆管理S2D叢集
納入大數據分析效能 保障數位業務可用性
行動應用勢將攸關重大 安全層級須嚴謹評估
從防到治 端點防護新頁
留言
顯示暱稱:
留言內容:
送出