跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

Windows XML事件日志(EVTX)单条日志清除(一)——删除思路与实例


RenX6

推荐的帖子

0x00 前言

Windows XML事件日志(EVTX)单条日志清除系列文章的第一篇,侧重于介绍evtx日志文件的基础知识和删除单条日志的实现思路与实例

0x01 简介

本文将要介绍以下内容:

evtx文件格式

删除单条日志的思路

删除单条日志的实例

0x02 基础知识:evtx文件格式

可参考的资料:

https://github.com/williballenthin/python-evtx

evtx文件是指Windows Vista之后用于保存系统日志信息的文件

evtx文件结构包含三部分:

文件标题

大块

尾随空值

注:

文件标题保存evtx文件基本信息,值得注意的是下一个记录标识符、块数量、文件标志和校验和

大块保存日志内容,包括具体每条日志的内容和校验和,值得注意的是最后事件记录号、最后事件记录标识符、最后事件记录数据偏移量和两个校验和

尾随空值为尾随空值,用于填充文件长度,内容任意,不会影响evtx文件的有效性

(1) file header

格式可参考:

https://github。com/libyal/libevtx/blob/master/documentation/Windows XML事件日志(evtx).ascii文件# 2-文件头

(2) chunks

格式可参考:

https://github。com/libyal/libevtx/blob/master/documentation/Windows XML事件日志(evtx).ascii文件# 3-组块

大块包含多个事件记录,1个事件记录对应一条日志信息

(3) Event Record

格式可参考:

https://github。com/libyal/libevtx/blob/master/documentation/Windows XML事件日志(evtx).ascii文件# 32-事件-记录

事件记录的内容以二进制可扩展标记语言格式保存

二进制可扩展标记语言格式可参考:

https://github。com/libyal/libevtx/blob/master/documentation/Windows XML事件日志(evtx).ascii文件# 4-二进制-xml

值得注意的是EventRecordID标签,用来表示日志的顺序号

实例演示:

1、通过Windows日志查看

查看事件日志,选中一条日志,选择详细信息-XML视图

如下图

2-1.png

2、通过python脚本查看

安装python-evtx:

点安装python-evtx

下载脚本:

https://github。com/williballenthin/python-evtx/blob/master/scripts/evtx _ record _ structure。巴拉圭

命令如下:

evtx _记录_结构。py系统。evtx 1915

回显如下:

2A 2A 00 00 38 01 00 00 7B 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.8.{.

00000010: 23 EB 07 A2 D4联邦预算D3 01 0F 01 01 00 0C 01 65 CE #..e.

00000020:1B C7 EE 0D 00 00 14 00 00 00 01 00 04 00 01 00..

00000030: 04 00 02 00 06 00 02 00 06 00 02 00 06 00 08 00 ..

00000040: 15 00 08 00 11 00 00 00 00 00 04 00 08 00 04 00 ..

00000050:08 00 08 00 0A 00 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00..

00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..

00000070:00 00 00 00 00 00 00 00 8B 00 21 00 04 00 00 00 00 7C 1B..|.

00000080:00 40 00 00 00 00 00 00 80 80 23 EB 07 A2 D4 FB .@.#.

00000090:D3 01 D8 01 00 00 9C 07 00 00 7B 07 00 00 00 00..{.

DC E1 34 6C 11 00..4l.

00 00 00 4E.普通..

000000 c0:00 0E 00 0E 00 42 00 61 00 63 00 6B 00 67 00 72.英国航空公司

000000d 0:00 6F 00 75 00 6E 00 64 00 20 00 49 00 6E 00 74 .

000000 E0:00 65 00 6C 00 6C 00 69 00 67 00 65 00 6E 00 74

000000 F0:00 20 00 54 00 72 00 61 00 6E 00 73 00 66 00 65 .法国石油公司

00000100:00 72 00 20 00 53 00 65 00 72 00 76 00 69 00 63。

00000110:00 65 00 63 6B 28 57 D0 8F 4C 88 0E 00 00 00 42。CK(W.L.B

0000120: 00 49 00 54 00 53 00 2F.

00000130: 15 00 00 00 38 01 00 00 .8.

记录(absolute_offset=8776)

根节点(偏移量=0x18)

流开始节点(偏移量=0x18)

TemplateInstanceNode(offset=0x1c,resident=False)

替换(偏移量=0x26)

UnsignedByteTypeNode(offset=0x7a)-4

无符号字节模式(偏移量=0x 7b)-0

无符号类型代码(偏移量=0x 7c)-0

convertoldtypecode(偏移=0x7e) - 7036

无符号类型代码(偏移量=0x 80)-16384

十六进制64类型代码(偏移=0x82) -0x8080000000

螺纹类型节点(偏移=0x 8a)-2018-06-04 07:21:19.394281

空类型代码(偏移量=0x92)

无符号字类型代码(偏移量=0x 92)-472

无符号字类型代码(偏移量=0x 96)-1948

无符号qword类型代码(偏移量=0x 9 a)-1915

无符号bytetypemode(offset=0 xa 2)-0

空类型代码(偏移量=0xa3)

空类型代码(偏移量=0xa3)

空类型代码(偏移量=0xa3)

空类型代码(偏移量=0xa3)

空类型代码(偏移量=0xa3)

空类型代码(偏移量=0xa3)

空类型代码(偏移量=0xa3)

bxmltypecode(offset=0 xa 3)-

根节点(偏移=0xa3)

流开始节点(偏移=0xa3)

模板实例模式(offset=0 xa 7,resident=False)

替代(偏置=0xb1)

WstringTypeNode(offset=0xc5) -后台智能传输服务

这一个

WstringTypeNode(offset=0x113) -正在运行

无符号字类型代码(偏移量=0x 11 b)-14

二进制的类型代码(offset=0x 11 f)-qgbjaqauwavadaaaa=

703604000 x 80800000000000001915系统in-e8c6j 8 cn 50 obkground智能传输服务正在运行qgbjafqauwavadqaaaa=

0x03 删除单条日志的思路

Windows操作系统操作系统系统在解析日志文件时,通过事件记录的尺寸(大小)长度逐个读取每一条日志的内容

如果修改某条日志的长度,使长度覆盖下一条日志,那么Windows操作系统操作系统系统在解析时,就会跳过下一条日志,相当于下一条日志被隐藏

丹斯普里兹中的事件日志编辑(事件日志)就是这个思路,只修改了长度,没有删除日志内容

实现思路如下图

010-35001

注:美元

图片来自339博客。福克斯-它。com/2017/12/08/NSAs检测和恢复复盖的跟踪/

所以如果恢复每条日志的正确日志长度,就能够恢复出被隐藏的日志,恢复工具可使用如下python(python语言)脚本:

github街339号。com/fox-it/danderpritz-evtx

当然,如果以此为基础,把指定日志的内容清空,就能够实现真正的日志删除

为了保证修改后的日志文件能够被正确识别,还需要修改多个标志位,重新计算校验和

具体修改方法如下:

页眉文件中的下一个记录标识符值减一

重新计算页眉文件中的校验和

修改事件记录:重新计算待删除事件记录前后长度,更新后续事件记录的事件记录标识符

更新埃尔夫丘克先生,修改如下内容:

上次事件记录编号

上次事件记录标识符

上次事件记录数据偏移

事件记录校验和

校验和

0x04 删除单条日志的实例

测试文件:System.evtx

下载地址:

github街339号。com/3 gstudit/event log dit-evtx-evolution/blob/master/system。evtx

文件包含四条日志,下面演示如何删除第四条日志

第四条日志内容如下图

010-3500002

事件记录ID(事件记录ID)为1915

1、File header中的Next record identifier值减1

页眉文件位于文件最开始的部分

下一个记录标识符的偏移为24小时(0x 18小时),长度8

对应测试文件System.evtx,如下图

3-2.png

下一个记录标识符为0x77Ch,即1916

减一后为1915年,即0x77Bh

2、重新计算File header中的Checksum

计算方法:前120字节做CRC32号文件运算,偏移为124(0x7Ch),长度四

修改下一个记录标识符后的内容如下图

010-3500004

前120字节的内容为456 c 6646696 c 6500000000000000000007 b 07000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

计算CRC32号文件可使用如下python(python语言)代码:

导入二进制文件

定义crc2hex(crc):

返回%(二进制文件crc32(二进制文件a2 b _ hex(CRC))0x fff)

d=' 456 c 664666 c 6500000000000000000007 b 0700000000000013000000000000000000000000000000000000000000000000 000000000000000000 0000000000000 000000000000000 00000000000000000000000000

打印(crc2hex(d))

输出结果ccc94756号文件

所以更新后的内容是56 47 C9 CC,如下图所示。

3-4.png

3、修改Event Record

搜索魔术字符串0x2A0x2A0x000x00以定位不同的eventrecords。

第四条事件记录的内容如下

3-5.png

长度为0x138h

事件标识符是0x77Bh。

第三条事件记录的内容如下

3-6.png

长度为0x480h

事件标识符是0x77Ah。

修改第三个事件记录的长度以覆盖第四个事件记录。

新长度为0x138h0x480h=0x5B8h。

由于删除了最后一个日志,因此不需要更新事件记录标识符(有两个位置)。

注:

有两个位置可以修改长度,分别是第三根圆木的长度和第四根圆木的尾部。

修改后,如下图所示

3-7.png

3-8.png

注:

该测试只修改了事件记录的长度,以后可以通过修复长度来恢复日志。

当然,您可以选择清除日志内容并永久删除它。

4、更新ElfChuk

搜索魔法字符串ElfChuk

注:

可能有多个elfchuk,需要找到对应的elf chuk。

测试文件System.evtx中只有一个ElfChuk

内容如下

2-2.png0

最后一个事件记录号是0x4h。

最后一个事件记录标识符是0x77Bh。

最后一个事件记录数据偏移量是0x1248h。

事件校验和是0xD3D3DE43h。

校验和为0xEB4C47BFh。

需要进行以下修改:

最后一个事件记录号减1是0x3h。

最后一个事件记录标识符减1是0x77Ah。

最后一个事件记录数据偏移量是第三个事件记录相对于ElfChuk的偏移量长度,为0xDC8h。

Event records checksum是所有事件记录内容的CRC32校验和,包含三个日志内容。用python脚本计算后,结果是0xF92FEDB9h。

Checksum是ElfChuk中0-120和128-512的CRC32校验和,结果是0x3CE0BF8h。

更新后,内容如下

4-2.png

另存为新文件System2.evtx

下载地址:

https://github.com/3gstudent/Eventlogedit-evtx-Evolution/blob/master/system 2 . evtx

注:

为了验证尾随空值,我将第四个日志之后的所有内容覆盖到0x41(字符A),这不会影响日志文件的有效性。

2.System2.evtx已成功识别,如下图所示

4-3.png

0x05 小结

介绍了删除单个日志的基本知识和实现思路。一个示例演示了如何修改evtx文件并隐藏最后一个日志。

下一篇文章将介绍如何编写一个程序来自动删除指定的日志。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...