09
2024
05
10:09:02

WMI是什么,做什么,为什么使⽤WMI

WMI是Windows在Powershell还未发布前,微软⽤来管理Windows系统的重要数据库⼯具,WMI本身的组织架

构是⼀个数据库架构,WMI 服务使⽤ DCOM(TCP 端⼝135)或 WinRM 协议

WMI Consumers(WMI使⽤者)

它位于WMI构架的最顶层,是WMI技术使⽤的载体。

如果我们是C++程序员,我们可以通过COM技术直接与下层通信。

⽽脚本语⾔则要⽀持WMI Scripting API,间接与下层通信。

对于.net平台语⾔,则要使⽤System.Management域相关功能与下层通信。

这些WMI的使⽤者,可以查询、枚举数据,也可以运⾏Provider的⽅法,还有WMI事件通知。当然这些数据操作都

是要有相应的Provider来提供。

WMI Infrastructure(WMI基础结构)

WMI基础结构是Windows系统的系统组件。它包含两个模块:包含WMI Core(WMI核⼼)的WMI Service(WMI服务)(Winmgmt)和WMI Repository(WMI存储库)。WMI存储库是通过WMI Namespace(WMI命名空间)组织起来的。在系统启动时,WMI服务会创建诸如root\default、root\cimv2和root\subscription等WMI命名空间,同时会预安装⼀部分WMI类的定义信息到这些命名空间中。其他命名空间是在操作系统或者产品调⽤有关WMI提供者(WMIProvider)时才被创建出来的。简⽽⾔之,WMI存储库是⽤于存储WMI静态数据的存储空间。WMI服务扮演着WMi提供者、管理应⽤和WMI存储库之间的协调者⻆⾊。⼀般来说,它是通过⼀个共享的服务进程Svchost来实施⼯作的。当第⼀个管理应⽤向WMI命名空间发起连接时,WMI服务将会启动。当管理应⽤不再调⽤WMI时,WMI服务将会关闭或者进⼊低内存状态。如我们上图所示,WMI服务和上层应⽤之间是通过COM接⼝来实现的。当⼀个应⽤通过接⼝向WMI发起请求时,WMI将判断该请求是请求静态数据还是动态数据。

WMI做什么

在Powershell未发布前⽤来管理Windows 2000、Windows95、Windows98、WindowsNT等操作系统 ,当然如今的所有Windows系统依旧可以使⽤WMI来进⾏管理。

为什么使⽤WMI

对于Windows运维管理⼈员

对于Windows运维管理功能主要是:访问本地主机的⼀些信息和服务,可以管理远程计算机(当然你必须要拥有⾜够的权限,并且双⽅开启WMI服务,且135端⼝的防⽕墙策略是⼊站出站允许的),⽐如:重启,关机,关闭进程,创建进程等。可以⾃定义脚本来进⾏⾃动化运维,⼗分⽅便,例如可以使⽤wmic、wbemtest⼯具。WMIC命令解释。

使⽤Powershell来操作WMI管理:

Powershell查询命名空间

Get-WmiObject -Class __namespace -Namespace root | select name




PS E:\powershell> Get-WmiObject -Class __namespace -Namespace root | select name
Name----subscriptionDEFAULTCIMV2msdtcMicrosoftIISv2SECURITYRSOPPEHWebAdministrationStandardCimv2WMIAccessLoggingdirectoryPolicyInventoryLoggingInteropHardwareServiceModelMicrosoftaspnetAppv





Powershell查询BIOS信息

Get-WmiObject -Class Win32_BIOS

PS E:\powershell> Get-WmiObject -Class Win32_BIOS
SMBIOSBIOSVersion : R16ET32P (1.18 )Manufacturer      : LENOVOName              : R16ET32P (1.18 )SerialNumber      : PF33414DVersion           : LENOVO - 200




Powershell查询计算机信息

Get-WmiObject -Class Win32_Operatingsystem

PS E:\powershell> Get-WmiObject -Class Win32_Operatingsystem
SystemDirectory : C:\Windows\system32Organization    :BuildNumber     : 20348RegisteredUser  :SerialNumber    : 00454-60000-00001-AA244Version         : 10.0.20348




Powershell查询

Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct


这⾥Powershell操作WMI的对象使⽤的是内置模块Get-WmiObject,以及查询的类为Win32_Service类,Win32_Service的其他类在官⽅⽂档中已经罗列详细:Win32类计算机硬件类、操作系统类等,但是要注意Win32_Service不是唯⼀可以操作WMI的类,以下类可以交替使⽤。

  • WIn32_Service

  • Win32_BaseService

  • Win32_TerminalService

  • Win32_SystemDriver

使⽤wmic来操作WMI管理:

#查询windows机器版本和服务位数和.net版本

wmic os get caption

wmic os get osarchitecture

wmic OS get Caption,CSDVersion,OSArchitecture,Version

#查询本机所有盘符

fsutil fsinfo drives

shell wmic logicaldisk list brief

shell wmic logicaldisk get description,name,size,freespace /value

#查看系统中⽹卡的IP地址和MAC地址

wmic nicconfig get ipaddress,macaddress

#⽤户列表

wmic useraccount list brief

#查看当前系统是否有屏保保护,延迟是多少

wmic desktop get screensaversecure,screensavertimeout

#域控机器

wmic ntdomain list brief

#查询杀软

wmic /namespace:\\root\securitycenter2 path antispywareproduct GET

displayName,productState, pathToSignedProductExe && wmic

/namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState,

pathToSignedProductExe

#查询启动项

wmic startup list brief |more

#获取打补丁信息

wmic qfe list

#启动的程序

wmic startup list brief

#启动的程序

wmic startup list full

对于网络安全⼈员

对于⽹络安全⼈员在攻防当中,利⽤WMI进⾏横向移动、权限维持、权限提升、包括免杀都可以进⾏利⽤




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/5976.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: