Windows WMI详解,2024年最新高级网络安全面试答案

  • Get-WmiObject
  • Get-CimAssociatedInstance
  • Get-CimClass
  • Get-CimInstance
  • Get-CimSession
  • Set-Wmilnstance
  • Set-CimInstance
  • Invoke.WmiMethad
  • Invoke-CimMethod
  • New-CimInstance
  • New-CimSession
  • New-CimSessionOption
  • Register-CimlndicationEvent
  • Register-WmiEvent
  • Remove-CimInstance
  • Remove-WmiObject
  • Remove-CimSession

2. wmic.exe

wmic.exe是一款主要用于与WMI交互的命令行管理工具,它不但可以管理本地计算机,还能够在权限充分的情况下管理域控制器中的其他计算机。WMIC是Windows自带的一个功能,计算机只要支持 WMI即可使用 WMIC。因功能强大以及在 Windows 中免安装WMIC在内网渗透中扮演着重要的角色。

3. WBEMTEST

WBEMTEST是Windows自带的一个与WMI基础结构交互的图形化工具,它支持任何Windows 系统,在“运行”窗口中输入 wbemtest 并单击“确认”按钮即可打开。在弹出的“连接”窗口中选择命名空间(WBEMTEST不会浏览命名空间,需要我们手动选择以连接到指定命名空间),默认选择root\cimv2。这样,通过WBEMTEST工具就可以进行枚举对象实例、查询、创建和修改WMI类与对象等操作。

4.WinRM

WinRM(Windows Remote Management,Windows 远程管理)是 Windows操作系统的一部分,我们可以以管理员的身份使用该命令。WinRM是WS管理协议的微软实现。WS管理协议是一种基于简单对象访问协议(SOAP)的标准防火墙友好型协议。开启WinRM服务后,占用的端口(默认情况下,WinRMHTTP服务占用5985,HTTPS占用5986)不会被防火墙拦截,因此我们在内网渗透中可以通过 WinRM 进行横向渗透。

5.Win explorer

Win explorer(Windows 资源查看器)是一款图形化査看 WMI信息的工具。它与 WBEM-TEST类似,不过比WBEMTEST功能更丰富,使用起来更方便。Winexplorer允许用户浏览完整的 WMI管理类集、对象及其属性,浏览远程计算机上的对象和设置,以及执行任何WQL 查询和查看结果集。

6. WSH

VBScript 和 JScript是微软提供的两种WSH(Windows Script Host)脚本开发语言。这两种脚本开发语言早已过时,但是它们在与WMI交互时仍有很强大的能力。目前市面上已经出现了基于这两种语言开发、使用WMI功能完成基本的命令与控制机制的后门程序目前只有 VBScript和JScript支持调用Event Consumer(事件消费者)接口ActiveScriptEventConsumer(事件消费者组件)来实现无文件写入。

WMI远程交互

当前,WMI支持两种远程交互协议:DCOM协议和WinRM协议。我们可以通过这两种协议对远程计算机进行对象查询、事件注册及WMI类方法的执行等操作。攻击者要有效利用这两种协议,需要具备一定的特权用户凭据,因此大多数安全厂家通常不会对这两和协议所传输的恶意内容及恶意流量进行审查。这就使得这两种协议对于攻击者有了可利用的空间。接下来分别介绍这两种协议。

DCOM

DCOM(分布式组件对象模型)是微软基于COM(组件对象型)推出的一系列概念和程序接口。通过该技术,在局域网、广域网甚至Internet 上不同计算机的对象之间能够过行通信,从而在位置上达到分布性,满足客户和应用的需求。
在了解 DCOM 之前,我们先简单介绍一下 COM 技术。COM 是微软的一套软件组件口标准,定义了组件和本地客户端之间互相作用的方式。它使组件和客户端不需要任何中介组件就能相互联系。而DCOM是COM的扩展,使用DCOM可以不受本地限制,通过远程过程调用(RPC)技术实现客户端程序实例化和访问远程计算机的COM对象。DCOM为分布在网络不同节点的两个COM组件提供了互相操作的基础结构。它增强了COM的分布处理性能,支持多种通信协议,加强了组件之间通信的安全保障。DCOM在组件中的作用为:作为PC间通信的PCI和ISA总线,负责各种组件之间的信息传递。如果没有DCOM,则达不到分布式计算环境的要求。

WinRM

WinRM(Windows 远程管理)目前已成为 Windows建议使用的远程管理协议。WinRM是基于 WS管理协议所构建的一种基于SOAP的设备管理协议,它允许使用SOAP通过HTTP(S)远程管理 Windows计算机,其后端利用了WMI,我们可以把它看作一个基于HTTP的 WMI API。另外,PowerShell Remoting 是基于 WinRM 规范的。当计算机启用了WinRM 以后,我们就可以像远程SSH会话一样,通过PowerShell 的方式对远程计算机进行管理。在默认情况下,WinRM会监听**5985/TCP(HTTP)、5986/TCP(HTTPS)**这两个端口中的任意一个,只要其中任意一个端口处于监听状态,都表示WinRM 已经配置。

可以通过在PowerShell中使用Test-WSMan 函数来验证目标是否已经配置了 WinRM如果 Test-WSMan 返回了如图所示的信息,则表示目标系统中的 WinRM服务处于监听状态。

WMI事件
WMI 永久事件订阅组成

(1)事件过滤器
事件过滤器(Event Filter)存储在一个ROOT\subscription:_EventFilter对象的实例里,其主要作用是使用WMI的查询语言来过滤审核特定的事件。一个事件过滤器接收一个WMI事件查询参数,同时可以对内部事件(Intrinsic Event)和外部事件(Extrinsic Event)进行事件查询。

1)内部事件。我们在创建、删除、修改WMI类或类实例以及命名空间时所产生的事件,都可以称为内部事件。每个内部事件类都代表了一种特定类型的更改,内部事件作为系统类存在于每个命名空间中。一般情况下,WMI为存储在WMI存储库中的对象创建内部事件,提供程序为动态类生成内部事件,如果没有可用的提供程序,WMI将会为动态类创建一个实例。以下为WMI用于报告内部事件的系统类。

_ClassCreationEvent   //创建类时通知消费者
_ClassDeletionEvent   //当类被删除时通知消费者
_ClassModificationEvent   //当类被修改时通知消费者
_InstanceCreationEvent    //创建类实例时通知消费者
_InstanceOperationEvent    //当任何实例事件发生时通知消费者
_InstanceDeletionEvent     //当实例被删除时通知消费者
_InstanceModificationEvent //当实例被修改时通知消费者
_NamespaceCreationEvent    //当创建命名空间时通知使用者
_NamespaceDeletionEvent   //当命名空间被删除时通知消费者
_NamespaceModificationEvent   //当命名空间被修改时通知消费者
_ConsumerFailureEvent      //当某个其他事件由于事件消费者的失败而被丢弃时通知消费者
_EventDroppedEvent      //当一些其他事件被丢弃而不是传递给请求事件的消费者时通知消费者
_EventQueueoverflowEvent    //当由于传递队列溢出而丢弃事件时通知使用者
_MethodInvocationEvent    //当方法调用事件时通知消费者

2)外部事件。外部事件是非系统类预定义事件,WMI使外部事件提供程序直接定义描述事件的事件类(例如当计算机切换到待机模式的事件为外部事件时)。外部事件能够及时响应触发,解决了内部事件时间间隔的问题。虽然外部事件通常不会包含太多的信息但其事件功能还是极其强大的。以下为常见的外部事件类。

ROOT\CIMV2:Win32_ComputerShutdownEvent ROOT\CIMV2:win32_IP4RouteTableEvent
ROOT\CIMV2:Win32_ProcessstartTrace ROOT\CIMV2:Win32_ModuleLoadTrace
ROOT\CIMV2:Win32_ThreadstartTrace ROOT\CIMV2:Win32_VolumeChangeEvent
ROOT\CIMV2:Msft_WmiProvider*ROOT\DEFAULT:RegistryKeyChangeEvent
ROOT\DEFAULT:RegistryValueChangeEvent

(2)事件消费者

事件消费者(EventConsumer)指的是当事件传递给EventConsumer类时执行的命令动作,也可以理解为我们希望在事件触发时发生的特定操作。事件消费者大体可分为临时事件消费者和永久事件消费者两类。

1)临时事件消费者。只在运行期间关心并处理特定的事件。临时事件消费者必须手动启动,并且不能在 WMI重新启动或操作系统重新启动后持续存在。临时事件消费者只能在其运行时处理事件。

2)永久事件消费者。类实例注册在WMI命名空间中,一直有效直至注销。(永久性的WMI事件是持久性驻留的,并且以SYSTEM权限运行,重启后仍然还在。)永久事件消费者一直运行到其注册被显式取消,并会在WM或系统重新启动时启动。永久事件消费者是系统上 WMI类、过滤器和 COM 对象的组合。

在事件消费者中,系统提供了如下WMI预安装的永久事件消费者的类,它们都属于ROOT\CTMV2以及ROOT\DEFAULT这两个命名空间。我们可以创建这些类的实例以提供永久事件消费者类,提供在过滤器中指定的事件触发时响应的逻辑消费者。例如,使用ActiveScriptEventConsumer 类执行 VBScript/JScript 脚本代码程序。

LogFileEventConsumer        //将事件数据写入指定的日志文件

ActiveScriptEventConsumer   //允许执行任意脚本(VBScript/JScript)

NTEventLogEventConsumer     //创建一个包含事件数据的日志入口点

SMTPEventConsumer           //将事件数据用邮件发送

CommandLineEventConsumer    //执行一个命令

从红队的角度来看,我们比较关注两个类:可以执行VBScript/JScript脚本代码程序的ActiveScriptEventConsumer 类,以及可以运行任意命令的 CommandLineEventConsumer 类。这两个类为我们提供了很大的灵活性,供我们执行任何的有效载荷(payload),完美实现无文件写入

(3)FilterToConsumerBinding
FilterToConsumerBinding(消费者绑定筛选器)将EventConsumer 实例与EventFilter 实例相关联,以明确什么事件由什么消费者处理和负责。如下代码通过创建FilterToConsumer-Binding类的实例来将EventFilter 和EventConsumer 这两个实例连接绑定在一起。

instance  of_FilterToConsumerBinding

{

Filter = $EventFilter;
Consumer = $Consumer;

};

创建永久事件订阅

永久事件订阅是存储在CIM 存储库中的一组静态 WMI类,我们可以通过 MOF 的方式分4个步骤来创建永久事件订阅。如下是具体步骤以及创建永久事件订阅模板的MOF示例

 //1.将上下文更改为Root\subscription,命名空间中的所有标准使用者类都在那里注册
#pragma namespace("\\\\.\\root\\subscription")

//2.创建_EventFilter类的实例并使用其查询属性来存储WQL事件查询
instance of_EventFilter as $EventFilter
{
    Name="Event Filter Instance Name";
    EventNamespace ="Root\\Cimv2";
    Query ="WQL Event query text";
    QueryLanguage ="WQL";
};
//3.创建_EventConsumer派生类的实例(ActiveScriptEventConsumer、SMTPEventConsumer等)
instance of_EventConsumer derived class as $Consumer
{
    Name ="Event Consumer Instance";
    //指定任何其他相关属性
};
//4.创建_FilterToConsumerBinding类的实例
instance of_FilterToConsumerBinding
{
    Filter = $EventFilter;
    Consumer = $Consumer;
};


WMI攻击

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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-lC0jrecL-1713030032116)]

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值