Windows日志的删除与绕过
0x01. Windows日志
Windows日志包括五个类别:
- 应用程序(Application)
- 安全(Security)
- Setup
- 系统(System)
- 转发事件(Forwarded Events)
1、通过面板
位置如下:控制面板–》系统和安全–》管理工具–》查看事件日志
2、 通过Powershell
常用命令如下:
(管理员权限)
查看所有日志:
1 | Get-WinEvent |
查看应用程序类别下的日志:
1 | Get-WinEvent -FilterHashtable @{logname="Application";} |
0x02. Windows日志的常用清除方法
1、wevtutil.exe
操作系统默认包含,支持系统:Win7及以上
常用命令如下:
(1) 统计日志列表,查询指定类别的所有日志信息,包含时间,数目
1 | wevtutil.exe gli Security |
操作如下图
(2) 查看指定类别的日志内容
1 | wevtutil qe /f:text Security |
操作如下图
(3) 删除该类日志所有内容
1 | wevtutil cl Application |
操作如下图
Application日志全部清除,数目为0
(4) 删除单条内容
尚不支持
0x03. Windows日志的绕过方法
参考:https://artofpwn.com/phant0m-killing-windows-event-log.html
绕过原理:
Windows日志对应于eventlog服务,找到该服务对应的进程svchost.exe,进而筛选出svchost.exe进程中具体实现日志功能的线程,终止有关Windows事件日志服务的所有线程,调用TerminateThread结束线程,破坏日志记录功能破坏日志记录功能
特别的地方:
Windows事件日志服务的svchost.exe进程尚未停止,而只有相关线程已停止;因此,目标系统将无法收集日志,并且因为无法收集日志而将无法发送日志,但是Windows事件日志服务仍然正在运行
绕过方法一
1、 定位eventlog服务对应进程svchost.exe的pid
2、 遍历该进程中的所有线程
3、 判断线程是否满足条件
Windows Event Log 服务需要调用wevtsvc.dll,完整路径为%WinDir%\System32\wevtsvc.dll
并且,如果线程调用了wevtsvc.dll,就可以判读该线程实现了日志记录功能
4、 结束线程
使用TerminateThread
Phant0m(https://github.com/hlldz/Invoke-Phant0m)
powershell脚本执行后,Windows日志功能失效,无法记录日志,操作如下图
5、 恢复方法
结束进程svchost.exe
重新开启Windows Event Log 服务:
1 | net start eventlog |
操作如下图
先水一篇吧,下期再说 :)