【论文阅读】HOLMES:通过关联可疑信息流进行实时 APT 检测(SP-2019)

news2024/9/24 9:27:24

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.


目录

  • 0. 摘要
  • 1. 引言
  • 2. 一个实例
  • 3. 方法概述
  • 4. 系统设计
    • A. 数据收集和表示
    • B. TTP规范
    • C. HSG构造
    • D. 伪依赖避免
    • E. 减少噪声
    • F. 信号关联与检测


0. 摘要

  在本文中,我们介绍了 HOLMES,这是一种实现高级和持续性威胁 (APT) 检测新方法的系统。HOLMES 旨在产生一个检测信号,表明存在一组协调的活动,这些活动是 APT 活动的一部分。

  • 一套使检测信号稳健可靠的技术
  • 有效地利用了攻击者活动期间出现的可疑信息流之间的相关性
  • 生成一个高级图表,实时总结攻击者的行为



1. 引言

  典型的 APT 攻击包括成功渗透(例如,驱动式下载或鱼叉式网络钓鱼攻击)、侦察、命令和控制 (C&C) 通信(有时使用远程访问木马 (RAT))、特权升级(通过利用漏洞),通过网络横向移动,泄露机密信息等。简而言之,杀伤链为理解和映射 APT 参与者的动机、目标和行动提供了参考。

APT生命周期
现有的 IDS/IPS 系统缺乏低级警报的组合能力,不能揭示APT活动的高级场景。

现有的警报关联系统如 Splunk、LogRhythm 和 IBM QRadar等:

  • 缺乏对警报和入侵实例之间复杂关系的理解
  • 不具备关联长时间发生在不同主机上的攻击步骤所需的精度

问题陈述:
  本文基于来自企业的主机日志和 IPS 警报,实时检测正在进行的 APT 活动(包括长时间跨多个主机的许多不同步骤),并向分析师提供攻击场景的高级解释。主要有三个方面:

  • 警报生成:从主机的低级事件中搞笑地生成低噪声的警报
  • 警报关联:将多个警报组合成一个代表APT活动的信号(signal)
  • 高级场景:直观、高层次地总结攻击便于分析师快速掌握攻击信息

方法和贡献:
  HOLMES 根据主机审计数据(例如,Linux auditd 或 Windows ETW 数据),生成一个检测信号,该信号描绘了正在进行的 APT 活动的各个阶段。在较高层面上,HOLMES 新颖地使用 APT 杀伤链作为关键参考,解决了 APT 检测的上述三个方面所涉及的技术挑战。

  • 首先,HOLMES从日志中生成语义上接近APT步骤(TTPs)的警报,然后映射到杀伤链模型。
  • 第二,利用低级实体(进程、文件)之间的信息流作为警报关联的基础,因为APT活动的初始妥协点一般是文件和进程
  • 第三,开发了高级场景图(HSG),图的节点代表TTPs,边代表实体之间的信息流。通过祖先覆盖、降噪技术和优先级排名来精简高级场景图和减少误报。
  • 最后,HSG 提供了非常紧凑直观的活动摘要。10M的审计日志中得到一个仅有16个节点的HSG

评估:
  使用DRAPA-TC作为数据集,对九种真实场景进行评估,实现高精度和召回率。




2. 一个实例

溯源图攻击实例
  图中的节点表示系统实体,例如进程(表示为矩形)、文件(椭圆形)、网络连接(菱形)、内存对象(五边形)和用户(星形)。边对应于系统调用,并以信息流和/或因果关系的方向为导向。

我们的溯源图已使用参考文献 [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.

  • 初步妥协:攻击者通过80端口套接字(S1)上载了恶意载荷(playload),利用Nginx使内存区域(M1)变得可执行。接下来,攻击者通过使用反射自加载漏洞获得对 Nginx 进程的控制
  • C&C通信:受损的 Nginx 进程与 C&C 服务器建立连接 (S2) 以接收来自攻击者的命令
  • 提权。攻击者利用现有漏洞将 Nginx 的权限提升至root(U1)
  • 内部发现:攻击者发出 whoami (P5) 和 hostname (P6) 等命令(红队使用这些命令来模拟对机密/专有数据的访问)。攻击者还读取用户名和密码哈希值(F2、F3、F4)并将所有这些信息写入一个临时文件
  • 外泄:攻击者将包含收集到的信息的文件传输到他的的机器 (S3)
  • 清扫:攻击者删除临时文件 (F5) 以清除所有攻击残余

这个实例揭示了面临的挑战:

  • 隐形攻击:攻击者利用内存和合法进程实施攻击,整个活动与系统行为重合且不会留下可见痕迹如文件。
  • 大海捞针:检测罕见攻击需要高误报为代价,从大量虚警中过滤出真正的攻击具有挑战性
  • 实时检测:几秒钟内

尽管攻击无缝融入良性后台活动,但其有两个明显的攻击表征:

  • 攻击步骤与部分APT阶段对应
  • 攻击活动通过信息流连接

因此,利用信息流串联步骤,再与APT行为做对比,使得检测这种隐蔽攻击成为可能。




3. 方法概述

  我们的方法背后的核心见解是,尽管具体的攻击步骤在不同的 APT 之间可能有很大差异,但高级 APT 行为通常符合杀伤链。大多数 APT 都包含这些步骤的一个子集,且这些步骤存在信息流或因果关系。例如,数据外泄依赖于内部侦察来收集敏感数据。
  因此,关键在于检测工作是否可以基于APT最重要的高级行为步骤和步骤间的依赖性。然而这么做的难题在于:低级审计日志和高级杀伤链视图(攻击者意图、目标、能力)之间的语义鸿沟。

弥补语义鸿沟:
  构建了一个中间层,如图 3 所示。到该中间层的映射基于 MITRE 的 ATT&CK 框架,该框架描述了近 200 种定义为在公开环境(wild)观察到的战术、技术和程序 (TTP) 的行为模式。每个 TTP 都定义了一种实现特定APT步骤的可能方式。这些较低级别的操作更接近审计日志的抽象级别,因此可以根据溯源图中的节点和边来描述 TTP。

技术挑战:

  为了实现上述方法,主要挑战是:低级事件流与TTP的有效匹配、检测攻击步骤之间的相关性、减少误报

  • 为了进行高效匹配:溯源图放内存中、编码了实体之间的额信息流依赖关系
  • 为了检测步骤间相关性:高级场景图作为中间件
  • 为了减少误报:学习可能产生误报的良性模式、为节点和路径分配权重用以对进行HSG排名



4. 系统设计

  对操作系统内核、审计系统及其产生的日志的攻击不在我们的威胁模型的范围内。假设系统一开始是良性的,即最初的攻击必须来自企业外部,使用远程网络访问、可移动存储等方式。
在这里插入图片描述

A. 数据收集和表示

  对于Linux,数据来源是auditd;对于BSD,数据来源是dtrace;对于Windows,数据来源是ETW。这些原始审计数据被收集并处理成与操作系统无关的格式,用作 HOLMES 的输入。
  数据表示为溯源图,但是经过版本化处理。如果该边更改了节点的现有依赖项(即祖先节点集),则在添加传入边之前创建节点的新版本。这样可以在不更改分析结果的情况下删除审计日志中的大部分事件,而且,这个版本图是无环的,可以简化很多图算法。

大概是指:如果出现环(即一个进程的子孙反过来影响了自己,那自己既是自己的祖先又是自己的子孙),此时就为这个节点创建一个新的版本,既方便删除子树不影响别的部分,无环又可以简化图搜索。

此外,溯源图存于内存,根据之前的工作进行了优化存储,每个事件仅需要不到五个字节。

B. TTP规范

  TTP 规范提供了低级审计事件和高级 APT 步骤之间的映射。依靠两种主要技术将审计日志数据提升到这个中间层:(a) 以溯源图的形式对安全相关事件进行操作系统无关的表示,以及 (b) 在涉及的实体之间使用信息流依赖关联TTP。 使用信息流依赖性对于检测通过使用良性系统进程来实现其目标来隐藏其活动的隐秘 APT 至关重要。

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

  TTP 规则规范的示例如表 4 所示,

  • 第一列表示 APT 阶段
  • 第二列表示关联的 TTP 名称和 TTP 中涉及的实体
  • 第三列指定与 TTP 关联的事件系列
  • 第四列中显示了该系列中包含的一些特定事件(不是规则的一部分,只定义一次,在规则中重复使用)
  • 第五列表示与每个 TTP 关联的严重性级别,用于警报排名。根据常见攻击枚举分类而得到,支持定制。还支持权重定制机制。
  • 最后一列指定了 TTP 规则匹配的先决条件。先决条件可以捕获两个 TTP 中涉及的实体之间的关系,例如进程上的父子关系,或文件之间的信息流。使用先决条件,我们能够修剪许多误报,即类似于 TTP 的良性活动。

  先决条件可以指定匹配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 小于指定阈值时,才满足此先决条件。

C. HSG构造

  图 5 说明了运行示例的 HSG,其中椭圆表示匹配的TTP,椭圆内的是溯源图实体,图的边代表不同TTP之间的先决条件。HSG 的构造主要由先决条件驱动:如果满足所有先决条件,则匹配 TTP 并将其添加到 HSG。这使得HSG总能保持一个较少数量的TTP,进一步使实时进行复杂分析成为可能。
在这里插入图片描述

D. 伪依赖避免

  伪依赖指的是对攻击者活动的无趣和/或不相关的依赖。例如,在图 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 pfaAC(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流的控制程度,为所以路径的最小祖先覆盖的最小值。

E. 减少噪声

良性事件会与TTP匹配引起噪声,利用两个概念来消除。

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

良性数据流量:为了解决白名单会漏报的问题,同时监控传输的数据量,如果超过阈值,视为攻击行为。

F. 信号关联与检测

定义威胁元组为一个七元组,分别对应七个比价重要的阶段,每个阶段具有不同的TTP选项,每个选项对应不同的严重等级。用HSG去匹配这个七元组,部分阶段可以缺省。
在这里插入图片描述
在这里插入图片描述
为了对HSG进行排名,首先利用通用漏洞评分系统(CVSS)将元组转换为数值
在这里插入图片描述
然后算一个总体评分
∏ i = 1 n ( S i ) w i ≥ τ \displaystyle\prod_{i=1}^n(S_i)^{w_i}\geq\tau i=1n(Si)wiτ缺省的阶段权重设为1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/908231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis有什么作用?面试题答案

参考答案 Redis是一种开源的内存数据库,它具有多种作用和用途。以下是Redis的主要作用: 缓存:Redis最常见的用途是作为缓存存储,将常用的数据存储在内存中,以提高读取速度。由于Redis是基于内存的,因此读取操作非常快速,适用于需要频繁读取的应用程序。 数据库:Redis可…

无人机工程安全巡检:主要应用与实施策略

无人机工程安全巡检是指使用无人机技术,对工程项目进行系统的、周期性的监测和检查,以确保工程的安全性、稳定性及其与设计的符合性。这包括但不限于建筑物、桥梁、道路、隧道、大坝等各种大型工程项目。无人机工程安全巡检不仅大大提高了效率&#xff0…

Revit 3D高效处理:cad exchanger sdk 3.21 Crack

3D 格式概述:Revit Revit 已成为寻求高效、准确的建筑信息建模的专业人士的首选解决方案。在这篇引人入胜的功能概述中了解 Revit 的特性和影响。 什么是Revit? Autodesk Revit 是一款流行的 CAD 软件,重点关注 BIM,被建筑师、工…

Mybatis模糊查询的问题

使用${}方式模糊查询,出错。 mapper 对应的 xml,注释掉的两种方式都可以得到数据,只有第三种出错 测试方法 结果 不知道为啥会出现这个 %root%,使用其他两种方式结果没问题,不知道问题出在哪里了。

opencv进阶11-LBPH 人脸识别(人脸对比)

人脸识别的第一步,就是要找到一个模型可以用简洁又具有差异性的方式准确反映出每个人脸的特征。识别人脸时,先将当前人脸采用与前述同样的方式提取特征,再从已有特征集中找出当前特征的最邻近样本,从而得到当前人脸的标签。 OpenC…

Linux知识点 -- Linux多线程(二)

Linux知识点 – Linux多线程(二) 文章目录 Linux知识点 -- Linux多线程(二)一、线程互斥1.背景概念2.多线程访问同一个全局变量3.加锁保护4.问题5.锁的实现 二、线程安全1.可重入与线程安全2.常见情况3.可重入与线程安全的联系 三…

【力扣每日一题】2023.8.17 切披萨的方案数

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一个二维数组来表示一个披萨,其中‘A’表示披萨上的苹果。 让我们切k-1刀,把披萨切成 k 份&#xff0…

Eslint error, configuration for rule “import/no-cycle“ is invalid

可以参考stackoverflow.comEslint error, configuration for rule "import/no-cycle" is invalid他的意思是有个∞符号不支持,解决方案,把 eslint-plugin-import 的版本增加到 ^2.22.1,重新下载依赖包如:

【分布式共识】Raft算法 选举一个领导者

Raft算法是通过一切以领导者为准的方式,实现一系列值的共识和各节点日志的一致 在分布式系统中,节点可能出现宕机、网络故障等,所以在3个节点的分布式系统中,如何选举出一个Leader节点。比如我们部署一个ZK集群。 成员 Leader领…

《Linux运维总结:Centos7.6之OpenSSH7.4p1升级版本至9.4p1》

Centos通过yum升级OpenSSH 在官方支持更新的CentOS版本,如果出现漏洞,都会通过更新版本来修复漏洞。这时候直接使用yum update就可以升级版本。 yum -y update openssh 但是,CentOS更新需要有一段时间,不能在漏洞刚出来的时候就有…

SpringBoot实现热部署/加载

在我们修改完项目代码后希望不用重启服务器就能把项目代码部署到服务器中(也就是说修改完项目代码后不用重启服务器修改后的项目代码就能生效)。 一、实现devtools原理 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-…

内网渗透神器CobaltStrike之凭据的导出与存储(八)

简介 Cobalt Strike 是一个流行的渗透测试工具&#xff0c;主要用于模拟高级持续性威胁&#xff08;APT&#xff09;的攻击。它提供了许多功能来操作、持久化和操纵受害者机器。其中&#xff0c;凭据的导出和存储是渗透测试中的一个重要步骤。 凭据导出: Cobalt Strike 通过其…

Vue前端封装一个任务条的组件进行使用

任务条 样式 代码 父组件 <articleSteps :tabs"tabs" :tabs-active-name"tabsActiveName" /><div class"drawer__footer"><el-button v-if"tabsActiveName 1 || tabsActiveName 2" click"backClick">…

面试了几十家,整理出这份车载测试面试题

年前有朋友找工作&#xff0c;跟我说简历改了车载后&#xff0c;收到的打招呼翻了几倍&#xff0c;如今车载测试前景非常广阔&#xff0c;因为越来越多的汽车厂商正在开发新的可智能化的汽车&#xff0c;他们需要测试这些汽车的性能&#xff0c;安全性以及可靠性。 车载测试技…

面试时,如何向HR解释自己频繁跳槽?

有数据显示&#xff0c;现在的职场人&#xff0c;跳槽越来越频繁&#xff0c;95后平均7个月就离职。 对于面试官来说&#xff0c;一个跳槽过于频繁的人总是存在潜在风险&#xff0c;比如抗压力差、稳定性不好、心不定这山望着那山高、职业规划不清晰等等。 我一直强调一个观点…

WXSS的全局样式和局部样式

什么是WXSS? WXSS中的样式和css差不多&#xff0c;是用于给WXML页面来设置样式的&#xff0c;但是WXSS中扩展了rpx尺寸单位和import样式导入 rpx:根据不同的屏幕自动进行适配&#xff0c;把设备屏幕的宽度等分为750份(设备的总宽度750rpx) import: 用于进行样式的导入 通过inp…

get Error: aborted,net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 问题解决

先说结论&#xff1a;由于磁盘空间满导致部分数据接口无法正常反馈结果。 今天前线业务人员忽然说&#xff0c;有个页面刷新后白屏。经过验证确实有这种情况。页面上用开发者工具查看请求和报错信息&#xff0c;发现一个请求所有字典数据的接口没有反馈数据&#xff0c…

无人机精细化巡检方案制定:提高效率与准确性的关键

在当前技术日新月异的时代&#xff0c;无人机在多个领域的应用已成为行业标配。但如何制定出一套有效、细致的无人机巡检方案&#xff0c;确保其最大效能&#xff0c;成为许多组织与公司的核心议题。其中&#xff0c;复亚智能在此领域已展现出了卓越的实力与深入的见解。 1. 精…

【LeetCode-困难题】42. 接雨水

题目 题解一&#xff1a;暴力双重for循环&#xff08;以行计算水量&#xff09; 1.先找出最高的柱子有多高&#xff08;max 3&#xff09; 2.然后第一个for为行数&#xff08;1&#xff0c;2&#xff0c;3&#xff09; 3.第二个for计算每一行的雨水量&#xff08;关键在于去除…

06 mysql all查询 和 主键查询 和 非索引列查询

前言 本文主要调试一下 mysql 的如下两种查询语句 我们也来深入的看一下, 究竟如下两个普通的查询, mysql 做了什么事情 1. select * from user where id 991; 2. select * from user; 3. select * from user where name jerry991; 环境介绍 测试表 user schema 如下…