0x0、概述
evtx
文件是微軟從 Windows NT 6.0
(Windows Vista 和 Server 2008) 開始採用的一種全新的日誌文件格式。在此之前的格式是 evt
。evtx
由Windows
事件查看器創建,包含Windows記錄的事件列表,以專有的二進制XML格式保存。
0x1、EVTX文件結構
evtx文件主要由三部分組成:
-
file header (文件頭)
-
chunks (數據塊)
-
trailing empty values (尾部填充空值)
File Header(文件頭):
文件頭長度爲4KB(4096bytes),其結構如下:
偏移 | 長度(Bytes) | 值 | 描述 |
---|---|---|---|
0x00 | 8 | "ElfFile\x00" | 標誌位/簽名 |
0x08 | 8 | 第一個區塊編號(存在時間最久的區塊編號) | |
0x10 | 8 | 當前區塊編號(塊的編號從0開始) | |
0x18 | 8 | 下一條事件記錄的ID | |
0x20 | 4 | 128 | 文件頭有效部分的大小 |
0x24 | 2 | 1 | 次要版本 |
0x26 | 2 | 3 | 主要版本 |
0x28 | 2 | 4096 | 文件頭的大小 |
0x2A | 2 | 區塊的數量 | |
0x2C | 76 | 未知 (空值) | |
0x78 | 4 | 文件標誌 | |
0x7C | 4 | 文件頭前 120 bytes 的CRC32校驗和 | |
0x80 | 3968 | 未知 (空值) |
我們可以使用Hex編輯器打開一個evtx
文件查看一下:
Chunk(塊):
每個塊的大小是 65536 bytes(64KB),主要由三部分組成:
-
chunk header 塊頭
-
array of event records 事件記錄組
-
unused space 未使用的空間
chunk
頭長度爲512bytes,其結構如下:
偏移 | 長度(Bytes) | 值 | 描述 |
---|---|---|---|
0x00 | 8 | "ElfChnk\x00" | 標誌位/簽名 |
0x08 | 8 | 基於日誌編號的第一條日誌記錄的ID | |
0x10 | 8 | 基於日誌編號的最後一條日誌記錄的ID | |
0x18 | 8 | 基於文件編號的第一條日誌記錄的ID | |
0x20 | 8 | 基於文件編號的最後一條日誌記錄的ID | |
0x28 | 4 | 128 | chunk頭大小 |
0x2C | 4 | 最後一條日誌記錄的偏移量(相對於塊頭的起始偏移量) | |
0x30 | 4 | 下一條日誌記錄的偏移量(相對於塊頭的起始偏移量) | |
0x34 | 4 | 事件記錄數據的 CRC32 校驗和 | |
0x38 | 64 | Unknown (空值) | |
0x78 | 4 | Unknown (flags?) | |
0x7C | 4 | 塊頭CRC32校驗和(塊頭前120個字節和128至512字節的數據的CRC32校驗和) |
Event record(事件記錄):
事件記錄的長度非固定長度,其結構如下:
偏移 | 長度(Bytes) | 值 | 描述 |
---|---|---|---|
0x00 | 4 | "\x2a\x2a\x00\x00" | 標誌位/簽名 |
0x04 | 4 | 事件記錄的長度 | |
0x08 | 8 | 記錄ID | |
0x10 | 8 | 日誌記錄的寫入時間(FILETIME) | |
0x18 | 不確定 | 基於二進制XML編碼的信息 | |
不確定 | 4 | 記錄長度(副本) |
由上面的信息,可知evtx
日誌文件包含一個4KB的文件頭加後面一定數量的64KB大小的塊,一個塊中記錄一定數量(大約100條)的事件記錄。每個塊是獨立的,不受其他塊影響。不會出現一條事件記錄的數據存在於兩個塊中。每條記錄包含一個基於二進制XML編碼的信息。每條事件記錄包含其創建時間與事件 ID(可以用於確定事件的種類),因此可以反映某個特定的時間發生的特定的操作,取證人員可以根據日誌文件來發現犯罪的過程。
evtx
日誌文件大概的結構如下所示:
在windows事件查看器中查看:
0x2、EVTX文件的存儲
Windows事件日誌文件保存在%SystemRoot%\System32\Winevt\Logs
路徑中。
常見日誌文件主要有三個,分別是:System.evtx
、Application.evtx
和Security.evtx
。分別是系統日誌、應用程序日誌和安全日誌。
-
System.evtx
記錄操作系統自身組件產生的日誌事件,比如驅動、系統組件和應用軟件的崩潰以及數據丟失錯誤等等。
-
Application.evtx
記錄應用程序或系統程序運行方面的日誌事件,比如數據庫程序可以在應用程序日誌中記錄文件錯誤,應用的崩潰記錄等。
-
Security.evtx
記錄系統的安全審計日誌事件,比如登錄事件、對象訪問、進程追蹤、特權調用、帳號管理、策略變更等。
Security.evtx
也是取證中最常用到的。
默認情況下,當一個evtx
文件的記錄滿了,日誌服務會覆蓋最開始的記錄,從頭開始寫入新的記錄。也就是相當於一個循環記錄的緩存文件。
0x3、Evtx日誌分析
Windows
用 Event ID
來標識事件的不同含義,拿Security
日誌來說,一些常見的Event ID
如下:
事件ID | 描述 |
---|---|
4608 | Windows 啓動 |
4609 | Windows 關機 |
4616 | 系統時間發生更改 |
4624 | 用戶成功登錄到計算機 |
4625 | 登錄失敗。使用未知用戶名或密碼錯誤的已知用戶名嘗試登錄。 |
4634 | 用戶註銷完成 |
4647 | 用戶啓動了註銷過程 |
4648 | 用戶在以其他用戶身份登錄時,使用顯式憑據成功登錄到計算機 |
4703 | 令牌權限調整 |
4704 | 分配了用戶權限 |
4720 | 已創建用戶賬戶 |
4725 | 賬戶被禁用 |
4768 | 請求Kerberos身份驗證票證(TGT) |
4769 | 請求Kerberos服務票證 |
4770 | 已續訂Kerberos服務票證 |
4779 | 用戶在未註銷的情況下斷開了終端服務器會話 |
1、通過Windows事件查看器分析日誌
通過Windows
事件查看器可以查看當前主機的事件日誌,也可以打開保存的 evtx
文件。
可以通過點擊、篩選、查找等多種方式查看事件日誌
篩選器提供了豐富的篩選方式:
2、通過工具分析Evtx
Log Parser
Log Parser
(是微軟公司自己開發的日誌分析工具,它功能強大,使用簡單,可以分析基於文本的日誌文件、XML
文件、CSV
(逗號分隔符)文件,以及操作系統的事件日誌、註冊表、文件系統、Active Directory。它使用類似 SQL 語句一樣查詢分析這些數據,還可以把分析結果以圖表的形式展現出來。
Log Parser
下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659
使用方法:
logparser -i:輸入文件的格式 -o:輸出文件的格式 "查詢語句 和文件路徑"
例子:
查詢登錄成功的事件:
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM E:\Security.evtx where EventID=4624"
還有其他的語法,具體可以查看其幫助信息
>LogParser.exe
Microsoft (R) Log Parser Version 2.2.10
Copyright (C) 2004 Microsoft Corporation. All rights reserved.
Usage: LogParser [-i:<input_format>] [-o:<output_format>] <SQL query> |
file:<query_filename>[?param1=value1+...]
[<input_format_options>] [<output_format_options>]
[-q[:ON|OFF]] [-e:<max_errors>] [-iw[:ON|OFF]]
[-stats[:ON|OFF]] [-saveDefaults] [-queryInfo]
LogParser -c -i:<input_format> -o:<output_format> <from_entity>
<into_entity> [<where_clause>] [<input_format_options>]
[<output_format_options>] [-multiSite[:ON|OFF]]
[-q[:ON|OFF]] [-e:<max_errors>] [-iw[:ON|OFF]]
[-stats[:ON|OFF]] [-queryInfo]
-i:<input_format> : one of IISW3C, NCSA, IIS, IISODBC, BIN, IISMSID,
HTTPERR, URLSCAN, CSV, TSV, W3C, XML, EVT, ETW,
NETMON, REG, ADS, TEXTLINE, TEXTWORD, FS, COM (if
omitted, will guess from the FROM clause)
-o:<output_format> : one of CSV, TSV, XML, DATAGRID, CHART, SYSLOG,
NEUROVIEW, NAT, W3C, IIS, SQL, TPL, NULL (if omitted,
will guess from the INTO clause)
-q[:ON|OFF] : quiet mode; default is OFF
-e:<max_errors> : max # of parse errors before aborting; default is -1
(ignore all)
-iw[:ON|OFF] : ignore warnings; default is OFF
-stats[:ON|OFF] : display statistics after executing query; default is
ON
-c : use built-in conversion query
-multiSite[:ON|OFF] : send BIN conversion output to multiple files
depending on the SiteID value; default is OFF
-saveDefaults : save specified options as default values
-restoreDefaults : restore factory defaults
-queryInfo : display query processing information (does not
execute the query)
Examples:
LogParser "SELECT date, REVERSEDNS(c-ip) AS Client, COUNT(*) FROM file.log
WHERE sc-status<>200 GROUP BY date, Client" -e:10
LogParser file:myQuery.sql?myInput=C:\temp\ex*.log+myOutput=results.csv
LogParser -c -i:BIN -o:W3C file1.log file2.log "ComputerName IS NOT NULL"
Help:
-h GRAMMAR : SQL Language Grammar
-h FUNCTIONS [ <function> ] : Functions Syntax
-h EXAMPLES : Example queries and commands
-h -i:<input_format> : Help on <input_format>
-h -o:<output_format> : Help on <output_format>
-h -c : Conversion help
Log Parser Studio
logparser
的GUI版本。
其界面如下:
Event Log Explorer
Event Log Explorer 是一個非常好用的Windows 日誌分析工具,下載地址:https://eventlogxp.com/
LogParser Lizard
LogParser Lizard 是一個功能豐富的Windows 日誌分析軟件,可以通過類似SQL查詢語句對日誌篩選查詢進行分析。
下載地址:https://lizard-labs.com/log_parser_lizard.aspx
Evtx Explorer/EvtxECmd
具有標準化CSV、XML和json輸出的事件日誌(Evtx)解析器!
下載地址:https://ericzimmerman.github.io/#!index.md
使用方法:
EvtxECmd.exe -f 日誌文件 --xml 輸出路徑
解析的xml文件結構如下:
0x4、Evtx取證實戰
題目來源:Cynet應急響應挑戰賽
描述:GOT Ltd
的人力資源主管King-Slayer
認爲他的電腦上有可疑活動。
2020 年 2 月 8 日,15:00 左右,他發現桌面上出現了一個帶有 kiwi
標誌的文件。據他描述,該文件首次出現在他的桌面後不久就突然消失了。那天晚些時候,他開始收到消息告訴他需要重新激活 Windows Defender
。他激活了 Windows Defender
,幾個小時後又收到了同樣的消息。
他決定將這件事告訴他在 IT 部門的朋友——Chris
。Chris
立即將此事報告給了 GOT
的網絡安全部門。
該公司的 CISO 立即打電話求助我們,GOT有限公司總部設在瑞士,CISO
向我們發送了來自 King-Slayer
的 PC
和域控制器的所有事件日誌文件。他希望我們查出異常:
提示:
-
用戶帳戶 (KingSlayer) 是他電腦上的本地管理員。
-
域名 -> GOT.Com
-
DC 服務器名稱 -> WIN-IL7M7CC6UVU
-
Jaime(King Slayer)的主機名->DESKTOP-HUB666E(172.16.44.135)
提交攻擊者使用的域用戶帳戶(King-Slayer除外)以及他使用此用戶帳戶訪問的主機的IP地址。
我們拿到的文件包括DC服務的日誌和主機日誌文件:
給出的文件還有一個提示就是PassTheHash
,表明攻擊者使用了該技術。
傳遞哈希是一種黑客技術,它允許攻擊者使用用戶密碼的基礎NTLM或LanMan哈希對遠程服務器或服務進行身份驗證,而不是像通常情況下那樣要求使用關聯的明文密碼。它取代了僅竊取哈希值並使用該哈希值進行身份驗證而竊取明文密碼的需要。--via 維基百科
通過日誌交叉比對和篩選查找,我們確定了在2020-2-9 21:59
左右,有異常登錄行爲
注意:Windows EVTX 的FILETIME
是 UTC時間,注意轉化爲瑞士當地時間。
我們發現用戶Daenerys
在2020年2月9日21:59 (當地時間15:59)通過SMB
協議登錄到WIN-IL7M7CC6UVU
(域控制器),而且使用了PSExec.exe
利用Deanerys
用戶登錄了域控服務器。攻擊者可能使用了Mimikatz
拿到了Daenerys
用戶的哈希,然後用於橫向移動滲透到DC。