# 摘要
高级持续威胁(APT)攻击一直困扰着现代企业,造成了重大的财务损失。为了应对这些攻击,研究人员提出了一些技术,通过使用溯源图对系统实体及其依赖关系进行建模来捕获 APT 攻击的复杂且隐蔽的场景。特别是,为了加速攻击检测并减少经济损失,迫切需要在时效性和资源有限的约束下检测和调查 APT 攻击的在线溯源检测系统。不幸的是,现有的在线系统通常会牺牲检测粒度来降低计算复杂性,并生成超过 100,000 个节点的溯源图,这给安全管理员解释检测结果带来了挑战。在本文中,我们设计并实现了NODLINK,这是第一个在不牺牲检测粒度的情况下保持高检测精度的在线检测系统 。我们的见解是,基于在线溯源的检测系统中的 APT 攻击检测过程可以建模为斯坦纳树问题 (STP),该问题具有高效的在线近似算法,可以恢复简洁的攻击相关溯源图,并具有理论上有限的误差。为了利用STP近似算法的框架进行APT攻击检测,我们提出了一种新颖的内存缓存设计、一种高效的攻击筛选方法以及一种新的STP近似算法,该算法在APT攻击检测方面比传统算法更高效,同时保持相同的复杂性。我们在生产环境中评估 NODLINK。开放世界实验表明,NODLINK 在具有相同或更高吞吐量的同时实现了更高的检测和调查精度,优于两种最先进的 (SOTA) 在线溯源分析系统。
# 研究团队介绍
Shaofei Li, Xiangqun Chen, Yao Guo ,Ding Li:北京大学计算机学院高可信软件技术教育部重点实验室
Feng Dong, Haoyu Wang:华中科技大学,主要研究软件分析、隐私和安全、电子犯罪、 互联网/系统测量和 AI 安全
Jiedong Chen:深信服
Xusheng Xiao:亚利桑那州立大学,主要研究移动应用程序分析、网络威胁检测和调查、区块链/智能合约安全以及软件测试和调试
Fei Shao:凯斯西储大学
代表作:Are we there yet? An Industrial Viewpoint on Provenance-based Endpoint Detection and Response Tools. (CCS'23)
# 背景介绍
# APT威胁检测
高级持续威胁(APT)攻击已成为现代企业的主要威胁。由于缺乏恢复APT攻击步骤之间复杂因果关系的能力,这些企业现有的端点检测和响应(EDR)系统在应对APT攻击方面存在困难。因此,从业者和研究人员现在分析溯源数据中的系统审计事件以恢复APT攻击场景。不幸的是,现有的溯源分析系统大多仅支持对 EDR 系统警报的事后分析,这可能会使 APT 攻击的准确检测延迟一周,并造成重大财务损失。最近的一项研究表明,当攻击者持续存在于网络中时,企业每天会损失约 32,000 美元。
为此,研究人员构建了基于溯源的在线检测系统,可以同时检测和调查 APT 攻击。与事后分析系统不同,基于溯源的在线检测系统可以在 APT 攻击发生后几秒钟内检测并恢复其逻辑,从而使安全管理员能够及时响应并减少潜在损失。此外,通过对整个APT攻击活动而不是单个系统事件进行全面分析,基于溯源的在线检测系统的误报率大大低于传统的EDR系统,进一步提高了APT攻击调查的有效性和效率。
尽管取得了这些有希望的早期成果,但由于有限资源的限制和对及时性的高期望,构建准确的在线检测系统在概念上仍然具有挑战性。最近的研究表明,运营成本是行业采用 EDR 系统的主要瓶颈。因此,降低基于溯源的检测系统的运行成本非常重要。同时,人们仍然期望基于溯源的检测系统能够及时在线检测APT攻击。不幸的是,在时效性和有限资源的限制下实现高检测精度尤其具有挑战性,因为溯源数据是高度结构化的图(称为溯源图)。现有的图处理算法,例如图神经网络[38]或迭代消息传递算法[41],由于效率低而无法直接应用。
为了应对这些挑战,最近的基于溯源的在线检测系统使用低维数据结构或手动制定的规则过度简化高度结构化的溯源图。这些系统通过牺牲检测粒度来降低计算复杂性,它们使检测结果难以解释。例如,给定在溯源数据中捕获的 APT 攻击,SOTA 在线检测系统之一 UNICORN 可能会生成具有超过 100,000 个节点的溯源图。然而,只有不到100个节点与APT攻击有关。因此,从溯源图中识别出如此少量节点所代表的攻击步骤就像“大海捞针”一样,这对于安全管理员来说是极其困难的。
基于溯源的APT检测的工作流程包含三个步骤:
- 候选攻击检测,选择妥协指标 (IOC) 或异常事件;
- 溯源图构建,用代表系统实体的节点和代表实体交互(例如读/写文件)的边构建图,以揭示 IOC 或异常之间的交互;
- 全面检测,根据步骤2构建的溯源图来检测APT攻击。
在这三个步骤中,步骤2构建的溯源图的质量是准确、细粒度检测的关键。不幸的是,构建一个最简洁和准确的溯源图来揭示 IOC 或异常之间的相互作用是具有挑战性的。现有方法使用的启发式要么过度简化溯源图,错过关键信息,要么对于在线检测系统来说过于繁重。因此,他们无法同时实现简洁、高效和准确。
在本文中,我们提出了FIRST在线检测系统,该系统在时效性和有限资源的约束下实现细粒度检测,同时保持检测精度。现有方法无法同时实现 APT 检测的简洁性、高效性和准确性,因为它们存在根本局限性:缺乏 APT 检测多目标的正式模型。因此,为了解决这个基本限制,我们建议将溯源图构建(溯源检测的步骤 2)建模为 STP(斯坦纳树问题),它可以有效地建模多个目标,并且具有高效的在线能力具有理论有限误差的近似解。将 IOC 或异常视为 STP 中的一组预定义节点(即终端),并为系统实体之间的每次交互分配相同的非负权重。然后,构建溯源图可以建模为在线 STP,它搜索用最少数量的边链接所有异常的子图。通过这样做,我们可以设计一种近似算法,确保子图在多项式时间内在理论上有界误差范围内具有最小边缘。
虽然听起来很有希望,但解决基于 STP 的 APT 攻击检测问题面临三个主要挑战。
- 第一个是如何检测长期攻击? STP 需要提前了解整个来源图。然而,由于数据大小的原因,将所有来源数据保存在内存中是不可能的,并且由于 I/O 瓶颈,将其存储在磁盘数据库中也不切实际。使用仅保存最新数据的时间窗口的直接方法并不总是有效,因为攻击者可能需要比窗口允许的时间更长的时间。为了解决这个问题,我们提出了一种新颖的内存缓存设计,采用评分方法来优先考虑可能导致 APT 攻击的事件,并在 STP 的时间窗口内捕获长时间运行的攻击。
- 第二个挑战是如何在STP中高效地识别终端?现有的检测方法依赖于来源图上的密集随机行走和消息传递,这不适合在线系统。为了解决这个问题,我们设计了一个需要最少计算的 IDF 加权三层变分自动编码器(VAE)。
- 第三个挑战是当前的 STP 近似算法对于 APT 攻击检测仍然不够高效。现有的方法需要找到两个节点之间的最短路径,这对于在线APT攻击检测来说成本太高。为了解决这个问题,我们开发了一种用于在线 STP 优化的面向重要性的贪婪算法,该算法以有限的竞争比实现了低计算复杂度。
主要贡献:
- 我们将APT检测建模为在线STP,为在线APT检测提供了新的视角。
- 我们设计并实现了在线APT检测系统NODLINK,该系统基于STP实现了及时性和有限资源的细粒度检测。
- 我们在实际生产环境中评估NODLINK。据我们所知,这是对基于来源的 APT 攻击检测的首次开放世界评估。
# 现有技术的局限性
现有的基于来源的检测系统可以分为两类:基于规则的系统和基于学习的系统。两组中的许多实例都证明了实现实际图形级精度的能力。然而,现有系统无法同时实现足够的节点级精度和节点级召回率。
由于规则集不完整,基于规则的系统的节点级准确性较低。例如,基于 SOTA 规则的系统之一 HOLMES无法检测到图 1 中蓝色虚线框中的攻击步骤。原因是 HOLMES 的规则是从外部不受信任的 IP 发起的,而邮件过程并不与外部 IP 地址有直接连接。因此,图 1 中攻击的 HOLMES 输出图是支离破碎的。无法将HOST2上的攻击步骤与HOST1上的攻击步骤联系起来,给根因分析带来了挑战。此外,基于规则的系统在节点级别上会产生许多误报,因为规则无法很好地模拟动态系统的所有特征。
另一方面,基于学习的系统由于过度逼近而节点级精度较低。为了支持在线检测,现有的基于学习的方法将来源图投影到低维数据结构中以降低计算复杂性,从而导致过度逼近。例如,基于 SOTA 学习的在线检测方法 UNICORN 将来源图转换为哈希向量。因此,UNICORN 无法从良性数据(以绿色虚线框显示)中查明图 1 中与攻击相关的节点(以红色虚线框显示),导致节点级精度较低(<1%)。
# 在线STP
在线STP是一个组合优化问题,被确定为具有有界近似的NP完全问题。给定一个具有非负边权重的无向图 G = (V, E),我们对每条边 e ∈ E 和一系列在线显示顶点(称为终端)T = {t1, t2,… , tk},它输出 G 的一个子图 Si,其跨越 {t1, t2, … , ti}。目标是最小化 $c(\bigcup_i^kS_i)$ 的总成本。
在线 STP 优化算法的一般框架如算法 1 所示。对于每个到达的新终端 ti,我们选择将 ti 连接到算法当前解的未选择边的集合 Si。该集合 Si 被选择为最便宜的,在将 ti 连接到现有终端的所有可能集合中,其具有最小的加权边缘。为了找到这个集合,它使用贪心方法:计算 ti 和每个前一个终端 tj 之间的最短路径 Pj(其中 j < i),然后选择最便宜的路径作为 Si。我们将 Si 添加到解决方案中并重复此过程,直到所有终端都到达。最终的解决方案是所有集合 Si 的并集。
# 方法概述
# 异常检测方法:
- 内存缓存设计 :设计内存缓存以维持最新的异常节点,支持长期攻击的跟踪并保持算法性能。
- 终端识别 :通过分析系统审计事件并使用机器学习模型(如VAE)来识别可疑的进程节点作为终端。
- 霍普集构建算法 :基于重要性分数引导的搜索算法来构建霍普集,该算法考虑了节点的异常分数和与终端的距离。
- 重要性分数计算 :计算每个节点的重要性分数,该分数综合了节点的异常分数、与终端的距离以及FANOUT因子。
- 图异常分数 :为每个霍普集分配一个图异常分数(HAS),这是霍普集中所有节点异常分数的总和。
- 综合检测 :合并时间窗口内构建的霍普集,使用Grubbs测试等统计方法来检测异常高分的霍普集,从而识别APT攻击。
- 理论分析 :对算法的复杂度和竞争比进行理论分析,确保近似算法的有效性和效率。
一般来说,NODLINK是一个在线APT攻击检测系统。它接受从受监控主机上安装的代理收集的系统来源事件的事件流。 NODLINK 的输出是包含关键攻击步骤的简洁警报来源图,图 1 显示了警报来源图的示例(由红色虚线框标记,其中包含约 200 个事件)。
算法2显示了NODLINK的高级工作流程,它与现有的检测系统类似。我们的 NODLINK 算法通过四个阶段每隔 Δ(在我们的实现中 Δ = 10)秒检测一次异常:
- 内存中缓存构建(第 6 行)
- 终端识别(第 7 行)
- Hopset 构建(第 8 行)
- 综合检测(第9行)
我们获取事件并将它们存储在缓存中,允许 NODLINK 跟踪内存中长时间运行的攻击事件的因果关系,而不会受到缓慢 I/O 带来的性能瓶颈的影响。根据本地特征(例如命令行、进程名称和访问的文件)识别可疑进程并分配异常分数。为每个终端构建 Hopset,以连接拓扑上接近的事件级异常。最后,我们将 hopset 与缓存合并,并报告任何具有偏差异常分数的子图作为警报,以减少误报。
我们方法的关键新颖之处在于 Hopset 的第三阶段。现有方法要么使用重型图学习算法,要么使用容易出错的启发式算法。在我们的方法中,我们提出了一种基于在线 STP 的方法,可确保简洁、准确和高效。为了将起源图上的 APT 攻击检测建模为 STP,我们将与攻击相关的过程视为终端,并将有向图转换为每条边具有相等非负权重 w 的无向图,为了简化,w = 1。它帮助我们对没有直接因果关系但对同一节点有依赖关系的终端进行建模。因此,APT检测的目的是首先识别终端集T,并找到能够连接所有攻击相关节点且总权值$c(S)=\sum_{(u,v)\in S}W_{uv}$最小的边集S,即,即是一个标准的STP公式。然后,如果 Steiner 树中节点的聚合异常分数大于阈值,我们的系统会发出警报。
# 内存缓存
将NODLINK的时间窗口设计为内存缓存,以解决长时间运行的攻击并保持在线STP优化算法的效率。它在内存中维护最新的异常节点,并将过时的良性节点驱逐到磁盘。
在我们的设计中,内存缓存以 <srcid, dstid, attr> 的形式包含起源图的边,其中 srcid 和 dstid 分别是边的源和目的地的 ID,attr 是边的 ID。边的属性,包括操作类型和时间戳。表1列出了边的类型及其可用的操作类型。NODLINK还存储有向图中节点的必要属性,即进程、文件和IP地址。对于进程,NODLINK 存储它们的命令行、进程名称、pid 和 uid。对于文件和IP,NODLINK分别存储它们的路径和IP以及端口。
缓存更新:通常,内存缓存缓冲子图
- 具有较高的异常分数并
- 正在积极演变。
内存缓存会在每个长度为 Δ 的时间窗口更新当前时间窗口中 STP 的解,NODLINK 利用内存缓存来实现全局 STP 解决方案和误报减少。
NODLINK 将缓存中的子图组织为 hopset,并为每个 hopset 提供一个 hopset 异常分数 (HAS)。在较高级别上,跳跃集是起源图的子集,其中包含一组事件级异常的本地上下文信息。 HAS表示每个hopset的异常程度。
# 终端识别
在终端识别中,NODLINK扫描内存缓存并根据可疑进程节点的节点级特征将其识别为终端。请注意,虽然 NODLINK 的输出仅包含异常进程,但它确实考虑了异常文件和 IP 地址。 NODLINK 将异常文件和 IP 地址合并到访问它们的进程。这一设计决策背后的逻辑是,恶意文件和 IP 在被进程访问之前无法生效。因此,关注异常进程可以减少文件和 IP 上的重复警报,而不会损失节点级的准确性。 NODLINK分析三类节点级特征:启动进程的命令行(命令行)、进程访问的文件(文件)以及进程访问的IP地址(网络)。终端识别包括两个步骤:首先,它根据节点级特征将流程节点嵌入到数值向量中。其次,它使用机器学习模型来检测异常。
离线模型训练: 虽然NODLINK是一个在线检测框架,但它需要离线训练FastText模型、VAE模型、SV模型以及从历史数据中提出异常的阈值。 NODLINK 在历史数据中的命令行、文件路径和 IP 地址上训练 FastText 模型。然后,NODLINK 使用经过训练的嵌入向量进一步训练 VAE 模型。 NODLINK 通过对历史数据定期运行 DBSCAN 算法来离线计算 SV。它首先将进程嵌入向量分类为不同的组。然后,将进程名称及其簇数存储在内存哈希表中,用于在线异常分数计算。
# 作用
- 识别攻击入口点 :终端检测的目的是识别出可能表示APT攻击开始的异常或可疑节点,这些节点可以视为攻击的“入口点”或“终端”。
- 确定攻击相关实体 :通过检测异常行为或特征,终端检测帮助确定与APT攻击直接相关的系统实体,如恶意进程、文件或网络连接。
- 减少误报 :准确识别攻击相关的终端可以减少误报,因为这些检测结果将用于后续的霍普集构建和攻击图生成,专注于与攻击最相关的事件。
- 提高检测精度 :终端检测通过分析系统审计事件来恢复APT攻击场景,提高了对攻击步骤的检测精度。
- 支持快速响应 :快速准确地识别攻击终端允许安全管理员及时响应,采取措施以遏制攻击的扩散,减少潜在损失。
- 构建攻击图的基础 :终端检测为构建攻击图提供了基础节点,这些节点是后续霍普集构建和攻击场景重建的关键。
- 优化资源分配 :通过识别最关键的攻击节点,系统可以更有效地分配资源,如计算和存储,以处理与攻击最相关的数据。
- 辅助攻击调查 :终端检测的结果可以辅助安全分析师理解攻击的起源、范围和潜在影响,从而更有效地进行攻击调查和事后分析。
# 方法
- 基于节点级特征的嵌入(Embedding Based on Node-Level Features) :
- NODLINK首先将进程节点的命令行、访问的文件和IP地址等节点级特征嵌入为数值向量。这一步骤使用自然语言处理(NLP)技术,将命令行、文件路径和IP地址转换成自然语言句子,然后利用文档嵌入工具(如FastText)将句子转换成数值向量。
- 异常分数计算(Anomaly Score Calculation) :
- 使用变分自编码器(VAE)模型来为每个进程节点计算异常分数。VAE模型将嵌入向量作为输入,并输出一个重建的输入向量。如果重建向量与原始嵌入向量有显著差异,则该节点更可能是异常的。
- 稳定性分数(Stability Score) :
- 为了减少不稳定进程(如经常访问随机文件或IP地址的进程)导致的误报,NODLINK引入了稳定性分数(SV),该分数基于具有相同名称的进程在历史数据中的聚类数量。
- 综合异常分数(Comprehensive Anomaly Score) :
- NODLINK将重建误差(由VAE模型给出)和稳定性分数结合起来,计算每个进程节点的综合异常分数。异常分数的计算公式为: $AS(p) = \log\left(\frac{RE(p)}{SV(p)}\right)$ 其中,𝑝是进程的嵌入向量,𝑅𝐸是由VAE模型给出的重建误差,𝑆𝑉是进程 𝑝 的稳定性分数。
- 终端判定(Terminal Determination) :
- 如果一个进程节点的综合异常分数高于历史数据中异常分数的90th百分位数,则该进程节点被标记为异常(终端)。这个阈值是VAE基础异常检测中常用的,以确保方法的泛化能力。
- 离线模型训练(Offline Model-Training) :
- 尽管NODLINK是一个在线检测框架,但它需要在历史数据上离线训练FastText模型、VAE模型、SV模型以及确定异常分数的阈值。
# Hopset构建
在终端识别中检测到终端后,NODLINK运行Hopset Construction来解决当前时间窗口内的STP。某个时间窗口内的跳集是每个终端的邻居上下文,其中包括有界的邻居节点以及到这些节点的路径。 NODLINK利用贪心算法,我们称之为重要性评分引导搜索(ISG)算法,根据局部信息(例如AS和节点度)构造跳集。 Hopset Construction 输出一个具有低复杂度和有限竞争比的 STP 近似解。
图异常分数计算: Hopset构建的最后一步是将异常分数HAS分配给每个hopset。我们将 hopset 的 HAS 定义为 hopset 中所有节点的所有异常分数的总和$has(H_i)=\sum_{n\in H_i}AS(n)$。请注意,由于 NODLINK 已经根据 IV 排除了不重要的节点,因此 hopset 中的节点可能与攻击相关。因此,AS 的总和仅包括极有可能与攻击相关的节点。该设计通过避免与攻击无关的事件,有助于提高终端识别中定义的节点级准确性和图级准确性。
# 作用
- 局部上下文捕获 :霍普集包含了每个终端(即攻击相关的异常节点)的邻居上下文,这包括有界的邻居节点和到这些节点的路径。通过霍普集,系统能够捕获到攻击行为的局部细节。
- 异常检测和识别 :霍普集帮助系统通过连接事件级异常来识别攻击步骤,从而实现对APT攻击的细粒度检测。
- 减少误报 :通过专注于与攻击相关的异常节点,霍普集有助于降低与攻击无关的良性事件的干扰,从而减少误报。
- 支持快速检测 :霍普集的构建是为了与在线STP近似算法相结合,以快速响应新的攻击证据,实现实时检测。
- 攻击场景重建 :霍普集提供了攻击步骤之间的逻辑连接,这对于重建完整的攻击场景至关重要。
# 方法
- 基于重要性分数的搜索 :NODLINK使用一个称为重要性分数(Importance Score, IV)的指标来指导搜索过程。这个分数考虑了节点的异常分数和与终端的距离。
- 贪婪搜索算法 :霍普集构建采用了一种贪婪搜索算法,该算法从每个终端开始,基于重要性分数探索邻居节点。
- 节点选择 :在搜索过程中,NODLINK会选择那些具有较高重要性分数的节点,以确保霍普集包含与攻击最相关的事件。
- 有界搜索范围 :为了控制霍普集的大小并提高效率,搜索过程会在达到预设的节点数(θ)时停止。
- 合并重叠霍普集 :在贪婪搜索过程中,如果有重叠的霍普集,NODLINK会合并它们,以有效地连接终端。
- 异常分数分配 :每个霍普集都会被分配一个霍普集异常分数(HAS),这是霍普集中所有节点异常分数的总和,用于评估霍普集的异常程度。
- 更新和维护 :在每个时间窗口内,NODLINK会更新内存中的缓存霍普集,并与当前时间窗口内构建的霍普集合并,以维持对当前攻击场景的反映。
通过霍普集构建,NODLINK能够有效地识别和连接APT攻击中的相关事件,实现对攻击行为的快速和准确检测,同时保持对攻击场景的细粒度理解。
# 综合检测
为了进行全面的检测,NODLINK首先用当前时间窗口构造的hopset更新内存中的缓存hopset。如果当前时间窗口的跳集与缓存中的跳集具有相同的节点,NODLINK 将它们合并。然而,如果我们直接合并 hopset,在最坏的情况下,长时间运行的进程会被识别为终端,并在每个时间窗口中更新 θ 个不同的邻居,这可能会导致依赖爆炸。为了防止这种情况,我们将每个终端的跳数限制在 θ 个节点内,并在合并时将 IV 值较低的节点替换为 IV 值较高的节点。
跳集合并后,NODLINK 将 HAS 分配给更新的跳集。这样,我们就可以将每个时间窗口的STP解与全局解连接起来,从而重建长期的攻击活动。然后,NODLINK 利用 Grubbs 测试 来检测具有异常高 HAS 的 hopset。Grubbs的测试检测一组样本中的最大值是否为异常值。我们选择Grubbs测试,因为它是非参数化的并且对污染的训练数据集具有鲁棒性。 NODLINK 在内存缓存上运行 Grubbs 测试多轮,直到没有标记异常值。最后,检测到的异常值被识别为攻击活动并发出警报。
# 作用
- 整合检测结果 :综合检测负责将不同时间窗口内通过霍普集构建得到的局部检测结果进行整合,形成一个全局的攻击检测视角。
- 提高检测准确性 :通过对各个霍普集的合并和分析,综合检测有助于提高对APT攻击的检测准确性,确保攻击步骤没有被遗漏。
- 减少误报 :综合检测通过合并霍普集并应用统计测试来识别异常高分的霍普集,这有助于区分真正的攻击和误报。
- 攻击场景重建 :综合检测有助于重建完整的APT攻击场景,这对于理解攻击的全貌、攻击者的行为和攻击的影响至关重要。
- 及时响应 :综合检测为安全管理员提供了及时的攻击检测结果,使他们能够快速响应并采取措施来阻止攻击。
- 统计分析 :综合检测使用统计方法(如Grubbs测试)来分析霍普集的异常分数,进一步验证攻击的存在。
# 方法
- 更新缓存霍普集 :在每个时间窗口结束时,NODLINK会更新内存中缓存的霍普集,将新构建的霍普集与缓存中的霍普集合并。
- 合并霍普集 :如果当前时间窗口构建的霍普集与缓存中的霍普集有相同的节点,NODLINK会将它们合并。合并时,会考虑重要性分数(IV)来决定哪些节点保留。
- 限制霍普集大小 :为了防止依赖爆炸,NODLINK限制每个终端的霍普集大小,并在合并时替换IV值较低的节点。
- 计算图异常分数 :为每个霍普集计算一个图异常分数(HAS),这是霍普集中所有节点异常分数的总和。
- 应用统计测试 :NODLINK使用Grubbs测试等统计方法来检测HAS异常高的霍普集,这些霍普集可能表示攻击活动。
- 识别攻击活动 :通过多轮Grubbs测试,NODLINK识别出异常的霍普集,并将它们标记为攻击活动,随后触发警报。
- 生成攻击图 :综合检测的结果被用于生成攻击图,该攻击图展示了APT攻击的步骤和相关实体之间的依赖关系。
# 实验评估
# 数据集
# 图粒度准确度
Close-World Result: 如表3 所示,虽然这些系统可以检测到所有攻击,但它们报告的误报比 NODLINK 更多。具体来说,ProvDetector、UNICORN 和 HOLMES 生成 783、14 和 416 个 GF P。相反,NODLINK 仅报告这些数据集中的一个误报。
ProvDetector 无法检测到 DARPA-CADETS 中的攻击,并且由于内存限制也无法在 DARPA-TRACE 上进行检测。它还在 DARPA-THEIA 上具有最低的图形级精度,因为它无法处理会爆炸依赖性的浏览器活动。例如,当 Firefox 连接到新的 IP 地址时,ProvDetector 会错误地报告错误警报。 UNICORN 具有较低的图级精度,因为它过度近似起源图。 UNICORN 将来源图投影到数值向量以进行检测。此步骤降低了其图形级精度。 HOLMES 有更多的 GF P,因为它的规则过于保守。例如,如果进程在访问不受信任的 IP 地址后运行命令行实用程序,HOLMES 的命令行实用程序规则会将进程标记为异常。此规则会对长时间运行的进程(例如 Nginx)产生大量误报:一旦 Nginx 进程收到来自不受信任 IP 的连接,所有由 Nginx 进程分叉的 shell 命令执行都会被标记为异常。虽然构建更复杂的规则可以提高 HOLMES 的精度,但考虑系统的异质性和不同类型系统活动的数量是乏味的。
Open-World Results: 结果与近距离世界实验的结果一致。 NODLINK 在开放世界实验中的节点级精度较低,因为开放世界实验中的信噪比要低得多。 NODLINK 的性能优于基线。特别是,HOLMES 在开放世界实验中未能检测到任何攻击,因为其规则集缺乏检测 Webshell 和处理劫持攻击的规则。不幸的是,开放世界实验中的攻击都利用了 webshell 和相关攻击来劫持正在运行的进程以保持隐蔽性。因此,HOLMES未能捕获其中任何一个。
# 节点粒度准确度
**Close-World Results: ** NODLINK的节点级精度与离线解决方案ProvDetector相当。对于在线解决方案,NODLINK比HOLMES高一到两个数量级,比UNICORN高两到三个数量级。
对于节点级召回,NODLINK 在其报告的来源图中捕获了大部分攻击步骤。平均而言,NODLINK 覆盖了 98% 的攻击相关事件。遗漏的步骤与侦察有关,例如运行“whoami”、“ipconfig”、“tasklist”和“systeminfo”来收集有关系统的信息。 NODLINK 在我们的实验中捕获了与运行攻击负载和横向移动相关的所有步骤。 HOLMES 的节点级召回率较低,因为它缺乏检测多个攻击步骤的规则。例如,它无法检测由内部文件发起的攻击步骤。
无法测量 UNICORN 的节点级召回率,因为它只是报告来源图中的所有事件,无论事件与攻击相关还是无关。因此,尽管 UNICORN 在其报告的来源图中捕获了所有攻击步骤,但它的节点级精度比其他方法低很多。此外,UNICORN与其他调查技术不兼容,因为所有调查技术都需要IOC的可疑节点或边缘来发起调查。 UNICORN 不会产生 IOC 作为调查技术的起点。相反,它会生成包含攻击的来源图。因此,我们无法将 UNICORN 与后处理步骤结合起来以提高其节点级精度。
Open-World Results: 跳过了 HOLMES 的数据,因为它在开放世界实验中未能检测到任何攻击。总的来说,结果与近距离实验的结果一致。 NODLINK 实现了与 UNICORN 相同的节点级召回率,但节点级精度提高了两个数量级。
# 运行效率
通过测量吞吐量(吞吐量定义为每秒可以处理多少个系统事件)来评估 NODLINK 及时检测 APT 攻击的效率。
时间复杂度理论分析: ProvDetector 首先提取出处图中的所有路径并计算每个事件的规律性得分。然后,它将检测转换为在有向无环图上寻找 K 条最长路径,该问题由 Epstein 算法求解,时间复杂度为 O(E + N log N )。 HOLMES 通过策略匹配引擎处理来源图。因此,其时间复杂度为O(E),其中E为边数。 UNICORN 构造复杂度为 O(R * E) 的图直方图,并使用 HistoSketch 实时生成图草图,其中 R 是跳数,E 是边数,正如其在其中所声称的那样论文。请记住,NODLINK 的复杂度是 O(θN )。因此,我们的分析预计 NODLINK 和 HOLMES 比 ProvDetector 和 UNICORN 快得多。
实验分析: 如图 2 显示 y 轴是每个数据集中每秒处理的事件数。总体而言,NODLINK 的吞吐量与 HOLMES 的吞吐量相当。 NODLINK 在 DARPATHEIA 和 DARPA-TRACE 中具有更高的吞吐量,而 HOLMES 在 In-lab Arena 数据集和开放世界实验中具有更高的吞吐量。
HOLMES 分两个阶段运行:
(1) 根据来源数据匹配策略、技术和程序 (TTP)
(2) 将 TTP 链接到高级场景图 (HSG)
然而,HOLMES 未能匹配实验室内和开放世界数据集中的一些关键步骤,如表 5 所示。第一阶段的失败消除了第二步的需要,从而导致 HOLMES 在这两个数据集中具有更高的吞吐量性能。 ProvDetector 显示了最差的吞吐量,因为它需要计算每个事件的规律性得分并找到 K 条最长路径。如表 2 所列,开放世界主机平均每秒生成 40 个事件。在工业环境中,基于中央的检测系统预计可以处理集群中数百到数千台主机。假设有 500 个主机,系统每秒必须处理 20,000 个事件。因此,UNICORN和ProvDetector的吞吐量达不到工业要求。总体而言,NODLINK 具有与现有检测系统相当或更高的吞吐量。
# 效率消融实验
NODLINK设计了内存缓存和ISG来提高效率。在本节中,我们使用 DARPA 数据集对它们分别对效率的影响进行消融研究。为了评估缓存设计,我们禁用缓存并将所有来源数据和缓存图存储在图数据库 Neo4j 中。为了评估 ISG 算法,本文使用传统的斯坦纳树近似算法Kou和 Mehlhorn,以每个时间窗口为基线。在表6中显示了结果。以NODLINK的吞吐量为基准,计算它们之间的比率。总体而言,内存缓存和ISG搜索算法的设计大大提高了检测效率。
如表六所示,当禁用内存缓存设计时,效率比原始设计慢82.54 - 159.06倍。当用 Kou 替换我们的算法时,在 DARPACADETS 上效率慢了 8406.86 倍。由于其他两个数据集的处理时间较长,我们无法获得 Kou 的准确时间。当用 Mehlhorn 替换我们的算法时,效率慢了 3.08 - 111.21 倍。研究发现,这些算法的效率随着数据集大小的增加而降低,这是它们高复杂性的结果。
# 其他实验
实验案例: 本文通过七个案例研究展示 NODLINK 如何在开放世界实验中检测真实攻击。总体而言,HOLMES 未能检测到所有这些攻击,因为它缺乏检测 webshell 代码注入的规则。 NODLINK 和 UNICORN 可以成功检测到它们。NODLINK具有更高的节点级精度,其数量级始终比 UNICORN 大。
超参数实验: 本文使用 DARPA 数据集上的最佳实验结果选择默认超参数。总体而言,NODLINK 对参数变化具有鲁棒性,因为我们选择使用非参数化学习技术。
# 相关工作
SLEUTH 是第一个基于来源的在线 APT 检测系统。存在各种离线事后攻击调查系统,使用大量图学习算法。然而,这些可能会延迟检测,导致经济损失。与这些系统相比,NODLINK 是第一个在不损失检测粒度的情况下实现高检测精度的在线系统。还有针对传统入侵检测系统的研究,然而,这些系统与 NODLINK 是正交的,因为它们无法支持 APT 攻击调查。未来可以借用传统入侵检测系统最新进展的思想来提高terminal Identification中异常识别的准确性 。
NODLINK 还与传统的基于主机的入侵检测技术 (HIDS) 相关。 Log2vec 通过在异构图上随机游走的图嵌入将日志嵌入到向量中。 Deeplog 使用长短期记忆(LSTM)对日志的序列和上下文特征进行建模。这些技术在检测APT攻击方面效果较差,因为它们无法链接攻击步骤并重建APT攻击活动。
# 总结
规避攻击: NODLINK 与其他基于分数传播的技术(如 MORSE [46]、PrioTracker [68] 和 NoDoze [41])保持安全对等,为来源子图提供高效、准确的异常分数计算。尽管它很稳健,但仍发现了针对 NODLINK 的两种潜在攻击。
- 攻击者可以利用分数传播中使用的衰减因子,使用良性诱饵事件来降低攻击路径的异常分数。然而,这种理论上的威胁在实践中问题不大,因为创建良性节点通常会导致新的异常并创建可检测到的异常路径形状。
- 攻击者可以尝试通过延长每个攻击步骤之间的时间间隔来逃避检测,从而导致异常节点被从缓存中清除。 NODLINK 通过节点检索机制来应对这一问题,该机制从磁盘中恢复被逐出的节点,防止长期攻击规避。
鲁棒性: 得益于 Grubbs 的测试识别和 VAE 的鲁棒性,NODLINK 对于包含轻微攻击的训练数据集具有弹性。我们使用五个封闭世界数据集评估了 NODLINK 针对污染训练数据的鲁棒性,并向其中添加了一天的攻击数据。结果显示,NODLINK 的图表和节点级准确性并未受到训练集中存在的一些攻击相关数据的影响。这得益于本文的设计选择采用 VAE 和非参数化异常检测技术 。
基于在线来源的检测系统比事后检测系统更适合及时检测 APT 攻击。然而,由于资源和及时性有限,现有系统为了准确性而牺牲了检测粒度。我们观察到现有系统无法实现细粒度的检测,因为它们将大部分有限的资源浪费在明显良性的事件上。为此,我们提出NODLINK,一种基于来源的在线检测系统,可以在满足有限资源和及时性的约束的同时实现细粒度的检测。 NODLINK 的关键思想是将 APT 攻击检测问题建模为 STP,它具有高效的在线近似算法,理论上误差有限。我们在生产环境中的实验表明,与两个 SOTA 在线来源分析系统相比,NODLINK 可以在相同或更高的吞吐量下实现更高的检测和调查精度。