原文标题:Enabling Refinable Cross-Host Attack Investigation with Efficient Data Flow Tagging and Tracking
原文作者:Yang Ji, Sangho Lee, Mattia Fazzini, Joey Allen, Evan Downing, Taesoo Kim, Alessandro Orso, and Wenke Lee, Georgia Institute of Technology
原文来源:USENIX 2018
原文链接:https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-ji.pdf
文章目录
相关名词:
- reachability analysis:对Provenance Graph进行修剪
- Interfering parts:涉及攻击的攻击部分
- point-to-point analysis:前向/反向分析中数据流的特定路径,query类型之一
- query:分析人员发出query,RTAG根据query类型返回结果
- symbols:subjects/objects
1 摘要
调查跨越许多主机的攻击通常具有挑战性。来自不同主机的安全敏感文件、网络终端和内存对象之间真实依赖关系,很容易被依赖爆炸或者未定义的程序行为(比如memory corruption内存损坏)所掩盖。
动态信息流追踪技术(Dynamic information flow tracking (DIFT))仅仅能够追踪单个主机上的信息流,而且在多台主机之间维护和同步数据流标签缺乏一个有效的机制。
本文提出的方法叫做RTAG,这是一种有效的数据流标记和追踪机制,可以用于实际的跨主机环境下的攻击调查。RTAG的创新技术具有以下三点:
- 记录和重放(record-and-replay):它将不同数据流标签之间的依赖关系从分析中解耦出来,从而在不同主机的独立和并行DIFT实例之间实现延迟同步。
- 利用系统调用级的起源信息来计算和分配内存消耗方面的最优标签映射。
- 将标签信息嵌入到网络数据包中,从而实现跨主机的数据流追踪,且网络带宽开销小于0.05%。
通过实验验证,RTAG能够恢复跨主机攻击场景的真实数据流。性能方面,RTAG能在基于DIFT分析方法的基础上,内存消耗最多减少90%;整体分析时间与之前的分析系统相比减少60% - 90%
2 介绍
现存的攻击调查系统:
- 一些通过监控系统调用级别或者指令级别的事件在每台主机上分析攻击,而忽略了跨主机的攻击
- 一些着眼于跨主机情景下,多主机之间的交互,但是因为他们缺乏系统调用级别的信息,所以他们的分析可能会导致依赖爆炸问题
不同解决方案及其优缺点:
- 使用粗粒度信息(如系统调用):其性能开销很小,但是即使是在单主机环境下,它也不能准确地追踪依赖爆炸和未定义的程序行为(如memory corruption)
- 如果使用网络会话将不同主机上的粗粒度信息联系起来:会包含太多的错误依赖
- 使用细粒度信息(如来自DIFT的指令级别信息):会解决准确度问题,但是将会增加开销
- 跨主机DIFT机制:在运行时,在网络数据包中使用元数据(标签)并关联它们,也会是巨大的性能下降
因此,我们提出了RTAG系统:基于记录和重放的数据流标记和追踪系统。
使用记录和重放来进行跨主机的信息流分析带来了新的挑战:
- 分析时间:DIFT分析需要以一种同步的方式,在不同主机之间传输分析数据(如标签)
- 内存消耗:多个DIFT实例的内存消耗是巨大的,尤其是不同主机上的多个进程交互时
为了解决这两个挑战,RTAG通过标签覆盖和标签切换技术将标签依赖从分析中解耦出来,并且时DIFT独立于由通信所决定的任何特定顺序。这使得DIFT分析可以在多主机、多进程并行的环境下运行。此外,RTAG通过设计标签映射数据结构减少了内存消耗,标签映射数据结构用于追踪标签和关联值之间的关系。(不懂)
评估结果表明分析时间降低了60% - 90%,内存消耗最大减少了90%。评估环境使用了真实跨主机攻击场景,包括GitPwn和SQL注入。
2.1 主要贡献
- 可精炼的跨主机调查标签系统:RTAG解决了“标签依赖耦合”问题,它将标签依赖解耦合,避免在重放DIFT上进行容易出错的编排工作,并使DIFT能够独立地并行执行
- DIFT运行优化:在重放阶段,优化了运行时间和内存。运行时间优化是通过并行运行DIFT任务;内存优化是基于系统调用级别的可达性分析,为DIFT分配最佳标签大小
3 背景
3.1 执行程序日志
Data Granularity:Granularity refers to “the level of detail or summarisation of the units of data in the data warehouse”. The low level of granularity contains high level of detail and the high level of granularity contains low level of detail.
- 使用高粒度数据,如系统调用,开销低,准确度低
- 使用低粒度数据,如指令,准确度高,开销大
- 结合上述二者,使用记录和重放,在记录程序运行时,执行高级别的日志记录和分析;在重放程序运行时,执行低级别的日志记录和分析
3.2 记录和重放
该技术的目的是记录软件执行时的信息,并利用存储的信息,重新执行软件并重构程序状态,其执行路径跟初次执行时一样。
根据执行记录重放任务系统的层次,进行以下分类:
- 在用户层执行程序:在重放阶段效率较高,因为它可以直接将注意力放在特定程序的记录信息上,然而这种技术需要程序源码或者二进制代码,或者需要额外的空间来记录通信程序的执行(特别是通过文件系统),因为记录的信息要存储多次。
- 通过观察操作系统的行为来进行记录和重放:通过管理程序(hypervisor)或仿真来监视OS,在存储信息方面非常高效,然而即便是在只有一个程序是与攻击相关的情况下,该方法也得将所有程序重放一遍。
- 前两种方式的融合:在OS级别记录信息,在用户级别重放。
3.3 DIFT
DIFT是一种在执行程序内分析数据流的技术,具体包括以下几点:
- 用“标签”标记程序中感兴趣的value
- 通过处理指令传播标签
- 在程序执行中的某些特定的点,检查与value相关联的标签
该技术可以准确地判断程序的两个value之间是否有关联。然而,因为它需要对每个执行指令进行额外的操作,因此会有较大的开销。

上图比较了序列化的DIFTs(串行)和RTAG加持的并行DIFTs;
- (a) 展示了在服务器上的ssh守护进程和另一台主机上的ssh客户端,两者都遵循相同的标签依赖(标签依赖在记录阶段被记录下来,DIFTs用它进行重放)
- (b) 中RTAG使用标签切换、分配和关联技术,将标签依赖从程序重放中解耦出来,从而使得每个进程在线下分析时可以并行
4 攻击实例和挑战
4.1 攻击实例
攻击实例使用GitPwnd,其行动包括多主机的文件窃取。链接:https://github.com/nccgroup/gitpwnd.

RTAG是一种高效的数据流标记和追踪机制,用于实际跨主机环境下的攻击调查。它通过记录和重放技术解耦标签依赖,优化内存消耗,并在不影响准确性的情况下提高效率。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



