上个月半夜十一点多,一个做外贸的朋友给我打电话,声音都是抖的。他们公司四十多台机器全被加密,桌面壁纸换成了勒索说明,开口要 0.8 个比特币。
他问我的第一句话是:「我们装了 EDR 啊,怎么会这样?」
我问的第二句话是:「你们域控的安全日志,现在还能查到三天前的记录吗?」
电话那头安静了大概十秒钟。他说,我让 IT 明天早上看。
第二天结果出来了:查不到。那台域控的安全日志单文件上限是 20MB(Windows 默认值),因为开了进程创建审核,日志写得飞快,二十分钟就轮转覆盖一次。也就是说,他们公司所谓的事后追溯能力,大约是二十分钟。
这事我憋了很久想说,可能有点得罪同行:大部分公司买 EDR,买的是心理安慰,不是检测响应能力。
厂商卖给你的时候讲的是「拦截率 99.7%」,但真出事的时候,决定你赔多少钱的不是拦截率,是停留时间——攻击者从进来那天到你发现那天,中间隔了多久。
IBM 每年发的那份 Cost of a Data Breach,2023 版给的平均值是 445 万美元、277 天;2024 版我给记的是 488 万美元、258 天(具体数字我可能记串了,他们官网可以免费下 PDF,你们自己去核)。Mandiant 的 M-Trends 里,全球入侵停留时间中位数这两年压到了 10 天上下。
这俩数摆一起你就明白荒诞在哪儿:行业平均 258 天才发现,头部水平 10 天。差的真不是防火墙多厚,是有没有人真的在看日志。
先别急着买新设备,做这三个自测
我现在去朋友公司,第一件事不是看他们买了什么,是问三个问题。你也可以现在就去试。
一、EDR 查询测试。 打开你 EDR 的控制台,试着回答这个问题:上周三下午两点到两点零五,全网有几台机器执行过带 -enc 或 -EncodedCommand 参数的 powershell?答不上来,说明你的 EDR 在你这儿就是个高级杀毒软件。
二、日志容量测试。 找一台域控或者重要服务器,管理员权限跑:
wevtutil gl Security
看输出里的 maxSize。如果是 20971520,那就是 20MB,默认值。你再看一眼这个日志文件的实际修改时间,跟你现在的时间差多少——如果差不到一小时,那你的实际留存窗口就是一个小时以内,甚至更短。
三、还原测试。 随便挑一台终端,问你自己:如果它今天下午三点中招,我能不能还原它过去 30 天连过哪些外部 IP、跑过哪些可疑进程?
三个问题里有两个答不上来,你花在 EDR 上的钱至少有七成是浪费的。这话我说得重,但我觉得比「我们要加强全员安全意识」这种话有用。
具体怎么改:从那个 20MB 开始
第一步,把安全日志上限提上去。 单机改:
wevtutil sl Security /ms:1073741824
1073741824 就是 1GB。组策略里对应的是 计算机配置 → 管理模板 → Windows 组件 → 事件日志服务 → 安全 → 指定日志文件最大大小,填 1024000(KB)。
但我得说实话,光加容量解决不了问题。我前面那个例子,20MB 撑 20 分钟,相当于每分钟写 1MB;加到 1GB,也就是 1000MB 左右,能撑大概 16 到 17 个小时。还是不够看。所以改容量只是第一步,真正要做的是把日志送出去集中存。
第二步,把进程创建审核打开。 默认 Windows 是不记录进程命令行的,4688 事件只给你一个进程名,没有参数——这就意味着你能看到有人跑了 powershell.exe,但看不到他跑了什么。
命令行方式(中文系统注意子类别名要用中文):
auditpol /set /subcategory:"进程创建" /success:enable
稳妥一点用 GUID:{0CCE922B-69AE-11D9-BED3-505054503030},这个不吃系统语言。
然后还有一步很多人漏掉:组策略里 计算机配置 → 管理模板 → 系统 → 审核进程创建,把这个策略启用,并且勾上「包含命令行」。不做这一步,4688 里那个「进程命令行」字段永远是空的。这个坑我自己踩过,排查了半天才反应过来。
第三步,装 Sysmon,但别用默认配置。 Sysmon 本身免费,可默认配置基本没用。去 GitHub 上找 olafhartong 的 sysmon-modular 或者 SwiftOnSecurity 那份,重点盯这几个 Event ID:
- Event ID 1:进程创建(带完整命令行和哈希)
- Event ID 3:网络连接(谁连了哪个 IP 哪个端口)
- Event ID 10:进程访问,这个能抓到读 lsass 内存的动作,也就是抓明文密码那一步
- Event ID 11:文件创建
- Event ID 22:DNS 查询
其中 Event ID 10 是很多默认配置里关掉的,因为它日志量大。但恰恰是它,能在勒索软件真正开始加密之前给你一个预警。我觉得这个取舍很值,量大的话就在高价值机器上开,不用全网铺。
第四步,日志外发。 WEF(Windows 事件转发)或者直接上 agent 都行,注意保留策略:在线可查 90 天,归档 1 年,这是我觉得比较务实的一条线。别一上来就说要留 5 年,你自己也不会去查。
自建 SOC 还是买 MDR,算笔账
这是我被问最多的问题,我给不出通用答案,但可以给你一个粗糙的算法。
自建 7x24 监控,最少三班倒,算上排班空缺、休假、离职补招,一线分析员至少 8 到 10 人。国内一线安全分析员年薪大概 15 到 25 万,算上社保公积金、培训、流失补招成本,光人力一年就是 300 到 400 万。再加上 SIEM 的许可费(这部分通常按每日日志 GB 数计费,你把日志量提上去了,账单也跟着上),一年 500 万打不住。
MDR 外包呢,按终端数量收费,一台终端一年几十到几百块不等,200 台终端大概是十几万到几十万。听起来便宜太多了。
但外包有个坑:对方不懂你的业务。他们看到的是告警,不是「这是我们财务总监的机器,她每周五下午会导一次银行流水」这种上下文。误报和漏报的判断质量,跟对方对你业务的理解强相关。我见过最差的情况是,MDR 一年发了几千条告警,客户一条没点开过,最后两边互相甩锅。
我的建议是分场景:日志留存和基础告警,买服务;业务相关的异常判断,自己留人。 别指望全外包,也别什么都是自己人干,那样人会跑光。
写到这儿有点长了。最后说一句可能不太中听的:安全这个事,买来的设备能覆盖的只是一部分,剩下那部分,靠的是有人愿意每周花两个小时,打开控制台,随便挑几台机器翻一翻。这两个小时的价值,比你再买一套新设备高。
至少我是这么觉得的。