string password = null; //服务器名称或IP地址 private string DNSName = null; //表示管理操作的范围
它是Windows操作系统中管理数据和操作的基础模块。我们可以通过WMI脚本或者应用程序去管理本地或者远程计算机上的资源。对于VC和汇编程序员,想获取诸如CPU序列号和硬盘序列号等信息是非常容易的。...微软为了能达到一种通用性目的(遵守某些行业标准),设计了WMI。它提供了一个通过操作系统、网络和企业环境去管理本地或远程计算机的统一接口集。...WMI Consumers(WMI使用者) 它位于WMI构架的最顶层,是WMI技术使用的载体。如果我们是C++程序员,我们可以通过COM技术直接与下层通信。...这些WMI的使用者,可以查询、枚举数据,也可以运行Provider的方法,还可以向WMI订阅消息。当然这些数据操作都是要有相应的Provider来提供。...其他命名空间是在操作系统或者产品调用有关WMI提供者(WMI Provider)时才被创建出来的。简而言之,WMI存储库是用于存储WMI静态数据的存储空间。
1.信息收集当我们在拿到内网某一台机器权限时,第一时间要做的就是信息收集,WMI中的各种类为我们在内网信息收集方面提供了十分有利的条件,作为红队的我们可以利用如下WMI中各种类的子集来对目标进行全方面信息收集...,我们可以选择windows系统中任意一个事件筛选器来实现我们想要的操作。...4.WMI攻击检测WMI拥有极其强大的事件处理子系统,因在操作系统中所有的操作行为都可以触发WMI的事件,我们可以将WMI理解成是微软操作系统中自带的一个免费IDS(入侵流量检测),WMI的定位就是实时捕获攻击者的攻击操作...,那么我们利用WMI所产生的事件可进一步的判断是否是攻击者的操作,如下是攻击者常见的攻击利用手法,对VMI所触发产生的事件。...VMI Shell工具集被用作C2通道,会创建和修改名称空间对象的实例,因此会触发namespaceCreationEvent和Namespace ModificationEvent事件。
WMI的查询语言来过滤审核特定的事件,一个事件过滤器接受一个WMI事件查询参数,同时EventFilter事件过滤器可以对Intrinsic Events (内部事件)和Extrinsic Events...,一般情况下,WMI为存储在WMI存储库中的对象创建内部事件,提供程序为动态类生成内部事件,如果没有可用的提供程序,WMI将会为动态类创建一个实例,以下为WMI用于报告内部事件的系统类。...RegistryValueChangeEvent(2)EventConsumer(事件消费者)EventConsumer指的是当事件传递给此类时执行的命令动作,也可以理解为我们希望在事件触发时发生的特定操作...重新启动或操作系统重新启动后持续存在。...2)永久消费者类实例注册在WMI命名空间中,一直有效直至注销(永久性的WMI事件是持久性驻留的,并且以SYSTEM权限运行,重启后仍然还在),永久事件使用者一直运行到其注册被显式取消,然后在 WMI 或系统重新启动时启动
一.WMI远程交互当前,WMI支持两种远程交互的协议:DCOM协议和WinRm协议。...我们可以通过这两种协议对远程的机器进行对象查询、事件注册以及WMI类方法的执行等操作,攻击者要有效的利用WMI的两种远程交互协议则需要一定的特权用户凭证,因此大多数的安全厂家通常都不会对WMI这两种协议所传输的恶意内容以及恶意流量进行审查...,这就让攻击者对WMI这两种协议有了可利用的空间,那么,接下来给大家分别介绍WMI所支持的两种协议—DCOM协议和WinRm协议。...DCOM为分布在网络不同节点的两个COM组件提供了互相操作的基础结构。其增强了COM的分布处理性能,支持多种通信协议,加强了组件之间通信的安全保障。...,我们也可以把它看作是一个基于HTTP的WMI API。
在 PowerShell 可以很容易使用 WMI 拿到系统的信息,如果有关注我的网站,就会发现我写了很多通过 WMI 拿到系统的显卡,系统安装的软件等方法,本文告诉大家如果通过 PowerShell 拿到...WMI 类里面的属性 在 Windows 系统通过 Windows Management Instrumentation (WMI) 统一管理系统的配置,在 PowerShell 能使用 WMI 的功能进行获取系统...很少有人知道 WMI 里面包含了多少可以使用的类,包括我之前写的很多博客,实际上也只是里面的很少,通过下面的例子告诉大家如何获取设备里面包含的类 获取 WMI 类 在使用 WMI 之前需要知道 WMI...是能做什么的,这个方法能做的就是描述系统能被管理的资源,在系统里面包含了几百个类,一个类里面包含很多属性 通过 Get-WmiObject 可以找到设备里面所有可以被找到的 WMI 类 Get-WmiObject...: C:\WINDOWS\system32 Organization : BuildNumber : 17763 RegisteredUser : lindexi_gd@outlook.com
Windows管理工具(WMI)是基于Windows操作系统的管理数据和操作的基础设施。...WHERE [CONSTRAINT]> 详细的语法请参考文档,这里不做过多介绍,用的最多的是 data queries ,请在实际查询中使用,需要明确的是WQL仅能查询,无法使用 Methods 进行增删改等操作...Event Consumer ---- Event Consumer 是触发事件是要执行的操作,提供了5个类: ActiveScriptEventConsumer:执行嵌入的VBScript/JSCript...) 比较好的中文资料 [Windows WMI技术总结] (http://1sparrow.com/2019/12/10/Windows%20WMI%E6%8A%80%E6%9C%AF%E6%80%BB...[WMI的攻击,防御与取证分析技术之攻击篇] (https://wooyun.js.org/drops/WMI%20%E7%9A%84%E6%94%BB%E5%87%BB%EF%BC%8C%E9%98%
= 0; RPC_C_IMP_LEVEL_IMPERSONATE = 3; RPC_C_AUTHN_WINNT = 10; RPC_C_AUTHZ_NONE = 0; RPC_C_AUTHN_LEVEL_CALL...Form1: TForm1; implementation function GetWMIProperty(WMIType, WMIProperty: string): string; var Wmi..., Objs, Obj: OleVariant; Enum: IEnumVariant; C: Cardinal; s:string; begin Wmi:= CreateOleObject...('WbemScripting.SWbemLocator'); Objs := Wmi.ConnectServer('.'..., RPC_C_AUTHZ_NONE, nil, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, nil, EOAC_NONE)) then
讲解篇进行理解,WMIC操作时会先由svchost.exe调用WmiPrvSE.exe然后由WmiPrvSE调用指定的程序,指定的cmd则由cmd.exe进行下一步操作,指定的powershell则有powershell.exe...进行下一步操作。...,通信将通过MS-SCMR协议操作DCERPC。...无法知道执行了那些细节操作。若通过 WINRM 协议执行时,WMI 流量看起来像 HTTP,并且再次与通过 SVCCTL 接口时完全不同。...这意味着 WMI技术可以有效地规避任何流量检测其横向移动的操作。
WMI介绍 WMI的全名为"Windows Management Instrumentation"。 从win98开始,Windows操作系统都支持WMI,WMI可以在本地或者远程管理计算机系统。...WMI常用命令 以下操作均在win7上执行。...3.1 WMI连接 首先我们执行如下命令,将输出结果保存在靶机winserver2008对应的C:\Windows\Temp目录下: wmic /node:192.168.135.15 /user:administrator...\windows\temp\shell.txt 在获取cmd之后,其实是可以进行任意操作的,但是由于wmic的隐蔽性更好,所以在这里可以使用wmic的命令来进行操作。...总结 本文对WMI的基本用法做了一个归类,其中参考了众多师傅的文章,WMI的用法远不止于此,而且本文是未对存在杀软的环境进行分析,等以后有机会再去探讨吧。
可以使用wmic来进行操作。通俗的可以说:WMI内部出现什么变化就由WMI事件来进行通知。...则将Payload替换成C2的exe或者dll或者ps1即可。...FilterToConsumerArgs; 注意:上述脚本出现的WQL语句,也可以指定WITHIN来指定间隔时间,以秒为单位,但是需提前指定TimerID,可以自行修改PS1脚本进行完善,将添加后门、删除后门的操作集成到一个脚本内完成...,同时免杀的操作可以针对性的进行混淆或编码的操作。...若想做成远程下载格式,则需要将Powershell做好免杀的操作。
/// [STAThread] static void Main(string[] args) { try { ManagementClass c = new ManagementClass...("Win32_DiskQuota"); ManagementObject quota = c.CreateInstance(); quota["Limit"] = 400000000; quota["...disk.Get(); quota["QuotaVolume"] = disk; quota["User"] = account; quota.Put(); // commit ManagementClass c...= new ManagementClass("Win32_DiskQuota"); Console.WriteLine(c.SystemProperties); foreach (ManagementObject...o in c.GetInstances()) Console.WriteLine("Next : {0}", o.Path); } catch(Exception e) { Console.WriteLine
WMI 为您提供与系统管理信息和基础 WMI API 交互的标准方法。WMI 主要由系统管理应用程序开发人员和管理员用来访问和操作系统管理信息。..." 执行无缝的本地或远程管理操作。 WMI 结构由以下三层组成: " 客户端 使用 WMI 执行操作(例如,读取管理详细信息、配置系统和预订事件)的软件组件。 ...此命名空间包括下列支持 WMI 操作的第一级类对象: " ManagementObject 或 ManagementClass:分别为单个管理对象或类。 ...例如,WMI 广泛利用 .NET 集合类并使用推荐的编码模式,如 .NET 异步操作的“委托”模式。因此,使用 .NET 框架的开发人员可以使用他们的当前技能访问有关计算机或应用程序的管理信息。...其实就是SQL操作,这种语句被成WQL(WMI Query Language),实际上是标准SQL的一个子集加上了WMI的扩展. 2、WQL是个只读的查询语言,我们只能查询响应的数据,不能用UPDATE
在《WMI技术介绍和应用——WMI概述》中介绍了我们可以使用C++、.net或者支持ActiveX技术的脚本语言来使用WMI。...但是各种语言对WMI的控制能力是不同的,比如脚本语言只能用来从WMI获取数据或者接收事件通知。而C++还可以编写WMI提供者和发送消息。...和脚本语言相比,C++对WMI有强大的控制和定制性,当然也具有更大的复杂性。本文将主要讲述使用VC如何搭建一个使用WMI的框架。...在WMI Consumers层,我们发现,C++程序是直接和WMI COM API进行交互。所以我们要先初始化COM组件库。...完成相关功能,比如查询硬盘ID,实际执行查询的操作是在WMI服务中执行的,而不是我们的应用。
PS C:\Users\AT> Get-CimInstance -query 'Select * from Win32_BIOS' -Namespace root/cimv2 SMBIOSBIOSVersion...: P85 Ver. 01.04 SerialNumber : 5CD7204SZ9 Version : HPQOEM - 0 PS C:...8482144256 HP ProBook 440 G4 HP PS C:
2021 WMI利用 (横向移动) 谢公子学安全 讲在前面 作者:pingpig@深蓝攻防实验室 上一篇文章我们简单的解释了什么是WMI,WMI做什么,为什么使用WMI。...本文是笔者在阅读国内部分的解释WMI横向移动的文章后写下的一篇文章,希望帮助同学们在攻防中进入横向移动后根据实际场景利用WMI来解决问题。...信息收集 注意:信息收集需要根据实际场景来进行收集,而不是说笔者罗列的就是必须要做,WMI可以做的信息收集操作远不至笔者罗列的如此,希望同学能够举一反三,自由搭配,参考微软官方文档,根据实际情况获取所需...,工具可以帮助您无需理解或多或少的知识,您只需读懂README即可,来帮助您获取shell,上传,下载,创建服务等操作,笔者会在此段中罗列部分WMI的工具以及部分命令用作横向移动,并在第三段给出部分实际利用的意见...它可以执行文件传输操作、横向移动和主机侦察。CHANGE_USER命令做存储凭据使用。它有一个 shell 功能,可以使用 command_exec 触发,文件操作也可以远程执行。
它属于管理数据和操作的基础模块,设计WMI的初衷是为了能达到一种通用性,通过WMI去操作系统、应用程序等去管理本地或者远程资源。...它支持分布式组件对象模型(DCOM)和Windws远程管理(WinRM),用户可通过WMI服务访问、配置、管理和监视Windows所有资源的功能,对于其他的Win32操作系统来讲WMI是一个非常不错的插件...,不能对类或者实例执行创建、删除、修改等操作。...WMI Client 在WMI交互时有很多客户端,我们在实战中可以根据不同的场景适当的去选择已有的客户端进行操作,接下来详细介绍可以用于实战中的WMI Client。...不会浏览命名空间,需要我们手动选择连接到指定命名空间),默认选择root\cimv2,届时,通过Wbemtest工具进行枚举对象实例、执行查询、创建和修改WMI类和对象操作。
WMI有一组API我们不管使用VBScript、PowerShell脚本还是利用C#的来访问WMI的类库,都是因为WMI向外暴露的一组API。...WMI总是能够响应用户的访问,那是因为它有一个一直运行的Windows服务,名字叫Winmgmt。停止这个服务,所有对WMI的操作都将没有反应。 WMI是可扩展的。...人人都知道WMI能干很多事情,读取本机硬盘信息、读取远程计算机的用户信息、读取域用户信息等等。基本上你能想到的获取或者更改资源的操作它都能干。可谓吃得少干得多。它为什么这么能干呢?...这基于WMI的可扩展性。WMI对资源的操作,不是它自己实现了什么方法,而完全取决于向它注册的提供程序。 WMI是管理员日常必备的强大工具之一,是脚本伴侣。...-CimSession $s # - 8.创建与删除进程 # Get-CimInstance -Namespace ROOT\CIMV2 -Class Win32_Process -Path "'C:
########################################################### import os, sys import time import wmi...######################################### def get_memory_info(): tmpdict = {} c...= wmi.WMI () cs = c.Win32_ComputerSystem() os = c.Win32_OperatingSystem() ...pfu = c.Win32_PageFileUsage() tmpdict["MemTotal"] = int(cs[0].TotalPhysicalMemory)/1024/
本文告诉大家如何通过 WMI 获取补丁 通过 Win32_QuickFixEngineering 可以获取系统启动的服务 Get-WmiObject Win32_QuickFixEngineering
领取专属 10元无门槛券
手把手带您无忧上云