WMI简介
WMI ( Windows Management Instrumentation, Windows管理规范)是Windows 2000/XP管理系统的核心,属于管理数据和操作的基础模块。设计WMI的初衷是达到一种通用性,通过WM操作系统、应用程序等来管理本地或者远程资源。它支持分布式组件对象模型(DCOM)和Windows远程管理(WinRM),用户可通过 WMI服务访问、配置、管理和监视 Windows所有资源的功能。对于其他的Win32操作系统来讲,WMI是一个非常不错的插件,同时也是测试人员在攻防实战中的一个完美的“无文件攻击”入口途径。
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)class 代表要查询的类名称。
5)where clause为可选项,代表要过滤的信息,用来定义搜索范围。
查询用例
1)在CMD命令行中执行 wbemtest 命令进入 WMI测试器中,如图所示
2)在使用之前我们发现需要进行连接,选择默认连接选项即可、如图所示。
3)连接默认的命名空间后可以看到如图所示的内容。
4)通过单击“查询”模块、可执行 WQL语句查询,如图所示。
5)在此输入要执行的 WOL 语句。
SELECT * FROM WIN32_Process where Name Like "%cmd%"
7)执行以下命令,从任务管理器中查看,如图所示
tasklist //打开任务管理器
8)除了WIN32_Process属性之外,还有很多属性。如需查询更多的WMI属性,可使用PowerShell 中的命令。PowerShell是 Windows 下功能强大的脚本语言,包含丰富的与 WMI进行交互的功能。
9)通过PowerShell与WMI进行更多的交互,如图
powershell //切换到Powershell
10)若要通过PowerShell查看当前系统中的所有属性,可以执行如下命令,执行结果如图所示。
get-wmiobject -list //查看当前系统中的所有属性