现代信息系统中的诸多漏洞一直是攻击者发起攻击的“关键”突破口,因此漏洞检测成为防御者的必修课。然而,在常见的漏洞检测方法中,模糊测试覆盖率不足,基于符号执行程序的验证方法对检测设备的性能要求较高。此外,漏洞被发现后的补洞过程也极其耗时。入侵检测与威胁分析系统的研发,为对抗攻击提供了更直接、更快捷的新方法,可以极大地缓解上述问题。然而,现有的入侵检测系统大多依赖于从现有攻击中提取的攻击特征,如妥协指标(IoC)等,作为检测的依据,并没有真正把握攻击的要点,使得防守者总是落后一步。攻击者总是可以通过寻找新的攻击面并构建多阶段和多变的复杂攻击来规避此类检测。因此,安全研究人员和从业人员迫切需要重新考虑传统的入侵检测方案,设计新一代更通用、更健壮的入侵检测机制来检测各种不断变化的入侵方式。图1.痛苦金字塔(ThePyramidofPain)模型DavidBianco很早就提出了入侵检测的“痛苦金字塔模型”(如图1所示)。入侵指标、“攻击工具”和“攻击策略、技术、程序(TTPs)”等高级特征在入侵检测中具有更大的价值,也更难分析和改变。这是因为潜在的危害指标出现得更频繁,使攻击者很容易更改这些指标以逃避检测。此外,无文件攻击、“异地生存”攻击等攻击技术的出现,使得攻击行为所涉及的底层特征与正常行为完全无法区分。但高层特征包含丰富的语义信息(包括攻击方式、目标、使用的技术等),更加健壮。对于攻击者来说,攻击策略、技术和程序(TTPs)直接关系到他们最终的攻击目标,并且很难真正改变,因此对入侵检测更有意义。同时,语义信息可以帮助安全分析师了解此次攻击,包括入侵方式、可能造成的损失等,从而做出相应的止损和补偿措施。系统溯源图介绍2015年,美国国防高级研究计划局(DARPA)发起的一项名为“透明计算”的科研项目为解决上述问题提供了可能。本项目旨在将当前不透明的计算系统透明化,辅助海量系统日志建模,为后续的高阶程序行为分析和高效的入侵检测提供支持。具体而言,该项目将开发一个数据收集和建模系统,记录和建模所有系统和网络实体(包括进程、文件、网络端口等)及其交互和因果依赖关系(CausalDependency)。这些实体和关系可以用图的形式表示,如图2所示,一般称为“ProvenanceGraph”或“CausalityGraph”。图2Firefox漏洞入侵溯源示例上图是利用Firefox漏洞入侵的源溯源图示例:攻击者从x.x.x.x:80发起攻击,利用Firefox漏洞创建并启动mozillanightly浏览器插件。插件通过cmd执行环境信息获取命令,获取敏感信息并发回x.x.x.x:443,最后创建burnout.bat清除所有入侵痕迹。(箭头的方向代表数据流或控制流的方向)溯源图是一个带有时间信息的有向图,两个节点之间可能存在多条不同属性(包括时间和具体操作等)的边。该图准确地记录了系统实体之间的交互关系,包含了丰富的信息。上面提到的攻击图可以看作是溯源图中与攻击直接相关的子图的抽取和抽象部分。但需要指出的是,溯源图记录的不是细粒度的数据流和控制流,而是可能的因果控制关系。因此,在进行多跳分析时,会引入错误的依赖关系,导致核心依赖爆炸问题。这也是基于溯源图的入侵检测的核心问题。基于系统溯源图的入侵检测框架图3.基于系统溯源图的入侵检测系统框架和关键技术溯源图可以很好地还原系统中的各种行为,是近年来入侵检测领域热门和有潜力的研究方向。安全研究人员基于它设计了多种模型来检测和分析系统中的恶意行为,包括“数据收集、分析和压缩”、“数据存储和压缩”、“入侵检测和溯源分析”等许多具体的研究问题.我们梳理了威胁分析检测系统的整体框架,如图3所示。下面,我们将具体讨论框架的三个模块,并对涉及的技术进行分析:01数据采集模块数据采集是一切检测的基础和分析系统。一般来说,基于溯源图的威胁检测系统都是收集系统日志作为数据源,包括Windows内置的日志系统EventTracingforWindows(ETW)、Linux的日志系统Auditd等。基于依赖分析的方法的一个共同挑战是“依赖爆炸问题”。错误的依赖会导致后续分析开销呈指数级增长,误报导致分析失败,细粒度的数据采集可以从根本上缓解这个问题。02数据管理模块系统日志为威胁分析提供了大量有价值的信息,但庞大的数据量给数据存储和分析带来了巨大压力。因此,在数据管理模块中,一方面,我们需要提供合理的数据存储模型来存储海量数据,提供高效的查询分析接口;另一方面,我们需要尝试通过压缩和剪枝来去除冗余数据。数据存储模型使用图结构存储溯源图是一种解决方案。然而,由于溯源图规模的限制,将图完全存储在内容内存中是不现实的。它只能用于小规模实验,不能大规模部署。因此,研究人员提出了一种方案,将图中的所有边都视为数据流,每条边只处理一次,并使用节点上的标签来记录计算过程。为了区分,我们将用图数据存储图的方案称为“缓存图”,将流处理的方案称为“流图”。流图方案之所以有优势,是因为溯源图中的边数远大于节点数,因此查询节点属性的效率远高于查询边的效率。同样,一些研究以节点为键,以边为值,将溯源图存储在查询效率更高的关系数据库中,我们称之为“节点数据库”。图4.边缘数据的压缩算法。图5.节点数据的压缩算法。信息;另一种是与检测分析算法相结合,其使用具有较大的局限性,本文主要分析前者。一般的压缩算法可以进一步分为两类:节点数据压缩和边缘数据压缩,分别如图4和图5所示。基于节点的算法效果波动较大,在程序初始化比较频繁的场景下(比如数据分析等)效果更好。为了压缩边数据,研究人员首先提出了语义保存的不同定义,包括“因果保存”和相应的压缩算法。总体上,由于溯源图中边的基数较大,边压缩算法往往具有较高的整体压缩率。然而,这些通用的压缩方法并不能从根本上解决依赖爆炸问题,在处理实体间依赖关系复杂的大规模溯源图方面非常有限。03威胁检测与分析模块表1现有入侵检测系统基于系统溯源图的分类溯源图提供了丰富的语义信息,支持多种检测分析方案,如表1所示。这些检测方案考虑了不同的攻击模型,针对不同的攻击模型提出不同的检测模型,大致可以分为几类:第一类,也是最直观的方法,子图匹配,在溯源图中定位攻击。从行为中抽象出来的攻击图。精确的图匹配代价太大,因此研究人员提出了几种模糊匹配方法,包括:基于威胁情报的图对齐、基于图嵌入的机器学习匹配等。第二类方法是使用节点标签来缓存计算结果,并使用标签传递来代替复杂的图计算“标签传播(TagPropagation)算法”。这类算法一般采用流图作为数据模型,避免了大量的数据读写操作,因此整体效率最高,但对检测分析算法也有较多的限制。第三类是异常检测模型。现有的溯源图异常检测模型一般都是先搜索局部异常,通过依赖分析关联起来进行全局判断。
