Author:小离-xiaoli
可以看到,该项目的Todo,依旧想的是围绕注册表去进行修改,为此我们先把注册表传输文件放一边 WMIHACKER的文件传输部分
这个工具很不错,基本上该有的功能都有了,但是缺了PTH,来,是时候拥抱impacket了,我们也确立好了明确的目标,首先是创建wmi类
后面去看了issues,发现也有一个师傅问了相同的问题
期间自己也试了很多次方法,impacket的wmi.py也看了很久,无奈自己琢磨不出来,依旧创建不成类,难道就没有其他方法了吗?通过查找其他issues,有另外的大哥是通过powershell去创建一个wmi类,但是还是没有采取他的方法,因为实战powershell很容易被杀
但,回想起WMIHACKER的免杀横向思路,是通过事件订阅去执行VBS,VBS再去执行cmd,达到的免杀横向目的,如果我们用VBS去创建一个类,那也是免杀的,然后就按照思路去谷歌,你猜怎么着,答案就藏在微软的官方文档里
有了VBS脚本,我们可以修改一下,变成我们想要的,如下图所示,CreationClassName
可以用来表示唯一key值,而DebugOptions可以用来存储数据,并且在创建完成类后,在里面接着创建一个叫Backup的实例,用来判断是否创建类成功
类的properties如下图所示
目前,创建类的思路已经齐全了,我们可以回到impacket,自己定义一个创建类的方法,思路就是,用wmi事件执行vbs,然后使用iWbemServices.GetObject
方法去直接调用实例,判断类是否存在,存在的话,删除刚刚的事件订阅
impacket除了iWbemServices.GetObject("win32_process")
的写法,还可可以直接调用实例 iWbemServices.GetObject('win32_process.Handle="0"')
删除类就好办了,直接调用 iWbemServices.DeleteClass
即可
演示截图,上传了2兆的文件
然后用个函数封装起来,漂漂亮亮
演示截图,下载了2兆的文件
MSFT_NetProtocolPortFilter
, MSFT_NetFirewallRule
, MSFT_NetFirewallProfile
这三个类,目前实现了启用禁用删除某条规则,MSFT_NetProtocolPortFilter
和 MSFT_NetFirewallRule
这个两个类属性里面的InstanceID
是关联的,然后动动手指,就可以写出一个基于端口查找防火墙规则的一个东西
{D13E226E-A4C0-4CD3-A4E1-17B5948121DE}
RPC_C_AUTHN_LEVEL_PKT_PRIVACY
,然后直接改对应的值,第一个1代表开启rdp,第二个1代表同时配置防火墙
StdRegProv
类,一把梭
win32_service
开启winrm服务,然后同时调用上述防火墙模块配置好防火墙规则,系统内置了winrm的防火墙规则的,只需要enable它即可
AmsiEnable
的键值对,实际有没有用还需要自己测试,来源于blackhat asia 2018中Tal-Liberman 的分享(实际上有没有用,我还没测试过,看GhostPack的SharpWMI添加了这个,我也加上一个)