安全研究/安全视界/EDR 装在终端上,到底在盯什么?
EDR 装在终端上,到底在盯什么?
2026-11-04 07:38分享

"我们杀毒软件已经买了某某大厂的了,是不是就不用上 EDR 了?"

这个问题在项目上被问过不下十次。答案很直接:不是一回事。

杀毒软件回答的是"这个文件是不是坏的",EDR 回答的是"这台机器上正在发生什么"。前者靠特征库,后者靠行为。特征库认不出的东西,行为往往藏不住——毕竟攻击者可以随便改 payload 的哈希,但他没法改掉"要往 lsass 里读内存"这个动作本身。

但 EDR 也不是什么黑盒魔法。它能在终端上看见什么,直接决定了它能检测什么。这篇就从头拆一遍:数据从哪来、检测怎么分层、一条好告警长什么样。

 

 

一、先看数据源:你能看见什么,决定了你能检测什么

主流 Windows EDR 的数据采集,绕不开下面这几类。

进程活动。 谁启动了谁,命令行参数是什么,父进程是谁,有没有在做跨进程写入。Windows 上常见的落地方式两种:ETW 内核态采集,或者 Sysmon 那一套事件(进程创建 ID 1、镜像加载 ID 7、远程线程创建 ID 8、命名管道 ID 17/18)。

脚本与内存。 PowerShell 脚本块日志(事件 4104)、AMSI 缓冲、.NET 程序集加载、进程内存里的可疑字符串。无文件攻击基本只能在这一层被抓住,因为它根本不往磁盘落可执行文件。

文件与注册表。 新建、修改、删除,尤其是自启动相关的几个位置:Run 键、服务注册、计划任务、WMI 事件订阅。持久化检测全靠这些数据。

网络连接。 进程到 IP、域名、端口的映射关系,加上 DNS 请求记录。判断 C2 通信、DNS 隧道、横向移动的凭据是这一层的事。

驱动与内核态。 谁在加载未签名驱动,谁在读内核内存。BYOVD(自带易受攻击驱动)攻击就发生在这里,也是 EDR 自己最容易挨打的地方。

Linux 侧同源不同路:主流用 eBPF 在内核里挂采集点,配合 auditd 补系统调用层面的细节。容器场景还要看能不能采到 namespace 维度的进程行为。

这里给一个很实用的选型判断标准:如果一个 EDR 连"进程完整命令行参数"都不采集,它的检测能力上限就很低。 很多恶意行为的区别,就在命令行那几个参数上。powershell.exe 本身不可疑,powershell.exe -enc 一串 Base64 就很可疑。选型时可以直接问厂商要一份"数据源清单",看看上面这五类是不是都覆盖了。

二、从特征到行为:检测的四个台阶

EDR 的检测能力,是可以按层次看的。

第一层:特征匹配。 哈希、YARA 规则、威胁情报 IOC。优点是快、准、误报低。缺点是改一行代码哈希就变了,重新打包一次特征就绕过去了。这一层能挡住脚本小子,挡不住有心人。

第二层:行为规则。 用规则描述"做了什么事"。典型例子:Office 进程派生了 PowerShell;lsass.exe 被请求了 PROCESS_VM_READ 权限;一个从 Temp 目录启动的进程创建了计划任务。这一层能覆盖 ATT&CK 里的大部分技术点,是 EDR 的主力。

第三层:基线异常。 这台机器历史上从没做过的事,现在做了。第一次出现的服务名、第一次出现的父子进程组合、非工作时间的登录、突然翻了 10 倍的文件写入量。这一层不需要提前知道攻击长什么样,靠的是"反常"。

第四层:关联与攻击链。 把单点告警串成一条时间线。单看"PowerShell 执行了一次网络下载"是中危,串上"前一天有钓鱼邮件落地文档 → Word 派生 PowerShell → 新建计划任务 → 连接境外 IP",就是一次完整入侵。

第三层往上,才是 EDR 真正的价值所在,也是各家产品拉开差距的地方。市面上不少产品第一层做得花里胡哨,第三、第四层几乎是空的——报得出来"这是个恶意文件",报不出来"这台机器正在被入侵"。买之前,最好拿真实样本和真实攻击链路跑一遍验证,别只看 PPT 上的 ATT&CK 覆盖热力图,那个图谁都能画成满格。

三、一条好告警长什么样

见过最没用的告警长这样:"检测到可疑行为,风险等级:高。" 完了。点进去没有进程树,没有命令行,没有文件哈希,什么都没有。

这种告警的价值基本等于零。分析的人要么自己上机器翻日志,要么直接点"忽略"。而一旦人开始习惯性点忽略,真告警也会被一起划走。

一条能用的告警,至少要带这些上下文:

  • 进程树:从哪个父进程一路派生下来的,至少三到四层
  • 完整命令行:不是截断版,参数和开关都要在
  • 涉及文件:路径 + MD5/SHA256,最好带签名状态
  • 网络连接:目标 IP、端口、域名,以及是不是首次连接
  • 命中信息:命中的规则名 + MITRE ATT&CK 技术编号(比如 001)
  • 处置入口:一键隔离主机、结束进程、隔离文件、拉取内存样本

缺进程树的告警,等于让人自己上机器去翻日志。真出事的时候,哪有时间。

还有一点容易忽略:告警要能按资产维度聚合。同一台机器 30 分钟内弹了 40 条告警,那是 1 起事件不是 40 起。不会聚合的 EDR,会把处置人员活活淹死。

四、看一个完整的检测例子

某次真实的告警时间线。

  1. EXE 启动了 powershell.exe,命令行里带 -enc和一大段 Base64
  2. 解出来的脚本调用 iwr 下载了一个 dll,落到 C:\Users\xxx\AppData\Local\Temp\
  3. exe 加载了这个 dll
  4. 该 dll 向一个境外 IP 发起 TLS 连接,证书是自签名的,JA3 指纹看着像 Cobalt Strike 的默认配置
  5. 同一时间创建了计划任务"WindowsUpdateCheck"

单看第 1 条,很多单位会当成"办公软件正常调用脚本"直接放过。第 2 条单看,就是一次普通下载。但五个动作摆在同一张时间线上,这是一次标准的无文件投递加持久化,后面大概率跟着凭据窃取和横向移动。

EDR 的价值就体现在这:把 1 到 5 串起来,把"一堆可疑但说不清的事件"变成"一个确定的结论"。

五、EDR 不是万能的

该说的也说清楚,避免迷信。

  • 它没有超越内核权限的魔法。遇到带合法签名的驱动级绕过,一样难受,这也是为什么现在 BYOVD 攻击越来越常见。
  • 加密流量里的内容它看不到,只能靠 JA3/JA4 指纹和证书特征去猜。上了 TLS 1.3 之后,能拿到的特征更少了。
  • 它保的是终端。边界防护、身份治理、数据防泄露这三个方向的活,它干不了。
  • 它需要人。装完没人看,等于没装。

最后

选 EDR 就盯三件事:数据源够不够全(能不能看到命令行和进程树)、行为规则能不能自己写、处置动作能不能一键下发。

这三样缺一样,产品卖得再贵,本质也是个高级杀毒软件。