【翻译】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.execortex-xdr-payload.exe

研究目标

  1. 绕过XDR的勒索软件保护机制
  2. 利用内容文件中的检测逻辑执行其他恶意行为
  3. 在XDR内部运行恶意软件,实现隐秘性、持久性和高特权

技术方法详解

1. 勒索软件保护绕过

保护机制分析

  • Cortex在机器各处隐藏诱饵文件(蜜罐文件)
  • 维护一个合法进程白名单(ransom.lua中定义)
  • 使用mini-filter驱动程序使诱饵文件对白名单进程不可见

绕过步骤

  1. 编写简单的勒索软件ransom.exe,尝试加密文件夹中的文件
  2. 被XDR检测并阻止
  3. ransom.lua白名单中选择一个进程名(如aaplayer.exe)
  4. 将勒索软件重命名为白名单进程名
  5. 再次执行,成功绕过检测

原理

  • 重命名后的勒索软件无法看到诱饵文件
  • 只加密真实文件,不触发XDR的勒索软件检测

2. 进程转储绕过(lsass.exe内存转储)

初始尝试

  1. 使用ProcDump转储lsass内存:procdump.exe -ma lsass.exe lsass.dmp
  2. 被XDR的正则表达式检测阻止

第一次绕过

  1. 在命令中插入引号:procdump.exe -ma "" lsass.exe lsass.dmp
  2. 绕过正则表达式检测,但触发mini-dump-write-dump函数阻止

第二次绕过

  1. 查找dse_rules_config.lua中的预防规则
  2. 发现mimikatz_rpm_process_whitelist白名单
  3. 将ProcDump重命名为白名单中的程序名(如listdlls.exe)
  4. 成功绕过所有检测,完成lsass内存转储

3. 防篡改绕过

保护机制分析

  • Cortex使用cyvrfsfd驱动程序(文件系统过滤器驱动程序)
  • 维护受保护文件和文件夹列表
  • 通过路径检查阻止对这些文件的修改

绕过步骤

步骤1:创建硬链接

  1. 尝试使用mklink创建硬链接,被阻止
  2. 使用Google Project Zero的symboliclink-testing-tools创建硬链接
    • 这种方法不请求目标文件的写入权限
    • 成功创建对受保护文件的硬链接

步骤2:修改安全规则

  1. 通过硬链接修改dse_rules_config.lua
  2. 删除加载易受攻击驱动程序(如rtcore64.sys)的检测规则

步骤3:阻止规则更新

  1. 修改hosts文件,将XDR管理服务器域名重定向到localhost
  2. 使用cytool.exe check-in强制重新加载规则
    • 由于hosts文件修改,无法从服务器获取更新
    • 加载本地修改后的规则

步骤4:利用易受攻击的驱动程序

  1. 加载rtcore64.sys驱动程序(利用CVE-2019-16098)
  2. 使用驱动程序漏洞修补XDR驱动程序中的管理密码验证
    • 可设置为接受任何密码
    • 或拒绝所有密码(使XDR无法被卸载)

4. 在XDR进程内执行恶意代码

方法1:直接修改Lua规则

  1. 在Lua内容文件中插入恶意代码
    • 例如创建文件的简单代码:os.execute('echo test > C:\\Users\\Public\\test.txt')
  2. 执行check-in使修改生效
  3. 验证代码执行成功

方法2:利用Python服务脚本

  1. 分析cortex-xdr-payload.exe进程
    • 发现其加载service_main.json配置文件
    • 该文件指向service_main.py脚本
  2. 修改Python脚本插入恶意代码
  3. 由于进程已加载脚本,需要强制重新加载:
    • 在脚本中添加导致cyserver.exe崩溃的代码(如io.popen)
    • 崩溃后进程自动重启,加载修改后的脚本
  4. 恶意代码在cyserver进程内以NT/System权限执行

防御建议

对EDR供应商的建议

  1. 内容文件保护

    • 加密磁盘上的内容文件
    • 实施数字签名验证机制
  2. 防篡改机制改进

    • 不依赖单一的文件系统过滤器
    • 实现多层次的完整性检查
  3. 进程保护

    • 加强对自身进程的保护
    • 监控进程内存的异常修改

对终端用户的建议

  1. 保持EDR解决方案更新

    • 确保安装最新的安全补丁
    • 启用自动更新功能
  2. 增强监控

    • 监控EDR进程的异常行为
    • 特别关注EDR进程的内存活动
  3. 纵深防御

    • 不单独依赖EDR解决方案
    • 实施多层次的终端保护策略

总结

本研究展示了EDR系统自身可能成为攻击载体的多种技术路径,包括:

  1. 利用内容文件中的检测逻辑绕过安全机制
  2. 绕过防篡改保护修改安全规则
  3. 在EDR高权限进程内执行恶意代码

这些技术实现了:

  • 高特权执行(SYSTEM/NT权限)
  • 持久性(作为EDR组件运行)
  • 隐秘性(难以被其他安全产品检测)

研究强调了EDR系统设计中需要考虑的安全问题,并为防御此类攻击提供了实用建议。

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系统设计中需要考虑的安全问题,并为防御此类攻击提供了实用建议。