WMI
Windows Management Instrumentation(WMI)
简介
WMI是Windows 2K/XP管理系统的核心,对于其他的Win32操作系统,WMI是一个有用的插件。WMI以CIMOM
为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。WMI可以当作一组API来与Windows系统进行交互,整个运行过程都在内存中进行,不会留下任何痕迹。
使用方式
- cmd下直接使用
wmic
- powershell:调用
Get-WmiObject
模块 - WMI Query Language - WQL:
通过powershell执行WQL:
Get-WmiObject -Query 'Select ...'
WMIC 动作
- List -> 列出信息
- Get -> 取值
- Call -> 调用方法
- Set -> 设置某个属性的值
- Create -> 创建一个实例
- Delete -> 删除一个实例
- Assoc -> 显示关联
常用用法:
- 查看别名:
wmic alias list brief
- 查看系统一些内容:
由于list列出的内容较多,此处可使用brief
输出少部分,如果想要查看某一个值可以使用wmic some_class where 'name="xxx"' get xxx
,如果不知道具体名称,可以使用like,如wmic some_class where 'like name="ls%" get xxx'
# 列出系统安装的软件
wmic product list brief
# 列出系统运行的服务
wmic service list brief
# 列出系统运行的程序
wmic process list brief
# 查找域控
wmic ntdomain list brief
# 查找系统登录的用户
wmic logon list brief
# 查看已安装的补丁
wmic qfe list brief
# 查看进程启动时执行的命令
wmic process where 'name="xx.exe"' get commandline
wmic process where ProcessId=144 get commandline
- 查看某个类所有可调用的函数:
以下以win32_process
举例:
powershell2.0 以上:
Get-WmiObject -Query 'Select * From Meta_Class WHERE __Class = "win32_process"' | Where-Object { $_.PSBase.Methods } | Select-Object Name, Methods
powershell3.0 以上:
Get-CimClass -ClassName win32_product | where CimClassMethods -ne $null | select CimClassName,CimClassMethods
- 调用类的函数
举例:
# 查看porcess可调用的函数:
Get-WmiObject -Query 'Select * From Meta_Class WHERE __Class = "win32_process"' | Where-Object { $_.PSBase.Methods } | Select-Object Name, Methods
Name Methods
---- -------
Win32_Process {Create, Terminate, GetOwner, GetOwnerSid...}
通过查看可调用的方法可以知道我们可以使用call
来调用方法:
# 创建一个计算器进程
wmic process call create calc
# 关闭计算器进程(实际是挂起)
# 此处使用name关闭有时不太好用,可以使用like或者是processid来关闭
wmic process where processid=18084 call terminate
- powershell 使用wmi
Get-WmiObject
在powershell3.0之后已经过时,使用Get-CIMInstance
代替,但是仍然可以使用。
# 查询进程:
# 相对使用wmi命令输出的结果能更直观地查看(2列横向表格输出)
Get-WmiObject -class win32_process -filter "name='lsass.exe'"
- wmi连接远程主机
前提是远程主机开放了135端口且WMI服务开启
# 在远程主机上创建进程执行命令
wmic /node:1.1.1.1/user:administrator /password:123456 process call create "cmd.exe /c xxx"
- 列举本地主机中已安装的杀软:
wmic /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
目前wmi了解较浅,还需要后续深入了解
附:
- Powershell API 查询:https://ss64.com/ps/
网友评论