A systematic survey on multi step attack detection
A systematic survey on multi-step attack detection
PDF: A systematic survey on multi-step attack detection.pdf
1 - Introduction
高级攻击者往往会采用多步的攻击方式。至少是因为以下两个原因:
- 被攻击方是很大的组织,网络拓扑复杂,有些业务不对外网开放
- 多步攻击更难检测,很多攻击步骤本身对系统并无威胁
这样的攻击方式称为 multi-step attacks。它比常规的攻击方式更加复杂和隐蔽。
为了检测多步攻击,我们需要从整体的角度来看待一场攻击,并注意到从网络的各个角落收集到的大量痕迹之间的因果关系。攻击者留下的踪迹一般符合逻辑顺序,执行各个 step 之后,攻击者能获取关于靶标的更多的知识,来更好地安排后续的攻击步骤。
论文作者分析了 181 篇文章,119 种检测多步攻击的方法。在本文中只关注那些检测真实攻击痕迹的方法,而不关心描述网络中可能的攻击路径的方法。
2 - 术语定义
事件(Event)。一个事件是在一个设备上发生的一个可识别的动作。事件常常用文本来表示,称为日志。
包(Packet)。这是网络通讯中最小的数据交换单元。
警报(Alert,aka. alarm)。这是安全系统产生的 event,于检测到可疑行为或检测到错误时产生。
痕迹(Trace)。它包含了 "all the indications of the execution of an action in a network",例如事件和网络包。
入侵检测系统(IDS)。指的是自动检测可疑行为的系统。IDS 可能是基于网络的,也可能是基于主机的。基于网络的 IDS 会检测网络流量,基于主机的 IDS 检测应用程序和操作系统的行为,部署在终端机器上。本文中,IDS 是观测者和报告者,产生 alert。

我们把攻击者为了达成某一特定目标,在网络中进行的所有步骤称为 multi-step attack。一个 multi-step attack 至少要包含两个不同的行为。
举个例子,DDoS 攻击中,攻击者发出了大量的包,但它们属于同一个行为。所以 DDoS 是一个 multi-agent 的 single-step attack。
本文所 review 的方法,都假设了一个基本的前提:同一个攻击场景所产生的 event 之间具有关联。从而,找到 action(体现为 trace)之间的联系就是检测多步攻击的第一步。至于如何找到两个 action 之间的联系,有多种方法:
- IP 地址。如果有相同(或在同一个 IP 段)的 IP 地址参与了两个 action,则这两个 action 之间可能有关联。
- 两个 action 一起被报告,则可能有关联。
- 时间。如果 action 发生的间隔是确定的,或者这些 action 同属一个时间窗口,则它们可能有关联。
- 逻辑顺序。如果一个 action 为另一个 action 准备了条件,则它们很可能有关。
- action 的种类相同。这个判断方式一般用于分析 IDS 的警报,如果警报种类相同的话则可能有关。
3 - 多步攻击检测面临的困难
首先,一般的攻击检测所面临的所有困难,我们都得面对。举例来说,网络数据非常复杂,从中提取出安全有关的信息是困难的;最危险的攻击发生得很少,导致训练数据集中我们只有少量对应样本。这在入侵检测研究中叫做“Rare Data Problem”。还有一些统计学上的困难,比如不平衡的数据集、偏斜分布的数据集。
单步攻击只关联到系统中的单个漏洞,从而比较容易取出来与相似的情形进行比对;多步攻击难以学习和刻画攻击之间的相似性,因为攻击步骤有很多个。对于多步攻击,我们不止要推断出每个 step 的性质,还要推断出各个 step 之间的联系。哪怕我们能识别所有的单个 step,我们也可能搞不清楚整场攻击的策略。
与普通的攻击检测相比,多步攻击检测任务面临的特殊困难:
- 各个独立的 step 本身可能看起来是无害的。
- 我们不能假设自己知道整个攻击计划。这是与传统的 plan recognition 非常不同的地方,它们的 possible action 是有明确定义的。
- 攻击者可能会想出多个攻击计划,一个攻击计划的执行可能会因各种原因突然终止。
- 我们不一定能检测到所有的 step。
- action 被表达为 trace 的过程,可能丢失时间顺序。
- 攻击者常常无需按照特定的顺序执行各个攻击行为,导致可能的的攻击行为顺序会非常多。
- 攻击者可能会做一些规避检测的行为。
- 我们需要把攻击场景建模,并以某种标准的形式进行表述。
- IDS 所提供的信息未必就是问题的源头。
- trace 包含的很多特征是分类变量而非有序分类变量、定量变量,阻碍了数学建模。
- step 之间间隔时间可能非常长。
- 本任务缺乏标准的公开数据集来评估表现。
大量的检测方法采用 IDS 警报作为数据来源。

IDS 产生警报也会面临大量困难:
- 中等大小的网络里,IDS 就能产生大量的警报。实时处理存在困难。
- 真正有威胁性的 alert 与假阳性 alert、无关的 alert 混在一起。
- 不同的安全系统会对相同的行为生成不同的 alert。
- 不同供应商提供的安全系统,alert 的格式会不一样。需要想办法归一化。
- 缺乏清晰描述 IDS alert 的语义、格式的文档。
4 - 选取 review 对象的方法
这部分与我们无关,跳过。
5 - 文献的统计
与我们关系不大。有两张图:


可以通过以上这些 paper 进行进一步的了解。
6 - 各种多步攻击检测方法
这是论文的核心部分。作者将目前各种各样的 method 划分为了五个大类:
- 基于相似度。这类方法利用 trace 之间的相似程度来建模攻击。又划分为三个小类:
- 渐进式构建(通过属性匹配或关联)
- 场景聚类
- 异常检测
- 因果关系。将多步攻击序列的各个 step 进行分类,然后关注这些 step 之间的因果关系。其也可以分为三个小类:
- 前提和结果
- 统计推断
- 模型匹配
- 结构化。收集到的 trace 被映射到一个模型中,预测未来的攻击路径。
- 基于案例。检测周知的攻击场景。
- 混合模型。

各个方法在文献中的占比:

基于相似度的方法
基于相似度的方法通过各个原子 step 之间的相似性来构建攻击场景。
这套方法基于“相似的 alert 与同一个 root cause 有关”的假设,重点是如何计算相似度。
相似度由 trace 的几个属性计算出来:IP地址,端口号,时间戳,trace 的类型,etc.
各个检测方法计算关联度(correlation index),可能是一个二分类的(轨迹相关或不相关),可能是一个复杂的相关性函数。
有些文献只考虑一个特征,多数文献考虑了多个特征,可能会有不同的权重。
主要优点:如果相似度的衡量比较恰当,那么很容易加以实现、能检测到未知的多步攻击。
宽松的规则会导致大量的误报,严格的规则很容易漏报。还要注意过拟合问题,在数据集上调参调出花,面对真实攻击场景也可能木大。
根据 method 如何使用相似度指标,我们可以把这类方法分为三个类。
- 渐进式构建。通过不断地获得相似 trace,逐步建立起攻击场景。
- 场景聚类。直接把所有的 alert 作为数据集,跑一个聚类算法。与渐进式构建相比,场景聚类不考虑 alert 发生的时间。
- 异常检测。把输入的 trace 序列与一些正常情况下的 trace 进行比对,如果认为与常规 trace 不一致则考虑是攻击场景的一部分。
渐进式构建
在渐进式构建方法中,攻击序列是一步步建立起来的。如果一个 trace 与一个场景中的 trace 比较相似,则整个 trace 会添加到该场景中。用于比较的 trace 要处于相同时间窗口。
在渐进式构建中,action 发生的时间是一个很重要的考虑因素(但场景聚类完全不考虑时间)。
对 field 的匹配可能是精确匹配,也可能是模糊匹配。对 event 的 field 进行精确匹配的,我们分到属性匹配(attribute matching)这个小类;采用模糊匹配的,分到属性关联(attribute correlation)这个小类。模糊匹配一般是首先计算关联度,若超过某个阈值,则将两个 trace 放在一起。

属性匹配
Chen 等人(2006)提出了一个基于 Bro IDS 的关联度系统。他们可以直接获取网络流量,而不是收集 event。该系统通过 IDS 给出的特征来判别恶意流量,关注连续的 event,匹配 IP 和端口。
Shaneck 等人(2006)提出了相似的方法。他们把任务分成两个阶段:首先是由 IDS 进行模式匹配和分析,得到很受限的攻击场景。第二个阶段是把其他的 trace 与刚刚判别出的攻击场景中的 IP 相匹配,如果匹配则加入攻击场景。
我认为这个思路非常实用。尽管一场攻击中往往包含未知的漏洞,但一定会有一些迹象可以被探测到。通过探测已知的场景,来把未知的流量加入 scenario,可以识别未知的恶意行为。
Liu 等人(2008)也提出了一个基于 IP 的系统。它们首先把单步攻击标记为最初的攻击场景,然后如果新的 alert 与一个攻击场景中已记录的 IP 相同,则加入该场景。
Brogi 和 Tong(2016)的方法也是关注于如何连接单步攻击,但它们采用的方式是基于标签的。每一个 step 会被系统打上标签,随着信息流传播。如果两个单步攻击之间有雷同的特征,则会被连接起来。
一个另外的思路检测攻击者自己的 IP。Strayer 等人(2005)的系统考虑攻击者在渗透中所用到的资产序列。我感觉没啥道理。
属性关联
Valdes 和 Skinner(2001)提出的系统集成在了 EMERALD 里面,是基于手动构建的各种 alert 的相似度矩阵。具体的运行机制没说。
Dain 和 Cunningham(2001)提出的系统中,利用 IDS alert 的部分相似性来构建攻击场景。每次收到一条 alert,计算出这条 alert 分组到各个攻击场景的概率。概率取决于:IP 相似性;alert 之间的时间间隔;step 之间的逻辑递进关系。
Zhu 和 Ghorbani(2006)的方案计算单步攻击之间的相似性。相似指数是基于 6 个特征,从 alert 中提取。具体的计算相似指数的方式是多层感知机和 SVM。得出的指数存放在 alert 相似矩阵中,用以推断攻击场景。
Wang 等人于 2006 年提出了统计学过滤算法,也是基于关联矩阵。相似指数是根据经验指定的,且固定不变。攻击序列是自动提取出的,但它们是否为一次攻击仍然依赖于人工指定的关联矩阵。2010 年,他们进一步提出了时间窗口,其大小随着时间改变;并将候选的攻击场景分类为三个组,根据成员的关系。2016 年,他们细化出了正向和反向关联度,根据alert的时间顺序。
Pei et al. 在 2016 年提出HERCULE,「攻击故事重构」。他们受社交网络模型启发,定义了一大堆 event 之间可能的联系,从而给 events 建图。边有权重,用一个优化过的算法计算出来。系统返回一张图,表示在多步攻击中所有的事件及其关系。他们做了一些 APT 的模拟工作。
这个和我的任务有关,后续可以看一下
人造免疫系统在单步攻击检测中被广泛使用。iCorrelator 把人类的免疫系统模拟为三层结构,基于细胞(feature向量,例如 IP 相似度)。每一个细胞表示一对警报之间的关联度。关联是基于细胞的,在有监督学习下进化。
场景聚类
很多工作都没有对其细节的清晰描述。秘密研究?