Windows WMI 详解之WMI ATTACK

2024-01-31 08:18:27 浏览数 (2)

1.信息收集

当我们在拿到内网某一台机器权限时,第一时间要做的就是信息收集,WMI中的各种类为我们在内网信息收集方面提供了十分有利的条件,作为红队的我们可以利用如下WMI中各种类的子集来对目标进行全方面信息收集。

  • 主机/操作系统信息:Win32_OperatingSystem, Win32_ComputerSystem。
  • 文件/目录列举: CIM_DataFile。
  • 磁盘卷列举: Win32_Volume。
  • 注册表操作: StdRegProv。
  • 运行进程: Win32_Process。
  • 服务列举: Win32_Service。
  • 事件日志: Win32_NtLogEvent。
  • 登录账户: Win32_LoggedOnUser /Win32_LogOnsession。
  • 共享: Win32_Share。
  • 已安装补丁:Win32_QuickFixEngineering。
  • 网络信息:Win32_IP4RouteTable。
  • 用户账户:Win32_UserAccount。
  • 用户组:Win32_Group。

2.杀毒引擎检测

默认情况下,杀毒引擎会自动注册在WMI 中的 AntiVirusProductclass 类中的 rootSecurityCenter 或者是rootSecurityCenter2 命名空间中,我们可以执行SELECT * FROM AntiVirusProductWQL查询语句来查询当前已安装的杀毒引擎。

3.代码执行及横向移动

在内网中,我们可以利用事件订阅以及win32_process 类的Create 方法来实现代码执行及横向移动,如下是代码执行及横向移动的两种方法。

(1)事件订阅

我们可以使用 WMI 的功能来订阅事件并在该事件发生时执行任意代码,从而在系统上提供持久化,例如:利用时间Event Consumer(事件处理)接⼝ActiveScriptEventConsumer(事件消费者组件类)来实现无文件写入,或者利用_IntervalTimerInstruction类,让其在往后特定的几秒进行触发运行,让其做为我们的攻击向量,又或者将Win32_ProcessStartTrace的外部事件做为创建Logon UI.exe的触发器来实现在屏幕锁定后执行特定的操作,我们可以选择windows系统中任意一个事件筛选器来实现我们想要的操作。

(2)win32_process类的Create 方法

win32_process类的Create方法是最经典的代码执行技术场景,通过运行进程win32_process类的Create方法来直接与本地或者远程进行直接执行交互。

4.WMI攻击检测

WMI拥有极其强大的事件处理子系统,因在操作系统中所有的操作行为都可以触发WMI的事件,我们可以将WMI理解成是微软操作系统中自带的一个免费IDS(入侵流量检测),WMI的定位就是实时捕获攻击者的攻击操作,那么我们利用WMI所产生的事件可进一步的判断是否是攻击者的操作,如下是攻击者常见的攻击利用手法,对VMI所触发产生的事件。

  • 攻击者使用WMI作为持久性机制,EventFilter、EventConsumer、FilterToConsumer 绑定创建,__InstanceCreationEvent事件被触发。
  • VMI Shell工具集被用作C2通道,会创建和修改名称空间对象的实例,因此会触发namespaceCreationEvent和Namespace ModificationEvent事件。

创建WMI类存储攻击者数,__ClassCreationEvent事件会被触发。

  • 当攻击者安装恶意WMI提供程序时,⼀个Provider类的实例会被创建,InstanceCreationEvent事件会被触发。
  • 当攻击者使用开始菜单或注册表做持久化时,⼀个Win32_StartupCommand类的实例会被创建,__InstanceCreationEvent事件会被触发。
  • 当攻击者安装服务时,⼀个Win32_Service实例会被创建,InstanceCreationEvent事件会被触发。


我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

0 人点赞