【翻译】EDR的黑暗面:将EDR作为攻击工具的再利用
字数 2416 2025-08-23 18:31:34
EDR的黑暗面:将EDR作为攻击工具的再利用
概述
本教学文档详细介绍了如何利用端点检测和响应(EDR)系统自身的特性和漏洞,将其转变为攻击工具的技术方法。研究聚焦于Palo Alto Networks Cortex XDR平台,展示了多种绕过其安全机制的方法,包括勒索软件防护绕过、进程转储绕过、防篡改绕过,以及最终在EDR进程内执行恶意代码的技术。
背景知识
EDR系统简介
端点检测和响应(EDR)解决方案监控终端用户设备,具有以下特点:
- 以最高权限运行
- 具备"防篡改"特性
- 具有持久化特性
- 记录和存储端点系统级行为
- 使用数据分析技术检测可疑行为
Cortex XDR架构特点
- 安装过程中在
C:\ProgramData\Cyvera文件夹下写入内容文件 - 包含基于Lua和Python的内容文件,这些文件定义了检测逻辑
- 使用mini-filter驱动程序实现文件保护
- 运行多个高权限进程,包括
cyserver.exe和cortex-xdr-payload.exe
研究目标
- 绕过XDR的勒索软件保护机制
- 利用内容文件中的检测逻辑执行其他恶意行为
- 在XDR内部运行恶意软件,实现隐秘性、持久性和高特权
技术方法详解
1. 勒索软件保护绕过
保护机制分析:
- Cortex在机器各处隐藏诱饵文件(蜜罐文件)
- 维护一个合法进程白名单(
ransom.lua中定义) - 使用mini-filter驱动程序使诱饵文件对白名单进程不可见
绕过步骤:
- 编写简单的勒索软件
ransom.exe,尝试加密文件夹中的文件 - 被XDR检测并阻止
- 从
ransom.lua白名单中选择一个进程名(如aaplayer.exe) - 将勒索软件重命名为白名单进程名
- 再次执行,成功绕过检测
原理:
- 重命名后的勒索软件无法看到诱饵文件
- 只加密真实文件,不触发XDR的勒索软件检测
2. 进程转储绕过(lsass.exe内存转储)
初始尝试:
- 使用ProcDump转储lsass内存:
procdump.exe -ma lsass.exe lsass.dmp - 被XDR的正则表达式检测阻止
第一次绕过:
- 在命令中插入引号:
procdump.exe -ma "" lsass.exe lsass.dmp - 绕过正则表达式检测,但触发mini-dump-write-dump函数阻止
第二次绕过:
- 查找
dse_rules_config.lua中的预防规则 - 发现
mimikatz_rpm_process_whitelist白名单 - 将ProcDump重命名为白名单中的程序名(如
listdlls.exe) - 成功绕过所有检测,完成lsass内存转储
3. 防篡改绕过
保护机制分析:
- Cortex使用
cyvrfsfd驱动程序(文件系统过滤器驱动程序) - 维护受保护文件和文件夹列表
- 通过路径检查阻止对这些文件的修改
绕过步骤:
步骤1:创建硬链接
- 尝试使用
mklink创建硬链接,被阻止 - 使用Google Project Zero的
symboliclink-testing-tools创建硬链接- 这种方法不请求目标文件的写入权限
- 成功创建对受保护文件的硬链接
步骤2:修改安全规则
- 通过硬链接修改
dse_rules_config.lua - 删除加载易受攻击驱动程序(如
rtcore64.sys)的检测规则
步骤3:阻止规则更新
- 修改hosts文件,将XDR管理服务器域名重定向到localhost
- 使用
cytool.exe check-in强制重新加载规则- 由于hosts文件修改,无法从服务器获取更新
- 加载本地修改后的规则
步骤4:利用易受攻击的驱动程序
- 加载
rtcore64.sys驱动程序(利用CVE-2019-16098) - 使用驱动程序漏洞修补XDR驱动程序中的管理密码验证
- 可设置为接受任何密码
- 或拒绝所有密码(使XDR无法被卸载)
4. 在XDR进程内执行恶意代码
方法1:直接修改Lua规则
- 在Lua内容文件中插入恶意代码
- 例如创建文件的简单代码:
os.execute('echo test > C:\\Users\\Public\\test.txt')
- 例如创建文件的简单代码:
- 执行
check-in使修改生效 - 验证代码执行成功
方法2:利用Python服务脚本
- 分析
cortex-xdr-payload.exe进程- 发现其加载
service_main.json配置文件 - 该文件指向
service_main.py脚本
- 发现其加载
- 修改Python脚本插入恶意代码
- 由于进程已加载脚本,需要强制重新加载:
- 在脚本中添加导致
cyserver.exe崩溃的代码(如io.popen) - 崩溃后进程自动重启,加载修改后的脚本
- 在脚本中添加导致
- 恶意代码在
cyserver进程内以NT/System权限执行
防御建议
对EDR供应商的建议
-
内容文件保护:
- 加密磁盘上的内容文件
- 实施数字签名验证机制
-
防篡改机制改进:
- 不依赖单一的文件系统过滤器
- 实现多层次的完整性检查
-
进程保护:
- 加强对自身进程的保护
- 监控进程内存的异常修改
对终端用户的建议
-
保持EDR解决方案更新:
- 确保安装最新的安全补丁
- 启用自动更新功能
-
增强监控:
- 监控EDR进程的异常行为
- 特别关注EDR进程的内存活动
-
纵深防御:
- 不单独依赖EDR解决方案
- 实施多层次的终端保护策略
总结
本研究展示了EDR系统自身可能成为攻击载体的多种技术路径,包括:
- 利用内容文件中的检测逻辑绕过安全机制
- 绕过防篡改保护修改安全规则
- 在EDR高权限进程内执行恶意代码
这些技术实现了:
- 高特权执行(SYSTEM/NT权限)
- 持久性(作为EDR组件运行)
- 隐秘性(难以被其他安全产品检测)
研究强调了EDR系统设计中需要考虑的安全问题,并为防御此类攻击提供了实用建议。