win入侵日志处理之powershell



0x01 前言:

1
2
3
4
很久之前,我们说过如何利用win自带的wevtutil工具来处理各种入侵日志
但那有个很致命的缺点,就是删除的时候是一下全给干掉了,这很显然不是我们想要的
今天我们就再来介绍另外一种相对[只是相对比较好,个人认为也并不是特别好,但值得在此基础上改进]比较好的处理方式
也正是我之前说的利用powershell来帮我们搞,具体实现如下

0x02 首先,我们有必要先来简单了解下windows的svchost进程是干什么的

1
2
简单通俗来讲,svchost主要是用来实现服务进程数据共享,以此来减少系统资源消耗的这么一个东西,下面挂靠的程序可能同时有很多个
说白点,其内部其实是作为线程[核心就在这儿]来运行的,关于更详细的简介,可直接参考维基百科上对其的说明

0x03 如果实在想自己手工实现该功能的话,大体思路如下:

1
2
3
找目标系统中Win事件日志服务的进程名,一般都是在svchost下
并从该进程中获取所对应的Win 事件日志服务线程ID
想办法杀掉这些id所对应的线程,以达到让目标系统日志服务无法正常工作的目的,这样系统就无法再搜集日志了


0x04 关于Phant0m脚本的具体内部实现:

1
2
3
访问线程堆栈,并搜索特定线程所使用的dll,Windows事件日志服务默认使用的是wevtsvc.dll
完整路径为%WinDir%\ System32 \ wevtsvc.dll,也就是说,如果有线程正在使用该dll
则说明它肯定是Windows事件日志服务的线程,没说的,果断杀掉它,系统也就没法再正常的搜集日志数据了

0x05 使用非常简单,直接执行脚本基本即可,实际的效果如下:

1
# powershell –exec bypass –Command "& {Import-Module 'C:\Invoke-Phant0m.ps1';Invoke-Phant0m}"

我们发现,脚本执行以后,当我们再来修改用户密码时,日志是没有任何更新显示的,也就说明win日志服务此时已经停止工作了,注意,虽然日志服务不工作了,但图形界面中的日志服务状态依然显示已启动,因为Win日志服务的svchost.exe进程并没有终止,终止的只是它下面的几个线程而已,这也是这样做的另一个好处

0x06 脚本值得改进的地方

1
2
3
4
5
6
本来以为重启服务,它就会重新加载dll,日志就会再继续正常记录,不过看来确实是我想多了,必须要重启才能再正常工作,抽空再好好看看代码吧
日志确实是不记录了,一定程度上也似乎达到了我们的要求,但这还远远不够彻底,看来如果真想灵活进行日志伪造只能自己hook了
日志不记录了,但是从什么时候开始不记录的,却被大摇大摆的放在那儿,这无疑就是在告诉管理员,那,我这个时间点来过,你从这个时间戳开始往后查我就行了
不过相比之前直接把整个日志清空又要好很多,尤其是日志量特别大的时候,其实懒一点的管理员也并不太容易发现
世界人民都知道,对于win来说,ps大法是真的好,理解都比较简单,作个小tips还不错,该系列文章还没完,待续...
没说清楚的地方大家可随时私信我,如有更好的思路也非常非常期待能一起交流