Windows系統日志分析
一、前言
本文將對常見的日志類型,利用微軟日志分析工具(LogParser)結合已經掌握的惡意代碼分析Windows系統日志,關聯出系統的異常。
數據來源於Windows的事件查看器中的*.evtx文件,eventvwr.msc。
- System日志
- Security日志
- Setup日志
除此之外還要關注木馬病毒的信息
- 注冊表日志
- 文件修改時間
二、Windows登錄類型
安全日志登錄部分的事件 ID 和登錄類型代碼都具有一定含義:
事件 ID(Event ID)
| Event ID(2000/XP/2003) | Event ID(Vista/7/8/2008/2012) | 描述 |
|---|---|---|
| 528 | 4624 | 成功登錄 |
| 529 | 4625 | 失敗登錄 |
| 680 | 4776 | 成功/失敗的賬戶認證 |
| 624 | 4720 | 創建用戶 |
| 636 | 4732 | 添加用戶到啟用安全性的本地組中 |
| 632 | 4728 | 添加用戶到啟用安全性的全局組中 |
| 2934 | 7030 | 服務創建錯誤 |
| 2944 | 7040 | IPSEC服務服務的啟動類型已從禁用更改為自動啟動 |
| 2949 | 7045 | 服務創建 |
事件類型(EventType)
| 登錄類型 | 登錄類型 | 描述 |
|---|---|---|
| 2 | Interactive | 用戶登錄到本機 |
| 3 | Network | 用戶或計算手機從網絡登錄到本機,如果網絡共享,或使用 net use 訪問網絡共享,net view 查看網絡共享 |
| 4 | Batch | 批處理登錄類型,無需用戶干預 |
| 5 | Service | 服務控制管理器登錄 |
| 7 | Unlock | 用戶解鎖主機 |
| 8 | NetworkCleartext | 用戶從網絡登錄到此計算機,用戶密碼用非哈希的形式傳遞 |
| 9 | NewCredentials | 進程或線程克隆了其當前令牌,但為出站連接指定了新憑據 |
| 10 | Remotelnteractive | 使用終端服務或遠程桌面連接登錄 |
| 11 | Cachedlnteractive | 用戶使用本地存儲在計算機上的憑據登錄到計算機(域控制器可能無法驗證憑據),如主機不能連接域控,以前使用域賬戶登錄過這台主機,再登錄就會產生這樣日志 |
| 12 | CachedRemotelnteractive | 與 Remotelnteractive 相同,內部用於審計目的 |
| 13 | CachedUnlock | 登錄嘗試解鎖 |
三、分析思路
關注節點
- 入侵時間段
- IP(外網IP選取攻擊者IP、監控到有被遠控的內網IP)
- 登錄成功類型、嘗試登錄類型
關聯分析
1、得到已經發現WEBSHELL、遠控木馬的創建時間
2、搜索注冊表信息,通過注冊表信息獲取注冊表鍵值創建時間再找出同一時間創建的文件。

3、整合文件創建的時間、注冊表鍵值創建時間找出的新文件時間整合分析系統日志,把整個行為關聯起來。
四、LogParse分析語法
顯示方式
-i:EVT是指定分析的日志,也可以分析CSV 、IISW3C 等日志格式。
# 網格顯示
Logparser.exe –i:EVT –o:DATAGRID “SELECT * FROM Security.evtx”
# CSV顯示
Logparser.exe –i:EVT –o:DATAGRID “SELECT * FROM Security.evtx”
篩選語句
LogParse直接SQL語句,詳細SQL語句使用說明在自帶的CHM說明里。結合分組、提取語句就可以統計出源IP,時間,用戶名。
只需要取出關鍵列進行判斷或者比對,就可以從龐大的windows安全日志中提取出安全事件發生后想要關聯的信息。
- EXTRACT_TOKEN()
EXTRACT_TOKEN(列名,字段數,‘分隔符’)
EXTRACT_TOKEN(Strings, 8, '|')
輸出結果:

- 分組別名顯示
字段名 as 別名
LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeGenerated as LoginTime FROM Security.evtx where EventID=4624"
輸出結果:

- 按年月日篩選
使用timestamp('年-月-日', 'yyyy-MM-dd')函數
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM Security.evtx where TO_DATE(TimeGenerated) between timestamp('2018-10-17', 'yyyy-MM-dd') and timestamp('2018-10-27', 'yyyy-MM-dd')" -rtp:-1
- 按時間篩選
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM Security.evtx where to_time(TimeGenerated) between timestamp('13:33:00', 'hh:mm:ss') and timestamp('13:35:00', 'hh:mm:ss')" -rtp:-1
- 按照事件ID分析
4624是登錄成功的ID信息,指定某個關鍵列中的事件ID顯示出結果。
LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as username,EXTRACT_TOKEN(Strings, 8, '|') as LogonType,EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName,EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM Security.evtx where EventID=4624“
五、Windows日志分析
Security日志
篩選出登錄成功的事件(4624)中的登錄時間、用戶名、登錄類型、進程名、源IP。
關注點:
1、管理員登錄時間段是不是正常時間
2、木馬運行的時間和管理員登錄時間對不對應
語句:
LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as username,EXTRACT_TOKEN(Strings, 8, '|') as LogonType,EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName,EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM Security.evtx where EventID=4624 AND TO_DATE(TimeGenerated) between timestamp('2018-10-17', 'yyyy-MM-dd') and timestamp('2018-10-27', 'yyyy-MM-dd')" -rtp:-1
System日志
關注點:
1、時間段
2、服務名、服務路徑
語句:
LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeWritten,EventID,EventType,EventTypeName,SourceName,EXTRACT_TOKEN(Strings,0,'|') as service_name,EXTRACT_TOKEN(Strings,1,'|') as service_path,Message from system.evtx where TO_DATE(TimeGenerated) between timestamp('2018-10-19', 'yyyy-MM-dd') and timestamp('2018-10-20', 'yyyy-MM-dd')" -rtp:-1"
Application日志
關注點:
1、程序運行時間
語句:
LogParser.exe -i:EVT -o:DATAGRID "SELECT * from Application.evtx where TO_DATE(TimeGenerated) between timestamp('2018-10-17', 'yyyy-MM-dd') and timestamp('2018-10-27', 'yyyy-MM-dd')" -rtp:-1"
參考
用LogParser分析Windows日志
https://yq.aliyun.com/articles/404198
Windows 系統安全事件應急響應
https://xz.aliyun.com/t/2524#toc-5
LogParser: Filter records for specific time frame/date
