KAIROS:使用全系统起源的实用入侵检测和调查
Github:https://github.com/ProvenanceAnalytics/kairos
KAIROS: Practical Intrusion Detection and Investigation using Whole-system Provenance
1. 论文实验
实验部分使用SCISKIT-LEARN来实现分层特征散列,使用PYG来实现Kairos的图学习框架,使用NetworkX实现了Louvain。最后,使用GraphViz来可视化摘要图,以便进行手动检查。
实验环境:
所有实验都是在运行CentOS7.9、2.20G Hz 20核Intel Xeon Silver 4210 CPU和64GB内存的服务器上运行的
超参数:
节点特征嵌入维度|Φ|=16、节点状态维度|s(v)|=100、邻域大小|N|=20、边嵌入维度|z|=200、时间窗口长度|tw|=15分钟
(1) 数据集
DARPA和Manzoor et al.
Manzoor et al.
数据集包含由SystemTap从受控实验环境中的六个活动场景中捕获的起源图。每个良性场景中只使用一个图来训练Kairos,并使用24个图作为验证数据来配置检测阈值,以不在其选择中引入偏差。我们使用剩余的良性图(每个场景75个)和所有100个攻击图作为测试数据。
使用这一数据集允许比较Kairos与Unicorn和ThreaTrace,这两个最先进的PIDS在全系统起源图上执行异常检测。然而,无法证明Kairos可以用这个数据集重建攻击活动,因为细粒度的攻击gt(具体的攻击过程)不是公开的
DARPA
使用来自DARPA TC和OpTC计划的数据集,其中E3和E5的起源数据是公开可用的。OpTC数据集包含500台Windows主机在7天内的良性活动,以及另外3天的良性和APT活动的混合数据。实验部分随机选择六台主机,只使用其中一天的良性数据进行训练,另外一天进行验证,但使用所有主机的全部三个攻击日数据进行测试。
使用DARPA数据集来表明Kairos:
- 可以准确检测异常,即使它们隐藏在长时间跨度的大量良性活动中
- 精确地从原始起源图(描述良性和攻击活动)提取出紧凑的攻击摘要图中,而无需事先知道攻击,即使攻击活动罕见几个数量级
- TC数据集可以比较Kairos与Unicorn和ThreaTrace
- OpTC数据集来证明Kairos可以实际部署在大规模的系统网络中
DARPA提供攻击GT,使我们能够标记与攻击相关的单个节点和边。因此可以手动将Kairos重建的攻击图与GT图进行比较。
(2) 检测性能
为了评估Kairos的检测性能,重播每个数据集中的测试数据,就好像Kairos在监控主机系统运行时的行为一样。仅使用良性数据离线进行模型训练。
根据时间窗口计算所有数据集的精确度、召回率、准确度和ROC曲线下面积(AUC)结果。根据GT手动将起源图中的每个时间窗口标记为良性或攻击。如果Kairos将良性时间窗口标记为异常(即,如果Kairos错误地将良性时间窗口包括在异常队列中),我们认为该时间窗口是假阳性(FP)。另一方面,如果Kairos正确地将攻击时间窗口标记为异常,则将其计为真阳性(TP)。
Kairos可以准确检测所有攻击,实现100%召回。Kairos在一组实验中报告了FP(导致精度较低),原因是①在攻击者停止主动攻击之后,Kairos仍会将高重构错误分配给其节点处于攻击者影响下的边。②Kairos将高重构误差分配给仅在测试数据中引入的新应用程序的新活动。由于他们的行为完全未知,尽管不是恶意的,但这对Kairos来说是不正常的。这是概念漂移的一个例子,其中新的良性行为不适合通过模型学习的基本统计属性。
模型再训练
Kairos使模型再训练更加实用,因为它使系统管理员能够通过KAIROS提供紧凑的候选摘要图来快速识别错误警报以进行检查。为了更新模型,仅使用FP时间窗口中的起源数据在现有模型上重复相同的训练过程。Kairos可以不断向FP学习,以解决概念漂移问题,并避免在未来犯下类似的错误。
(3) 对比实验
选择Unicorn和ThreaTrace作为主要的PIDS进行比较,因为它们是基于异常的、开源的,并且由作者使用Manzoor et al.以及DARPA数据集的子集进行评估。同样,StreamSpot和Frappuccino也是开源的异常检测系统。然而,Unicorn已经被证明优于这些系统。我们自己在DARPA TC数据集上对StreamSpot的评估证实了其他人之前的性能分析:StreamSpot无法在所有TC数据集中检测到任何异常。因此,不再进一步讨论StreamSpot或Frappuccino。
Unicorn
Unicorn通过将动态的起源图特征化为一系列固定大小的、可增量更新的草图来构建系统的行为模型。每个草图表示一个快照,该快照描述了从系统执行的开始到拍摄快照的时间点的整个图形。生成新草图的频率是一个超参数,由流向该图的新边的数量决定。在测试时,Unicorn可以快速生成和更新被监控系统的草图,并将它们与模型中已知的良性草图进行比较,以执行运行时检测。
Unicorn将整个图归类为良性或包含攻击,并将其用作计算检测性能的单个数据点,而不是像在Kairos中那样计算更细粒度的时间窗口级别。为了采用Unicorn的计算指标的方法,如果Kairos将至少一个时间窗口标记为攻击,则认为整个图都是恶意的。
Unicorn没有在DARPA E5数据集上进行评估
当Unicorn发出警报时,攻击活动可以隐藏在图中的任何位置,要求系统管理员盲目回溯图以推断警报。相比之下,Kairos不仅产生更少的错误警报,而且还创建紧凑的摘要图,突出显示可能的攻击足迹
ThreaTrace
ThreaTrace为起源图中的每种类型的节点都构建一个模型,以检测异常节点。对比实验的数据集是ThreaTrace使用的数据集:Manzoor et al.和DARPA的子集。由于Manzoor et al.数据集节点级别的GT不可靠,因此ThreaTrace对Manzoor et al.数据集的节点级检测转换为图级检测。如果异常节点的数量超过预定义的阈值,则认为图是异常的。
ThreaTrace手动将GT中的节点及其2跳祖先和后代节点都标记为异常,即使相邻节点没有参与攻击,即与GT中的真正异常节点相距4跳的良性节点可能被ThreaTrace错误分类,但不会被报告为FP。
对于DARPA数据集,采用ThreaTrace的方法来计算度量,并使用异常时间窗口中的异常节点来计算精确度、召回率和准确率。
与Kairos不同,ThreaTrace不能重建一个完整的攻击过程。虽然ThreaTrace的节点级检测在一定程度上可以帮助理解攻击,但当图较大且FP节点数量较多时,这种方法是不实用的。
(4) 超参数对性能的影响
节点嵌入维度(|Φ|)
节点嵌入对初始节点特征进行编码。相对较小的维度足以编码这些特征。较大的维度会导致稀疏特征,这可能会严重影响检测性能并导致较大的内存开销。|Φ|=16是所有数据集的理想维度
节点状态维度|s(v)|
节点的状态捕获节点邻域随时间的时间演变。当|s(v)|太小时,Kairos很难记住过去事件的信息。但如果|s(v)|变得太大,检测性能会下降,因为状态可能包含与当前事件无关的过时历史,另外|s(v)|还会影响内存开销。|s(v)|=100是所有TC数据集的理想维度
邻域采样大小(|N|)
节点的邻域捕获了节点的结构角色。|N|=20在所有数据集中是理想的
边嵌入维度(|z|)
边嵌入z编码了边周围的图的状态和结构信息。随着|z|的增加,边嵌入可以更好地保留解码器重建边缘的时间和结构信息。然而,过大的|z|会使模型复杂化,并影响Kairos的泛化能力。|z|=200提供最佳检测性能
时间窗口长度(|tw|)
时间窗口的长度决定了Kairos执行其异常检测算法的频率。通常,时间窗口越长,累积的系统事件数量就越多。由于良性活动的数量占比远超攻击活动的数量,较大的时间窗口可能会使异常检测变得困难。当|tw|太大(60分钟)时,Kairos产生更多的假阴性,这导致低召回率(和高准确率)和总体低准确率。当|tw|较小时(5分钟),我们会看到性能略有下降,因为较短的时间窗口可能会限制Kairos准确地将事件设置为上下文的能力。然而,没有必要仅仅为了提高检测的及时性而使用小的时间窗口,因为APT行为者只会缓慢地渗透到他们的目标系统中。|tw|=15分钟在所有数据集中是理想的,增加时间窗口长度仅略微增加了存储器开销,即使当长度很大时也是如此。这是因为Kairos以流的方式处理起源图,而不是将整个图保存在内存中。
(5) 攻击重建
重建完整但简洁的攻击过程的能力是首要设计指标。这对异常检测系统尤其重要,尤其是那些利用深度学习的系统。
与生成攻击摘要图的异常时间窗口队列的大小相比,攻击摘要图的大小最多小五个数量级。例如,在E3-Theia中,Kairos实现了109,469倍的边数减少,将需要手动检查的边数从异常时间窗口队列中的340万条减少到仅31条。这部分将使用攻击摘要图和良性摘要图来说明Kairos构建简明图的能力。
(6) 端到端性能
Kairos以固定的时间窗口间隔处理流来源图,并在检测到异常时间窗口队列时发出入侵警报。如Kairos在E3-Theia上处理15分钟时间窗口,Kairos最多只需要228.8秒(或15分钟的25.4%)来处理一个时间窗口(包含大约250万个边缘),远远低于一个时间窗口的持续时间。StreamSpot每秒处理约14K个边缘,而Kairos的延迟稍高一些,每秒处理约11K个边缘。然而,Kairos在检测准确率方面明显优于StreamSpot。先前的工作已经表明,即使在主机系统繁忙的情况下,起源捕获系统每秒生成的边数通常也少于10K。因此,Kairos可以同样轻松地处理流传输的起源图,而不会“落后”。综合表示,Kairos可以在运行时有效地监视主机系统。