简介
审计能力就被认为是任何资源共享系统中检测违规和渗透尝试的关键。Lampson 将访问控制“黄金标准”的三大支柱确定为授权、身份验证和审计。当授权和身份验证等主动安全措施失败时,审计构成了所有形式的反应性安全的基础,使系统防御者能够在入侵升级之前识别并减轻入侵
这是一篇系统审计的实证研究,总结了所有属于系统审计的工作。从宏观上来讲,授权和身份验证失败的主动安全措施失败后,后续的系统安全工作应该都属于审计
工作
(1) 总结以往工作,根据贡献分成五个不同的层:
- Capture Layer:在各种软件架构中生成单独的审计日志记录
- Reduction Layer:消除审计日志中的无关信息,提高存储、分析和查询效率
- Infrastructure Layer:处理和管理大量的审计数据
- Detection Layer:对审计数据进行自动分析,以搜索攻击指标
- Investigation Layer:为分析师提供一个接口,以有效检查和解释审计数据
以往的工作大多是单层的,部分工作是多层的甚至端到端的审计系统。
(2) 来源图:基于来源的系统可以构建解释关系的依赖图,而不是从原始日志中手动拼凑各个证据
起源图以服务单个用户请求的 Apache Web 服务器的开放起源模型(OPM)表示。顶点代表系统主体和系统客体,而边代表这些实体之间的因果关系
Capture Layer
审计日志的捕获是取证分析师工具包中的一个特殊工具,因为它是一项必须在协作计算机上提前配置的运行时活动。然而,并非所有审计流程都是一样的——审计所使用的有利位置会影响证据的粒度,甚至影响分析师得出的结论。此外,不同的日志捕获方法会影响整个审计管道的安全性和可部署性(这里的捕获应该指的就是系统日志的设计,监控系统信息)
(1) 这里将日志捕获方法分成以下几类(级别从低到高):
- 管理程序级监控 (Hypervisor-level Monitoring)
目标主机包含在虚拟机中,同时由虚拟机监视器 (VMM) 进行审核。此类方法基于虚拟机自省——每当用户应用程序调用可审核事件时,VMM 就会检查虚拟机的状态,提取相关事件上下文,并生成日志事件 - 内核级监控 (Kernel-level Monitoring)
在内核级监控中,审核日志使用操作系统抽象(例如进程、文件和网络套接字)描述对数据实体的访问。由于这些对象普遍被更高的软件层所采用,因此内核级审计为系统上的事件提供了广泛的、系统范围的视角。这里又细分成两种,一种使用系统调用 API 进行审计,另一种是使用安全 API(需要安全模块和安全子系统,更高级的功能) - 应用级监控 (Application Level Monitoring)
较低级别的审计可能会描绘出不精确或不完整的系统执行情况。例如,系统日志遭受依赖性爆炸(由于内部流程活动的不透明性,必须假设每个流程输出事件都因果地依赖于所有先前的输入,从而导致来源图中出现错误的依赖性)但使用应用程序层,可以通过集成(或分层)系统和应用程序遥测数据来解决此类问题。应用程序监控的常见方法是使用自定义审核功能来检测感兴趣的程序 - 中间件级监控 (Middleware Level Monitoring)
应用级监控受限于应用程序自身检测、类型或行为的影响,相比之下,中间件级监控在审计时往往可以在侵入性和精确性之间取得平衡
(2) 挑战
- 可部署性:系统修改的侵入性和成本
- 安全性:系统日志的反取证篡改
- 取证能力:对信息的捕获能力有限
Reduction Layer
审计框架会在单台机器上生成大量日志,有时,这会给分析师带来“大海捞针”的问题,因为他们需要筛选无关的日志数据来寻找真正的证据。日志量过大肯可能会导致公司被迫在捕获旧日志几天后甚至在检测到入侵之前清除旧日志。先前的工作试图开发减少日志大小同时保留相关信息证据的技术
(1) 这些日志压缩技术可分为以下几类:
- 图压缩 (Graph Compression)
- 语义修剪 (Semantic Pruning)
研究发现许多日志内容描述的应用程序活动永远不会在调查中使用。语义修剪技术旨在利用应用程序行为的知识从日志中过滤掉这些事件 - 信息流保存 (Information Flow Preservation)
应用程序在执行 I/O 时始终发出数百或数千个重复的系统调用,远远超出了准确确定因果关系所需的数量实体之间。信息流保留旨在通过仅保留生成系统执行的准确信息流图所需的那些日志事件来解决这种冗余问题。 - 因果近似 (Causality Approximation)
总结近似典型行为,同时无损保留非典型行为,接受一些准确性损失以换取空间效率
(2) 挑战
- 存储效率:不幸的是,我们对存储效率的理解主要基于每个系统作者自我报告的发现。这些结果通常基于自定义或闭源数据集,因此很难比较不同系统的存储效率或评估每种方法的一般适用性
- 取证有效性:讲的很复杂,个人理解为用来衡量日志中安全信息的丢失
- 分析成本:虽然通用压缩因其能够无损地再现来源图的能力而具有优势,但其主要缺点是难以查询静态的缩减日志。技术必须具有合理的吞吐量并在本地适用才能扩展
Infrastructure Layer
基础设施层负责存储和管理来源和审计日志数据,使其可供分析管道的上层访问。与其他层相比,基础设施层特别受益于大数据和分布式系统的通用研究。这里重点关注利用审计和取证的独特特征来改善基础设施支持的工作。这里直接统一的讲方法和挑战:
- 查询支持 (Query Support)
这里简单来说就是日志查询技术的总结,挑战主要有查询效率、查询准确性等等 - 存储支持 (Storage Support)
审计数据的访问性能还取决于底层存储结构。很多工作利用了审计数据的独特属性来提高现成解决方案提供的性能
Detection Layer
基于来源的系统审计管道中的检测层负责以自动方式分析审计流,以便向分析师发出潜在威胁的警报。
(1) 主机入侵检测可大致分为两类:
- 启发式检测 (Heuristic Detection)
启发式检测方法利用现有或预期的攻击行为知识来定义事件匹配规则,然后将其与审计流进行匹配以检测攻击。如今,大多数端点检测和响应 (EDR) 产品都采用启发式方法,使用部分基于攻击者策略、技术和程序 (TTP) 的 MITRE ATT&CK 知识库的规则 - 异常检测 (Anomaly Detection)
基于异常的检测不是推测未来攻击的性质,而是根据历史日志数据定义典型系统行为的模型,如果执行明显偏离该模型,则会发出警报。基于异常的检测面临的一项挑战是将复杂且任意大的来源图转换为可用于建模的固定长度向量 (本文提到:虽然我们这里的重点是因果图异常检测,但我们注意到基于序列的日志分析的丰富文献,包括 DeepLog 和 DeepCase 等最近的作品)
(2) 挑战:检测性能与成本、可解释性
Investigation Layer
调查层使分析师能够执行威胁警报验证和事件事后分析。这些任务与内存取证或磁盘取证等补充方法相关,有时相互依赖。分析警报的严重性并分类,然后启动适当的时间响应和恢复过程
(1) 本文将调查层分为四个子任务:
- 警报相关性:现有的威胁检测系统容易出现高误报率,导致威胁警报疲劳问题。因此,常见的过程是关联和聚类警报,以减少需要调查的事件总数。这些技术可以分为基于相似性和基于因果关系的方法
- 警报分类:为了进一步缓解威胁警报疲劳,分析人员执行警报严重性分类,在低严重性警报之前调查高严重性警报
- 日志集成:为了帮助威胁警报调查,从不同角度收集和集成审核日志以获得更好的上下文信息非常重要。即如何更好的构建并提取日志中的关键特征
- 行为诊断:帮助分析人员快速了解低级别审计事件的攻击行为
(2) 挑战:自动化(是否需要技术分析师参与)、准确性
Q:审计数据包括哪些?
A:内存取证从易失性存储器中获取并探索感兴趣的语义内容,而磁盘取证则需要从数字存储介质中提取取证信息。易失性内存的分析在取证调查期间提供了有价值的实时证据,并且通常比可以通过数据加密阻碍的磁盘分析更容易执行。有时,提取的证据实际上可能是日志事件的片段。因此,虽然审计绝不是取证调查的唯一形式,但可以看出 75% 的事件响应专家考虑了日志成为最有价值的调查工件。
实验
对部分方法都做了实验比较并进行相关总结
未来方向
本文总结了多个层面的跨领域挑战,并讨论了每个层面未来研究的可能方向
- 缩短洞察时间:我们预计社区很快将达到仅通过技术解决方案所能实现的极限,因此未来应该研究如何有效提高威胁调查效率
- 端到端审计安全:强调审计安全的整体理解的重要性,对系统入侵响应的正确性取决于确保审计流的端到端托管
- 扩大整体审计:不同层之间的工作不够平衡。迄今为止,基础设施层受到的关注还不如其他层;事实上,我们在这一层讨论的许多关键论文都是 NEC 实验室这家公司共同努力的结果。虽然如果没有行业洞察力,很难理解基础设施层的挑战
这项工作能够成为社区迄今为止所做努力的总结,并成为进一步探究的起点