Windows WMI 详解(一)

Windows WMI 详解(一)

1. WMI简介 WMI全称为Windows Management Instrumentation,即Windows管理规范,是Windows 2K/XP管理系统的核心。它属于管理数据和操作的基础模块,设计WMI的初衷是为了能达到一种通用性,通过WMI去操作系统、应用程序等去管理本地或者远程资源。它支持分布式组件对象模型(DCOM)和Windws远程管理(WinRM),用户可通过WMI服务访问、配置、管理和监视Windows所有资源的功能,对于其他的Win32操作系统来讲WMI是一个非常不错的插件,同时也是测试人员在攻防实战中一个很完美的“无文件攻击”入口途径。

2.WQL语言 WQL也就是WMI的SQL,WQL的全称是WMI Query Language(Windows管理规范查询语言),主要用于查询WMI任何托管资源,其查询语言与SQL语法相似,但只能执行数据的查询,不能对类或者实例执行创建、删除、修改等操作。

1.基础语法SELECT properties[,properties] FROM class [where clause]

1)SELECT代表着WQL语句开始。

2)properties代表是要查询的属性名称。

3)FROM指定包含SELECT语句中列出的属性的类。

4)clas代表要查询的类名称。

5)where clause可选项,代表要过滤的信息,用来定义搜索范围。

2.查询用例1)在CDM命令行中执行wbemtest命令进入WMI测试器中,如图1-1所示。

图1-1 执行wbemtest命令进入WMI测试器中2)在使用之前我们现需要进行连接,选择默认连接选项即可,如图1-2所示。

图1-2 选择默认连接选项3)通过连接默认的命令空间,可以看到如下内容,如图1-3所示。

图1-3 连接默认的命令空间内容 4)通过点击“查询”模块,可执行WQL语句对所需要的内容进行查询,如图1-4所示。

图1-4 通过查询模块执行WQL语句查询5)在此输入我们要执行的WQL语句。

代码语言:bash复制SELECT * FROM WIN32_Process where Name Like "%cmd%"

6)上述的查询语句将会把当前正在运行的进程的可执行文件名称中包含“cmd”的结果返回到查询结果中。更具体地说,此查询语句将返回WIN32_Process类的每个实例的所有属性的名称字段中包含“CMD”的结果,如图1-5所示。

图1-5 查询当前进程可执行文件名称中包含“cmd”的结果 7)执行命令从任务管理器中查看,如图1-6所示。

代码语言:bash复制tasklist //打开任务管理器

图1-6 从任务管理器中查看8)除了WIN32_Process属性之外还有很多属性,如需查询更多的WMI属性,我们可以通过Powershell中的命令来进行查看。Powershell是windows下功能很强大的脚本语言,其内部包含了及其丰富与WMI进行交互的功能。

9)通过Powershell与WMI进行更多的交互,如图1-7所示。

代码语言:bash复制powershell //切换到Powershell

图1-7通过Powershell与WMI进行更多的交互界面10)若要通过Powershell查看当前系统中所有属性可以执行如下命令操作,执行完毕后如图1-8所示。

代码语言:bash复制Get-wmiObject -List //查看当前系统中所有属性

图1-8 通过Powershell命令查看当前系统中所有属性3. WMI Client 在WMI交互时有很多客户端,我们在实战中可以根据不同的场景适当的去选择已有的客户端进行操作,接下来详细介绍可以用于实战中的WMI Client。

1.PowerShellPowerShell是Windows操作系统下非常强大的脚本语言,可以通过PowerShell管理Windows系统中的所有功能。 Poweshell支持WMI和CIM两种命令方式与WMI进行交互,两种命令方式的不同的点在于WMI命令只能用做于DCom协议,而CIM命令不仅支持DCom协议还支持WINRm协议,由此可见,CIM命令与WMI交互时更具有一定的灵活性,下述为Powershell可与WMI交互的功能。

Get-WmiObjectGet-CimAssociatedInstanceGet-CimClassGet-CimInstanceGet-CimSessionSet-WmiInstanceSet-CimInstanceInvoke-WmiMethodInvoke-CimMethodNew-CimInstanceNew-CimSessionNew-CimSessionOptionRegister-CimIndicationEventRegister-WmiEventRemove-CimInstanceRemove-WmiObjectRemove-CimSession2.Wmic.exewmic.exe是一款主要用于与WMI交互的命令行管理工具,他不但可以管理本地计算机,还能够在足够的权限下管理域控中的其他计算机,WMIC是windows自带的一个功能,计算机只要支持WMI即可使用WMIC,WMIC因其强大的功能以及Windows免安装在内网渗透中扮演着重要的角色。

3.WbemtestWbemtest是Windows自带的一个与WMI基础结构交互的图形化工具,它支持任何windows系统,在运行中输入wbemtest即可打开,在弹出连接页面中选择命名空间(WBEMTEST不会浏览命名空间,需要我们手动选择连接到指定命名空间),默认选择root\cimv2,届时,通过Wbemtest工具进行枚举对象实例、执行查询、创建和修改WMI类和对象操作。

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

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

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

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

相关推荐

迷你世界武器大全集 迷你世界武器制作
求正规英国365网址

迷你世界武器大全集 迷你世界武器制作

📅 07-11 👁️ 3545
带肛塞一周戴多久比较好?
be七365官网

带肛塞一周戴多久比较好?

📅 07-07 👁️ 741
从星座的角度分析传奇人物,孝庄是摩羯,媚娘却和我想的不一样
4、绝地求生辅助退款
be七365官网

4、绝地求生辅助退款

📅 07-02 👁️ 2789
我的世界手机版存档怎么用?minecraft pe手机版存档放在哪
365bet中文官方网站

我的世界手机版存档怎么用?minecraft pe手机版存档放在哪

📅 07-03 👁️ 2831
一起玩耍一起飞!盘点魔兽世界中会飞的小宠物
365bet中文官方网站

一起玩耍一起飞!盘点魔兽世界中会飞的小宠物

📅 07-10 👁️ 7218