一个关于篡改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进程技术
操作步骤:
- 通过BYOD(Bring Your Own Driver)技术获取内核写权限
- 使用易受攻击的签名驱动(如MSI的rtcore64.sys)
- 定位并修补EPROCESS结构中的PPL标志
- 终止不再受保护的EDR进程
局限性:
- 进程通常会在几秒到2分钟内被重新初始化
- 对EDR功能影响有限
3.2 禁用受保护服务
关键发现:
- 受保护服务由ELAM驱动程序初始化
- 目前没有直接方法停止运行中的受保护服务
- 可通过修改注册表禁用服务自动启动
3.3 注册表项篡改
关键注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<EDR服务>
重要值项:
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功能,但这需要高权限和内核访问能力。防御者应实施深度防护策略,特别关注内核完整性保护和关键组件监控。