WMI学习 taro Posted on Apr 5 2021 windows WMI ## 定义 WMI可以描述为一组管理Windows系统的方法和功能。我们可以把它当作API来与Windows系统进行相互交流。WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是Windows系统自带功能。而且整个运行过程都在计算机内存中发生,不会留下任何痕迹。这一点是其它渗透测试工具所不能相比的。 ![](/api/file/getImage?fileId=606aaea783f5f2000d00005e) ## 用法 ### 信息收集 | 功能 | 命令 | | ---- | ---- | | 检索系统已安装的软件 | wmic product list brief | | 搜索系统运行服务 | wmic service list brief | | 搜索运行中的程序 | wmic process list brief | | 搜索启动程序 | wmic startup list brief | | 搜索共享驱动盘 | wmic netuse list brief | | 搜索时区 | wmic timezone list brief | | 搜索用户帐户 | wmic useraccount list brief | | 搜索计算机域控制器 | wmic ntdomain list brief | | 搜索登录用户 | wmic login list brief | | 搜索已安装的安全更新 | wmic qfe list brief | ### 执行任务 | 功能 | 命令 | | ---- | ---- | | 获取程序全称 | wmic product where "name like '%a%'" get name | | 卸载程序 | wmic product where name="FortiClient" call uninstall | | 停止程序 | wmic product where name="FortiClient" call terminate | ## powershell 自从PowerShell的出现,WMI功能已经被完全整合到了PowerShell里面。在PowerShell中, WMI拥有多个类型的种类,每个种类都代表一个内部组件: - Win32_proces代表当前系统所运行程序。 - Win32_Service代表当前系统所运行服务。 每个种类都有它自己的属性,我们可以使用WQL语言来进行查询。它的语法与SQL语言非常接近。那么要在Windows环境中列出所有种类, 我们可以使用 `PowerShell` `Get-WmiObject cmdlet`来实现。 | 功能 | 命令 | | ---- | ---- | | 列出 WMI 类Listing WMI Classes | Get-WmiObject -List | | 显示 WMI 类(检索有关计算机信息的 WMI 类:Win32_OperatingSystem)详细信息 | Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName. | ## 执行代码 ## 本地执行 ```powershell wmic process call create cmd ``` ## 远程执行 ```powershell wmic /node:192.168.10.220 /user:administrator /password:password process call create "cmd.exe /c ipconfig" ``` ## 设置共享网络驱动盘 ```powershell net use x:\\192.168.10.220\C$\Users\Public password /user:administrator ``` >https://www.bookstack.cn/read/powershell-6-zh/102.md > https://www.secpulse.com/archives/72493.html WQL学习 IRIS(demo)