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是“武器库手册”。它告诉你“攻击者可能用了什么手法”。

三者的配合流程是这样的:

  1. 异常检测引擎发现一条可疑日志(比如凌晨3点的管理员登录)
  2. 你对照攻击链模型,判断这属于“侦察”阶段还是“利用”阶段
  3. 你打开ATT&CK,找到对应的技术(比如T1078:有效账户登录)
  4. 根据ATT&CK的检测建议,去查关联日志(比如查这个账户后续的操作、查登录源IP的历史行为)

你看,有了这套理论框架,你就不再是瞎猫碰死耗子了。每次分析都有章可循。

我的个人习惯:

我会在SIEM里建三个标签:异常检测标签、攻击链阶段标签、ATT&CK技术标签。每一条告警生成时,自动打上这三个标签。这样后续做关联分析、写报告、甚至做红蓝对抗复盘,都方便得多。

好了,这一章的内容就到这里。下一章我们会讲具体的日志分析技术,包括怎么用Python写检测脚本、怎么在ELK里做可视化。但请记住,没有今天这些理论基础,后面的技术都是空中楼阁。

嗯,下课。