查看原文
其他

HOLMES:基于可疑信息流的实时APT检测

Alice 安全学术圈 2022-12-27

笔记作者:CDra90n@SecQuan
原文作者:Sadegh M. Milajerdi, Rigel Gjomemo, Birhanu Eshete, R. Sekar, V.N. Venkatakrishnan
原文标题:HOLMES: Real-time APT Detection through Correlation of Suspicious Information Flows
原文来源:S&P2019
原文链接:https://arxiv.org/pdf/1810.01594.pdf

本文中提出了一种实现了检测高级持久性威胁(APT)新方法的系统-HOLMES。HOLMES的灵感来自现实世界中APT活动者的一些共同目的。系统目标是产生一个检测信号,表明存在的一系列协同活动都是APT活动的一部分。本方法有效地利用了攻击者活动期间出现的可疑信息流间的相关性。HOLMES生成的简洁高层次图表有效地总结了正在进行的攻击活动,并可通过可疑信息流的关联来协助实时网络响应工作。

一、简介

1、APT攻击

在有关高级持续威胁的第一份详细报告(题为APT1)中,安全公司Mandiant披露了全球APT活动者的目标和活动。这些活动包括从不同行业中至少141个组织窃取了近数百TB的敏感数据(包括业务计划,技术蓝图和测试结果)。他们估计目标组织中恶意软件的平均持续存在时间为365天。从那以后在全球范围内出现了越来越多涉及到一些强大活动者的记录在案APT,包括国家活动。APT 攻击的特征可归纳为以下三点:

(1)针对性

通常针对特定目标的重要价值资产,一般军工、能源、金融、政府最容易遭到 APT 攻击。并且针对收集到的常用软件、常用防御策略与产品、内部网络部署等信息,攻击者能编写可以绕过目标系统现有防护体系检查的攻击代码。

(2)持续性

为了长期控制重要目标获取更多利益,攻击者通过隐藏实现长期潜伏,同时攻击处于动态发展以应对新的系统漏洞及防御体系的更新,并通过外部被控制的命令与控制(Command and Control,C&C)服务器与目标系统保持通信以及传输数据。

(3)隐蔽性

为了避免被安全防护系统检测到,APT 攻击代码的编写者使用了各种伪装、隐藏手段,通过修改系统程序,隐藏病毒进程、隐藏文件、隐藏目录的方式实现长期潜伏;通过对恶意程序压缩、加密、变体及加壳等技术手段降低其被检测到的概率;运用动态域名解析实现 C&C 服务器的隐藏与长期生存;通过合法的加密数据通道、加密技术或信息隐藏技术隐蔽地传输数据。

2、杀伤链(kill-chain)模型

Mandiant报告还提供了一个APT生命周期模型(下图),也称为杀伤链,可以让人们了解APT的阶段和如何协同实现其活动者的目标。典型的APT攻击包括成功渗透(例如,网站挂马或鱼叉式网络钓鱼攻击),侦察,C&C通信(有时使用远程访问特洛伊木马(RAT)),提权 (通过漏洞利用),通过网络进行横向渗透,泄露机密信息等等。简而言之,杀伤链提供了APT活动者的动机、目标和行动的参考。

APT活动者的目标是获取和泄露高度机密的信息,例如特定专有技术的源代码; 或者通过破坏高完整性的资源来使目标受到损害,例如,被Stuxnet蠕虫感染了的PLC,这个目标主要是通过符合上图所示的杀伤链来实现的。

3、存在问题

如今,告警关联通常使用安全信息和事件管理(SIEM)系统来执行,如Splunk、Logrheth和IBM Qradar。这些系统从多个来源收集日志事件和告警并将它们关联起来。这种相关性通常使用现成的指标,例如时间戳。这些关联方法是有用的,但它们通常缺乏:

(a)对告警和实际入侵实例之间存在复杂关系的理解。

(b)将不同主机在长时间(数周或在某些情况下为数月)上发生的攻击阶段拼凑在一起所需的精确性。

4、HOLMES

本文中提出了一个名为HOLMES的系统,它解决了上述问题。HOLMES从主机审计数据(例如,Linux审计或Windows ETW数据)开始,并产生检测信号,该信号反应了进行中APT活动的各个阶段。在高层次上,HOLMES将APT杀伤链作为解决APT检测上述三个问题所涉及技术的关键参考。

二.方法概述

方法背后的核心认知是,即使具体的攻击阶段在不同的APT之间可能存在很大差异,但高级APT行为通常符合第一部分中引入的相同杀伤链。对数百个APT报告的分析表明,大多数APT包括这些阶段的子集。更重要的是观察到这些阶段需要因果关系,这种联系是攻击正在展开的一个主要迹象。

注意,每个APT阶段的具体表现形式可以变化,例如初始入侵可以通过使用户执行恶意文件的网站挂马或鱼叉式网络钓鱼攻击来执行。无论如何,APT阶段本身代表了对攻击者意图的高层次抽象,因此即使攻击者使用的操作策略因APT而异,他们也必然会表现出来。此外由于APT阶段在逻辑上相互依赖,因此必然在它们之间存在信息流或因果关系,例如信息窃取取决于内部侦察去收集敏感数据。

因此研究问题是,能否将检测建立在:

APT最基本的高层次行为阶段,和这些阶段之间的信息流依赖关系;

回答这个问题的一个主要挑战是低级别审计数据与攻击者目标、意图和能力相关高级杀伤链视角之间的巨大语义差距。

缩小语义鸿沟(Bridging the Semantic Gap)。为了弥合低级系统调用视角和高级杀伤链视角之间的语义差距,构建了一个中间层,如下图所示。映射到这个中间层是基于MITRE的ATT&CK框架, 它描述了近200种行为模式,定义为在野观察到的战术,技术和程序(Tactics,Techniques and Procedures,TTPs)。

每个TTP定义了一种可能方式来实现特定高级功能。例如,可以使用11个不同的TTP实现在受损Linux系统中的持久化能力,每个TTP代表ATT&CK框架中可能的低级活动序列,例如,rootkit的安装,引导脚本的修改等等。这些较低层的操作更接近审计日志的抽象级别,因此可以根据起源图中的节点和边来描述TTP。

三、系统设计

A.数据收集和表示

系统依赖于从可能运行不同操作系统(OS)的多个主机中检索得到的审计日志。对于Linux,审计数据的来源是auditd,而对于 Windows则是BSD和ETW。收集此原始审计数据并将其处理为与OS无关的格式。这是HOLMES接受的输入格式。此输入捕获与主体(用户),文件(例如I / O操作,文件创建,所有权和权限),内存(例如,mprotect和mmap)进程(例如,创建和权限更改)相关的事件,以及网络连接。

数据表示为称之为起源图(provenance graph)的图。图的节点包括主体(进程)和对象(文件,通道,套接字),边表示这些实体之间的依赖关系,并使用事件名称进行注释。还有一些重要的差异:主体和对象都是有版本的。版本控制可以实现优化,可以删除审计日志中的大部分事件,而无需更改取证分析的结果。此外这个版本是无环图,可以简化许多图算法。

B.TTP规范

TTP规范提供了低级审计事件和高级APT阶段之间的映射。因此,它们是方法的一个核心组成部分。在这一小节中描述了TTP设计中的三个关键选择,它们能够有效和精确地检测攻击。

TTP代表了具体审计日志和高级APT阶段之间的一层中间抽象。具体来说,依靠两种主要技术将审计日志数据提升到这个中间层:

(a)以安全相关事件的起源图形式的os中性表示;

(b)TTP中涉及的实体之间的信息流依赖关系的使用。

总之,这些技术实现了高级别的恶意行为规范,这些规范在很大程度上独立于许多TTP细节,例如使用的特定系统调用,恶意软件的名称,创建的中间文件以及用于创建它们的程序等。信息流依赖的使用对于通过使用良性系统进程来实现其目标并隐藏其活动的隐秘APT的检测至关重要。

除了指定ttp的步骤之外,还需要捕获它的先决条件(prerequisite)。先决条件不仅有助于减少误报,而且有助于理解TTP在APT活动的更大背景下的作用。在的TTP规范中,先决条件采用APT阶段之间的因果关系和信息流的形式。

C. HSG构建

下图显示了一个HSG。该图的节点表示匹配的TTP,并在图中用椭圆表示。在每个椭圆内部,用灰色表示匹配的起源图实体。为了便于说明,还包括TTP的名称,每个TTP所属的APT阶段以及每个TTP的严重性级别(低,中或高)。图的边代表不同TTP之间的前提。完成两个实体之间的路径的虚线表示前提条件。例如,MakeMemExec TTP将Untrusted_Read TTP作为前提,由两个节点之间的边表示。

HSG的构建主要由前提驱动:如果满足所有前提条件,则TTP匹配并添加到HSG。这个因素可以随时减少HSG中的TTP数量,从而可以在不影响实时性能的情况下进行复杂的分析。

D、避免虚假依赖

虚假依赖(spurious dependencies),即活动的攻击者不感兴趣和/或无关的依赖。例如,进程nginx(P2)写入文件/usr/log/nginx-error.log,然后cat进程读取该文件。但是,即使cat和日志文件之间存在依赖关系,cat也与攻击无关,并通过ssh独立调用。通常,考虑由攻击活动生成的二次衍生的任何进程,例如一个日志滚动系统,它会复制包含攻击者进程生成的部分条目的日志文件。这些进程虽然代表良性的背景活动,但会在起源图中标记为依赖于攻击者的进程。如果没有及时修剪这些虚假的依赖关系,可能会出现依赖关系爆炸,这会极大地增加HSG的整体大小。如此的话,呈现给分析师的最终结果可能充满了良性活动,这将导致分析师错过总体概况中的关键攻击步骤。出于这个原因,优先考虑较强的依赖关系,尽可能地对弱依赖关系进行剪枝。

直观地说,如果Pd是Pa的子进程,可以说进程Pd对进程Pa具有很强的依赖。类似地,如果Pa或其子进程写入该文件/套接字,则文件或套接字对进程Pa有很强的依赖。文件/插座。更一般地,在表示它们之间的信息的种源图中考虑两个实体和它们之间的一条路径。确定此流是表示强信息流还是弱信息流等同于确定流共享中的实体是否含有父实体的入侵特征。如果他们含有父实体的入侵特征,他们就是攻击者活动的一部分,他们之间存在着强烈的依赖关系,必须优先考虑。否则认为依赖性很弱,并且在分析中忽略了它。

为了将上述讨论推广到可能存在多个入侵进程的情况,引入了一个信息流 f上所有进程的祖先实体覆盖(ancestral cover)AC(f)的概念:

∀p  f ∃a∈ AC ( f ) a = p or a is an ancestor of p

请注意,f中的非进程节点不会影响上述定义。最小的祖先实体覆盖ACmin(f)是最小大小的祖先实体覆盖。直观地,ACmin(f)表示攻击者为了完全控制信息流路径f必须侵入的最小祖先实体数( 即漏洞利用数)。例如,再次考虑从攻击者控制的nginx进程到cat进程的信息流。由于这两个进程没有共同的父实体,因此它们之间路径的最小祖先实体覆盖的大小等于2。因此为了控制cat进程,攻击者必须为cat开发一个额外的漏洞利用。这要求攻击者首先在cat中找到漏洞,然后创建相应利用,最后将此利用编写到日志文件中。通过筛选大小为1的祖先实体覆盖,捕捉到这样一个事实:与nginx及其后代实体(descendant)执行攻击活动的情况相比,涉及cat的这种攻击的可能性要小得多。

现在可以定义前面讨论的TTPs中提到的pathfactor(N1, N2)的概念。直观地说,它捕获了攻击者对从N1到N2数据流的控制程度。基于上面讨论的使用最小祖先实体覆盖作为依赖强度的度量,定义pathfactor如下。考虑从N1到N2的所有信息流路径f1,...,fn,并且让mifi的最小祖先实体覆盖大小。那么path_factor(N1, N2)就是m1, . . . , mn间的最小值。

注意,如果进程N2是N1的子节点,那么在N1到N2之间存在仅具有单个边的路径。由于N1是N2的祖先,因此该路径的最小祖先实体覆盖的大小为1。相比之下,从nginx到cat的(唯一)路径具有大小为2的最小祖先实体覆盖,因此path_factor(nginx, cat) = 2。

path_factor的使用极大地减轻了优先处理受攻击影响信息流导致的依赖性爆炸(dependency explosion)。

E.降噪

攻击检测和取证的审计日志分析中的一个挑战是存在噪音,即与ttp规则匹配的良性事件。诸如浏览器、web服务器和ssh守护进程之类的长周期进程不时会触发ttp匹配。为了减少这些误报,结合了基于训练数据的降噪规则。利用两个概念:

(1)良性先决条件匹配

(2)良性数据流数量

基于良性先决条件的降噪。对于每个进程,系统都学习在良性环境中运行系统时频繁触发的先决条件。在运行时,当触发的ttp的先决条件与训练期间遇到的先决条件匹配时将忽略该匹配。

为了解决这个问题,整合以字节为单位的信息流。例如从文件/etc/passwd流向nginx的信息量等于该文件的大小,因为nginx只读取该文件一次。因此,如果观察到从/etc/passwd流向nginx的字节明显更多,则此流可能是攻击的一部分。为了确定信息量的截止点,在良性设置中观察了一段时间内的进程-文件和进程-套接字对。

F.信号关联和检测

给定一组HSG,如何很自信的去区分构成攻击的HSG?通过给每个HSG分配一个严重性分值来应对这个挑战。这项工作分两步进行,如下所述:

威胁元组(Threat Tuple)。首先通过与相应的HSG关联的抽象威胁元组来表示攻击者在活动中的进度。特别是对于每个HSG,威胁元组是7元素元组<s1、s2、s3、…、s7>,其中每个si对应于HSG的索引i处的APT阶段的严重性级别。根据对在野apt的广泛调查选择了7个元组,但也可以选择其他的元组。

由于属于某一apt阶段的不同TTP可能具有不同的严重性级别,因此通常有多个候选者可供选择。在这些候选人中选择最严重级别是很自然的。例如,与图5的HSG相关联的威胁元组是<M、L、H、H、—、H、M>。这个元组包含6个条目,因为它所匹配的TTP属于6个不同APT阶段。这些条目是根据杀伤链中APT级别的顺序排列的。例如元组的第一个条目是M,因为图中属于Initial_Reconnaissance 最严重的TTP具有严重性M。

HSG 排名和优先次序。为了给HSG排序,首先将威胁元组转换为数值。特别是首先根据通用漏洞评分系统(CVSS)中包含的转换表(下表)将威胁元组的每个元素映射为一个数值,CVSS是一个由商业、非商业和学术领域的安全专业人员协作创建的中立行业标准。考虑到他们感知到的威胁与对抗威胁的历史,替代评分选择可以由企业进行。

四、运行示例

在本节中将介绍本文使用的一个运行示例,以说明本文方法。这个例子表示了作为政府机构组织(特别是美国DARPA)研究计划中一部分进行的红队攻击。在这次攻击中,存在漏洞的Nginx Web服务器在FreeBSD系统上运行。其操作(系统调用)在系统审计日志中捕获。从这个审计数据中构建了一个起源图(provenance graph),其片段下图所示。该图中的节点表示系统实体,如进程(表示为矩形),文件(椭圆),网络连接(菱形),内存对象(五边形)和用户(星星)。边对应于系统调用,并且面向信息流和/或因果关系的方向。

攻击者的目标是从系统中提取敏感信息。下图的底部描述了攻击者的活动,并包括以下阶段:

初始入侵(Initial Compromise)。攻击者在监听端口80的套接字(S1)上发送恶意的有效载荷。因此,Nginx使其内存区域(M1)的某些部分可执行。接下来,攻击者通过使用反射自加载漏洞来控制Nginx进程。

C&C通信(C&C Communications)。侵入的Nginx进程与C&C服务器建立连接(S2),以接收来自攻击者的命令。

特权提升(Privilege Escalation)。攻击者利用现有漏洞将Nginx的权限提升到root(U1)。

内部侦察(Internal Reconnaissance)接下来,攻击者会发出命令,例如whoami(p5)和hostname(p6)。红队使用这些命令来模拟对机密/专有数据的访问。攻击者也读取用户名和密码散列(F2,F3,F4)并将所有这些信息写入临时文件。

窃取(Exfifiltration)接下来,攻击者将包含收集到信息的文件传输给她/他的计算机(S3)。

清除痕迹(Cleanup)。在攻击的最后一步,攻击者删除临时文件(F5),以清除任何攻击残留。

五、本文贡献

首先,HOLMES旨在将主机日志中发现的活动以及企业中发现的任何告警直接反应到杀伤链中。这种设计允许HOLMES生成告警,这些告警在语义上接近APT活动者的活动阶段(TTPs)。通过这样做,HOLMES将告警生成过程提升到攻击活动步骤的级别,而不是在低级别审计日志的形式。在实验中发现为期五天的审计日志集合包含大约3M的低级别事件,而HOLMES仅从中提取86个可疑活动阶段。

HOLMES的第二个重要思想是使用系统内低级别实体(文件,进程等)之间的信息流作为告警关联的基础。请注意杀伤链中的内部侦察阶段取决于成功的初始入侵和立足点建立。特别地,侦察阶段通常使用攻击者在立足点建立期间安装的CC代理(进程)来启动,从而展示两个阶段中涉及的进程之间的信息流。此外,侦察通常涉及在立足点建立阶段运行下载的恶意软件(文件),说明文件到进程的信息流。同样,成功的横向渗透阶段以及窃取阶段,会使用侦察阶段收集的数据。因此通过检测与APT阶段相关的低级别事件并使用信息流将它们关联起来,可以构建APT活动者使用的杀伤链。

HOLMES的第三个主要贡献是开发高层次场景图(HSG)。HSG的节点对应于TTP,并且其边表示TTP中涉及实体之间的信息流。HSG为检测APT的高可信度提供了基础。首先是使用了HSG中祖先实体覆盖的概念帮助评估HSG节点之间依赖关系的强度。然后可以修剪弱依赖项以消除许多错误告警。其次是开发了降噪技术,进一步降低已知与良性活动相关的依赖项。第三是使用优先级排序技术,以删除与APT活动无关的大多数节点和边。使用这些技术证明了HOLMES能够明确区分攻击和良性场景。

最后HSG提供了一个任意时刻都存在的简洁可视摘要,从而为理解攻击做出了重要贡献。例如,从10M审计记录的数据集开始,能够使用仅16个节点的图表来总结高级攻击活动。网络分析师可以使用现有的HSG快速推断出攻击的总体情况(范围和幅度)。

安全学术圈招募队友-ing,有兴趣加入学术圈的请联系secdr#qq.com

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存