[技術解析] 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 事件日誌服務停止

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

系統時間變更

事件 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 4sshd: [訊息內容]


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 共用資料夾存取
49464948 防火牆規則變更
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

工具與設定

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

社群資源

  • Awesome Event IDsgithub.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樓