文章导航
SIGAPP 2018 基于图的警报相关性检测分布式多步攻击
GAC:基于图的警报相关性检测分布式多步攻击
——by Zehua Ren
ACM2018 SIGAPP SAC '18: Proceedings of the 33rd Annual ACM Symposium on Applied Computing
ACM2019 SIGAPP APPLIED COMPUTING REVIEW
[toc]
概述
问题:大多数传统的 IDS 在关联具有不同来源的警报方面存在不足,因此许多分布式攻击仍然完全未被注意到。
贡献:提出了基于图的警报关联 (GAC),这是一种新颖的关联算法,可以隔离攻击、识别攻击场景并从庞大的警报集中组装多阶段攻击。
优势:对误报具有鲁棒性,可以检测分布式攻击,并且随着警报数量的增加而扩展。
GAC算法简述
——基于图的警报关联算法
通过将警报相互关联以获得更大的攻击图来简化IDS监测任务。常见的方法是根据相似的属性对警报进行分组,例如源 IP 和目标 IP,并报告常见的属性模式。
方法:GAC,一种新颖的基于图形的警报相关方法,可用于检测通用(分布式)攻击,例如 DDoS、端口扫描和蠕虫传播。(三个流程)
- 根据特定警报属性之间的相似性对警报进行聚类(每个集群都包含可能属同一攻击或单个攻击步骤的所有警报——原子模式);
- 识别每个集群内主机之间的通信模式(一对一、一对多……——拓扑特征);
- 当输入警报集中存在多步攻击时,单个攻击步骤的集群会根据集群内的通信模式相互连接(——分子模式)。
警报仅包含源和目标 IP 地址以及端口号。这降低了警报关联的复杂性并增加了对不同传感器的兼容性。额外的知识是从警报本身中挖掘出来的。
有效的功能:分离警报(准确性良好)——识别警报集群(考虑不确定性)。 75% 的集群,GAC 能以 ≥ 90% 的高确定性识别它们各自的场景
其他相关工作
告警关联大致分为三类:以集群为中心、以互连为中心、以流程为中心
- 以集群为中心:聚合属于同一攻击的警报
- 以互连为中心:主要检测多步攻击。关联的重点是不同攻击步骤的警报之间的互连。
- 以流程为中心:所有三个流程块都用于警报关联。算法包括用于单步和多步检测的复杂技术。
没有任何以流程为中心的相关工作,在无额外知识的情况下从集群中挖掘特征。
期刊中的相关工作对比表格:
![image-20220618104925431](/2022/06/18/GAC%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%9B%BE%E7%9A%84%E8%AD%A6%E6%8A%A5%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A3%80%E6%B5%8B%E5%88%86%E5%B8%83%E5%BC%8F%E5%A4%9A%E6%AD%A5%E6%94%BB%E5%87%BB/image-20220618104925431.png)
基于图形的警报关联算法(GAC)
符号说明
告警
攻击
多步攻击$ j
警报关联的任务是分析警报集
GAC步骤总述(3步)
如上所述,三步:警报聚类、上下文补充和攻击互联。
警报聚类:将警报聚类到相应的警报群集
。——子图划分 首先将警报集 A 转换为反映警报之间属性相似性的**告警相似度图$ G_{attr}
C S$,其中分两步 - 警报过滤:识别警报中的重复项和误报
- 攻击提取:聚类属于同一攻击的警报
上下文补充:为每个集群
分配一个标签 来补充每个攻击步骤的附加含义。——标定 每个告警集群转换为一个告警流图
并不使用预定义知识(专家经验等),而是直接从警报信息和警报集群中挖掘特征。描述了每个集群内攻击者和受害者之间的恶意通信关系,以识别攻击场景。
攻击互联:将$ C
M$。——关联 所有具有相应标签
的集群 $C_i G_{cover}$**,以搜索集群之间的重叠 IP 地址。 对于任何两个共享 IP 地址的集群
,标签 用于派生标签 描述多步攻击的类型。
期刊中的整体流程示例图:
![image-20220618103921893](/2022/06/18/GAC%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%9B%BE%E7%9A%84%E8%AD%A6%E6%8A%A5%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A3%80%E6%B5%8B%E5%88%86%E5%B8%83%E5%BC%8F%E5%A4%9A%E6%AD%A5%E6%94%BB%E5%87%BB/image-20220618103921893.png)
![image-20220608235328196](/2022/06/18/GAC%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%9B%BE%E7%9A%84%E8%AD%A6%E6%8A%A5%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A3%80%E6%B5%8B%E5%88%86%E5%B8%83%E5%BC%8F%E5%A4%9A%E6%AD%A5%E6%94%BB%E5%87%BB/image-20220608235328196.png)
第一步:告警聚类
将警报表示为图中的节点,并在相似警报之间添加边。——和超图很像
这就能够搜索具有相似属性的警报,然后在这些图中对警报进行聚类。
将告警建模为图
将警报集
转换为加权警报相似度图 ,其中警报 作为节点。在两个警报 $a_1, a_2 ∈ A (a_1, a_2) ∈ E s = F_{sim} (a_1, a_2) ∈ [0, 1] $加权。 比较 所有 $n (a_0...a_{n −1})$ 。如下: 特定属性 的比较函数 $h_j [0,1] c_j τ$才算边。为了选择合适的阈值 τ ,可以计算攻击警报之间的预期相似度。 只考虑IP、端口,此处选用最简单的相同
不同 , 均分。 在图上对告警进行聚类
无关告警之间也可能有边,所以需要即识别
中的子图——社群发现 作者使用CPM算法(Clique Percolation Method派系过滤),它允许将一个节点分配给多个社区,可以反映聚类中的不确定性。
该算法认为社区是具有共享节点的全连通子图集合,并通过一种团过滤算法来识别网络中的社区结构。算法首先搜索所有具有k个节点的完全子图,而后建立以k-clique为节点的新图,在该图中如果两个k-clique有(k-1)个公共节点则在新图中为代表他们的节点间建立一条边。最终在新图中,每个连通子图即为一个社团。百度百科
![image-20220609003904943](/2022/06/18/GAC%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%9B%BE%E7%9A%84%E8%AD%A6%E6%8A%A5%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A3%80%E6%B5%8B%E5%88%86%E5%B8%83%E5%BC%8F%E5%A4%9A%E6%AD%A5%E6%94%BB%E5%87%BB/image-20220609003904943.png)
第二步:上下文补充
这一步目标是描述每个集群的攻击场景。
使用
- 一对一(OtO):其他场景的特例。
- 一对多(OtM):例如扫描子网。特征是相同的攻击源 IP。
- 多对一(MtO):例如 DDoS 攻击。攻击特定服务时,所有相关警报可能具有相同的目标 IP 和端口。
- 多对多(MtM):例如蠕虫传播。由于蠕虫通过特定应用程序进行传播,因此警报将有相同的目标端口。
![image-20220609005112668](/2022/06/18/GAC%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%9B%BE%E7%9A%84%E8%AD%A6%E6%8A%A5%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A3%80%E6%B5%8B%E5%88%86%E5%B8%83%E5%BC%8F%E5%A4%9A%E6%AD%A5%E6%94%BB%E5%87%BB/image-20220609005112668.png)
设置了四个指标$ δ_{OtO}
所有节点个数
第三步:攻击互联
由第一步生成的两个警报集群
两个集群
的标签 为攻击者和目标派生标签 Many 或 One 例如,当集群标记为 OtM 时,攻击 IP 集标记为 One,目标 IP 集标记为 Many。
比较来自两个集群的攻击者集 (simAA)、来自两个集群的目标集 (simTT)、Ci 的攻击者集与 Cj 的目标集 (simAT) 以及 Cj 的攻击者集使用 Ci (simTA) 的目标集。共四个相似度定义。
同种标签(都为One或都为Many)使用Jaccard系数
不同标签(一个One一个Many)使用重叠系数
,X 是标记为 One 的集合,Y 是标记为 Many 的集合。 取其最大值
。如果 sim 超过预定义的阈值 ,则将带有标签 sim 的边 添加到 。遍历所有告警集合建立攻击关联图——多步告警识别。
实验简述
人工生成的有ground truth数据
——生成输入以分析算法设计的有效性,由于是做告警关联而不是入侵检测,所以此方法是有效的。
根据表一生成告警数据:对于同一攻击的所有警报,哪些 IP 和端口是相同的,哪些可能不同并且可以随机确定。使用完整的 IP(0.0.0.0 到 255.255.255.255)和端口范围(0 到 65535)
在水平扫描 (OtM) 中,一个源针对同一目标端口上的多个主机。在 DDoS 攻击 (MtO) 中,多个源针对来自任意源端口的相同 IP 和端口组合。在蠕虫 (MtM) 传播中,每个主机以固定目标端口上的其他主机子集为目标。
通过IP映射合并多个系统,通过模糊参数
相似度图中警报聚类性能评估
对于告警相似度图,选择
我们将自己的方法与一种类似的方法进行比较,我们称之为面向属性的归纳 (AoI)。AoI 是一种在一组警报中查找属性模式以建立最小大小为 k 的集群的有效算法,类似于采用社区聚类并形成至少大小为 k 的集团的 GAC。
Klaus Julisch. 2003. Clustering intrusion detection alarms to support root cause analysis. ACM Transactions on Information and System Security (TISSEC) (2003).
评价指标:标准度量准确度
- 告警过滤:ground truth
detected attacks 准确性用于评估 DA 建模 GT 的性能。(使用) - 攻击检测:准确性评估 C 建模 S 的性能。将比较分解为单独的 C 和 S 对,找出哪个原始攻击 Ci ∈ C 模型最能提醒集群 Sj ∈ S。为每个可能的组合计算准确度 ACC,并在每个攻击和集群只能映射一次的约束下推导出 Ci ∈ C 和 Sj ∈ S 之间的映射。使用贪心算法,最多只有一个未映射,定义它的相似度为0。总准确度分别是所有映射和未映射攻击或集群的平均准确度。
来自单一攻击的警报集群:
社区聚类的优势在于,即使 k 远低于最小攻击,它也可能有效。但是,k 必须足够高以过滤噪声并拆分松散耦合攻击的警报。
来自重叠攻击的警报集群:
(1)GAC 比 AoI 实现了更高的准确度,(2)聚类参数 k 允许在很宽的参数范围内实现这些高精度。
警报流图上的场景识别
在人为创建的攻击的基础上评估攻击场景识别的鲁棒性,在这些攻击上我们应用模糊来模拟聚类中的误报。
GAC 中的场景识别可以完全容忍误报,即在一定程度上仍能达到 100% 的准确率。
用随机的 β ∈ [0, 1] 模糊这三种攻击,并用不同的 β 重复 10000 次。在所有重复中,平均准确率(即正确分类的比例)为 80%。
即使在最坏的情况下,大多数攻击也可以正确分类。此外,仅在具有高度不确定性的情况下才会出现误报。
真实告警数据
DShield数据集:SANS 互联网风暴中心在全球范围内运行一个基于社区的协作式互联网威胁监控系统。收集来自各种贡献者的网络事件日志,即警报。 DShield 中的每个警报都包含源和目标的 IP 和端口等。目的IP信息经过hash。
警报关联算法在有限的警报集上执行,而不是在警报流上执行。因此,我们将 24 小时的数据集分成多个块,每个块都是 GAC 单独处理的单独输入。每个块包含约5000个报警。 2 × 8 2.2 GHz 内核和 128 GB RAM 的系统上并行使用 16 个进程。使用此设置,每个块的处理平均需要 1 到 1.5 分钟。——太慢,太复杂。
参数配置:
过滤效果
结果:未分配告警比例很低,因为分布式攻击的性质会导致大量警报,而像高级持续威胁 (APT) 这样的有针对性的攻击只会导致很少的警报。集群数量和标准差很大,说明集群很多且相差各异。
场景识别
确定性因子
多步攻击
在几乎所有情况下,集群间的相似性都是 1 或 < 0.5。任何两个簇的相似度都很少≥ 0.5 且 < 1
总结
GAC,一种警报关联算法,它通过基于图的方法实现了三个构建块警报聚类、上下文补充和攻击互连。社区聚类参数 k 适用于广泛的值,特别是对于来自分布式攻击的聚类警报。分布式多步攻击方面,优于 Julisch提出的高效且强大的关联算法 Attribute-oriented Induction(AoI面向属性归纳法)。
真实攻击的互连仅产生主机之间具有高度相似性的对的一小部分。两次攻击之间的大多数相似性都很低,因此很可能表明攻击不相关。
未来计划为聚类参数 k 开发(半)自动化方法。研究如何实现不同 GAC 实例输出的相关性(不同切片的相关),适用于协作和高度分布式 IDS 中的警报关联。