iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Security

資安這條路:系統化學習藍隊技術系列 第 29

Day29:藍隊提升技術力:監控技術 (3)─日誌: Windows 事件日誌監控

  • 分享至 

  • xImage
  •  

簡介

在 Windows 資訊安全領域中
透過識別和監控關鍵 Windows 事件來主動預防非常重要
本文將探討 Windows 事件日誌的監控
幫助大家了解如何利用日誌進行監控機制
事件日誌記錄了設備上的所有行為
包含許多安全漏洞和應用程式效能問題的線索

事件日誌的定義、目的及方法

事件日誌是記錄系統上所有「發生事件」的本機檔案,包括:

  • 存取、刪除、新增檔案或應用程式
  • 修改系統日期時間
  • 關機或重新啟動系統
  • 更改系統設定等

例如

  1. 當使用者登入 Windows 時,系統會在安全性日誌中記錄一個事件
  2. 如果有人嘗試安裝新的軟體,這個動作會被記錄在應用程式日誌中
  3. 系統更新或硬體變更通常會在系統日誌中留下記錄

事件分類

  • 系統
  • 安全性
  • 應用程式
  • 目錄服務
  • DNS 伺服器
  • DFS 複寫(僅適用於 Active Directory)

與系統或資料安全相關的事件稱為安全事件,其日誌檔案稱為安全性日誌

事件日誌類別

  1. 應用程式日誌:由應用程式記錄的事件
    • 例如:Office 軟體的安裝過程、瀏覽器的異常關閉
  2. 系統日誌:由作業系統記錄的事件
    • 例如:系統啟動時的硬體驅動程式載入狀況、系統服務的啟動或停止
  3. 安全性日誌:與系統安全相關的事件
    • 例如:使用者登入嘗試、檔案存取權限的變更
  4. 目錄服務日誌:Active Directory 的事件(僅適用於網域控制站)
    • 例如:網域使用者帳號的建立或修改
  5. DNS 伺服器日誌:DNS 伺服器和名稱解析的事件(僅適用於 DNS 伺服器)
    • 例如:DNS 查詢失敗、區域傳送完成
  6. 檔案複寫服務日誌:網域控制站複寫的事件(僅適用於網域控制站)
    • 例如:Active Directory 資料的複寫狀態

事件日誌類型

  1. 資訊:描述任務成功操作的事件
    • 例如:「使用者成功登入系統」
  2. 警告:不一定重要,但可能表示未來可能發生問題的事件
    • 例如:「硬碟空間低於 10%」
  3. 錯誤:表示重大問題的事件,如資料遺失或功能喪失
    • 例如:「系統無法啟動某項關鍵服務」
  4. 成功稽核(安全性日誌):描述已稽核安全事件成功完成的事件
    • 例如:「使用者成功修改了重要檔案」
  5. 失敗稽核(安全性日誌):描述未成功完成的已稽核安全事件
    • 例如:「使用者嘗試存取未經授權的資料夾失敗」

了解事件

事件在事件檢視器中列出,包含以下資訊:

  • 日期
  • 時間
  • 使用者
  • 電腦
  • 事件 ID
  • 來源
  • 類型

例如:

日期: 2024/10/13
時間: 14:30:45
使用者: Administrator
電腦: DESKTOP-ABC123
事件 ID: 4624
來源: Microsoft-Windows-Security-Auditing
類型: 成功稽核

安全性日誌如何防止駭客入侵和資料竊取

大多數駭客入侵和竊取是由非法驗證嘗試造成的
稽核非法或失敗的登入嘗試可以防止(或減少)資料竊取

例如:

  1. 偵測到多次失敗的登入嘗試可能表示有人正在進行暴力破解攻擊
  2. unusual 時間(如凌晨 3 點)的成功登入可能表示帳號被盜用

需要稽核的事件和稽核計劃

  • 關鍵安全事件需要稽核

    • 使用者登入/登出
    • 電腦登入/登出/重新啟動
    • 存取物件、檔案和資料夾
    • 系統時間修改
    • 稽核日誌被清除
  • 稽核計劃範例

    1. 每天檢查失敗的登入嘗試次數是否超過預設閾值(如 5 次)
    2. 週末時間的任何系統管理員活動都需要額外審查
    3. 每週檢查是否有未經授權的檔案存取嘗試

監控事件日誌的必要性

  1. 符合安全法規要求(如個人資料保護法、金融業的資安規範等)
  2. 保護網路資訊安全
  3. 追蹤登入嘗試
  4. 自動化稽核和監控過程

例如:

  • 金融機構可能需要記錄所有對客戶資料的存取,以符合法規要求
  • IT 部門可以設定自動警報,當系統偵測到異常的登入模式時立即通知管理員

需要監控的重要事件日誌

以下是建議監控的安全事件日誌清單:

  1. 系統事件(事件 ID: 512-516, 518-520)
    • 例如:事件 ID 512 表示 Windows 已啟動
  2. 稽核日誌清除(事件 ID: 517)
    • 這可能表示有人試圖隱藏其活動
  3. 成功的使用者登入(事件 ID: 528, 540)
    • 可用於追蹤誰在何時登入了系統
  4. 登入失敗(事件 ID: 529-537, 539)
    • 多次失敗可能表示有人試圖破解密碼
  5. 成功的使用者登出(事件 ID: 538)
    • 有助於建立使用者活動的時間軸
  6. 物件存取(事件 ID: 560, 562-568)
    • 監控重要檔案或資料夾的存取
  7. 稽核政策變更(事件 ID: 612)
    • 可能表示有人試圖關閉或修改安全監控
  8. 使用者帳號變更(事件 ID: 624-630, 642, 644)
    • 監控帳號的建立、刪除或修改
  9. 使用者群組變更(事件 ID: 631-641, 643, 645-666)
    • 追蹤權限變更
  10. 成功的使用者帳號驗證(事件 ID: 672, 680)
    • 確認合法的系統存取
  11. 失敗的使用者帳號驗證(事件 ID: 675, 681)
    • 可能表示有人試圖使用過期或錯誤的憑證
  12. 主機工作階段狀態(事件 ID: 682, 683)
    • 追蹤遠端連線活動

Windows 事件日誌監控實作 Lab

目標

學習如何使用 PowerShell 來檢查和分析 Windows 事件日誌,特別是安全性日誌

前置條件

  • Windows 作業系統
  • 以系統管理員權限執行 PowerShell

1. 檢查安全性日誌的基本資訊

執行以下指令

Get-EventLog -List | Where-Object {$_.Log -eq 'Security'}

image

結果

  Max(K) Retain OverflowAction        Entries Log
  ------ ------ --------------        ------- ---
  20,480      0 OverwriteAsNeeded      32,315 Security

分析

  • 日誌檔案最大大小:20,480 KB(約 20 MB)
  • 保留天數:0(不限制)
  • 當日誌滿時的操作:覆寫最舊的事件
  • 目前日誌中的事件數量:32,315
  • 日誌名稱:Security

2. 取得安全性日誌的詳細設定

執行以下指令

wevtutil gl Security

image

結果

name: Security
enabled: true
type: Admin
owningPublisher:
isolation: Custom
channelAccess: O:BAG:SYD:(A;;0xf0005;;;SY)(A;;0x5;;;BA)(A;;0x1;;;S-1-5-32-573)
logging:
  logFileName: %SystemRoot%\System32\Winevt\Logs\Security.evtx
  retention: false
  autoBackup: false
  maxSize: 20971520
publishing:
  fileMax: 1

分析

  • 日誌已啟用
  • 日誌類型為管理員級別
  • 使用自定義隔離設定
  • 日誌檔案位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx
  • 最大檔案大小:20,971,520 位元組(約 20 MB)
  • 不自動備份舊日誌

3. 檢查安全性日誌的存取控制列表 (ACL)

執行以下指令

$acl = Get-Acl HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\Security
$acl.Access | Format-Table IdentityReference,FileSystemRights,AccessControlType

image

結果

IdentityReference      FileSystemRights AccessControlType
-----------------      ---------------- -----------------
NT AUTHORITY\SYSTEM                                 Allow
NT AUTHORITY\SYSTEM                                 Allow
BUILTIN\Administrators                              Allow
BUILTIN\Administrators                              Allow
NT SERVICE\EventLog                                 Allow
NT SERVICE\EventLog                                 Allow

分析

  • NT AUTHORITY\SYSTEM、BUILTIN\Administrators 和 NT SERVICE\EventLog 都有存取權限
  • 所有權限類型都是 Allow(允許)

4. 檢查系統啟動事件

執行以下指令

Get-WinEvent -LogName System -FilterXPath '*[System[(EventID=6005)]]' | Select-Object TimeCreated, Message -First 5

image

結果

TimeCreated              Message
-----------              -------
2024/10/13 上午 01:20:24 事件記錄檔服務已啟動
2024/10/11 下午 05:28:33 事件記錄檔服務已啟動
2024/10/6 下午 10:12:06  事件記錄檔服務已啟動
2024/9/30 上午 02:34:56  事件記錄檔服務已啟動

分析

  • 最近的系統啟動時間是 2024/10/13 上午 01:20:24
  • 系統在過去兩週內重啟了至少 4 次

5. 檢查失敗的登入嘗試

執行以下指令:

Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625} -MaxEvents 5 | Format-Table TimeCreated, Id, Message -Wrap

image

結果

Get-WinEvent : 找不到符合指定選取準則的事件

分析

  • 在最近的事件中沒有發現失敗的登入嘗試(事件 ID 4625)
  • 這可能表示系統安全性良好,或者可能需要檢查更早的日誌

6. 檢查成功的登入事件

執行以下指令

Get-WinEvent -FilterHashtable @{LogName='Security';Id=4624} -MaxEvents 5 | Format-Table TimeCreated, Id, Message -Wrap

image

結果

顯示了 5 個成功的登入事件,所有事件都是 SYSTEM 帳號的登入,登入類型為 5(服務登入)

分析

  • 所有觀察到的登入都是系統內部的服務登入
  • 沒有觀察到使用者級別的登入事件
  • 最近的登入時間是 2024/10/13 下午 11:07:51

7. 檢查帳號管理事件

執行以下指令

Get-WinEvent -FilterHashtable @{LogName='Security';Id=4720,4722,4723,4724,4725,4726,4738} -MaxEvents 10 | Format-Table TimeCreated, Id, Message -Wrap

image

結果

Get-WinEvent : 找不到符合指定選取準則的事件

分析

  1. 指令語法正確,沒有出現之前的錯誤
  2. 系統回報找不到符合指定條件的事件
  3. 這表示在最近的安全性日誌中,沒有發現與帳號管理相關的事件(事件 ID 4720, 4722, 4723, 4724, 4725, 4726, 4738)

解釋

  • 事件 ID 4720: 建立使用者帳號
  • 事件 ID 4722: 啟用使用者帳號
  • 事件 ID 4723: 嘗試更改帳號密碼
  • 事件 ID 4724: 嘗試重置帳號密碼
  • 事件 ID 4725: 禁用使用者帳號
  • 事件 ID 4726: 刪除使用者帳號
  • 事件 ID 4738: 更改使用者帳號

沒有找到這些事件可能代表

  1. 在檢查的時間範圍內(最近的 10 個事件)沒有進行任何帳號管理操作
  2. 可能需要檢查更長的時間範圍或更多的事件數量
  3. 系統可能設定為不記錄這些特定的帳號管理事件

建議後續步驟

  1. 擴大搜尋範圍,例如增加 MaxEvents 的數量或指定更長的時間範圍:

    Get-WinEvent -FilterHashtable @{LogName='Security';Id=4720,4722,4723,4724,4725,4726,4738; StartTime=(Get-Date).AddDays(-30)} | Format-Table TimeCreated, Id, Message -Wrap
    
  2. 檢查審核策略設定,確保系統被設定為記錄這些帳號管理事件:

    auditpol /get /category:"Account Management"
    
  3. 如果長時間內都沒有這些事件,可能需要手動測試建立或修改一個測試帳號,然後再次執行指令來驗證事件是否被正確記錄

  4. 檢查事件日誌的大小和保留策略,確保舊事件沒有被過早地覆蓋

結論

透過實作,可以了解

  1. 安全性日誌設定正確,大小適中(20 MB),並設定為在滿時覆寫舊事件
  2. 系統定期重啟,最近一次是在 2024/10/13 上午
  3. 沒有發現失敗的登入嘗試,是好跡象,但也需要保持警惕
  4. 觀察到的登入事件都是系統服務的自動登入,沒有看到使用者級別的登入
  5. 帳號管理事件的檢查需要重新執行以獲得準確結果

建議

  • 定期執行這些檢查以監控系統安全狀況
  • 考慮擴大搜尋範圍或檢查更早的日誌,以確保沒有錯過重要的安全事件
  • 確保指令語法正確,特別是在檢查帳號管理事件時

總結

本文全面介紹了 Windows 事件日誌監控的重要性、方法和實作步驟。主要內容包括:

  • 事件日誌的定義、類別和類型,說明了不同日誌的用途和重要性。
  • 安全性日誌在防止駭客入侵和資料竊取中的關鍵作用。
  • 需要稽核的關鍵事件和制定稽核計劃的重要性。
  • 監控事件日誌的必要性,包括法規遵循和安全管理。
  • 詳細的實作 Lab,介紹如何使用 PowerShell 檢查和分析 Windows 事件日誌。

文章強調了定期監控和分析事件日誌對維護系統安全的重要性,並提供了實用的 PowerShell 指令來執行各種檢查。

小試身手

  1. 哪一種日誌類型主要記錄與系統安全相關的事件?
    A) 應用程式日誌
    B) 系統日誌
    C) 安全性日誌
    D) DNS 伺服器日誌

    答案: C
    解析: 安全性日誌專門用於記錄與系統安全相關的事件,如登入嘗試和檔案存取權限變更。

  2. 事件 ID 4625 代表什麼類型的事件?
    A) 成功登入
    B) 失敗的登入嘗試
    C) 系統重啟
    D) 帳號建立

    答案: B
    解析: 事件 ID 4625 代表失敗的登入嘗試,這是一個重要的安全指標,可能顯示有人試圖未經授權訪問系統。

  3. 在 PowerShell 中,哪個指令用於檢查事件日誌的基本資訊?
    A) Get-EventLog
    B) Get-WinEvent
    C) wevtutil
    D) auditpol

    答案: A
    解析: Get-EventLog 指令用於檢查事件日誌的基本資訊,如日誌大小和事件數量。

  4. 當安全性日誌達到最大大小時,預設的行為是什麼?
    A) 停止記錄新事件
    B) 自動刪除所有舊事件
    C) 覆寫最舊的事件
    D) 擴展日誌檔案大小

    答案: C
    解析: 根據實作 Lab 中的觀察,當日誌達到最大大小時,預設行為是覆寫最舊的事件(OverwriteAsNeeded)。

  5. 哪個 PowerShell 指令用於檢查系統啟動事件?
    A) Get-EventLog -LogName System
    B) Get-WinEvent -LogName System
    C) wevtutil gl System
    D) auditpol /get /category:"System"

    答案: B
    解析: 在實作 Lab 中,使用 Get-WinEvent -LogName System 指令來檢查系統啟動事件(事件 ID 6005)。


上一篇
Day28:藍隊提升技術力:監控技術 (2)─日誌: Syslog 企業藍隊的資安日誌利器
下一篇
Day 30: 藍隊提升技術力:從日誌分析到事件回應的整合
系列文
資安這條路:系統化學習藍隊技術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言