一个关于篡改EDR的故事(翻译,redops.at)
字数 1749 2025-08-18 11:36:48

Windows EDR篡改技术深度分析

1. EDR基础架构概述

现代端点检测与响应(EDR)系统通常由以下核心组件构成:

1.1 用户空间组件

  • 受保护进程(PPL): 以PS_PROTECTED_ANTIMALWARE_LIGHT(0x31)级别运行,防止被普通权限终止
  • 受保护服务(ELAM服务): 由内核ELAM驱动程序保护,负责重新初始化EDR进程

1.2 内核空间组件

  • 过滤器驱动程序/微过滤器驱动程序: 实现核心防护功能
  • 回调例程: 通过内核回调机制实现各种监控功能

2. EDR关键机制分析

2.1 用户空间API挂钩

  • 通过注册"进程通知"回调实现DLL注入和API挂钩
  • 在kernel32.dll和ntdll.dll中插入跳转指令(JMP)重定向API调用
  • 直接系统调用可绕过用户空间挂钩,但EDR已通过堆栈跟踪检测此类行为

2.2 内核回调机制

EDR通过过滤器驱动程序注册多种回调例程:

回调类型 功能
进程通知 实现API挂钩和进程监控
加载映像通知 检测非法DLL映射
创建线程通知 检测代码/进程注入
CmRegister 保护EDR注册表项

3. EDR篡改技术详解

3.1 终止PPL进程技术

操作步骤:

  1. 通过BYOD(Bring Your Own Driver)技术获取内核写权限
  2. 使用易受攻击的签名驱动(如MSI的rtcore64.sys)
  3. 定位并修补EPROCESS结构中的PPL标志
  4. 终止不再受保护的EDR进程

局限性:

  • 进程通常会在几秒到2分钟内被重新初始化
  • 对EDR功能影响有限

3.2 禁用受保护服务

关键发现:

  • 受保护服务由ELAM驱动程序初始化
  • 目前没有直接方法停止运行中的受保护服务
  • 可通过修改注册表禁用服务自动启动

3.3 注册表项篡改

关键注册表项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<EDR服务>

重要值项:

  • LaunchProtected: 控制PPL初始化
  • Start: 控制服务启动行为(2=自动,4=禁用)

篡改保护机制:

  • 通过CmRegister或进程通知回调实现保护
  • 普通权限无法修改受保护项

3.4 回调例程操作

操作步骤:

  1. 使用Cheeky Blinder等工具获取内核写权限
  2. 枚举回调数组(如进程通知回调)
  3. 定位EDR注册的回调例程
  4. 修补或移除目标回调

影响:

  • 临时禁用篡改保护后可修改服务启动项
  • 但核心EDR功能仍通过过滤器驱动程序运行

3.5 禁用过滤器驱动程序

操作步骤:

  1. 定位EDR过滤器驱动注册表项
  2. 禁用篡改保护后修改Start值为4
  3. 重启系统使更改生效

效果:

  • 永久禁用EDR核心功能
  • API挂钩和遥测收集失效
  • 控制台功能(隔离、远程Shell等)不可用

4. 技术影响评估

攻击目标 影响等级 持久性 功能影响
终止PPL进程 临时 最小
禁用用户空间组件 永久 中等
修补回调例程 临时 中到高
禁用过滤器驱动 严重 永久 全面

5. 防御对策建议

  1. 强化PPL保护: 确保EDR进程以最高保护级别运行
  2. 注册表保护: 强化关键注册表项的ACL和监控
  3. 驱动签名验证: 实施严格的驱动程序加载策略
  4. 内核完整性: 启用HVCI等内核保护机制
  5. 行为监控: 检测BYOD和回调篡改行为
  6. 标记化卸载: 实施EDR卸载令牌保护

6. 工具与参考

实用工具:

  • Cheeky Blinder: 回调枚举和修补
  • PPLKiller: PPL进程终止
  • Mimikatz: 多种内核操作功能

参考资源:

  • Windows Internals第7版
  • Microsoft内核回调文档
  • 各种内核编程指南

7. 结论

EDR篡改是一项复杂但可行的技术,需要深入理解Windows内核机制。最有效的攻击路径是通过禁用过滤器驱动程序来全面瓦解EDR功能,但这需要高权限和内核访问能力。防御者应实施深度防护策略,特别关注内核完整性保护和关键组件监控。

Windows EDR篡改技术深度分析 1. EDR基础架构概述 现代端点检测与响应(EDR)系统通常由以下核心组件构成: 1.1 用户空间组件 受保护进程(PPL) : 以PS_ PROTECTED_ ANTIMALWARE_ LIGHT(0x31)级别运行,防止被普通权限终止 受保护服务(ELAM服务) : 由内核ELAM驱动程序保护,负责重新初始化EDR进程 1.2 内核空间组件 过滤器驱动程序/微过滤器驱动程序 : 实现核心防护功能 回调例程 : 通过内核回调机制实现各种监控功能 2. EDR关键机制分析 2.1 用户空间API挂钩 通过注册"进程通知"回调实现DLL注入和API挂钩 在kernel32.dll和ntdll.dll中插入跳转指令(JMP)重定向API调用 直接系统调用可绕过用户空间挂钩,但EDR已通过堆栈跟踪检测此类行为 2.2 内核回调机制 EDR通过过滤器驱动程序注册多种回调例程: | 回调类型 | 功能 | |---------|------| | 进程通知 | 实现API挂钩和进程监控 | | 加载映像通知 | 检测非法DLL映射 | | 创建线程通知 | 检测代码/进程注入 | | CmRegister | 保护EDR注册表项 | 3. EDR篡改技术详解 3.1 终止PPL进程技术 操作步骤 : 通过BYOD(Bring Your Own Driver)技术获取内核写权限 使用易受攻击的签名驱动(如MSI的rtcore64.sys) 定位并修补EPROCESS结构中的PPL标志 终止不再受保护的EDR进程 局限性 : 进程通常会在几秒到2分钟内被重新初始化 对EDR功能影响有限 3.2 禁用受保护服务 关键发现 : 受保护服务由ELAM驱动程序初始化 目前没有直接方法停止运行中的受保护服务 可通过修改注册表禁用服务自动启动 3.3 注册表项篡改 关键注册表项 : 重要值项 : LaunchProtected : 控制PPL初始化 Start : 控制服务启动行为(2=自动,4=禁用) 篡改保护机制 : 通过CmRegister或进程通知回调实现保护 普通权限无法修改受保护项 3.4 回调例程操作 操作步骤 : 使用Cheeky Blinder等工具获取内核写权限 枚举回调数组(如进程通知回调) 定位EDR注册的回调例程 修补或移除目标回调 影响 : 临时禁用篡改保护后可修改服务启动项 但核心EDR功能仍通过过滤器驱动程序运行 3.5 禁用过滤器驱动程序 操作步骤 : 定位EDR过滤器驱动注册表项 禁用篡改保护后修改Start值为4 重启系统使更改生效 效果 : 永久禁用EDR核心功能 API挂钩和遥测收集失效 控制台功能(隔离、远程Shell等)不可用 4. 技术影响评估 | 攻击目标 | 影响等级 | 持久性 | 功能影响 | |---------|---------|--------|---------| | 终止PPL进程 | 低 | 临时 | 最小 | | 禁用用户空间组件 | 中 | 永久 | 中等 | | 修补回调例程 | 高 | 临时 | 中到高 | | 禁用过滤器驱动 | 严重 | 永久 | 全面 | 5. 防御对策建议 强化PPL保护 : 确保EDR进程以最高保护级别运行 注册表保护 : 强化关键注册表项的ACL和监控 驱动签名验证 : 实施严格的驱动程序加载策略 内核完整性 : 启用HVCI等内核保护机制 行为监控 : 检测BYOD和回调篡改行为 标记化卸载 : 实施EDR卸载令牌保护 6. 工具与参考 实用工具 : Cheeky Blinder: 回调枚举和修补 PPLKiller: PPL进程终止 Mimikatz: 多种内核操作功能 参考资源 : Windows Internals第7版 Microsoft内核回调文档 各种内核编程指南 7. 结论 EDR篡改是一项复杂但可行的技术,需要深入理解Windows内核机制。最有效的攻击路径是通过禁用过滤器驱动程序来全面瓦解EDR功能,但这需要高权限和内核访问能力。防御者应实施深度防护策略,特别关注内核完整性保护和关键组件监控。