Windows 事件日志文件——EVTX文件
概述:
.evtx
是 Windows 事件日志文件的扩展名。这些文件通常包含系统或应用程序的操作信息,如系统警告、错误、信息事件等。这些文件主要被系统管理员用来进行故障排查和系统监控。Windows 事件查看器是查看
.evtx
文件的主要工具,你可以在 Windows 的控制面板或者通过在 “运行” 对话框中输入eventvwr.msc
来打开它。在事件查看器中,你可以查看、导出和清除事件日志,还可以创建和管理事件订阅。
.evtx
文件是二进制文件,所以直接用文本编辑器打开它们并不能看到有用的信息。有一些第三方工具,如 NirSoft 的 MyEventViewer 或 Log Parser,可以解析.evtx
文件并以更易于理解的格式显示事件。
evtx文件概述
概述
.evtx是Windows事件日志文件的扩展名,全称为Windows XML事件日志格式。
Windows事件日志用于记录系统和应用程序在运行过程中发生的不同事件。.evtx文件采用XML格式来存储这些事件信息。每个evtx文件通常对应一个特定的日志类型,如:
• System.evtx - 记录系统事件
• Application.evtx - 记录应用程序事件
• Security.evtx - 记录安全审核事件
如何查看
.evtx文件可以使用事件查看器(Windows Event Viewer)来查看和分析。我们还可以使用PowerShell、evtparser等工具来解析evtx文件,例如:
- 获取evtx文件中的事件ID为1000的所有事件:
1 |
|
- 根据evtx文件中的事件消息筛选事件:
1 |
|
- 导出evtx文件中的所有事件到CSV文件:
1 |
|
-
使用evtparser解析evtx文件
evtparser.py application.evtx > events.log
evtx文件的主要作用是进行系统监控、安全审计和事件分析。通过分析evtx文件,我们可以:-
了解系统或应用程序的运行状况和遇到的问题
-
检测系统或应用程序的潜在安全威胁
-
分析某个时间段内的系统事件,查找可能导致问题的变化
-
审计对系统的访问和更改等
-
所以,熟悉evtx文件格式和如何分析evtx文件是信息安全人员和系统管理员的重要技能之一。
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 | 未知 (空值) |
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
日志文件大概的结构如下所示:
EVTX文件的存储
Windows事件日志文件保存在%SystemRoot%\System32\Winevt\Logs
路径中。
常见日志文件主要有三个,分别是:System.evtx
、Application.evtx
和Security.evtx
。分别是系统日志、应用程序日志和安全日志。
-
System.evtx
记录操作系统自身组件产生的日志事件,比如驱动、系统组件和应用软件的崩溃以及数据丢失错误等等。
-
Application.evtx
记录应用程序或系统程序运行方面的日志事件,比如数据库程序可以在应用程序日志中记录文件错误,应用的崩溃记录等。
-
Security.evtx
记录系统的安全审计日志事件,比如登录事件、对象访问、进程追踪、特权调用、帐号管理、策略变更等。
Security.evtx
也是取证中最常用到的。
默认情况下,当一个evtx
文件的记录满了,日志服务会覆盖最开始的记录,从头开始写入新的记录。也就是相当于一个循环记录的缓存文件。
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
使用方法:
1 |
|
例子:
查询登录成功的事件:
1 |
|
Log Parser Studio
logparser
的GUI版本。
其界面如下:
LogParser Lizard
LogParser Lizard 是一个功能丰富的Windows 日志分析软件,可以通过类似SQL查询语句对日志筛选查询进行分析。