花式沉默Defender

编者注:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

前言

总结了一下现在还能用的关闭Defender的方法,部分是原创,一部分借鉴的大佬。觉得字多的同学可以直接跳过思路查看步骤进行实操。

修改注册表关闭Defender

1.测试环境

windows10 20H2

windows10 21H2

windows11

图片

2.思路

微软为了提供用户更妥善的安全保护,在2020年8月更新中更新了支持文档。若用户安装了其他杀毒软件,Defender将自动关闭;若用户卸载杀毒软件解决方案,Defender将强制自动开启。那我们可不可以模拟杀毒软件的行为,让Defender误以为我们安装了杀软,从而达到关闭Defender的目的呢?答案是可以的。

将系统注册表备份,安装杀毒软件后再次提取注册表信息并进行对比。最后将疑似影响Defender运行的键值进行改动对比,最终得出几个键值的排列组合可以达到沉默Defender的作用。

HKLM\SOFTWARE\Policies\Microsoft\Windows Defender下,DisableAntiSpyware的值改为1,DisableAntiVirus的值改为1。

默认情况下并无这两个键值。

图片

更改后:

图片

HKLM\SOFTWARE\Microsoft\Security Center\Provider\Av\{D68DDC3A-831F-4fae-9E44-DA132C1ACF46}下,STATE改为 0x00060100。

图片

3.步骤

管理员模式打开命令行,执行:

reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /t reg_dword /d 1 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiVirus /t reg_dword /d 1 /f
reg add "HKLM\SOFTWARE\Microsoft\Security Center\Provider\Av\{D68DDC3A-831F-4fae-9E44-DA132C1ACF46}" /v STATE /t reg_dword /d "0x00060100" /f
4.成果

4.成果

修改完后重启,Defender仍然运行,但杀毒引擎已失效。

这里随意丢上一个msf的木马,成功绕过检测。

图片

 5.总结

1)需要管理员权限操作。

2)重启后才能生效。

3)执行完reg add命令后需要检查注册表是否生效,有时执行后注册表未更新,需多执行几次。

4)某些版本只需要更改DisableAntiVirus和STATE这两个键值即可生效。

PowerShell

 1.测试环境

windows10 1809

windows11

图片

图片

2.步骤

管理员权限打开powershell,输入如下命令:

$preferences = Get-MpPreference
Set-MpPreference -DisableRealtimeMonitoring (!$preferences.DisableRealtimeMonitoring)

3.成果

实时保护已关闭,且木马正常运行。

图片

4.总结

1)实时监控虽然关闭,但扫描引擎还正常运行,此时主动扫描木马还是会被检测到。

2)某些系统版本不生效,如windows10 20H2。

图片

TrustedInstaller权限关闭Defender

 1.原理

TrustedInstaller权限是windows vista或7里面为了系统安全起见而设立的,为系统最高权限,比我们所熟知的System权限更高。

在Windows XP及以前,System账户与管理员组对系统文件都有着完全访问的权限。这意味着以管理员身份运行的程序可以任意更改系统,降低了系统安全性。TrustedInstaller则改变了这一情况,使得只有拥有TrustedInstaller令牌的系统进程才能更改系统重要内容,而其他大部分系统服务就没有权限。   这是因为,以SYSTEM权限运行的程序不一定同时拥有TrustedInstaller的权限,只有通过了Service Control Manager(服务启动控制器)的验证后才能获取。

所以SYSTEM权限做不到的事情,我们可以尝试通过TrustedInstaller权限实现。

2.思路

我们可以利用工具获取TrustedInstaller权限,从 Nirsoft 官方页面(https://www.nirsoft.net/utils/advanced_run.html)下载AdvancedRun

将可执行文件AdvancedRun.exe解压出来后即可执行如下命令将程序作为TrustedInstaller启动。

AdvancedRun.exe /EXEFilename "c:\windows\system32\cmd.exe" /RunAs 8 /Run

此时弹出一个cmd,虽然查看当前用户显示System,但我们使用 whoami /priv查看特权还是能对比出与System的差别的。

TrustedInstaller:

图片

System:

图片

接下来我们尝试利用TrustedInstaller权限来关闭Defender。

创建一个vbs脚本来自动化关闭Defender,内容如下。

'Description: Script to disable the Microsoft Defender Antivirus service
Set ServiceSet = GetObject("winmgmts:").ExecQuery _("select * from Win32_Service where Name='WinDefend'")For Each Service In ServiceSet   RetVal = Service.StopService()    If RetVal <> 0 Then       MsgBox "Error " & RetVal   End If   Service.ChangeStartMode("Manual")Next

利用wscript.exe执行脚本。

AdvancedRun.exe /EXEFilename "%windir%\system32\wscript.exe" /CommandLine '"C:\Users\Pepper\Downloads\advancedrun\1.vbs"' /RunAs 8 /Run

返回错误。

图片

Error 2 表示用户没有所需的访问权限。

既然没有对服务的访问权限,那我们可以试一下能不能直接关闭Defender的进程,将上面的脚本改动一下,关闭MsMpEng.exe进程:

Set ServiceSet2 = GetObject("winmgmts:\\.\root\cimv2")Set ServiceSet = ServiceSet2.Execquery("select * from Win32_Process where Name='MsMpEng.exe'")For Each Service In ServiceSetRetVal = Service.Terminate() If RetVal <> 0 Then MsgBox "Error " & RetValEnd IfNext

又返回了Error2,思路似乎到这里就断了。但是之前研究Defender注册表的时候发现了一个表项中存储着Defender的运行信息,当时将权限提升到System也没有修改成功。

图片

试着以TrustedInstaller权限修改一下。

图片

图片

轻松干掉Defender。

3.步骤

1)TrustedInstaller权限启动cmd。

AdvancedRun.exe /EXEFilename "c:\windows\system32\cmd.exe" /RunAs 8 /Run

2)执行reg add命令,修改注册表

reg add "HKLM\SOFTWARE\Microsoft\Windows Defender" /v DisableAntiSpyware /t reg_dword /d 1 /f

4.总结

与方案一相比,不需要重启,但是需要上传工具获取TrustedInstaller权限。

修改进程Token,关闭杀毒引擎

 1.原理

利用Windows 提供的OpenProcessTokenAPI 与进程令牌进行交互,MSDN声明必须PROCESS_QUERY_INFORMATION有权使用OpenProcessToken,但实际未受保护的进程可以通过PROCESS_QUERY_INFORMATION操作受保护进程的令牌。使用这种技术,攻击者可以强行删除MsMpEng.exe令牌中的所有权限,并将其从系统降低到不受信任的完整性。对不受信任的完整性的削弱会阻止受害进程访问系统上的大多数安全资源,从而在不终止进程的情况下悄悄地使进程失去能力。

2.思路

已经有师傅写好代码并开源了(https://github.com/pwn1sher/KillDefender),这里大概讲解一下思路。

图片

首先执行EnableDebugPrivilege函数提升当前进程权限,然后利用getpid函数获取到我们想修改Token的进程的PID,实现逻辑是遍历当前进程名,匹配后返回该进程PID。

图片

利用OpenProcess打开指定进程,并调用OpenProcessToken获取该进程Token。

图片

接下来需要使用 SetPrivilege()函数将进程的权限全部都去除掉。

图片

SetPrivilege的实现和之前提到过的EnableDebugPrivilege函数实现方式类似,主要用到三个函数:OpenProcessToken获取进程的令牌句柄,LookupPrivilegeValue查询进程权限,AdjustTokenPrivileges修改进程权限。注意EnableDebugPrivilege是修改当前进程的DEBUG权限,SetPrivilege是修改指定进程的指定权限。

图片

最后使用SetTokenInformation设置信息替换访问令牌的现有信息,破坏其完整性。

3.局限

必须获取system权限才能使用该方法。

图片

4.成果

扫描引擎已失效,点击扫描无法正常运行。

图片

生成一个原始木马,未被识别并上线。

图片

图片

继续测试火绒的进程HipsDaemon.exe,同样生效。

图片

测试360时,发现有行为检测被拦截。

图片

测试卡巴斯基,可以关闭扫描引擎,但会由于未知原因断网,难以利用。

图片

利用驱动关闭杀毒引擎

1.原理

加载自带微软官方签名的 ProcExp 驱动,利用其导出函数做到 Kill EDR 的效果。

2.思路

大佬已经写得很好了,参考资料(http://ryze-t.com/posts/2021/06/29/EdrKiller.html)。

其它

K杀软的方式还有很多,比如还可以修改组策略,利用未文档化函数等,参考资料(https://xz.aliyun.com/t/10663)。

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

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

相关文章

再学http

HTTP状态码 1xx 信息性状态码 websocket upgrade 2xx 成功状态码 200 服务器已成功处理了请求204(没有响应体)206(范围请求 暂停继续下载) 3xx 重定向状态码 301(永久) &#xff1a;请求的页面已永久跳转到新的url302(临时) &#xff1a;允许各种各样的重定向&#xff0c;一般…

自动驾驶和智能座舱软件介绍(二)

作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 自动驾驶软件介绍 自动驾驶底层操作系统及软件架构 底层可以包括多种芯片&#xff0c;以太网通信中间件保证网络通信和不同OS任务分配的确定性 Automotive uC&#xff0c;单片机&#xff0c;如英飞凌AURIX&#xff0c;运行AUTOSARB…

Github 2024-01-28 开源项目日报Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-28统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目3TypeScript项目2Rust项目1HTML项目1JavaScript项目1Cuda项目1C#项目1非开发语言项目1 Nuxt&#…

力扣0079单词搜索

单词搜索 难度&#xff1a;中等 题目描述&#xff1a; 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构…

TypeSript教程基础用法(TS)

TypeScript基础语法 布尔值 TypeScript中可以使用boolean来表示这个变量是布尔值&#xff0c;可以赋值为true或者false。 let isDone: boolean false;数字 TypeScript里的所有数字都是浮点数&#xff0c;这些浮点数的类型是 number。除了支持十进制&#xff0c;还支持二进…

XSS_Labs靶场通关笔记

每一关的方法不唯一&#xff1b;可以结合源码进行分析后构造payload&#xff1b; 通关技巧&#xff08;四步&#xff09;&#xff1a; 1.输入内容看源码变化&#xff1b; 2.找到内容插入点&#xff1b; 3.测试是否有过滤&#xff1b; 4.构造payload绕过 第一关 构造paylo…

势态知感是一种主动的态势感知

势态知感是指主动观察和感知周围环境中存在的势态或态势变化的能力。势态指的是事物所呈现出来的动态特征和趋势。势态知感的主动性体现在人们通过观察、感知和分析过往的经验&#xff0c;来预测或捕捉到事物存在的势态&#xff0c;从而可以作出相应的决策和行动。 势态知感在…

8-Docker网络命令之prune

1.prune介绍 Docker网络命令prune是用来删除所有无用的网络 2.prune用法 docker network prune [参数] [rootcentos79 ~]# docker network prune --helpUsage: docker network prune [OPTIONS]Remove all unused networksOptions:--filter filter Provide filter values …

LightDB 24.1 UNION支持null类型匹配

背景介绍 在LightDB 24.1之前的版本&#xff0c;UNION null类型匹配会报错。 lightdbpostgres# select null l_zqlbmx2 union all select null l_zqlbmx2 union all select sysdate l_zqlbmx; ERROR: UNION types text and timestamp without time zone…

使用scyllaDb 或者cassandra存储聊天记录

一、使用scyllaDb的原因 目前开源的聊天软件主要还是使用mysql存储数据&#xff0c;数据量大的时候比较麻烦&#xff1b; 我打算使用scyllaDB存储用户的聊天记录&#xff0c;主要考虑的优点是&#xff1a; 1&#xff09;方便后期线性扩展服务器&#xff1b; 2&#xff09;p…

Redis数据类型及底层实现

文章目录 1.3.1 5种基本数据类型1.3.1.1 总结篇1.3.1.2 底层源码引入篇1.3.1.2.1 redis是字典数据库KV键值对到底是什么1.3.1.2.2 数据类型视角1.3.1.2.3 数据模型解析&#xff08;重点&#xff09;1.3.1.2.4 redisObjec1.3.1.2.5 SDS 1.3.1.3 String1.3.1.3.1 底层分析1.3.1.3…

uniCloud 免费版和商用版

概述 uniCloud为每个开发者提供一个免费的服务空间&#xff0c;更低门槛按量付费是serverless的特色&#xff0c;如果没有消耗硬件资源&#xff0c;就完全不用付款serverless比传统的云主机更便宜传统云主机一旦被攻击&#xff0c;高防价格非常昂贵。而uniCloud无需支付高防费…

k8s的图形化工具rancher

1、rancher&#xff1a;是一个开源的企业级多集群的k8s管理平台 2、rancher和k8s的区别 &#xff08;1&#xff09;都是为了容器的调度和编排系统 &#xff08;2&#xff09;但rancher不仅能够调度&#xff0c;还能管理k8s集群&#xff0c;自带监控&#xff08;普罗米修斯&a…

MQ面试题合集

前言 前文介绍了mysql,redis相关知识&#xff0c;并概述了向量数据库相关。今天我们学习消息中间件相关知识。 MQ面试题合集 什么是消息队列&#xff08;MQ&#xff09;&#xff1f; 消息队列&#xff08;MQ&#xff09;是一种应用程序对应用程序的通信方法&#xff0c;通过…

QEMU用户态模拟运行,S390X、ARMv7L/ELF程序(Ubuntu)

准备虚拟机&#xff1a; sudo apt-get install qemu-system qemu-user-static -y 准备交叉编译器环境&#xff1a; 在 Ubuntu 18.04 x86_64 上面安装 Linux-ARMv7 A/L GCC编译器-CSDN博客 S390X交叉编译器 ############### sudo apt install gcc-s390x-linux-gnu sudo apt in…

【Linux】第三十六站:信号

文章目录 一、信号的概念1.信号概念2.前台与后台进程3.信号的处理4.硬件层面5.信号与我们的代码是异步的 二、信号的产生1.产生的方式2.键盘组合键3.kill命令4.系统调用4.1 kill系统调用4.2 raise4.3 abort 5.异常软件条件5.1 异常产生信号5.2 alarm&#xff08;软件条件产生信…

【MySQL】学习如何通过DML更新数据库的数据

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-QIqURn9fNFMjLD9l {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

形态学操作之腐蚀及膨胀的数学原理——数字图像处理

在数学上&#xff0c;腐蚀和膨胀是集合论的操作&#xff0c;通常应用于图像处理中的二值图像。可以将二值图像视为一个集合&#xff0c;其中包含所有像素值为1&#xff08;或高亮&#xff09;的像素点的集合。这些操作都是基于图像与一个给定的结构元素&#xff08;一个小的形状…

【Go 快速入门】数组 | 切片 | 映射 | 函数 | 结构体 | 方法和接收者

文章目录 数组切片append 函数copy 函数删除元素 映射delete 函数 函数init 特殊的函数defer 语句panic / recover 错误处理 类型结构体内存对齐JSON 序列化与反序列化方法和接收者 项目代码地址&#xff1a;03-ArraySliceMapFuncStruct 数组 基本格式&#xff1a;var 数组变…

Go 命令行解析 flag 包之快速上手

本篇文章是 Go 标准库 flag 包的快速上手篇。 概述 开发一个命令行工具&#xff0c;视复杂程度&#xff0c;一般要选择一个合适的命令行解析库&#xff0c;简单的需求用 Go 标准库 flag 就够了&#xff0c;flag 的使用非常简单。 当然&#xff0c;除了标准库 flag 外&#x…