[技術解析] 005 學習 Windows 事件日誌(Windows Event log )

1. 什麼是 Windows 事件日誌?

想像你家門口裝了一台監視攝影機,每當有人進出,系統都會自動錄影並存檔。Windows 事件日誌(Windows Event Log)的功能就類似於此——它是作業系統的「黑盒子」,記錄著電腦上發生的每一件大小事。

每一筆記錄稱為一個「事件(Event)」,每個事件都有:

欄位 說明
事件 ID(Event ID) 事件的編號,例如 4624 代表登入成功
來源(Source/Provider) 產生這個事件的程式或服務
時間戳記(Timestamp) 事件發生的確切時間
等級(Level) 資訊、警告、錯誤等分類
描述(Description) 詳細說明發生了什麼事

日誌存放在哪裡?

Windows 的日誌主要分成幾個大類別,可以透過「事件檢視器(Event Viewer)」來查看(在開始功能表搜尋 eventvwr.msc):

Windows 日誌
   ├── 應用程式(Application)  -> 軟體程式的日誌
   ├── 安全性(Security)        -> 登入、權限、稽核的日誌(最重要)
   ├── 系統(System)            -> 作業系統核心日誌
   └── 安裝(Setup)             -> 安裝與更新日誌

應用程式及服務日誌(Applications and Services Logs)
   └── Microsoft
       └── Windows
           ├── PowerShell
           ├── Sysmon
           ├── Windows Defender
           └── ... 其他數百個子類別

2. 為什麼資安人員需要看日誌?

許多資安新手會問:「日誌這麼多,我要從哪裡看起?」這是很好的問題。

攻擊者留下的「腳印」

任何攻擊行為都會在系統留下痕跡。 以常見的攻擊場景為例:

攻擊者入侵流程(簡化版)
--------------------------------------------------
1. 嘗試猜測密碼 -> 產生 Event ID 4625(登入失敗)x 多次
2. 密碼猜對後登入 -> 產生 Event ID 4624(登入成功)
3. 安裝惡意程式 -> 產生 Event ID 7045(服務安裝)
4. 建立後門排程工作 -> 產生 Event ID 4698(排程工作建立)
5. 竊取資料後離開 -> 產生 Event ID 5140(共用資料夾存取)
--------------------------------------------------

如果你懂得看日誌,就能在攻擊造成嚴重損害前偵測並阻止它。

日誌的三大用途

  1. 即時偵測(Detection):搭配 SIEM 系統,發現異常行為立即告警
  2. 事後鑑識(Forensics):事件發生後,透過日誌重建攻擊時間軸
  3. 法規遵循(Compliance):法規(如個資法、ISO 27001)要求保留特定日誌

3. 日誌的基本概念與架構

稽核政策(Audit Policy)是什麼?

Windows 預設不會記錄所有事件,需要先開啟對應的「稽核政策」才能產生日誌。

類比說明:就像你家的監視器,如果沒有插電、沒有設定錄影,就算有人闖入也不會有影像記錄。稽核政策就是「設定要錄哪些畫面」。

稽核政策可以透過以下方式設定:
– 本機安全性原則:secpol.msc -> 進階稽核政策設定
– 群組原則(GPO):在企業環境中集中管理

常見的稽核政策縮寫:
– (S) = Success(成功時記錄)
– (F) = Failure(失敗時記錄)
– (S/F) = 成功與失敗都記錄

什麼是 Provider?

Provider(提供者)是產生事件的程式模組。例如:
– Microsoft-Windows-Security-Auditing -> 產生安全性日誌
– Service Control Manager -> 產生服務相關日誌
– MsiInstaller -> 產生軟體安裝日誌

什麼是 Sysmon?

Sysmon(System Monitor) 是微軟 Sysinternals 出品的免費工具,可以補充 Windows 原生日誌的不足,提供更詳細的資訊,例如:
– 程序建立(Process Creation)與父程序資訊
– 網路連線紀錄(含目標 IP 與連接埠)
– DNS 查詢記錄
– 登錄機碼(Registry)異動

新手建議:在你的測試環境安裝 Sysmon,搭配 SwiftOnSecurity 的設定檔開始學習,你會看到比原生日誌豐富得多的資訊。


4. 認識六大監控領域


4.1 系統活動(System Activity)

這個類別記錄作業系統本身的行為,是建立「正常基準線」的基礎。

系統開關機

事件 ID 說明 重要性
12(Kernel-General) 作業系統啟動 中
13(Kernel-General) 作業系統關閉 中
41(Kernel-Power) 系統未正常關機就重新開機(異常重啟) 高
1074(User32) 使用者或程序主動重新啟動系統,含原因說明 高
6008(EventLog) 上次關機不正常(例如斷電或系統當機) 高

資安意義:Event ID 41 若頻繁出現,可能代表勒索軟體加密過程中強制重啟,或系統遭到干擾。

事件日誌本身的異動

這是非常重要的監控項目。攻擊者入侵後,常常第一件事就是清除日誌,以隱藏自己的足跡。

事件 ID 日誌類別 說明
1102 Security 稽核日誌被清除
104 System 事件日誌被清除
1100 Security 事件記錄服務已關閉
6005 System 事件日誌服務啟動
6006 System 事件日誌服務停止

資安意義:只要看到 1102 或 104,就應該立即調查——正常情況下,日誌幾乎不應該被手動清除。

系統時間變更

事件 ID 說明
4616(Security) 系統時間被修改
1(Kernel-General) 系統時間被修改

資安意義:攻擊者可能篡改系統時間來混淆日誌的時間軸,讓鑑識工作更困難。

群組原則(GPO)異動

群組原則是企業環境中控制電腦設定的核心機制。相關日誌記錄在:
– Microsoft-Windows-GroupPolicy/Operational
– Microsoft-Windows-Security-Audit-Configuration-Client/Operational


4.2 遠端管理(Remote Management)

遠端管理功能是駭客最愛利用的橫向移動(Lateral Movement)手段。

RDP 遠端桌面

RDP(Remote Desktop Protocol)讓使用者可以遠端操控 Windows 電腦,也是最常被攻擊的服務之一。

伺服器端(被連入的電腦):

事件 ID Provider 說明
131 RdpCoreTS 接受來自 [IP]:PORT 的新連線(重要)
21 LocalSessionManager Session 登入成功
25 LocalSessionManager Session 重新連線成功
1149 RemoteConnectionManager 使用者驗證成功

用戶端(發起連線的電腦):

事件 ID Provider 說明
1024 RDPClient 嘗試連線至 [SERVER]
1029 RDPClient 記錄使用者名稱的雜湊值
4648 Security 使用明確認證嘗試登入(含 /TERMSRV)

實戰技巧:調查 RDP 入侵時,先看 131(找來源 IP)-> 21(確認登入成功)-> 4624(查帳號細節),三個事件串在一起看。

WinRM / PowerShell Remoting

WinRM 是 Windows 遠端管理的通訊協定,PowerShell Remoting 就是建立在它之上。

事件 ID 說明
6 建立 WSMan 連線,顯示目標主機
91 WinRM Session 建立
169 顯示驗證成功及使用的驗證方式

OpenSSH

Windows 10 之後內建 OpenSSH,相關日誌記錄在 OpenSSH/Operational:
– Event ID 4:sshd: [訊息內容]


4.3 網路活動(Network Activity)

SMB 檔案共用

SMB(Server Message Block)是 Windows 網路共用的核心協定,也是 WannaCry 等惡意程式的主要傳播途徑。

重要的 SMB 伺服器端事件:

事件 ID 日誌 說明
5140 Security 網路共用資料夾被存取
5142 Security 新增網路共用
5143 Security 網路共用被修改
5144 Security 網路共用被刪除
5145 Security 網路共用物件被檢查(詳細版,建議啟用)
1001 SMBServer/Operational 用戶端嘗試使用 SMBv1(高危!)

資安意義:SMBv1 已是過時且不安全的通訊協定(WannaCry 就是透過 SMBv1 傳播),如果看到有設備還在使用 SMBv1,務必立即處理。

防火牆

基本規則變更(Security 日誌):

事件 ID 說明
4946 新增防火牆規則
4947 修改防火牆規則
4948 刪除防火牆規則

進階防火牆(建議使用此日誌取代上面的基本版):

事件 ID 說明
2004 新增規則
2005 修改規則
2006 刪除規則
2002 / 2003 防火牆設定變更

流量監控(高噪音,選擇性啟用):

事件 ID 說明
5156 允許連線(成功)
5157 封鎖連線(失敗)
5031 應用程式被封鎖
5148 偵測到 DoS 攻擊

DNS 查詢

DNS 查詢記錄對於偵測惡意軟體的 C2(Command & Control)通訊非常有用。

來源 說明
DNS-Client/Operational ID 3008 DNS 查詢完成(資訊有限)
Sysmon ID 22 DNS 查詢(推薦使用,資訊更豐富)

BITS 背景傳輸服務

BITS(Background Intelligent Transfer Service)是 Windows 的背景下載功能,駭客常常濫用它來下載惡意程式(稱為 LOLBins 攻擊手法)。

事件 ID 說明
3 BITS 建立了一個傳輸任務
4 BITS 傳輸完成
59 BITS 傳輸開始,含 URL
60 BITS 傳輸停止,含 URL

資安意義:如果 BITS 傳輸的 URL 指向可疑網站(例如 IP 位址、未知網域),應立即調查。


4.4 軟體與更新(Software & Updates)

軟體安裝

事件 ID Provider 說明
11707 MsiInstaller MSI 安裝完成
903/904 Program-Inventory 程式安裝在系統上
907/908 Program-Inventory 程式從系統移除

Windows Update

事件 ID Provider 說明
41 WindowsUpdateClient 更新已下載
19 WindowsUpdateClient 安裝成功
2 Servicing 套件已成功安裝
4 Servicing 需要重新啟動才能完成安裝

應用程式當機

事件 ID Provider 說明
1000 Application Error 應用程式當機/錯誤
1002 Application Hang 應用程式無回應
1001 WER Windows 錯誤回報

資安角度:大量的應用程式當機有時代表模糊測試(Fuzzing)攻擊,或系統記憶體被惡意程式破壞。

排程工作(Task Scheduler)

排程工作是攻擊者建立持久性後門(Persistence)最常用的方式之一。

事件 ID 說明 重要性
4698 排程工作被建立 極高
4699 排程工作被刪除 高
4700 排程工作被停用 中
4701 排程工作被啟用 中
4702 排程工作被修改 高

實戰案例:攻擊者入侵後,常常建立一個排程工作,每隔幾分鐘連回 C2 伺服器。4698 是必監控的事件。

服務(Services)

Windows 服務(Service)也是常見的持久性機制。

事件 ID 來源 說明
7045 System/SCM 服務被安裝(基本版)
4697 Security 服務被安裝(含使用者資訊,推薦)
7036 System/SCM 服務狀態變更(啟動/停止)
7031 System/SCM 服務異常當機

4.5 身份驗證(Authentication)

身份驗證相關的日誌是資安監控的重中之重。

帳號登入

這四個是最基礎、最重要的事件 ID:

事件 ID 說明 監控建議
4624 帳號成功登入 必看,注意 LogonType
4625 帳號登入失敗 必看,暴力破解警報
4634 帳號登出 中等
4648 使用明確認證嘗試登入 高,可能代表橫向移動

登入類型(Logon Type)對照表:

Logon Type 說明 資安意義
2 互動式(坐在電腦前) 正常
3 網路(SMB 等) 注意來源
4 批次(排程工作) 注意帳號
5 服務 注意帳號
7 解鎖螢幕保護 正常
10 遠端互動式(RDP) 重點監控
11 快取認證 注意離線登入

實戰技巧:短時間內大量的 4625(登入失敗),接著出現一個 4624(登入成功),這是暴力破解攻擊成功的典型特徵。

NTLM 驗證

NTLM 是 Windows 的舊式驗證通訊協定,存在已知安全漏洞(如 Pass-the-Hash)。

事件 ID 說明
4776 電腦嘗試驗證帳號憑證
4822 NTLM 驗證失敗(Protected Users 群組成員)
8001 NTLM 用戶端封鎖稽核
8004 網域控制器封鎖 NTLM 驗證

特殊權限登入

事件 ID 說明
4672 特殊權限指派給新的登入 Session

資安意義:4672 代表高權限帳號登入(如管理員)。搭配 4624 一起看,可以快速找到何時有管理員帳號登入、從哪裡登入。


4.6 系統安全(System Security)

Windows Defender

事件 ID 說明 重要性
1116 偵測到威脅(尚未採取行動) 極高
1117 偵測到威脅,已成功處理 高
1118 偵測到威脅,處理失敗 極高
1119 偵測到威脅,嚴重處理失敗 極高
1121 ASR 規則封鎖操作 高
5001 即時防護已停用 極高
5007 設定變更(包含排除清單) 極高

資安意義:5001(即時防護停用)和 5007(設定被修改)是高優先警報,攻擊者常常在入侵後先停用防毒軟體,再安裝惡意程式。

程式碼完整性(Code Integrity)

事件 ID 說明
3001 未簽署的驅動程式被載入
3033/3063 程序嘗試載入不符合簽署要求的檔案(LSA 保護,封鎖模式)
3065/3066 程序嘗試載入不符合簽署要求的檔案(LSA 保護,稽核模式)
5038 檔案的映像雜湊值無效
6410 檔案不符合載入至程序的要求

說明:3033/3063 和 LSA 保護相關,可以偵測像 Mimikatz 這類試圖存取 LSASS 程序的工具。

本機安全性授權(LSA)

事件 ID 說明
4610 驗證套件被 LSA 載入
4611 信任的登入程序已向 LSA 登錄
4622 安全套件被 LSA 載入

AppLocker 應用程式白名單

AppLocker 可以限制哪些程式可以執行,是企業環境中重要的防線。

事件 ID 說明
8002 [程式路徑] 被允許執行
8003 [程式路徑] 被阻擋執行(稽核模式)
8004 [程式路徑] 不被允許執行(強制模式)

憑證管理員(Credential Manager)

事件 ID 說明 資安意義
5376 憑證管理員憑證被備份 可能竊取憑證
5377 憑證管理員憑證從備份還原 —
5379 憑證管理員憑證被讀取 高
5382 Vault 憑證被讀取 高

5. PowerShell 日誌監控

PowerShell 是現代資安監控中最重要的監控對象之一,因為它功能強大,也被攻擊者大量濫用(稱為「Living off the Land」攻擊)。

PowerShell 日誌的演進

PowerShell 日誌類型(從舊到新)
----------------------------------------------------------
Classic(舊版)
  Windows PowerShell 日誌
    ID 600:包含 Provider 名稱
    ID 800:管線執行細節

Modern(現代,強烈建議啟用)
  Module Logging      -> ID 4103:模組呼叫記錄
  Script Block Logging -> ID 4104:指令碼內容(最重要)

Core(PowerShell 6+)
  ID 4103:模組記錄
  ID 4104:指令碼區塊記錄
----------------------------------------------------------

各種日誌來源比較

來源 預設狀態 資訊豐富度 說明
Console History(PSReadline) 預設啟用(PS v5+) 低 純文字檔,位於 %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\
Transcript 需手動開啟 中 記錄完整的 PowerShell 工作階段
Module Logging(ID 4103) 需啟用 高 記錄所有模組的呼叫
Script Block Logging(ID 4104) 需啟用 最高 記錄所有執行的程式碼內容,包含混淆後的程式碼

新手建議:Script Block Logging(事件 ID 4104)是最有價值的 PowerShell 日誌,即使攻擊者使用了混淆技術(Obfuscation),Windows 也會先解密再記錄,因此能看到實際執行的指令。

如何啟用 PowerShell Script Block Logging?

透過群組原則(GPO):

電腦設定 -> 系統管理範本 -> Windows 元件 -> Windows PowerShell
-> 開啟 PowerShell 指令碼區塊記錄

透過登錄機碼(Registry):

# 以管理員執行
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" -Name "EnableScriptBlockLogging" -Value 1

6. 外部裝置與印表機

USB 裝置連接

來源 說明
C:\Windows\INF\SetupAPI.dev.log 設備安裝詳細記錄(文字檔)
DriverFrameworks-UserMode ID 1003 USB 裝置連接
DriverFrameworks-UserMode ID 1008 USB 裝置中斷連接
Security ID 6416 新外部裝置被系統識別(需啟用 PNP 稽核)

新手說明:在受管制的企業環境中,6416 可以偵測未授權的 USB 隨身碟插入,是 DLP(資料外洩防護)的重要來源。

ISO / VHD 虛擬磁碟掛載

攻擊者常常利用 ISO 或 VHD 檔案來繞過 Mark-of-the-Web(MOTW) 安全機制,讓惡意程式得以執行。

事件 ID 說明
1(VHDMP) VHD/ISO 上線為磁碟
2(VHDMP) VHD/ISO 離線移除
12(VHDMP) 虛擬磁碟建立控制代碼

印表機

印表機(尤其是 PrintNightmare 漏洞之後)也需要監控:

事件 ID 說明
354 印表機初始化失敗(含 DLL 路徑)
808 印表機多工緩衝器載入模組失敗(含 DLL 路徑)
307 列印工作(需 GPO 設定才能顯示工作名稱)

7. 哪些事件 ID 最重要?(快速參考表)

以下是資安新手最應該優先監控的事件 ID:

最高優先 — 立即告警

事件 ID 說明 為什麼重要
1102 稽核日誌被清除 攻擊者滅跡
4698 排程工作建立 建立持久性後門
4697 服務安裝 安裝惡意服務
5001(Defender) 即時防護停用 攻擊前置動作
5007(Defender) Defender 設定變更 加入惡意排除路徑
4625 大量出現 大量登入失敗 暴力破解攻擊

高優先 — 每日審查

事件 ID 說明
4624(LogonType 10) RDP 遠端登入成功
4648 使用明確憑證登入
4672 特殊權限登入
7045 / 4697 服務安裝
4104(PowerShell) PowerShell 指令碼執行
6416 新外部裝置

中優先 — 定期審查

事件 ID 說明
4624 所有成功登入
4702 排程工作修改
5140 / 5145 共用資料夾存取
4946–4948 防火牆規則變更
1116(Defender) 偵測到威脅

8. 新手常見問題 QA

Q:日誌這麼多,我要怎麼管理?

A:個人或小型環境可以先用 Windows 內建的「事件檢視器」手動查看。企業環境建議使用 SIEM(安全資訊與事件管理) 系統,如 Splunk、Elastic Stack(ELK)或 Microsoft Sentinel,可以集中收集、搜尋和設定自動告警。


Q:要啟用所有稽核政策嗎?

A:不行!啟用過多稽核政策會產生大量日誌,佔用磁碟空間,也讓真正重要的事件被淹沒(這叫「事件疲勞」)。建議參考微軟官方文件或 ANSSI 的建議,針對性地啟用關鍵稽核項目。


Q:什麼是「噪音」事件(Noisy Events)?

A:某些事件頻率非常高,正常操作也會大量產生,例如 WMI 的 5857/5858、TaskScheduler 的執行日誌等。這些事件若全部收集,會佔用大量儲存空間,通常會選擇性地過濾或抽樣。


Q:Sysmon 和原生日誌有什麼差別?

A:Windows 原生日誌在某些場景下資訊不夠完整(例如 DNS 查詢只有基本資訊)。Sysmon 可以補充這些不足,提供更豐富的細節,例如程序建立的命令列、父程序、雜湊值等,大幅提升威脅獵捕(Threat Hunting)的能力。


Q:如何判斷一個登入是否可疑?

A:可以從以下幾個面向判斷:
1. 時間:凌晨三點的管理員登入?
2. 來源 IP:從未見過的 IP 位址?來自國外?
3. 頻率:短時間內多次失敗後成功?
4. 帳號:用了服務帳號(通常不應互動式登入)?
5. 登入類型:期望是 Type 3 但出現了 Type 10(RDP)?


9. 下一步:進階學習資源

恭喜你看完這篇入門文章!以下是進一步學習的資源:

官方文件

  • 微軟稽核政策建議:docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/audit-policy-recommendations
  • 附錄 L:要監控的事件:learn.microsoft.com/en-us/windows-server/identity/ad-ds/plan/appendix-l--events-to-monitor

工具與設定

  • Sysmon:docs.microsoft.com/en-us/sysinternals/downloads/sysmon
  • SwiftOnSecurity Sysmon Config:業界常用的 Sysmon 設定範本
  • Yamato-Security / EnableWindowsLogSettings:自動化啟用 Windows 日誌設定的工具

社群資源

  • Awesome Event IDs:github.com/stuhli/awesome-event-ids
  • NSA 威脅偵測指引:透過 Windows 事件日誌偵測攻擊者的 NSA 官方白皮書
  • MITRE ATT&CK:了解攻擊者的戰術、技術和程序(TTP),對應到相關的日誌監控

實戰練習建議

  1. 在虛擬機(VM)上安裝 Windows,啟用重要的稽核政策與 Sysmon
  2. 對自己的虛擬機執行常見的「攻擊」行為(例如用 Mimikatz 測試)
  3. 觀察產生了哪些事件 ID,學習辨識攻擊的模式
  4. 使用 Elastic Stack 或 Splunk Free 建立一個簡易的日誌分析環境
飛飛
飛飛

講師學歷:臺科資工所、逢甲資工系畢業。
技術專長:OSINT、滲透測試、網站開發、專業易懂教育訓練。
證照書籍:OSCP、OSCE³、著《資安這條路:領航新手的 Web Security 指南》。
教學經驗:60+ 企業教學經驗、指導過上百位學員。
教學特色:新手友善、耐心指導、擅長圖解(流程圖、心智圖)引導學習。
社群經驗:目前經營全臺資安社群 CURA,曾任臺科資安社社長、逢甲黑客社社長。
社群交流:LINE 社群《飛飛的資安大圈圈》,即時分享經驗、鼓勵交流。
社群分享:FB 粉專《資安這條路,飛飛來領路》,分享文章與圖卡整理。
個人網站:feifei.tw 分享資安技術文章;pbtw.tw 分享 AI 相關應用;ssdlc.feifei.tw 分享軟體安全開發流程文章。

飛飛
電話:02-23120400
Email:[email protected]
地址:臺北市中山區復興北路48號7樓