HOLMES: Real-time APT Detection through Correlation of Suspicious Information Flows
S&P-2019
伊利诺伊大学芝加哥分校、密歇根大学迪尔伯恩分校、石溪大学
Milajerdi S M, Gjomemo R, Eshete B, et al. Holmes: real-time apt detection through correlation of suspicious information flows[C]//2019 IEEE Symposium on Security and Privacy (SP). IEEE, 2019: 1137-1152.
在本文中,我们介绍了 HOLMES,这是一种实现高级和持续性威胁 (APT) 检测新方法的系统。HOLMES 旨在产生一个检测信号,表明存在一组协调的活动,这些活动是 APT 活动的一部分。
典型的 APT 攻击包括成功渗透(例如,驱动式下载或鱼叉式网络钓鱼攻击)、侦察、命令和控制 (C&C) 通信(有时使用远程访问木马 (RAT))、特权升级(通过利用漏洞),通过网络横向移动,泄露机密信息等。简而言之,杀伤链为理解和映射 APT 参与者的动机、目标和行动提供了参考。
现有的 IDS/IPS 系统缺乏低级警报的组合能力,不能揭示APT活动的高级场景。
现有的警报关联系统如 Splunk、LogRhythm 和 IBM QRadar等:
问题陈述:
本文基于来自企业的主机日志和 IPS 警报,实时检测正在进行的 APT 活动(包括长时间跨多个主机的许多不同步骤),并向分析师提供攻击场景的高级解释。主要有三个方面:
方法和贡献:
HOLMES 根据主机审计数据(例如,Linux auditd 或 Windows ETW 数据),生成一个检测信号,该信号描绘了正在进行的 APT 活动的各个阶段。在较高层面上,HOLMES 新颖地使用 APT 杀伤链作为关键参考,解决了 APT 检测的上述三个方面所涉及的技术挑战。
评估:
使用DRAPA-TC作为数据集,对九种真实场景进行评估,实现高精度和召回率。
图中的节点表示系统实体,例如进程(表示为矩形)、文件(椭圆形)、网络连接(菱形)、内存对象(五边形)和用户(星形)。边对应于系统调用,并以信息流和/或因果关系的方向为导向。
我们的溯源图已使用参考文献 [23] 中描述的(优化的)节点版本控制技术呈现为无环的。
[23] Md Nahid Hossain, Junao Wang, R. Sekar, and Scott Stoller. Dependence preserving data compaction for scalable forensic analysis. In
USENIX Security Symposium. USENIX Association, 2018.
这个实例揭示了面临的挑战:
尽管攻击无缝融入良性后台活动,但其有两个明显的攻击表征:
因此,利用信息流串联步骤,再与APT行为做对比,使得检测这种隐蔽攻击成为可能。
我们的方法背后的核心见解是,尽管具体的攻击步骤在不同的 APT 之间可能有很大差异,但高级 APT 行为通常符合杀伤链。大多数 APT 都包含这些步骤的一个子集,且这些步骤存在信息流或因果关系。例如,数据外泄依赖于内部侦察来收集敏感数据。
因此,关键在于检测工作是否可以基于APT最重要的高级行为步骤和步骤间的依赖性。然而这么做的难题在于:低级审计日志和高级杀伤链视图(攻击者意图、目标、能力)之间的语义鸿沟。
弥补语义鸿沟:
构建了一个中间层,如图 3 所示。到该中间层的映射基于 MITRE 的 ATT&CK 框架,该框架描述了近 200 种定义为在公开环境(wild)观察到的战术、技术和程序 (TTP) 的行为模式。每个 TTP 都定义了一种实现特定APT步骤的可能方式。这些较低级别的操作更接近审计日志的抽象级别,因此可以根据溯源图中的节点和边来描述 TTP。
技术挑战:
为了实现上述方法,主要挑战是:低级事件流与TTP的有效匹配、检测攻击步骤之间的相关性、减少误报
对操作系统内核、审计系统及其产生的日志的攻击不在我们的威胁模型的范围内。假设系统一开始是良性的,即最初的攻击必须来自企业外部,使用远程网络访问、可移动存储等方式。
对于Linux,数据来源是auditd;对于BSD,数据来源是dtrace;对于Windows,数据来源是ETW。这些原始审计数据被收集并处理成与操作系统无关的格式,用作 HOLMES 的输入。
数据表示为溯源图,但是经过版本化处理。如果该边更改了节点的现有依赖项(即祖先节点集),则在添加传入边之前创建节点的新版本。这样可以在不更改分析结果的情况下删除审计日志中的大部分事件,而且,这个版本图是无环的,可以简化很多图算法。
大概是指:如果出现环(即一个进程的子孙反过来影响了自己,那自己既是自己的祖先又是自己的子孙),此时就为这个节点创建一个新的版本,既方便删除子树不影响别的部分,无环又可以简化图搜索。
此外,溯源图存于内存,根据之前的工作进行了优化存储,每个事件仅需要不到五个字节。
TTP 规范提供了低级审计事件和高级 APT 步骤之间的映射。依靠两种主要技术将审计日志数据提升到这个中间层:(a) 以溯源图的形式对安全相关事件进行操作系统无关的表示,以及 (b) 在涉及的实体之间使用信息流依赖关联TTP。 使用信息流依赖性对于检测通过使用良性系统进程来实现其目标来隐藏其活动的隐秘 APT 至关重要。
除了指定 TTP 的步骤之外,我们还需要捕获其先决条件(prerequisites)。先决条件采用因果关系和 APT 阶段之间的信息流的形式,不仅有助于减少误报,还有助于理解 TTP 在更大范围的 APT 活动中的作用。
先决条件可以指定匹配TTP的参数,例如第一行 U n t r u s t e d R e a d T T P Untrusted Read TTP UntrustedReadTTP 的套接字参数S。先决条件还可以包含先前匹配的 TTP 及其参数的条件。例如, M a k e M e m E x e c ( P , M ) T T P Make Mem Exec(P,M) TTP MakeMemExec(P,M)TTP 的先决条件列包含一个条件 ∃ U n t r u s t e d R e a d ( ? , P ′ ) ∃ Untrusted Read(?, P' ) ∃UntrustedRead(?,P′)。仅当不可信读取 TTP 已与进程 P ′ P' P′ 早先匹配,并且两个 TTP 中涉及的进程的 p a t h _ f a c t o r path\_factor path_factor 小于指定阈值时,才满足此先决条件。
图 5 说明了运行示例的 HSG,其中椭圆表示匹配的TTP,椭圆内的是溯源图实体,图的边代表不同TTP之间的先决条件。HSG 的构造主要由先决条件驱动:如果满足所有先决条件,则匹配 TTP 并将其添加到 HSG。这使得HSG总能保持一个较少数量的TTP,进一步使实时进行复杂分析成为可能。
伪依赖指的是对攻击者活动的无趣和/或不相关的依赖。例如,在图 2 中,进程 nginx (P2) 写入文件 /usr/log/nginx-error.log,随后 cat 进程读取该文件。然而,即使 cat 和日志文件之间存在依赖关系,但 cat 与攻击无关,而是通过 ssh 独立调用的。更一般地说,考虑与攻击活动带来的进程有关系的良性行为。例如,一个日志轮换系统,它复制一个日志文件,其中包含攻击者进程产生的部分条目。此类进程虽然代表良性后台活动,但会在来源图中被标记为依赖于攻击者的进程。如果不及时删除这些虚假的依赖关系,可能会出现依赖爆炸,从而极大地增加 HSG 的规模。
考虑两个实体和它们之间的路径,在溯源图中指示它们之间的信息。确定此流代表强信息流还是弱信息流等同于确定流中的实体是否共享受损的祖先。如果它们共享受感染的祖先,则它们是攻击者活动的一部分,并且它们之间存在很强的依赖性,必须对其进行优先级排序。否则,我们认为依赖性很弱,并在我们的分析中不再强调它。
为了将这个方法推广到多个进程的情况,我们引入以下信息流路径 f f f 上所有进程的祖先覆盖 A C ( f ) AC(f) AC(f) 的概念:
∀ p ∈ f ∃ a ∈ A C ( f ) a = p or a is an ancestor of p \forall p\in f\exists a\in AC(f)\;a=p\;\text{or }a\text{ is an ancestor of }p ∀p∈f∃a∈AC(f)a=por a is an ancestor of p
A C m i n ( f ) AC_{min}(f) ACmin(f) 表示攻击者完全控制信息流路径 f f f 必须妥协的最少祖先数量。例如,再次考虑从攻击者控制的 nginx 进程到 cat 进程的流程。由于这两个进程没有共同的祖先,它们之间路径的最小祖先覆盖大小等于 2。
定义路径因子 p a t h f a c t o r ( N 1 , N 2 ) path f actor(N1, N2) pathfactor(N1,N2),描述了攻击者对N1到N2流的控制程度,为所以路径的最小祖先覆盖的最小值。
良性事件会与TTP匹配引起噪声,利用两个概念来消除。
良性先决条件:对于每个进程,学习系统在良性环境中运行时频繁触发的先决条件。在运行时,当触发的 TTP 的先决条件与训练期间遇到的先决条件匹配时,忽略该匹配
良性数据流量:为了解决白名单会漏报的问题,同时监控传输的数据量,如果超过阈值,视为攻击行为。
定义威胁元组为一个七元组,分别对应七个比价重要的阶段,每个阶段具有不同的TTP选项,每个选项对应不同的严重等级。用HSG去匹配这个七元组,部分阶段可以缺省。
为了对HSG进行排名,首先利用通用漏洞评分系统(CVSS)将元组转换为数值
然后算一个总体评分
∏ i = 1 n ( S i ) w i ≥ τ \displaystyle\prod_{i=1}^n(S_i)^{w_i}\geq\tau i=1∏n(Si)wi≥τ缺省的阶段权重设为1