windows事件日志包括安全日志(WindowsXMLEvent)
windows事件日志包括安全日志(WindowsXMLEvent)本文将要介绍以下内容:0x01 简介Windows XML Event Log (EVTX)单条日志清除(三)——通过解除文件占用删除当前系统单条日志记录Windows XML Event Log (EVTX)单条日志清除(二)——程序实现删除evtx文件的单条日志记录Windows XML Event Log (EVTX)单条日志清除(一)——删除思路与实例
Windows XML Event Log (EVTX)单条日志清除(五)——通过DuplicateHandle获取日志文件句柄删除当前系统单条日志记录
0x00 前言
Windows单条日志清除系列文章的第五篇,介绍第三种删除当前系统单条日志记录的方法:枚举当前系统的所有进程,获得指定日志文件的句柄,通过DuplicateHandle复制句柄,获得权限,利用该句柄实现日志文件的修改
Windows XML Event Log (EVTX)单条日志清除(四)——通过注入获取日志文件句柄删除当前系统单条日志记录
Windows XML Event Log (EVTX)单条日志清除(三)——通过解除文件占用删除当前系统单条日志记录
Windows XML Event Log (EVTX)单条日志清除(二)——程序实现删除evtx文件的单条日志记录
Windows XML Event Log (EVTX)单条日志清除(一)——删除思路与实例
0x01 简介
本文将要介绍以下内容:
- 利用思路
- 程序实现
- 枚举所有进程,获得指定文件句柄
- 通过DuplicateHandle复制句柄
- 开源实现代码
0x02 利用分析
上篇文章《Windows XML Event Log (EVTX)单条日志清除(四)——通过注入获取日志文件句柄删除当前系统单条日志记录》提到,某些条件下,高版本的Windows系统不允许注入保护进程svchost.exe,而我们又不想停掉日志服务,那么该怎么办呢?
2、使用WinAPI EvtExportLog,过滤出想要删除的内容
https://github.com/3gstudent/Eventlogedit-evtx--Evolution/blob/master/DeleteRecordbyGetHandleEx.cpp
代码实现了读取指定路径下的日志文件内容,用来覆盖系统日志
测试如下图
通常做法是先将日志线程挂起,使得系统无法继续收集日志,代码地址如下:
https://github.com/3gstudent/Eventlogedit-evtx--Evolution/blob/master/SuspendorResumeTid.cpp
接着读取系统日志内容,删除指定日志,将新日志保存,代码如下:
https://github.com/3gstudent/Eventlogedit-evtx--Evolution/blob/master/DeleteRecord-EvtExportLog.cpp
最后使用DeleteRecordbyGetHandleEx读取新日志,覆盖系统日志,实现日志删除
注:
对于以上两种方法,删除setup.evtx是没有问题的,删除system.evtx和security.evtx会存在因为竞争条件导致删除失败的情况
0x05 小结
本文介绍了第三种删除当前系统单条日志记录的方法:枚举当前系统的所有进程,获得指定日志文件的句柄,通过DuplicateHandle复制句柄,获得权限,利用该句柄实现日志文件的修改
优点是不需要注入进程svchost.exe,也就不需要考虑保护进程的注入绕过,并且不需要考虑进程间的信息传递,效率更高。
作者:3gstudent
欢迎来安全脉搏查看更多的干货文章和我们一起交流互动哦!
脉搏地址:安全脉搏 | 分享技术,悦享品质
微博地址:Sina Visitor System