WMI 101 For Pentester

WMI 101 For Pentester

PowerShell已经在各类系统中普及.实现了跨平台,对我来说它的强大之处就是能和系统几乎所有的服务进行交互,所以攻击者喜欢使用PowerShell进行攻击,但是现在检测的规则也越来越多,其实除了它,Windows的WMI(Windows Management Instrumentation)也很香,本文会教你快速入门WMI的使用.

WMI简介

WMI,是Windows 2K/XP管理系统的核心;对于其他的Win32操作系统,WMI是一个有用的插件。WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API;相反,操作系统的不同部分都可以插入WMI,如图所示,工具软件和脚本程序可以方便地读写WMI。

定义

WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。

探索Namespaces

查询所有的命名空间

wmic /namespace:\\root path __namespace

-w825

使用ps

Get-WmiObject -namespace "root" -class "__Namespace" | Select Name

-w1000

使用WQL

Get-WmiObject -Query "Select * from __Namespace" -Namespace Root | select Name

-w848


探索Classes

获取相应命名空间的类列表

Get-WmiObject -Namespace root\cimv2 -List

-w1054

每个命名空间都包含类
类包含

  • 属性-可以查询的信息
  • 方法-执行的功能
  • 实例
  • 事件-生成有关WMI数据和服务更改的通知。

WQL查询语言

可以对WQL查询进行如下分类:

  • 实例查询
  • 事件查询
  • 元数据查询

demo:

获取temp文件夹内容

Select * From Cim_DataFile Where Drive = "C:" And Path = "\\temp\\"

powershell

powershell Get-WmiObject -Query 'Select FileName From Cim_DataFile Where Drive = "C:" And Path = "\\Windows\\"'

-w1234

WMI Verbs

usage with WMIC:

  • List – 列出信息
  • Get – 取值
  • Call – 调用方法
  • Set
  • Create
  • Delete
  • Assoc - 显示关联

WQL查询一些别名

wmic alias list brief

-w1060

根据别名查询信息,比如进程

wmic process where name='lsass.exe' list brief

-w643

使用get获得信息

wmic process where name='winword.exe' get name, executablepath

-w934

wmic process where name='winword.exe' call GetOwner

-w799

WMI调用可执行程序

wmic process call create 'calc.exe'

终止

wmic process where name='notepad.exe' call Terminate

使用powershell

Get-WmiObject -Class Win32_Process -Filter 'name="winword.exe"'

获得更多属性

Get-CimInstance -Class Win32_Process -Filter "name='winword.exe'" -Property Caption, ProcessID, ExecutablePath

使用WQL

Get-WmiObject -Query "Select Caption,ProcessID,ExecutablePath from Win32_Process where name='winword.exe'" -Namespace root\cimv2

得到所有方法

(Get-WmiObject -Class Win32_Process -List).Methods

调用方法

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList @(calc.exe)

Invoke-CimMethod -ClassName Win32_Process -Name Create -Arguments @{Commandline = 'calc.exe'}

WMIC横向移动

wmic /NODE:"servername" /USER:"yourdomain\administrator" /PASSWORD:password OS GET Name
$cred = Get-Credential domain\user
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList @(calc.exe) -ComputerName servername -Credential $cred

Linux下

pth-wmic -U domain/adminuser%LM:NT //host "select * from Win32_ComputerSystem"

不过这些功能其实CS都集成的有.XD

原文地址:https://www.ethicalhacker.net/features/root/wmi-101-for-pentesters/


文章作者: Wing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wing !
评论
 上一篇
Mac Iterm2 终端美化 Mac Iterm2 终端美化
Mac Iterm2 终端美化前言记录一下今天主题配置情况 Result: Begin SettingsZSH和oh my zsh的安装就省略过了 主题选择powerlevel10k,在9k的基础上提升了流畅性,官方说的是10-100倍,
2020-03-01
下一篇 
红队作战手册-By Klion 红队作战手册-By Klion
红方人员实战手册声明Author : By klion Date : 2020.2.15 寄语 : 愿 2020 后面的每一天都能一切安好 分享初衷一来, 旨在为 "攻击" / "防御"方 提供更加全面实用的参考 还是那句老闲话
2020-02-18
  目录