0%
毅种循环

模块 82 - EDR 简介

恶意软件开发课程 - EDR 简介


模块 82 - EDR 简介#

EDR 简介#

简介#

EDR (Endpoint Detection and Response,终端检测与响应) 是一种安全解决方案,旨在识别和应对诸如勒索软件和恶意软件等威胁。它通过持续监控终端(Endpoints)的潜在可疑活动,收集系统日志、网络流量、进程间通信 (IPCs)、RPC 调用、身份验证尝试以及用户活动等数据来实现防护。

当 EDR 安装在终端上后,它会收集数据并进行分析和关联,以识别潜在威胁。一旦检测到威胁,EDR 解决方案可以自动响应,例如将受影响的终端从网络中隔离,或采取其他预定义操作(如删除恶意文件或终止可疑进程)。

此外,EDR 在程序执行时还会在沙箱(Sandboxes)中运行它们,并在运行过程中持续监控,以寻找恶意行为特征。

💡 初学者提示:什么是终端 (Endpoint)?

在网络安全中,终端指的是连接到网络并能与网络通信的任何设备。常见的终端包括:

  • 笔记本电脑
  • 桌面台式机
  • 服务器
  • 智能手机

简单类比:如果公司网络是一座大楼,那么每个员工的工位电脑就是“终端”。EDR 就像是每个工位旁特派的一名高级贴身保镖,不仅盯着谁进了大楼,还盯着你在位子上的一举一动。

EDR 如何工作#

一个 EDR Agent(代理程序)通常由两部分组成:用户模式 (User-mode) 应用程序内核模式 (Kernel-mode) 驱动程序

🎭 生动类比:双重特工

想象 EDR 是一套全方位的监控系统:

  1. 明哨(用户态):在大楼走廊和办公室门口安插的监控探头。它能看到你开了什么门(调用 API),带了什么包(参数内容)。
  2. 暗哨(内核态):在大楼的地基和电路系统里安装的传感器。无论你如何伪装,只要你挪动了地基(修改内核对象或直接触发敏感系统行为),内核驱动就会立刻察觉。

收集到的数据会与恶意行为特征码(Signatures)及行为模式进行匹配。一旦发现异常,EDR 会在安全仪表盘中记录发现。根据设置,它可能会自动处理,也可能仅仅发出告警。

探测机制解析#

1. 用户态挂钩 (Userland Hooking)#

EDR 利用 Userland Hooking(用户态挂钩) 来检测传递给函数的恶意参数,并查看解密后的 Payload(有效载荷)。我们在 Syscalls - Userland Hooking 模块中已经详细讨论过。

2. Windows 事件追踪 (ETW)#

ETW (Event Tracing for Windows) 是内置于 Windows 操作系统中的一种内核模式机制,用于跟踪和记录驱动程序及用户模式应用程序触发的事件。

📚 知识扩展:ETW 能看到什么?

ETW 可以记录诸如:

  • 进程的创建与终止
  • 设备驱动程序的加载与卸载
  • 文件和注册表的访问行为
  • 详细的网络连接(目标 IP、域名、端口)

EDR 通过订阅特定的 ETW 提供程序(Providers),可以不费吹灰之力地复盘一个恶意软件的所有行为轨迹。

3. 反恶意软件扫描接口 (AMSI)#

AMSI (Antimalware Scan Interface) 是从 Windows 10 开始内置的安全机制。它允许第三方软件与之集成,以扫描和检测恶意应用程序。

💡 初学者提示:AMSI 的作用是什么?

AMSI 专门通过拦截动态脚本文件(如 PowerShell, JavaScript, VBScript)和 .NET 加载项来工作。在代码实际运行前的一瞬间,它会将代码发送给杀毒软件进行“内容审查”。这使得那些在内存中加载、不落地的恶意代码也无所遁形。

4. 内存检测 (Memory-Based Detection)#

内存检测是指在执行 Payload(有效载荷)后生成的 IoC(入侵指标)和签名。这包括堆分配(Heap Allocations)、挂钩 API 时的跳转指令(Trampolines)、线程栈以及 RWX(可读、可写、可执行) 内存区域。

5. 内核回调与文件系统微过滤驱动 (Kernel Callbacks & Minifilter Drivers)#

  • 内核回调 (Kernel Callbacks):允许内核模式代码注册特定的通知函数。例如:
    • PspCreateProcessNotifyRoutine:当新进程开启时通知 EDR。
    • PspLoadImageNotifyRoutine:当模块(DLL/EXE)加载进内存时通知 EDR。
  • 微过滤驱动 (Minifilter Drivers):用于拦截和修改 I/O 请求(如文件读写)。EDR 可以通过注册回调,在文件被创建或修改的第一时间进行拦截审查。

规避 EDR 的策略#

规避 EDR 绝非易事,往往需要组合拳而非单一方法。主要原因在于 EDR 使用多种维度进行监控。

  1. Unhooking(取消挂钩):可以解决用户态监控,但无法阻止内核态的 ETW 或回调。
  2. Direct/Indirect Syscalls(直接/间接系统调用):绕过用户态 API 挂钩。
  3. C2 环境选择:即便加载器成功规避,C2(指挥与控制)心跳包或具体的噪声命令(如调用 whoami)也可能触发告警。

⚠️ 警告: 恶意软件开发者必须意识到,许多规避技术仅能保护“加载器”本身。一旦 C2 载荷开始运行且执行了高危操作(如创建 cmd.exe),EDR 的行为分析引擎依然会迅速锁定目标。因此,选择灵活性高、可定制性强的 C2 框架至关重要。

在接下来的模块中,我们将演示多种应对 EDR 检测机制的策略。