论文代码:
https://github.com/purseclab/ATLAS
代码预处理写的太乱了,很多预处理过程都不是特别合理。不过这篇论文思想还是挺合理的,相比其实溯源图工作在路径上的处理更加合理一些。
高级可持续威胁攻击(Advanced Persistent Threat,APT)涉及较长时间内的多个攻击步骤,其调查需要分析大量日志以识别其攻击步骤,这些即为运行 APT 攻击而进行的一组活动。然而,在企业中,入侵检测系统每天都会生成许多可疑事件的威胁警报(攻击症状)。网络分析师必须调查此类事件,以确定事件是否属于攻击的一部分。由于有许多警报需要调查,网络分析人员往往最终会产生警报疲劳,导致他们忽略大量警报,错过真正的攻击事件。
ATLAS利用因果关系分析,自然语言处理和机器学习技术的新颖组合来构建基于序列的模型,该模型从因果图建立攻击和非攻击行为的关键模式。在推断时间,给定威胁警报事件,确定因果图中的攻击症状节点。然后,ATLAS构造一组与攻击症状节点关联的候选序列,使用基于序列的模型来识别顺序中有助于攻击的节点,并将识别出的攻击节点统一起来构建攻击记录。
分析方法从多个主机、应用程序和网络接口收集不同的审计日志。大量日志通常需要离线分析或实时监控,以调试系统故障并识别复杂的威胁和漏洞。
ATLAS目标是从审计日志中识别关键实体(节点),帮助网络分析师构建 APT 攻击的关键步骤。ATLAS是一个攻击记录恢复框架,将自然语言处理 (NLP) 和深度学习技术集成到数据来源分析中,以识别攻击和非攻击序列。
ATLAS分三个阶段进行操作:
主要挑战在于:
主要的贡献:
针对因果溯源图的复杂性,ATLAS通过预处理来构建一个优化的因果溯源图,可以在不“牺牲”攻击调查的关键语义的情况下降低日志复杂性(即减少节点和边的数量)。
如果来实现预处理以达到其目标:
ATLAS会把同种类型事件进行聚合,这里的聚合方法是同种类型的节点具有相同类型的入边与出边同时有相同source与target。(合理与否???)
针对预处理方法的疑问:
然这可能会在构建序列时打破事件的原始时间顺序,但它不会影响预期攻击模式的识别,因为构建的序列中事件的时间顺序在模型学习和攻击调查阶段之间是一致的。 通过这个过程,与原始因果图相比,ATLAS 在实体数量方面平均减少了 81.81%。(现在一个场景大约只有2万左右的数据量)。
ATLAS首先从因果溯源图提取出攻击或非攻击序列,并将引理化与选择性采样应用到序列构建中以实现对攻击与非攻击模式的有效提取。最后,利用embedding方法对序列进行向量化并利用LSTM来学习序列的模式。
攻击序列包括攻击实体按时间顺序排列的事件。ATLAS首先从因果图中获取所有攻击实体的集合,并构建包含两个或多个实体的实体子集。
如上图所示,因果溯源图中包含了三个攻击实例{A,C,F},攻击子集为{A,C},{A,F},{C,F}和{A,C ,F}。攻击实体子集的数量可以是指数级的。然而,在实践中,攻击实体的数量通常并不多(通常少于 40 个),因为攻击者通常试图隐藏和最小化其活动的痕迹。例如,放置一个后门(表示为一个攻击实体)而不是留下n个后门(表示为n个实体),这符合攻击者保持隐身的最佳利益。
对于每个攻击实体子集,ATLAS 通过以下步骤从优化的因果图中提取攻击序列。 首先,对于攻击实体子集中的每个实体,ATLAS 提取其邻域图(一跳节点以及节点之间的边)。 这一步使 ATLAS 能够捕获所有与攻击实体有因果关系的实体。
其次,ATLAS 从构建的邻域图中获取按时间戳排序的攻击事件。如果源节点或目标节点代表攻击实体,则事件被标记为攻击。其中攻击事件表示由攻击实体A和C的邻域图中提取的边连接的时间戳排序节点。最后,ATLAS 将提取的时间戳排序的攻击事件转换为一个序列,如果它只包含攻击事件,并且包括实体子集的所有攻击事件,则将其标记为攻击。 例如,子集{A,C}的提取序列被标记为attack,因为它由包含攻击实体A或C的所有攻击事件组成。
一识别非攻击序列的方法类似于构建攻击序列。即按照上述步骤获取因果图中的所有非攻击实体并提取它们的序列。然而,由于非攻击实体的指数数量,这个过程很复杂。 ATLAS 不会尝试学习或识别任何良性活动(即非攻击序列),它旨在准确地学习和识别恶意和非恶意活动之间的界限。为此,ATLAS 为每个攻击子集添加了一个非攻击实体以提取非攻击序列。添加的非攻击实体可以潜在地将非攻击事件添加到序列中,这使得 ATLAS 能够提取攻击序列偏差(即非攻击序列),并精确学习攻击和非攻击序列之间的异同。形式上,如果因果图包括攻击实体和k’个非攻击实体,则非攻击实体子集的数量是
上图展示了三个攻击实体{A,C,F},用于提取包含一个或多个攻击实体的所有可能的攻击子集{A}, …,{A,C,F}。 为了生成非攻击子集,ATLAS 一次从三个非攻击实体{B,D,E}中附加一个实体到提取的攻击实体子集。
对于每个非攻击实体子集,ATLAS然后通过以下步骤从类似于攻击序列的因果图中提取非攻击序列:
(这样标记的非攻击序列是攻击序列的一个子序列,标为非攻击序列的意义何在???)
序列长度和序列数量:序列长度是序列中实体和动作的总数。ATLAS的序列构建过程不会导致固定长度的序列,因为每个序列可能由从因果图中获得的不同数量的事件组成(序列长度不固定)。此外,从随机图中提取的攻击和非攻击序列的数量取决于因果图的大小,因果图可以包括与攻击和非攻击实体相关联的不同数量的实体和事件。 因此,ATLAS能够从给定的因果图中提取不同长度和数量的攻击和非攻击序列。
ATLAS 使用词形还原技术(Lemmatization)将序列转换为表示用于语义解释的序列模式的通用文本。词形还原通常用于自然语言处理,主要是把单词的词缀部分除去,从而得到单词的词干部分。 这个过程保留了完整序列的原始语义,有利于基于序列的模型学习。
表 1 显示了四种不同的词汇类型以及 ATLAS 用于按顺序抽象实体和动作的每种类型中的词汇。该词汇表共包含30个词,将词的形态和派生相关形式简化为一个共同的基本形式。 词汇表根据词的细粒度语义分为四种不同的类型:进程、文件、网络和动作。 进程、文件和网络类型用于对实体进行词形还原。这些类型足以捕获因果图中实体的上下文、语义和句法相似性以及与其他词的关系。ATLAS 解析每个序列,找到实体并将它们中的每一个映射到相应的词汇表。
例如转化为
构建的攻击和非攻击序列的数量通常是不均衡的。原因是日志条目中的攻击实体一般比非攻击实体少。例如,我在评估中通过分析审计日志发现攻击实体的平均数为 61,而非攻击实体的平均数约为21K。使用这种极度不平衡的数据集训练分类器会使其偏向于多数(非攻击)类或无法学习少数(攻击)类。
为了平衡训练数据集,ATLAS首先对具有一定相似度阈值的非攻击序列进行欠采样。然后,它使用过采样机制随机变异那些攻击序列,直到它们的总数达到相同数量的非攻击序列。一种平衡训练数据集的简单技术是复制少数攻击序列中的序列或随机删除多数非攻击序列中的序列子集。不幸的是,这会导致模型过拟合于特定的攻击模式或错过许多重要的非攻击模式。为了解决这些问题,ATLAS 使用了下面详述的两种机制:
虽然 Levenshtein Distance 在 NLP 中经常被用于寻找句子之间的相似性,但 ATLAS 计算编辑步骤的数量,例如在序列中添加或删除词汇单词,以将一个序列转换为另一个词形化序列。 对于训练集中的所有序列,此过程的复杂度为 O(n2)。对于每个序列,当它们的相似度超过某个阈值时,ATLAS 将删除这些序列。 特别是,通过实验发现序列之间 80% 的相似性阈值会产生良好的欠采样率,足以过滤掉高度相似和冗余的序列。
ATLAS 使用词表示嵌入将词形化序列转换为表示序列模式的广义文本以进行语义解释。这个过程保留了完整序列的原始语义,有利于基于序列的模型学习。
本文描述了 ATLAS 如何在训练基于序列的模型后辅助安全调查员进行攻击调查。调查通常从一个或多个攻击症状实体开始。例如,攻击症状可能是恶意网站或安全分析师识别的 IP 地址,或由网络监控系统(如 Nagios)报告为威胁警报。这里,ATLAS通过查询基于序列的学习模型,通过给定的攻击征兆实体帮助安全运营人员自动发现更多的攻击相关实体。 下面将详细介绍这个过程。
为了说明这一点,图 5(中)显示了在因果图中表示攻击实体 {A,C,F} 的三个图节点。在调查期间,这些实体中的一个或多个可以作为已知的攻击症状给出,而其余的实体,无论它们是攻击还是非攻击,都是未知的。为了识别未知攻击实体,ATLAS首先从因果图中获取一组所有未知实体,并构建其包含一个未知实体的子集。然后ATLAS将攻击症状实体附加到每个子集中;因此,每个子集包含所有已知的攻击征兆实体和仅一个未知实体。例如,给定图 5(中)中的攻击症状实体 A,ATLAS 构造其子集{A,B},…,{A,F}。ATLAS 使用这些子集从因果图中提取序列。然后使用 LSTM 模型通过预测分数来预测每个序列是攻击还是非攻击。该过程通过检查这两个实体的时间顺序事件是否形成模型先前学习的攻击模式来识别未知实体是否与攻击症状实体密切相关。识别出的攻击序列表明未知实体是攻击实体的一部分。
为了说明,图5(左)显示了子集{A,C}的序列构建示例,其中A是攻击征兆,C是未知实体。 为了提取A和C的序列,ATLAS首先提取邻域图以找到它们的相关事件,并将邻域图节点和边转化为时间戳排序的事件序列。该过程应用于所有实体子集,从而产生一组不同长度的不同序列 .ATLAS 然后对序列进行词形还原并将其词嵌入传递给模型。 如果该序列被归类为攻击序列,则 ATLAS 推断子集中的未知实体(即 C)是攻击实体。
例如,如果 ATLAS 在攻击调查中还原了30个攻击实体,则根据攻击操作(例如,读取或写入文件)的数量,与这 30 个实体相关联的事件数量可能会有所不同。图 6(b)-© 说明了 ATLAS从图6(a)的因果图中构建攻击场景的步骤。我们认为在攻击调查阶段ATLAS已经成功恢复了攻击实体{ backdoor.exe(后门文件)、backdoor.exe_4(后门进程)和1.2.3.4(恶意主机)}。ATLAS 使用这些攻击实体在图 6(b) 中提取它们的邻域图,其中包括攻击事件。攻击实体和事件之间的这种映射允许 ATLAS 自动提取那些相关的攻击事件,而无需网络分析师执行任何手动调查。
例如,非攻击实体SearchIndexer.exe_2(WindowsNT程序)不断枚举和读取文件元数据,对backdoor.exe文件进行正常读取。注意到 ATLAS 将此作为攻击事件包含在图 6(b)中的邻域图中,因为它包含攻击实体 backdoor.exe。 一般来说,如果一个进程读取了恶意文件,该进程很可能成为攻击的一部分,攻击者可以利用它来发起进一步的攻击行动。 但是,ATLAS 不包括源自进程SearchIndexer.exe_2 的其他事件(例如,(SearchIndexer.exe_2, fork,ε, T12)),即使它们发生在攻击事件(SearchIndexer.exe_2,read, backdoor.exe, T11)之后。 最后,ATLAS 从构建的邻域图中报告按时间戳排序的攻击事件,如图6(c)。
因此,ATLAS 调查不需要将不同宿主之间的因果图关联起来,这对于来源跟踪技术来说通常是必要的。我们在评估中表明,ATLAS 的有效性不受跨多个主机执行的攻击的影响,它只需要对来自单个主机的审计日志进行分析以发现所有攻击实体(参见第 6.2 节)。 为了构建多主机攻击故事,ATLAS 合并来自受感染主机的审计日志,并构建一个统一的优化因果图表示受感染主机的日志。 ATLAS 然后使用从这些主机中识别出的攻击实体来提取邻域图, 包括因果图中的所有攻击事件。 最后,ATLAS 构建了一个序列,该序列详细说明了跨多个主机的攻击事件的时间顺序。
缺乏公开可用的攻击数据集和系统日志是取证分析中的常见挑战。例如,DARPA TC的数据缺少活动期间生成的审计日志。为了解决这些问题,ATLAS根据真实世界 APT 活动的详细报告实施了10 次攻击,并在受控的测试平台环境中生成了审计日志。此外,类似于先前构建良性系统事件的工作,在每次攻击执行期间尽最大努力在同一台机器上模拟不同的正常用户活动。更具体地说,手动生成了各种良性用户活动,包括浏览不同的网站、执行不同的应用程序(例如,阅读电子邮件、下载附件)以及连接到其他主机。类似于典型的白天工作环境,此类活动在白天的 8 小时窗口内随机执行(Windows 7 32 位虚拟机上开发和执行)。
评估过程:模型训练好后,攻击调查分两步进行。首先,通过从真实攻击实体中随机选择单个攻击症状来生成序列。这些已识别的攻击症状实体自然地代表了安全分析师经常分析的真实案例。其次,通过将因果图中的每个未知实体与症状实体组合而生成的序列,并检查每个构建的序列是否被识别为攻击或非攻击。这使我们能够找到确实与攻击相关的未知实体。由于 ATLAS 调查是基于实体的,因此以实体的形式呈现攻击调查结果。此外,根据与其他攻击调查工作类似的事件来呈现攻击识别结果。通过使用识别的攻击实体生成基于事件的结果。遍历审计日志中的所有事件,如果事件的主题或对象与识别出的攻击实体之一匹配,那么我们将该事件标记为攻击。最后,我们将分类攻击和非攻击实体和事件的数量与其真实标签进行比较,并报告分类指标。
基于溯源的backward and forward溯源,由于没有之前相关工作。本文实现了该方法,主要有两步:1 forward从症状节点溯源到攻击的根因节点;2 backword从根因节点到症状节点。整个过程的所有节点与路径作为其识别结果。