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​​文件查看一下:

Windows 取证之EVTX日志_xml

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

 

 

Windows 取证之EVTX日志_Web_02

 

Event record(事件记录):

事件记录的长度非固定长度,其结构如下:

 

偏移

长度(Bytes)

描述

0x00

4

"\x2a\x2a\x00\x00"

标志位/签名

0x04

4

 

事件记录的长度

0x08

8

 

记录ID

0x10

8

 

日志记录的写入时间(FILETIME)

0x18

不确定

 

基于二进制XML编码的信息

不确定

4

 

记录长度(副本)

 

 

Windows 取证之EVTX日志_xml_03

Windows 取证之EVTX日志_CTF_04

 

由上面的信息,可知​​evtx​​日志文件包含一个4KB的文件头加后面一定数量的64KB大小的块,一个块中记录一定数量(大约100条)的事件记录。每个块是独立的,不受其他块影响。不会出现一条事件记录的数据存在于两个块中。每条记录包含一个基于二进制XML编码的信息。每条事件记录包含其创建时间与事件 ID(可以用于确定事件的种类),因此可以反映某个特定的时间发生的特定的操作,取证人员可以根据日志文件来发现犯罪的过程。

​evtx​​日志文件大概的结构如下所示:

Windows 取证之EVTX日志_xml_05

在windows事件查看器中查看:

Windows 取证之EVTX日志_xml_06

0x2、EVTX文件的存储

Windows事件日志文件保存在​​%SystemRoot%\System32\Winevt\Logs​​路径中。

Windows 取证之EVTX日志_xml_07

常见日志文件主要有三个,分别是:​​System.evtx​​​ 、​​Application.evtx​​​ 和​​Security.evtx​​。分别是系统日志、应用程序日志和安全日志。


  • System.evtx
    记录操作系统自身组件产生的日志事件,比如驱动、系统组件和应用软件的崩溃以及数据丢失错误等等。
  • Application.evtx
    记录应用程序或系统程序运行方面的日志事件,比如数据库程序可以在应用程序日志中记录文件错误,应用的崩溃记录等。
  • Security.evtx
    记录系统的安全审计日志事件,比如登录事件、对象访问、进程追踪、特权调用、帐号管理、策略变更等。​​​Security.evtx​​也是取证中最常用到的。

默认情况下,当一个​​evtx​​文件的记录满了,日志服务会覆盖最开始的记录,从头开始写入新的记录。也就是相当于一个循环记录的缓存文件。

Windows 取证之EVTX日志_xml_08

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

Windows 取证之EVTX日志_日志文件_09

可以通过点击、筛选、查找等多种方式查看事件日志

Windows 取证之EVTX日志_xml_10

筛选器提供了丰富的筛选方式:

Windows 取证之EVTX日志_网络靶场_11

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"


Windows 取证之EVTX日志_CTF_12

还有其他的语法,具体可以查看其帮助信息

>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​

其界面如下:

Windows 取证之EVTX日志_日志文件_13

Event Log Explorer

Event Log Explorer 是一个非常好用的Windows 日志分析工具,下载地址:​​https://eventlogxp.com/​

Windows 取证之EVTX日志_CTF_14

LogParser Lizard

LogParser Lizard 是一个功能丰富的Windows 日志分析软件,可以通过类似SQL查询语句对日志筛选查询进行分析。

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

Windows 取证之EVTX日志_日志文件_15

Windows 取证之EVTX日志_网络靶场_16

Evtx Explorer/EvtxECmd

具有标准化CSV、XML和json输出的事件日志(Evtx)解析器!

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

使用方法:

EvtxECmd.exe -f 日志文件 --xml 输出路径


Windows 取证之EVTX日志_xml_17

解析的xml文件结构如下:

Windows 取证之EVTX日志_CTF_18

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服务的日志和主机日志文件:

Windows 取证之EVTX日志_日志文件_19

给出的文件还有一个提示就是​​PassTheHash​​ ,表明攻击者使用了该技术。

传递哈希是一种黑客技术,它允许攻击者使用用户密码的基础NTLM或LanMan哈希对远程服务器或服务进行身份验证,而不是像通常情况下那样要求使用关联的明文密码。它取代了仅窃取哈希值并使用该哈希值进行身份验证而窃取明文密码的需要。--via 维基百科

通过日志交叉比对和筛选查找,我们确定了在​​2020-2-9 21:59​​左右,有异常登录行为

注意:Windows EVTX 的​​FILETIME​​ 是 UTC时间,注意转化为瑞士当地时间。

Windows 取证之EVTX日志_Web_20

Windows 取证之EVTX日志_日志文件_21

我们发现用户​​Daenerys​​​在2020年2月9日21:59 (当地时间15:59)通过​​SMB​​​协议登录到​​WIN-IL7M7CC6UVU​​​(域控制器),而且使用了​​PSExec.exe​​​ 利用​​Deanerys​​​用户登录了域控服务器。攻击者可能使用了​​Mimikatz​​​拿到了​​Daenerys​​用户的哈希,然后用于横向移动渗透到DC。

 


合天智汇:合天网络靶场、网安实战虚拟环境