4、异常行为理论基础:异常检测定义、攻击链模型(Kill Chain)、MITRE ATT&CK框架映射
各位同学,欢迎来到第四章。
前面三章我们聊了日志怎么收、怎么存、怎么清洗。但说实话,这些只是基本功。真正让日志产生价值的,是你能从里面挖出异常行为。这一章,我们来啃理论基础。
你可能会问:搞安全运维,天天看告警,为什么还要学理论?
我举个例子。几年前我处理过一个内部数据泄露事件。日志里全是正常的数据库查询,没有任何恶意特征。但如果你懂攻击链模型,你就会发现——这个用户在非工作时间、从非办公IP、查询了平时从不接触的表。这就是异常。理论,就是帮你建立这种“感觉”的。
4.1 异常检测的定义
异常检测,说白了就是“找不同”。
在日志审计里,我们定义异常为:偏离了正常基线的行为模式。注意,不是所有异常都是攻击,但所有攻击都会表现为异常。
核心公式:
异常 = 当前行为 − 历史基线
当差值超过某个阈值,我们就认为这是一个异常事件。
我个人习惯把异常分成三类:
- 点异常:单个数据点偏离正常。比如一个普通员工突然在凌晨3点登录VPN。
- 上下文异常:在特定上下文中才显得异常。比如下班后的批量文件下载,放在上班时间就正常。
- 集体异常:一组数据点整体偏离。比如整个部门突然同时访问一个从未见过的外部域名。
嗯,这里要注意。很多新手只盯着点异常,结果漏掉了更隐蔽的集体异常。我在项目中遇到过一起APT攻击,就是靠集体异常发现的——某个子网的所有机器,同时向一个陌生IP发起DNS查询。单看任何一台机器,流量都很小,但合起来就暴露了。
4.2 攻击链模型(Kill Chain)
攻击链模型,最早是洛克希德·马丁公司提出的军事概念。后来被安全圈借用了。它的核心思想是:攻击不是一瞬间的事,而是一个过程。
你想想看,一个黑客要攻破你的系统,他得先侦察、再武器化、然后投递、利用、安装、指挥控制、最后达成目标。这七个步骤,每一步都会留下日志。
| 阶段 | 英文名称 | 典型日志特征 |
|---|---|---|
| 1. 侦察 | Reconnaissance | 大量DNS查询、端口扫描日志、目录遍历404 |
| 2. 武器化 | Weaponization | 通常不在日志中体现(攻击者本地完成) |
| 3. 投递 | Delivery | 邮件附件下载、USB插入日志、Webshell上传 |
| 4. 利用 | Exploitation | 漏洞利用日志、异常进程启动、提权操作 |
| 5. 安装 | Installation | 计划任务创建、服务注册、注册表修改 |
| 6. 指挥控制 | Command & Control | 异常外连流量、DNS隧道、心跳包 |
| 7. 目标达成 | Actions on Objectives | 大量数据外传、加密勒索、系统破坏 |
我建议你在做日志审计时,脑子里始终挂着这张表。看到一条日志,先问自己:这属于攻击链的哪个阶段?
实战技巧:
我曾经处理过一个案例,攻击链在“投递”阶段就被我们截获了。原因是邮件网关日志里,发现一个附件MD5值跟威胁情报库匹配。你看,只要你在早期阶段发现异常,后面的损失就能避免。
4.3 MITRE ATT&CK框架映射
攻击链模型虽然经典,但它太线性了。现实中的攻击往往是跳跃的、并行的。这时候,MITRE ATT&CK框架就派上用场了。
ATT&CK框架,说白了就是一本“攻击手法百科全书”。它把攻击者的行为拆解成战术(Tactics)和技术(Techniques)。每个战术对应攻击链的一个阶段,但更细、更全面。
我举个例子。攻击链里的“安装”阶段,在ATT&CK里被拆成了十几个技术:
- T1053:计划任务/定时任务
- T1543:创建或修改系统服务
- T1547:自启动注册表或启动文件夹
- T1098:账户操作
- ……
为什么要这么细?因为不同的技术,留下的日志特征完全不同。你查计划任务,要看Windows事件ID 4698;你查服务创建,要看ID 7045。没有ATT&CK的指引,你都不知道该查什么。
映射关系示例:
攻击链阶段:安装(Installation)
ATT&CK技术:T1053.005(计划任务)
日志来源:Windows Security Event Log 4698
检测规则:监控 schtasks.exe 创建行为,或 EventID 4698 中 TaskName 包含可疑路径
我个人习惯是把ATT&CK框架打印出来贴在工位上。每次写检测规则,先查一下这个技术对应什么日志、什么事件ID。省得自己瞎猜。
避坑指南:
我曾经犯过一个错误。看到ATT&CK里有个技术叫“T1003.001 LSASS内存转储”,就写了个规则监控所有procdump.exe的执行。结果发现开发同事也在用procdump做性能分析。误报率直接爆炸。
后来我学乖了:ATT&CK只是告诉你“可能发生什么”,具体怎么检测,还得结合你的业务场景。比如加个白名单,排除掉已知的合法进程。
4.4 三者如何协同工作
讲到这里,你可能有点晕。异常检测、攻击链、ATT&CK,这三者到底是什么关系?
我打个比方你就明白了。
- 异常检测是“眼睛”。它告诉你“这里不对劲”。
- 攻击链是“地图”。它告诉你“攻击者现在走到哪一步了”。
- ATT&CK是“武器库手册”。它告诉你“攻击者可能用了什么手法”。
三者的配合流程是这样的:
- 异常检测引擎发现一条可疑日志(比如凌晨3点的管理员登录)
- 你对照攻击链模型,判断这属于“侦察”阶段还是“利用”阶段
- 你打开ATT&CK,找到对应的技术(比如T1078:有效账户登录)
- 根据ATT&CK的检测建议,去查关联日志(比如查这个账户后续的操作、查登录源IP的历史行为)
你看,有了这套理论框架,你就不再是瞎猫碰死耗子了。每次分析都有章可循。
我的个人习惯:
我会在SIEM里建三个标签:异常检测标签、攻击链阶段标签、ATT&CK技术标签。每一条告警生成时,自动打上这三个标签。这样后续做关联分析、写报告、甚至做红蓝对抗复盘,都方便得多。
好了,这一章的内容就到这里。下一章我们会讲具体的日志分析技术,包括怎么用Python写检测脚本、怎么在ELK里做可视化。但请记住,没有今天这些理论基础,后面的技术都是空中楼阁。
嗯,下课。