Windows 取证之EVTX日志
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)值描述0x008"ElfFile\x00"标志位/签名0x088第一个区块编号(存在时间最久的区块编号)0x108当前区块编号(块的编号从0开始)0x188下一条事件记录的ID0x204128文件头有效部分的大小0x2421次要版本0x2623主要版本0x2824096文件头的大小0x2A2区块的数量0x2C76未知 (空值)0x784文件标志0x7C4文件头前 120 bytes 的CRC32校验和0x803968未知 (空值)我们可以使用Hex编辑器打开一个evtx文件查看一下:
Chunk(块):每个块的大小是 65536 bytes(64KB),主要由三部分组成:chunk header 块头array of event records 事件记录组unused space 未使用的空间chunk头长度为512bytes,其结构如下:偏移长度(Bytes)值描述0x008"ElfChnk\x00"标志位/签名0x088基于日志编号的第一条日志记录的ID0x108基于日志编号的最后一条日志记录的ID0x188基于文件编号的第一条日志记录的ID0x208基于文件编号的最后一条日志记录的ID0x284128chunk头大小0x2C4最后一条日志记录的偏移量(相对于块头的起始偏移量)0x304下一条日志记录的偏移量(相对于块头的起始偏移量)0x344事件记录数据的 CRC32 校验和0x3864Unknown (空值)0x784Unknown (flags?)0x7C4块头CRC32校验和(块头前120个字节和128至512字节的数据的CRC32校验和)
Event record(事件记录):事件记录的长度非固定长度,其结构如下:偏移长度(Bytes)值描述0x004"\x2a\x2a\x00\x00"标志位/签名0x044事件记录的长度0x088记录ID0x108日志记录的写入时间(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描述4608Windows 启动4609Windows 关机4616系统时间发生更改4624用户成功登录到计算机4625登录失败。使用未知用户名或密码错误的已知用户名尝试登录。4634用户注销完成4647用户启动了注销过程4648用户在以其他用户身份登录时,使用显式凭据成功登录到计算机4703令牌权限调整4704分配了用户权限4720已创建用户账户4725账户被禁用4768请求Kerberos身份验证票证(TGT)4769请求Kerberos服务票证4770已续订Kerberos服务票证4779用户在未注销的情况下断开了终端服务器会话1、通过Windows事件查看器分析日志通过Windows事件查看器可以查看当前主机的事件日志,也可以打开保存的 evtx文件。
可以通过点击、筛选、查找等多种方式查看事件日志
筛选器提供了丰富的筛选方式:
2、通过工具分析EvtxLog ParserLog 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.exeMicrosoft (R) Log Parser Version 2.2.10Copyright (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 (ifomitted, 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 isON-c : use built-in conversion query-multiSite[:ON|OFF] : send BIN conversion output to multiple filesdepending on the SiteID value; default is OFF-saveDefaults : save specified options as default values-restoreDefaults : restore factory defaults-queryInfo : display query processing information (does notexecute the query)Examples:LogParser "SELECT date, REVERSEDNS(c-ip) AS Client, COUNT(*) FROM file.logWHERE sc-status<>200 GROUP BY date, Client" -e:10LogParser file:myQuery.sql?myInput=C:\temp\ex*.log+myOutput=results.csvLogParser -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 helpLog Parser Studiologparser的GUI版本。下载地址:https://techcommunity.microsoft.com/t5/exchange-team-blog/log-parser-studio-2-0-is-now-available/ba-p/593266其界面如下:
Event Log ExplorerEvent Log Explorer 是一个非常好用的Windows 日志分析工具,下载地址:https://eventlogxp.com/
LogParser LizardLogParser 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.ComDC 服务器名称 -> WIN-IL7M7CC6UVUJaime(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。