Windows 取證之EVTX日誌

0x0、概述

evtx文件是微軟從 Windows NT 6.0(Windows Vista 和 Server 2008) 開始採用的一種全新的日誌文件格式。在此之前的格式是 evtevtxWindows事件查看器創建,包含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文件查看一下:

image-20210720163636907

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校驗和)

 

 

image-20210721123805851

 

Event record(事件記錄):

事件記錄的長度非固定長度,其結構如下:

 

偏移長度(Bytes)描述
0x00 4 "\x2a\x2a\x00\x00" 標誌位/簽名
0x04 4   事件記錄的長度
0x08 8   記錄ID
0x10 8   日誌記錄的寫入時間(FILETIME)
0x18 不確定   基於二進制XML編碼的信息
不確定 4   記錄長度(副本)

 

 

image-20210721131110932

image-20210721131135650

 

由上面的信息,可知evtx日誌文件包含一個4KB的文件頭加後面一定數量的64KB大小的塊,一個塊中記錄一定數量(大約100條)的事件記錄。每個塊是獨立的,不受其他塊影響。不會出現一條事件記錄的數據存在於兩個塊中。每條記錄包含一個基於二進制XML編碼的信息。每條事件記錄包含其創建時間與事件 ID(可以用於確定事件的種類),因此可以反映某個特定的時間發生的特定的操作,取證人員可以根據日誌文件來發現犯罪的過程。

evtx日誌文件大概的結構如下所示:

image-20210721132346354

在windows事件查看器中查看:

image-20210721140401309

0x2、EVTX文件的存儲

Windows事件日誌文件保存在%SystemRoot%\System32\Winevt\Logs路徑中。

image-20210721141141511

常見日誌文件主要有三個,分別是:System.evtxApplication.evtxSecurity.evtx。分別是系統日誌、應用程序日誌和安全日誌。

  • System.evtx

    記錄操作系統自身組件產生的日誌事件,比如驅動、系統組件和應用軟件的崩潰以及數據丟失錯誤等等。

  • Application.evtx

    記錄應用程序或系統程序運行方面的日誌事件,比如數據庫程序可以在應用程序日誌中記錄文件錯誤,應用的崩潰記錄等。

  • Security.evtx

    記錄系統的安全審計日誌事件,比如登錄事件、對象訪問、進程追蹤、特權調用、帳號管理、策略變更等。Security.evtx也是取證中最常用到的。

默認情況下,當一個evtx文件的記錄滿了,日誌服務會覆蓋最開始的記錄,從頭開始寫入新的記錄。也就是相當於一個循環記錄的緩存文件。

image-20210721142106536

0x3、Evtx日誌分析

WindowsEvent 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文件。

image-20210721160559304

可以通過點擊、篩選、查找等多種方式查看事件日誌

image-20210721160753865

篩選器提供了豐富的篩選方式:

image-20210721161013112

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"

image-20210721161849128

還有其他的語法,具體可以查看其幫助信息

>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版本。

下載地址:https://techcommunity.microsoft.com/t5/exchange-team-blog/log-parser-studio-2-0-is-now-available/ba-p/593266

其界面如下:

image

Event Log Explorer

Event Log Explorer 是一個非常好用的Windows 日誌分析工具,下載地址:https://eventlogxp.com/

image-20210721163315625

LogParser Lizard

LogParser Lizard 是一個功能豐富的Windows 日誌分析軟件,可以通過類似SQL查詢語句對日誌篩選查詢進行分析。

下載地址:https://lizard-labs.com/log_parser_lizard.aspx

image-20210721163556793

image-20210721163647101

Evtx Explorer/EvtxECmd

具有標準化CSV、XML和json輸出的事件日誌(Evtx)解析器!

下載地址:https://ericzimmerman.github.io/#!index.md

使用方法:

EvtxECmd.exe -f 日誌文件 --xml 輸出路徑

image-20210721165111773

解析的xml文件結構如下:

image-20210721165205013

0x4、Evtx取證實戰

題目來源:Cynet應急響應挑戰賽

描述:GOT Ltd 的人力資源主管King-Slayer認爲他的電腦上有可疑活動。

2020 年 2 月 8 日,15:00 左右,他發現桌面上出現了一個帶有 kiwi標誌的文件。據他描述,該文件首次出現在他的桌面後不久就突然消失了。那天晚些時候,他開始收到消息告訴他需要重新激活 Windows Defender。他激活了 Windows Defender,幾個小時後又收到了同樣的消息。

他決定將這件事告訴他在 IT 部門的朋友——ChrisChris立即將此事報告給了 GOT 的網絡安全部門。

該公司的 CISO 立即打電話求助我們,GOT有限公司總部設在瑞士,CISO 向我們發送了來自 King-SlayerPC 和域控制器的所有事件日誌文件。他希望我們查出異常:

提示:

  • 用戶帳戶 (KingSlayer) 是他電腦上的本地管理員。

  • 域名 -> GOT.Com

  • DC 服務器名稱 -> WIN-IL7M7CC6UVU

  • Jaime(King Slayer)的主機名->DESKTOP-HUB666E(172.16.44.135)

提交攻擊者使用的域用戶帳戶(King-Slayer除外)以及他使用此用戶帳戶訪問的主機的IP地址。

我們拿到的文件包括DC服務的日誌和主機日誌文件:

image-20210721171750067

給出的文件還有一個提示就是PassTheHash ,表明攻擊者使用了該技術。

傳遞哈希是一種黑客技術,它允許攻擊者使用用戶密碼的基礎NTLM或LanMan哈希對遠程服務器或服務進行身份驗證,而不是像通常情況下那樣要求使用關聯的明文密碼。它取代了僅竊取哈希值並使用該哈希值進行身份驗證而竊取明文密碼的需要。--via 維基百科

通過日誌交叉比對和篩選查找,我們確定了在2020-2-9 21:59左右,有異常登錄行爲

注意:Windows EVTX 的FILETIME 是 UTC時間,注意轉化爲瑞士當地時間。

image-20210721173442458

image-20210721173517788

我們發現用戶Daenerys在2020年2月9日21:59 (當地時間15:59)通過SMB協議登錄到WIN-IL7M7CC6UVU(域控制器),而且使用了PSExec.exe 利用Deanerys用戶登錄了域控服務器。攻擊者可能使用了Mimikatz拿到了Daenerys用戶的哈希,然後用於橫向移動滲透到DC。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章