论文解读-UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats

 

原文:https://arxiv.org/abs/2001.01525

1 摘要

APT攻击通常缓慢可持续的攻击模式和频繁使用0-day漏洞的高级特性使其很难被检测到。本文利用数据溯源分析提出了一种基于异常的APT检测方法-UNICORN。从建模到检测,UNICONRN根据APT攻击的特性进行订制设计。UNICONRN利用高效的图分析方法结合溯源图丰富的上下文语义和历史信息,在没有预先设定攻击特征的情况下识别隐蔽的异常行为。通过图概要(graph sketching)技术,UNICONRN有效的概括了长时间系统远行来对抗长时间缓慢攻击。UNICONRN使用一种新的建模方法来更好的捕捉长期行为规律,以进一步提高其检测能力。最后通过大量实验评估表明,本文提出的方法优于现有最先进的APT检测系统,并且在真实APT环境中有较高的检测精度。

2 引言

APT攻击现在变的越来越普遍。这种攻击行为的时间跨度通常会很长,且与传统的攻击行为有着本质的区别。APT攻击者的目的是获取特定系统的访问控制,并且能够长期潜伏而不被发现。攻击者通常使用0-day漏洞来获取受害者系统的访问控制。

传统折检测系统通常无法检测到APT攻击。依赖于恶意软件签名的检测器通常无法对新漏洞进检测。基于异常检测的系统通常分析一系列系统调用或是日志层面的事件,其中大部分方法无法对长期行为进行建模,同时该方法因为只检测系统调用和事件的短序列所以很容易被绕过。当前针对APT攻击检测的方法很少能成功。分析长期系统行为的系统由于计算代码与内存代码主要分析共现事件。

最近的研究成果表明数据溯源依赖是一个很好的APT检测数据源。数据溯源将系统执行表示成一个有向无环图,该图描述了系统主体(如进程)和对象(文件或sockets)之间的信息流。即使是跨了很时间,在图中把因果相关的事件关联到一起。因此即使遭受APT攻击的系统与正常系统比较类似,但是溯源图中丰富的上下文语义中也可以更好的区分正常行为与恶意行为。

然而基于数据溯源实时的进行APT检测依然具有挑战。随着APT攻击的渗透的进行,数据溯源图的规模会不断增大。其中必要的上下文分析需要处理大量图中的元素,而图上的分析通常复杂度比较高。当前的基于数据溯源的APT检测方法根据已有的攻击知识通过简单的边匹配实现APT检测,无法处理未知的APT攻击。基于溯源的异常检测系统主要是基于图模型的邻域搜索,利用动态或静态模型识别正常行为模式。理论上关联的上下文越丰富越好,但是实际中由于图分析的复杂性较高限制了其可行性。当前的检测系统通常面临如下三种问题:1)静态模型无法处理长期运行的系统;2)由于APT的高级可持续的特性可以在系统中潜伏很长时间,相关的行为会被认为是正常行为,这样的攻击会影响检测模型;3)对于长期运行的情况来说内存计算的可扩展性较弱。

本文提出了一种基于溯源的APT检测系统UNICORN。UNICORN利用图概要建立一个增量的、固定大小的、纵向的图数据结构,从而实现有效的图系统计算。这种纵向图结构可以实现对图的本质的挖掘,实现对隐蔽入侵的检测。图数据结构的固定大小和增量更新特性可以解决内存计算可扩展性问题。UNICORN对系统的更个运行历史的演化行为进行训练,但是并不会更新模型,防止潜伏的APT攻击行为污染模型(没太懂,啥叫训练了模型但是不更新模型,这个是什么操作)。主要贡献如下:

1 针对APT攻击提出了一个基于溯源的异常检测系统。

2 提出一种新的基于概要的、时间加权的溯源编码器,该编码是一种紧凑的可于处理长时间的溯源图。

3 在模拟数据集和真实数据集中进行了实验对比,结果表明,UNICORN能够准确的检测出APT行为,与已有的工作进行对比显示UNICORN的精确与准确性分别提高了24%和30%。

4 提供了开源实现。

3背景

3.1系统调用追踪的挑战

系统调用抽象提供了一个简单的接口,用户级应用程序可以通过这个接口请求操作系统的服务。作为调用系统服务的机制,系统调用接口通常也是攻击者入侵的入口点。因此,系统调用跟踪一直被认为是入侵检测的实际信息源。

当前的攻击检测系统是对非结构化的系统调用的审记日志并对其分析,传统的基于异常检测的思路无法处理APT。而基于溯源的方法是将历史数据都编码到因果关联图中。

数据溯源方法已经被应用到攻击调查中,已经有一些方法能够根据审计数据构建系统溯源图用以实现对系统执行过程的建模。然而些方法依然存在一些局限:1 这种事后构建的很难保证溯源图的正确性,由于系统调用问题存大量并发,溯源图的完整性与可靠性无法保证。2 容易被绕过;3 时空复杂度较高。

3.2全系统追踪溯源

全系统溯源的数据是操作系统级的,捕获的是所有系统活动与它们之间的交互。操作系统级的溯源的完整性是APT攻击检测所必须的。本文使用的是CamFlow。

3.3问题描述

已有的基于数据溯源的APT攻击检测方法主要存在如下缺陷:

1 预定义的边匹配规则过于敏感,很难检测APT攻击中的O-day漏洞;

2 溯源的图的近邻约束导致其只能提供局部上下文信息,然而这会影响相关异常检测精度;

3 建立的模型并不是针地APT攻击制定,而静态模型无法捕获长时间运动系统的动态性,而动态模型因为APT的长期潜伏而被其污染。

4 溯源图是存储与计算都是在内存中的,牺牲了长时间远行的可伸缩性。

UNICORN可以解决如上问题,本质是把APT检测问题看成大规模、带有属性的实时溯源图异常检测问题。在任何时间,从系统启动到其当前状态捕获的溯源图都将与已知的正常行为的溯源图进行比较。如果有明显差别,刚认为该系统正在遭受攻击。对于APT来说,理想的IDS应该:

1 充分利用溯源图的丰富上下文,以时间与空间有效的方法持续分析溯源图;

2 在不假设攻击行为的基础上,考虑系统执行的事上时间周期;

3 只学习正常行为的变化,而不是学习攻击者指示的变化。

4威胁模型

假设主机入侵检测有适当的场景:攻击者非法获得对系统的访问权限,并计划在不被检测的情况下驻留在系统中很长一段时间。攻击者可能分阶段执行攻击,在每个阶段还会使用大量的攻击技术。UNICORN的目标是通过解决主机生成的溯源来实现在所有阶段对APT攻击进行检测。本文假设,在攻击发生之前,UNICORN需要对正常攻击行为进行建模。

这里使用的是camflow,本文假设内核、溯源数据和分析引擎的正确性,主要是关注UNICORN的分析能力。

5 系统设计

UNICORN是一个基于主机的入侵检测系统。本节首先介绍UNICORN,然后详细讨论了每部分。

 

图1说明了UNICORN的通用流程

1 以一个带有标签的流式溯源图为输入,UNICORN接收的在一个或多个网络主机上布置的溯捕捉器生成的流式的属性边。溯源系统构建一个具有偏序关系的DAG溯源图,能实现有效的流式计算和完全的上下文分析。本文UNICORN主要使用的是CamFlow。

2 建立一个运行时的内存直方图。UNICORN有效的构建一个流式直方图,该直方图表示系统执行的历史,如果有新边产生的话实时的更新直方图的计数结果。通过迭代的探索大规模图的近邻关系,发现了在上下文环境中系统实体的因果关系。该工作是UNICORN的第一步。具体来说,直方图中每个元素描述了图中唯一的一个了结构,同时考虑了子结构中的顶点与边上的异构标签,以及这些边的时间顺序。

为了适应正常系统执行过程中预期的行为变化,UNICORN定期对与最近事件没有因果关系的直方图元素的影响进行下调。这种缓慢的忘记不相关的历史事件可以在整个系统运行时有效的建模元数据。然而,这并不意味着UNICORN会忘记历史执行信息;相反,UNICORN在图中的使用信息流依赖性来保持生要的、相关的上下文信息的最新状态。APT攻击缓慢的渗透攻击目标系统,希望基于的异常检测方法最终忘记这一行为,把其当成正常的系统行为,但是APT攻击并不能破坏攻击成功的相关信息流依赖关系。

3 周期的计算固定大小的图概要。在纯流式环境,当UNICORN对整个溯源进行汇总时,唯一直方图元素的数量可能会任意增长。这种动态变化导致两个直方图之间的相似生计算变得非常有挑战,从而使得基于直方图相似计算的建模以及检测算法变的不可行。UNICORN采用相似度保存的hash技术把直方图转换成图概要。图概要可以增量维护,也以意味着UNICORN并不需要将整个溯源图都保存在内存中。另外,图概要保存了两个直方图之间的jaccard相似性,这在后去图分析中的聚类中特别有效。

4 UNICORN方法可以在没有攻击知识的前提下实现APT攻击检测。与传统的聚类方法不同UNICORN利用它的流处理能力生成一个动态演化模型。该模型通过在其运行的各个阶段对系统活动进行聚类捕获单个执行中的行为改变,但是UNICORN无法在攻击者破坏系统时动态实时的修改模型。因此,它更适合APT攻击这类长期运行的攻击。

5.1溯源图

最近几年溯源图在攻击分析中越来越流行,并且本身固有的特别可以有效的用于APT检测。溯源图挖掘事件之间的因果关系,因果关系有助于对时间跨度较远的事件进行推理分析,因此有助于在检测APT相关攻击。

 UNICORN根据两个系统执行的溯源图的相似性还判定两个系统的行为相似性。而且UNICORN总是考虑整个溯源来检测长期持续的攻击行为。当前已经有许多图相似度计算方法,然而这些算法大部分是NPC的,即使多项式时间复杂度的算法也无法满足整个溯源图快速增涨的需求。

5.2 构建图直方图

本文方法的目标是容许微小变化的前提下有效的对溯源图进行比较分析。而本算法需要要两基本的要求:1  图表示应该考虑长期因果关系;2 必须满足实时性的需求。

本文基于一维WL同构检验,采用了一种线性时间的快速weisfeler - lehman (WL)子树图核算法。该算法的使用依赖于构造的顶点直方图的能力,需要直方图能捕捉每个顶点周围的结构信息。根据扩充的顶点标签对顶点进行分类,这些标签完全描述了顶点的领域。并且通过迭代的标签传播来构造这些扩展的顶点标签。为了简单说明,假设有一个完整静态图,重标记对所有的输入标签的聚合。对每个顶点都重复执行这个过程来实现对n跳邻居的描述。一旦为图中的每个顶点都构建了扩展标签,那么就可以基于此生成一个直方图,其中每个bucket表示一个标签。两个图的相似性比较是基于以下假设:两个图如果相似那么在相似的标签上会有相似的分布。

算法1是整个算法的形式化表示,给定一个静态图G 表示成五元组 ,V是顶点集,E表示边集, 顶点标签, 表示边标签,C是一个记录每个边的时间戳。算法1中每一行的R表示每个顶点用来生成直方图元素的邻域跳数。UNICORN通过检查图中每个顶点周围的根子树来创建整个图的直方图表示。基于这种非线性子结构,UNICORN保留了除顶点与边属性外的等价性,已被证明了该方法优于随机游走等线性方法。M表示邻接顶点或边标签集合, 表示顶点v第i次迭代的标签。在第8行中TS表示邻接点的时间戳集。函数Source(e)返回边e的源顶点。T记录每个边的时间戳。在16行中 是V中入边的顶点集。

本方法的目标是构建一直方图,其中直方图的每个元素对应于一个唯一的顶点标签,该标签捕获的是顶点的R跳入边邻接点。这些出标签捕捉了邻域中边和顶点的一些信息,这些信息包含实体和行为之间的复杂因果关系以及上下文信息。标签首先以自己的初始标签开始,然后通过添加入边的标签以及一跳邻居来生成新标签。由于本身当前的标签表示的是顶点与边的信息,可以基于此扩展入边来实现增量的标签扩展。

信息流的多样性与复杂性。算法1只有新顶点出现或是新边出现对其邻顶点有影响时才会执行。在溯源图中对于实体需要使用多个顶点来表示其不同的版本和不同状态。而本文方法中,只需要为每条新边更新其目标顶点的邻域。UNICORN采用这种偏序关系来最小化计算代价。为进一步提高计算性能采用的批处理技术。算法1的复杂性近似于1维WL算法,也就是R跳复杂性为 。

直方图元素的概念漂移问题。APT攻击场景需要模型必须能够处理长期运行行为分析能力。而系统行为的动态变化会导致溯源图的统计信息也随之变化。这种现象就叫概念漂移。

UNICORN通过使用指数权重衰减的方法对直方图中的元素进行统计,这种方法可以解释系统行为变化随意时间的变化特性。权重的设置与数据的产生的时间成反比。对于直方图H中的每个元素h,如果t时刻产生了新的数据xt,那么统计Hh的结果就变成。

UNICORN根据数据生成的时间降低数据的影响。

是一个指示函数,当cond返回true时表示1,反之则为0,

入侵检测场景中的应用。这种渐进遗忘方法有助于UNICORN专注于当前系统执行的动态性以及与当前具有因果关联的部分,而且还保持对过去系统执行事件的相关记忆。值得注意的是,无论事件与系统执行的当前状态在时间上有多遥远,如果它与当前对象/活动有因果关系,则该事件及其周围邻居将用于生顾直方图。因此,溯源图的相关上下文信息在分析中不受时间限制。在后节中将会描述UNICORN如何模拟系统的演化行为。

5.3 图概要

图直方图就是描述系统执行的一个简单的向量空间图统计。然而,与传统的基于直方图的图相似性分析不同,UNICORN根据边的更新定期的更新直方图。然而流式直方图的相似度是一个具有挑战的工作,主要是因为直方图的个数据未知会随意数据更新而动态变化。另外,UNCORN会根据图特征的分布来计算相似性,而不是利用绝对统计值。

一个直观的方法来解决流式直方图相似度分析问题就是预先枚举所有可能的直方图元素。显示这是不现实的。这里采用局部敏感hash方法-HistoSketch,该方法是一种基于一致加权采样的方法,且时间得性是常数。

5.4 学习演化模型

在给定图形草图和相似性度量的情况下,聚类是识别异常值的常用数据挖掘方法。然而,传统的聚类方法无法捕捉系统的演化]。尤其是APT攻击持续的时间较长,如果不能捕捉到这种攻击行为,就会导致大量的误报。UNICORN利用它的流处理能力构建演化模型来捕获系统行为正常变化。尤其重要的是可以在训练过程中建模模型,而不是需要事件构建,这避免了APT长其攻击行为导致的模型中毒问题。

UNICORN在训练过程中创建了一个时序的概要。然后,使用著名的K-medods算法从单个服务器对该概要序列进行聚类,使用轮廓系数确定最佳值。聚类代表系统执行的“元状态”,例如启动、初始化、稳态行为。然后,UNICORN使用所有聚类中概要的时间顺序和每个聚类的统计数据来生成系统演化的模型。算法2描述了进化模型的构建。每个概要 属于一个索引的簇k。演化E是一个有序的簇索引列表,其顺序由时间序列概要 决定。

对于每个训练实例,UNICORN创建一个模型,该模型捕获系统运行时执行状态的更新。直观地说,这类似于跟踪系统执行状态的自动机。最终的模型由训练数据中所有种源图的多个子模型组成。

5.5异常检测

在部署期间,异常检测遵循前面章节中描述的相同流模式。UNICORN周期性地创建图概要,因为直方图从流式溯源图演变而来。给定一个图概要,UNICORN将该概要与建模期间学习的所有子模型进行比较,将其拟合到每个子模型中的一个聚类中。UNICORN假设监视从系统启动开始,并跟踪每个子模型中的系统状态转换。要在任何子模型中为有效,概要必须适合当前状态或下一个状态;否则,被视为异常。因此,我们检测到两种形式的异常行为:不适合现有聚类的概要和聚类之间的无效转换。

6 实现

 

本文实现使用图形处理框架GraphChi,在C++中实现了UNICORN的图形处理算法,在Python中实现了数据解析和建模组件。

GraphChi是一个基于磁盘的系统,它可以在一台计算机上高效地计算具有数十亿条边的大型图。使用GraphChi,UNICORN可以在不需要将整个起源图存储在内存中的情况下获得高效的分析性能。UNICORN依赖于GraphChi的两个重要特性:

(1)GraphChi使用一个并行滑动窗口(PSW)算法将形分割成碎片,每个碎片中的边数大致相同;它并行计算每个碎片。该算法只需少量的非顺序磁盘访问,就可以快速更新磁盘的顶点和边。这允许UNICORN独立于内存约束来分析整个起源图。

(2)UNICORN利用GraphChi对流图的高效计算。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值