一、EDR数据完整性概述
1.1 什么是数据完整性
数据完整性,说白了就是「数据没被改过」。
我经常跟团队讲一个比喻:你收到一封加密信,信封完好无损,火漆印也没被动过——这就是完整性。如果信封被拆开过,哪怕又重新粘好,完整性也已经破坏了。
在EDR系统里,数据完整性包含三个层面:
- 存储完整性:磁盘上的日志、事件记录没有被篡改
- 传输完整性:Agent到Server之间的数据没有被中间人替换
- 时间完整性:事件发生的时间戳没有被回滚或伪造
嗯,这里要注意:很多人只关注加密,却忽略了完整性。加密解决的是「别人看不懂」,完整性解决的是「别人改不了」——这是两码事。
核心观点:数据完整性是EDR的「信任基石」。没有完整性,你看到的每一条告警都可能已经被对手精心修饰过。
1.2 为什么EDR需要防篡改
这个问题我问过不少刚入行的同学。有人回答「怕黑客删日志」,有人回答「怕数据被改」——都对,但不够全面。
我经历过一个真实案例:某金融客户被勒索软件攻击,EDR明明记录了攻击者的所有行为,但攻击者在撤离前修改了Agent本地的缓存文件,把关键事件的严重等级从「高危」改成了「信息」。结果安全团队复盘时,整整漏掉了三个关键攻击步骤。
EDR需要防篡改,原因有三:
- 对抗攻击者「擦除痕迹」:攻击者进入系统后,第一件事往往是干掉EDR Agent或篡改日志。如果EDR没有防篡改,你连谁来过都不知道。
- 保证取证有效性:法庭上,被篡改过的日志不具备法律效力。我见过不少安全事件,因为日志完整性存疑,最终无法追责。
- 防止误报/漏报被利用:攻击者可以篡改告警规则或白名单,让EDR对恶意行为视而不见。你想想看,如果攻击者把自己的进程加进了白名单,EDR就彻底瞎了。
个人经验:我建议在EDR选型时,把「防篡改能力」列为硬性指标。有些产品号称有防篡改,实际只是文件只读——攻击者用管理员权限一样能改。真正的防篡改,需要内核级保护。
1.3 常见威胁模型分析
做安全的人都知道,不了解威胁模型,防篡改就是空中楼阁。我习惯把EDR面临的篡改威胁分为四类:
| 威胁类型 | 攻击目标 | 典型手法 | 危害等级 |
|---|---|---|---|
| 本地文件篡改 | Agent缓存、日志文件 | 直接修改文件内容、删除日志 | 高 |
| 内存篡改 | Agent进程、内核模块 | Hook系统调用、Patch内存 | 极高 |
| 网络中间人 | 传输中的数据 | MITM、伪造Server证书 | 中 |
| 时间回滚 | 事件时间戳 | 修改系统时间、伪造日志时间 | 中 |
本地文件篡改是最常见的。攻击者拿到管理员权限后,直接删掉C:\ProgramData\EDR\logs\下的文件。嗯,这里有个坑:很多EDR把日志存在普通用户可读的目录下,这等于把钥匙挂在门上。
内存篡改就高级多了。我记得有一次红队演练,对方直接卸载了EDR的内核驱动,然后重新加载了一个伪造的驱动。EDR进程还在跑,但已经什么都看不到了。这种攻击,文件层面的防篡改完全没用。
网络中间人攻击,说白了就是劫持Agent和Server之间的通信。如果只用HTTP,攻击者可以轻松替换数据包。我见过一个案例,攻击者在内网部署了伪造的Server,所有Agent都把数据报给了假Server——真正的Server什么都没收到。
时间回滚容易被忽视。攻击者把系统时间改回三天前,然后执行恶意操作。EDR记录的时间是「三天前」,跟正常日志混在一起,根本查不出来。
避坑指南:我曾经遇到一个客户,EDR的防篡改只做了文件完整性校验,没做内存保护。结果攻击者直接Patch了Agent进程,绕过了所有校验。记住:文件防篡改只是第一道防线,内存保护才是真正的硬仗。
1.4 知识体系总览
下面这张图,是我梳理的EDR数据完整性知识体系。你可以把它当作本章的「地图」:
这张图把本章的内容串起来了。从定义出发,到三个维度的完整性,再到为什么需要防篡改,最后落到四种威胁模型。后面的章节,我们会逐一深入每个环节。
一句话总结:EDR的数据完整性,不是「要不要做」的问题,而是「能做到什么程度」的问题。攻击者比你想象的更狡猾,防篡改必须从文件、内存、网络、时间四个维度同时下手。