王文娟,杜学绘,单棣斌
(信息工程大学,河南 郑州 450001)
随着云计算[1]的发展和广泛应用,攻击者不再满足于传统的计算平台,而是将其主战场转移到了云计算平台。2016 年,云安全联盟(CSA,Cloud Security Alliance)公布了《云计算面临的十二大安全威胁》,其中高级可持续攻击(APT,advanced persistent threat)、分布式拒绝服务(DDoS,distributed denial of service)攻击等仍将盛行。如图1 所示的DDoS 攻击过程中,攻击者给云环境中的虚拟机(VM,virtual machine)发送带有恶意代码shellcode的网址或文件,若VM 使用带有漏洞的浏览器或应用程序打开恶意网址或恶意文件,shellcode 就会开始执行并利用浏览器或应用程序的漏洞获得该VM的控制权。攻击者下载恶意软件如木马到VM 并安装木马软件,然后向木马软件建立远程连接下达攻击命令,例如控制木马软件扫描其他VM 的漏洞、窃取被攻击VM 里的重要信息、控制多个VM 发动DDoS 攻击。
图1 DDoS 攻击过程
可见,DDoS 攻击表现出复杂多步、隐蔽性强等特点,成为攻击者的重要攻击手段。复杂多步攻击是指一个完整的攻击由多个具有不同目的的单步攻击组成,达到某个目的之后继续实施下一个单步攻击,执行多个攻击步骤后实现最终目标。然而,云入侵检测系统(CIDS,cloud intrusion detection system)检测出的报警事件是孤立的、低层次的,反映的是基于单点的、单时间的单步攻击或攻击片段,往往不具备关联能力来识别复杂多步攻击。因此,研究如何揭示报警之间隐藏的关联关系、还原完整的攻击场景(AS,attack scenario)是应对复杂多步攻击的有效措施。攻击场景是指呈现攻击者入侵渗透过程的“画面”,通过“画面”能够获得攻击者发动攻击的起点、单步攻击之间的关系,以及攻击者的攻击目标、攻击路径等信息,攻击场景常用“图”的形式表示[2]。基于此,本文研究面向云计算环境的攻击场景构建方法,旨在再现和还原攻击者的复杂多步渗透过程,帮助云安全管理员从整体上把握攻击活动全貌,为实施有效的安全防御提供更全面的估计和决策依据。
攻击场景构建实质上是报警关联分析,揭露各个孤立报警之间的逻辑关系,并转化为易于理解的、可视化的报警关联图。目前,报警关联所采用的技术手段主要包括以下4 种:基于相似度的方法、基于数据挖掘的方法、基于属性攻击图的方法和基于概率攻击图(PAG,probability attack graph)的方法。
基于相似度的方法是通过计算报警之间各属性的相似度来判定报警之间是否具有关联关系,此种方法的关键在于定义相似度函数。Wang 等[3]通过计算报警间各属性相似度的加权平均和得到整体相似度,对整体相似度大于给定阈值的超报警进行关联。梅海彬等[4]提出利用报警间的相似度函数对具有相似攻击行为的序列进行聚类,并基于聚类的报警序列自动发现多步攻击模式。此种方法计算开销小,依赖专家知识较少,但需要预先定义阈值,只能发现统计上的关联情况。
基于数据挖掘的方法是通过关联算法、序列模式算法等发现隐藏在报警中的关联关系,依据关联关系构建攻击行为序列。葛琳等[5]利用Map-Reduce架构下的Apriori 关联算法挖掘多维通信信息中的频繁项集,再进行综合关联分析。鲁显光等[6]使用改进的FP Growth 算法挖掘报警之间的关联规则,继而进行报警关联。该方法不依赖专家知识,能够发现未知威胁行为,但是存在准确度较低、实用性较低等缺陷。
基于属性攻击图的方法直观地呈现了攻击者利用目标网络各脆弱点进行逐步渗透的所有可能攻击路径,描述了攻击步骤间的因果依赖关系,依据攻击图将报警进行匹配关联,从而构建攻击场景。因此,如何高效地生成攻击图和依据攻击图进行告警匹配关联成为该方法的2 个重要研究内容。目前,一些研究更加专注于攻击图的分布式并行计算,以提高其生成效率。Wang 等[7]提出了一种基于启发式搜索的攻击图生成方法,通过引入匹配索引表来存储原子攻击的最新匹配结果,从而提高攻击图的生成效率。Kaynar 等[8]提出了一种分布式攻击图生成算法,应用于分布式多代理平台,由多个代理节点分别生成子攻击图,再由中心节点将子攻击图合并成全局攻击图。实验表明,分布式并行计算可以提高攻击图生成速度。
然而,实际上攻击步骤间的因果关系存在着不确定性因素,例如,无法确定某攻击是否一定会成功,前一攻击步骤能否导致下一攻击步骤的发生等[9]。研究者将攻击场景构建视为不确定性推理问题,试图从概率推理的角度对攻击步骤之间的因果关系进行分析。刘威歆等[10]提出了基于攻击图的多源报警关联分析算法,能够综合应用图关系和阈值进行报警的联动推断和预测,从而构建攻击场景。吕慧颖等[9]深入分析了网络对抗在空间上的复杂性和时间上的动态性,采用状态转移图描述了威胁事件的时空关联。该方法存在状态空间爆炸问题,难以适应大规模网络,且只能发现一定时间内的报警关联。陈小军等[11]提出了一个面向内部攻击意图推断的概率攻击图模型,并设计了攻击意图推断算法以及最大概率攻击路径推断算法,但是这些算法并没有考虑误报警和漏报警产生的影响。王硕等[12]提出了基于因果知识网络的攻击场景构建方法,将因果知识网络分为因果关系和因果知识,因果关系依据专家知识定义,因果知识则是从报警中挖掘计算得出。该方法依赖专家知识,从具有较高误报率和漏报率的报警中挖掘的因果知识是不太准确的。为了直观地描述各类方法的特性,表1 对不同报警关联方法进行了分析比较。
表1 不同报警关联方法对比
综上所述,基于概率攻击图的方法能够揭示攻击步骤间的因果依赖和概率推理关系,准确度较高,此方法已成为目前攻击场景构建的主流方法。然而,基于概率攻击图的方法仍然面临一些问题和挑战。
1) 云计算具有弹性、动态性的特点,其网络拓扑结构、安全策略如防火墙规则等会经常发生改变,这导致概率攻击图不可能是一成不变的,而应是随着时间的推移动态变化的。
2) 异常检测系统不可避免地存在误报和漏报问题,误报和漏报无疑会对攻击场景的构建产生影响,如出现冗余、断裂等问题,并不能真正地反映攻击者的实际攻击过程。
针对以上问题,本文提出了一种基于动态概率攻击图的云环境攻击场景构建方法。该方法在概率攻击图的基础上,立足于攻击步骤间的因果依赖关系和概率推理关系,考虑其时空约束和动态特性,对动态概率攻击图模型、攻击场景构建过程进行了形式化建模和设计实现。本文的主要贡献如下。
1) 构建了动态概率攻击图模型,通过定性分析与定量分析相结合,能够准确合理地刻画攻击步骤间的因果依赖关系和概率推理关系。设计了概率攻击图更新算法,使之能够随时间的推移而动态变化,从而适应弹性、动态的云计算环境。
2) 在已知动态概率攻击图和观测报警的前提下,设计了攻击意图推断算法和最大概率攻击路径推断算法,解决了误报、漏报导致的攻击路径错误、断裂等不确定性问题,保证了攻击场景的准确性。同时,将攻击场景随动态概率攻击图动态演化,保证了攻击场景的完备性和新鲜性。
3) 在部署的云计算实验环境下对提出的动态概率攻击图模型以及攻击场景构建方法进行了实验验证。实验结果表明,本文方法能够构建完整的、动态演化的攻击场景,进而帮助云安全管理员从整体上把握云环境的安全态势。
动态概率攻击图借鉴动态图思想,动态图又称图流或图序列,指会随时间推移而动态更新的图[13]。这里,为了方便理解和描述动态概率攻击图,首先定义概率攻击图。
定义1 概率攻击图。PAG 由网络结构和网络参数两部分组成,记为PAG=(G,P)。
1) 网络结构G=(V,E)
G是一个有向无环图。
V=A∪S为节点集合。A={ai|ai=action(host,vul)}为动作节点集合,action 表示原子攻击ai所采取的动作,可能是一次扫描或一次漏洞利用;host表示ai的攻击目标主机;vul 表示ai利用的漏洞信息;变量ai取值为1 或0,表示原子攻击行为是否发生。S={si|si=state(host)}为状态节点集合,state 表示攻击者所处的状态;变量si取值为1 或0,表示是否获取host 的权限或占有host 的资源,s0表示初始状态,si表示攻击致变状态。G={gi|gi=goal(host)}为攻击目标状态节点集合,满足G⊂S。
E={ei|ei∈(E s∪Ea)}为有向边集合。其中,E s=S×A为前提边,表示只有前置状态满足时才能实施某原子攻击;Ea=A×S为后果边,表示原子攻击成功实施后能够达到某个新的后置状态。
2) 网络参数P=(Δ, Θ)
Δ=Δs∪ Δa表示依附在有向边上的权值。其中,Δs依附于Es,指状态节点到动作节点的一步转移概率,表示在前置状态满足的条件下攻击发生的概率,称为攻击发生概率;Δa依附于Ea,表示原子攻击成功后到达后置状态的概率,称为攻击成功概率。
Θ={θi|θi=P(vi|Pre(vi))}表示局部条件概率分布表(LCPT,local conditional probability table)。θi表示节点vi与其所有父节点的依赖关系程度,Pre(vi)表示节点vi的父节点集合。根节点s0没有父节点,其概率值由先验知识给出,根据根节点的概率值和边权值便可推导出所有后续节点的LCPT。
定义2概率攻击图更新操作。概率攻击图更新操作可以用三元组
需要说明的是,向概率攻击图中增加一个节点,包括与该节点相关的一系列增加边、增加边权值和LCPT 等操作。类似地,删除一个节点,则包括与该失效节点相关的一系列删除边、删除边权值等操作。
为了描述概率攻击图动态变化的特性,需要引入时间因素,这里将攻击步时作为概率攻击图的更新周期。
定义3攻击步时Δt。当攻击者的入侵行为有一个攻击步时,若在长时间内仍未发起后续攻击,则认为入侵失败,设置一个时间窗口Δt来衡量攻击的成功与否。已知大部分攻击的攻击步时为2 h,设置Δt=2 h。
定义4动态概率攻击图(DPAG,dynamic probability attack graph)。DPAG 指在时间域T=[t0,tn]内随攻击步时Δt动态更新的概率攻击图流,可表示为
其中,二元组
由定义4 可知,动态概率攻击图的构建过程实际上是初始概率攻击图的构建与更新过程,其更新过程是按固定时间间隔的(即周期性更新),适应于较稳定的、改变量较小的私有云环境。对于公有云来说,其环境规模大,变化频繁,如新增大量节点、部署新的系统等,为了提高更新效率,可以采取触发更新机制,即当网络环境发生变化时,提前自适应地局部更新。
概率攻击图的构建主要包括两部分:网络结构生成和网络参数确定。网络结构生成是指生成动作节点和状态节点,并识别节点之间的因果依赖关系,以有向无环图直观展示;网络参数确定是指确定节点间的因果依赖强度。
3.2.1 网络结构生成
网络结构生成是依据拓扑结构与漏洞信息等,借助攻击图生成工具生成攻击图的网络结构。目前,研究者已开发了多种攻击图生成工具,如Ou等[14]开发的多主机多漏洞分析工具MulVAL、Noel等[15]提出的拓扑脆弱性分析工具TVA、Lippmann等[16]提出的基于图论的攻击图生成工具NetSPA等。其中,MulVAL 是Linux 平台开源攻击图生成工具,可用于大规模网络的攻击图生成,实验数据表明,对于包含2 000 台主机的模拟网络,生成攻击图的时间在15 s 左右;对于具有n个节点的网络,复杂度为O(n2),符合多项式时间要求。MulVAL 工具将主机/网络配置、网络连通性信息、漏洞信息等输入文件input.P 中,使用Graphviz 图形生成器绘制攻击图,输出的攻击图存储在AttackGraph.PDF文件中。由于MulVAL 是开源工具,且相对于其他工具有更好的准确度和可扩展性,得到了工业界和学术界的一致认可,已广泛应用于攻击图可行性验证和性能测评,因此,本文选用MulVAL 工具生成网络结构。
3.2.2 网络参数确定
网络参数确定是指确定有向边权值以及每个节点的LCPT。
1) 有向边权值确定
攻击发生概率Δs。元素是前提边(si,aj)的权值,表示在状态si满足的前提下攻击aj发生的概率,ΔSij=P(a j|si)。
攻击发生的概率与漏洞被利用的难易程度相关,漏洞越难被利用,相应的攻击发生的可能性越小。通用脆弱性评估系统(CVSS,common vulnerability scoring system)是漏洞评估的公开行业标准[17]。CVSS 中的访问向量(AV,access vector)、访问复杂度(AC,access complexity)、认证(Au,authentication)等属性描述了漏洞被利用的难易程度[17],可作为确定攻击发生概率Δs的依据。攻击发生的概率可定义为
实际上,也存在一些攻击并不是通过漏洞利用来发动的,如口令猜测攻击等。这类攻击发生的概率可以根据其发生的频率来确定。本文确定的攻击发生概率的取值如表2 所示。
表2 攻击发生概率的取值
攻击成功概率Δa。元素Δaij是后果边(ai,sj)的权值,表示原子攻击ai成功发生后到达后置状态sj的概率,=P(s j|ai)。
实际上,对于漏洞利用攻击来说,其攻击成功的概率与攻击发生的概率是相关的,比如攻击者选择一个漏洞进行攻击是否成功与该漏洞被利用的难易程度相关。因此,这里将漏洞利用攻击的成功概率置为1.0,攻击发生概率中已经考虑了其难度。但是对于其他攻击,其攻击成功的概率与攻击发生的概率又不完全一样,比如口令猜测攻击很容易发生,但是成功的可能性却比较低。因此,其他攻击的成功概率根据专家知识库来设置,如果攻击难度较大,则攻击成功的概率为0.1。攻击成功概率的取值如表3 所示。
表3 攻击成功概率的取值
2) 节点LCPT 确定
概率攻击图中包括动作节点和状态节点2 类,故LCPT 的计算存在以下2 种情况。
①指向同一动作节点ai的各状态节点之间是“与”关系,即只有当攻击ai的所有前置状态都满足时,ai才有可能发生。
②指向同一状态节点si的各动作节点之间是“或”关系,即任何一个原子攻击成功都能够达到此状态si。
对于动作节点ai,其父节点集用Pre(ai)来表示,则ai的LCPT 为
对于状态节点si,其父节点集用Pre(si)来表示,则si的LCPT 为
概率攻击图模型如图2 所示。其中,虚线圆形表示状态节点,虚线方形表示动作节点,有向边表示节点间的因果关系。设节点s0的先验概率P(s0)=0.8,根据式(2)和式(3),可推导出所有后续节点的LCPT。
不难发现,概率攻击图中网络结构G从定性的角度直观地刻画了原子攻击间的因果依赖关系,网络参数P则从定量的角度量化了因果依赖的强度,通过定性分析与定量分析相结合,有利于准确合理地构建攻击图。
概率攻击图更新包括2 种方法:重新生成和局部更新。如果抛开原攻击图重新生成攻击图,则计算代价较大,新攻击图相较于原攻击图大部分是重复的,为此可以在原攻击图的基础上实现攻击图的动态更新。
图2 概率攻击图模型
引起概率攻击图变化的主要因素包括网络拓扑改变、主机节点信息改变、防火墙规则微调等,根据定义2 可知,概率攻击图变化实际上是节点增加或删除、相关前提边和后果边增加或删除以及网络参数的改变。因此,概率攻击图的更新工作主要包括3 个步骤:①确定引起改变的因素;②计算其改变量;③依据改变量更新概率攻击图。需要说明的是,当概率攻击图的网络结构发生变化时,网络参数也随之变化,这里为了简化描述,省略了网络参数的更新描述。下面分别从网络拓扑改变、主机节点信息改变、防火墙规则改变这3 种情况来描述攻击图的局部更新过程。
1) 网络拓扑改变
当引起攻击图结构变化的因素是网络拓扑改变,即增加或删除一个主机节点时,需要确定该主机节点与其他节点的可达性关系,并计算可达性关系所产生的攻击图改变量。具体地,当增加一个主机节点时,解析该主机节点上的一个或多个脆弱性,在攻击图中增加与脆弱性相对应的动作节点,并基于可达性关系搜索动作节点的前置状态,使用前提边进行连接,若搜索不到,则从初始状态开始连接,同时增加新动作节点的后果边和后置状态;当删除一个主机节点时,解析该主机节点上的脆弱性,删除与脆弱性相对应的、失效的动作节点,并删除与失效动作节点相连接的所有边和后续节点。
2) 主机节点信息改变
当引起攻击图结构变化的因素是主机节点信息改变,即某主机的脆弱性信息改变、端口开放或关闭时,其更新过程与网络拓扑改变时相似。不同之处在于,当修复某主机的脆弱性时,在攻击图中应当删除失效的动作节点和后置状态节点。如果该动作节点的后置状态还存在其他父节点,则表明攻击者通过其他攻击行为也能够达到该状态,因此不删除其后置状态节点。
3) 防火墙规则改变
防火墙规则改变是指规则的增加和删除。当增加防火墙规则时,主机节点间的可达性关系可能会失效,由此攻击图内与规则相关的源主机节点和目的主机节点间的脆弱性关联关系也会失效;当删除防火墙规则时,主机节点间的可达性关系可能会增加,攻击图内与规则相关的主机节点间会产生新的脆弱性关联关系,其更新过程与网络拓扑改变时相似。
以网络拓扑改变为例,描述概率攻击图更新算法,如算法1 所示。
算法1概率攻击图更新算法
输入 ti−1时刻的概率攻击图PAG=(A,S,E),新增的主机节点host
输出ti时刻的概率攻击图PAG'=(A',S',E')
图3 概率攻击图更新示例
概率攻击图更新示例如图3 所示。其中,X轴和Y轴为空间方向,T轴为时间方向。动态概率攻击图的时间域为T=[t0,t3],t0时刻对应的是初始概率攻击图PAG0=(A0,S0,E0)。假设在t1=t0+Δt时刻主机host1中产生一个新的脆弱性,则攻击图中应该增加一个相对应的动作节点a5,同时增加节点a5的前提边、后置状态s3及后置边。用PAG1=(A1,S1,E1)表示由PAG0更新得到的概率攻击图,其更新操作可形式化描述为GC1:PAG0|→ PAG1,GC1={} 。类似地,假设在t2=t1+Δt时刻修复了主机host1中的一个脆弱性,同时新增了一个主机host2并产生一个新的脆弱性,则攻击图同时执行删除和增加更新操作。用PAG2=(A2,S2,E2)表示t2时刻更新得到的攻击图,更新操作可形式化描述为GC2:PAG1|→PAG2,GC2={
综上所述,概率攻击图更新操作分别是GC1={},GC2={
定义5攻击路径path。攻击路径是指由概率攻击图中的状态节点和动作节点按照一定的因果依赖关系排列而成的攻击序列,记为path(s0,g)={s0,a1,si,aj,…,g}。其中,{s0,si,…,g}表示攻击状态转移序列,{a1,aj,…,an}表示原子攻击行为序列。
概率攻击图是包含多条攻击路径的集合,即PAG={pathk(s0,g)}。其中,pathk(s0,g)表示从初始状态s0到终止状态g的编号为k的攻击路径。
报警来源于攻击且能够反映攻击,每一条IDS报警都反映了一个原子攻击的发生,利用概率攻击图作为模板,通过将报警与概率攻击图的动作节点进行映射,从而实现各孤立报警的关联,还原攻击者的攻击轨迹。依据动态概率攻击图,将攻击场景构建分为初建、重构和演化3 步。
4.1.1 报警聚类
目标网络在同一时间段内可能受到来自多个攻击者的入侵,这导致报警序列中包含了可能不止一个攻击者的入侵活动,如果不做处理而直接进行映射,则将导致攻击场景混乱。报警聚类旨在将隶属于同一攻击者的报警聚合到同一类簇中,以区分不同攻击者的入侵活动。
为了更好地说明,首先定义报警的相关概念。
定义6报警。报警是指原子攻击发生时被IDS观测到的事件,用O表示报警序列,O={oi|oi=
IDS 产生的报警存在一些重复报警,主要是由同一攻击源用同一种攻击方式对目的主机进行多次不同时间的攻击所造成的,有必要消除重复报警,将其简化为同一条报警。此外,同一攻击活动触发的报警,彼此在IP 地址分布上总是具有关联性,如前一攻击步骤的dstIP 可能就是下一攻击步骤的srcIP。依据这种IP 地址相关性,将同一攻击活动的报警聚合在一起,从而避免关联关系混乱。
定义7重复报警。如果两条报警oi和oj的
定义8IP 地址相关性。如果报警oi的地址无论是源IP 地址还是目的IP 地址,总有一个和oj的地址相同,且oi和oj在攻击步时Δt内,则认为oi和oj具有地址相关性。
定义9报警类簇。报警类簇是指将具有IP 地址相关性的报警按照其产生的时间顺序排列而成的报警序列,记为C={o1,o2,...,om},满足C⊂O。
基于IP地址相关性的报警聚类过程采用文献[18]所提方法,这里不再论述。若2 个报警间是IP 地址相关的,则划分到同一报警类簇中,从而将每个攻击者的报警区分开。
4.1.2 报警映射
报警映射是将报警oi映射到概率攻击图中的节点,称为观测节点,并判断观测节点oi的目的IP地址和类型是否与某动作节点ai的主机和漏洞信息相匹配,若匹配则映射成功,否则映射失败为空集。定义映射函数如下。
定义10报警映射函数。
映射失败的原因可能有以下几种:①存在误报警导致攻击ai没有发生,但却存在报警oi与之匹配;②存在漏报警使攻击路径中的某动作节点ai缺乏报警与之匹配;③概率攻击图的结构不完整。上述3 种情况都会导致报警映射失败。具体地,报警映射情景如图4 所示。图4 中,浅灰色圆圈表示映射成功的观测节点,深灰色圆圈表示映射失败的观测节点,实线表示攻击实施成功或状态转移成功,虚线表示攻击实施失败或状态转移失败。
图4 报警映射情景
图4(a)表示报警映射成功。观测节点oi和ok分别与动作节点ai和ak相匹配,表明原子攻击ai和ak实施成功,攻击状态转移成功,状态sx、sy和sz皆为True。
图4(b)表示误报引起的映射失败。通过报警映射得到攻击序列{sx,ai,s y,a k,sz}和{sx,a j,s y,a k,sz},然而由于oj是误报,攻击aj实际上并未发生,因此映射得到的攻击路径{sx,a j,s y,a k,sz}是错误或冗余的。
图4(c)表示漏报引起的映射失败。状态sx、sy和sz为True,表明存在原子攻击导致状态转移成功。然而由于漏报导致映射得到的攻击序列{sy,a k,sz}是不完整的、断裂的,从而无法确定攻击路径是{sx,ai,s y,a k,sz}还是{sx,a j,s y,a k,sz}。
图4(d)表示概率攻击图结构不完整引起的映射失败。图中存在观测节点ol但缺乏与之匹配的动作节点,故需更新攻击图。
可见,报警映射能够获得初步的攻击场景,但是由于误报、漏报问题,导致某些攻击片段存在冗余或者断裂,从而影响了对实际攻击目标和攻击路径的判断。因此,为了得到准确可信的攻击场景,需要对初步构建的攻击场景进行修正和重构,一方面通过衡量报警的置信水平,识别低置信度的、无效的报警证据,从而发现误报引起的冗余路径;另一方面计算各状态节点被入侵的概率,从候选攻击目标和攻击序列中推断最大可能的攻击目标和攻击序列。
攻击场景重构本质上是概率推理问题。在概率推理中,先验概率表示事件发生的概率,后验概率则表示当新的证据出现时变量发生的概率。那些值已经被确定的变量集合称为证据,而需要求解的变量集合称为假设,概率推理问题就是求解在给定证据变量E的条件下假设变量H的后验概率P(H|E)。当不确定假设集合H中某一个假设h∈H最佳时,最大后验估计认为具有最大后验概率(MAP,maximum a posteriori)的假设为最佳假设。即
4.2.1 报警证据识别
定义11报警置信度PO。PO 是指在观测到报警事件oi的情况下,能证明其对应的原子攻击ai发生的概率P(ai|oi),报警置信度也即动作节点ai的后验概率。
设IDS 对攻击ai的检测率和误报率分别为di和fi,检测率是指在攻击发生的情况下,IDS 产生报警的概率;误报率是指在攻击没有发生的情况下,IDS 却产生报警的概率,故存在P(oi|ai)=di,P(oi|¬ai)=fi,报警置信度P(ai|oi)为
其中,P(ai)为动作节点ai的先验概率,表示攻击ai发生的概率;P(¬ai)=1−P(ai)表示攻击ai未发生的概率。
在概率攻击图中,某节点vi的先验概率P(vi)可以通过下面2 种方法求解。
方法1通过求解边缘概率分布得到,已知节点的LCPT,便可获得节点的先验概率为
方法2通过父节点的先验概率以及节点间的转移概率求解得到。
动作节点ai的先验概率P(ai)为
状态节点si的先验概率P(si)为
通过上述2 种方法可以求得节点ai的先验概率P(ai),并进一步得到报警oi的置信度P(ai|oi)。
通过报警置信度能够衡量报警的置信水平,识别有效的报警证据。一方面,报警oi的置信度P(ai|oi)应当大于50%,否则,P(¬ai|oi)将大于50%,这表明在证据oi出现时,攻击未发生或攻击失败的概率大于50%,故报警oi为误报警;另一方面,攻击ai的后验概率P(ai|oi)应当大于其先验概率P(ai),这表明在报警证据oi出现时,攻击ai发生的可能性提高了;反之,当后验概率P(ai|oi)小于先验概率P(ai)时,则表明证据oi的出现反而降低了攻击ai发生的可能性,这与实际情况不符,因此认为报警oi为误报警。基于上述分析,可以得出以下结论。当且仅当ai和oi满足P(ai|oi) >50%和P(ai|oi)>P(ai)这2 个条件时,原子攻击所产生的报警为真实报警。
4.2.2 攻击意图推断
攻击意图推断是指已知目标状态节点集合G,在给定报警证据及其置信度PO=的情况下,计算并比较各目标状态节点被入侵的概率,从而获得具有最大后验概率MAP 的目标状态节点,即。
状态节点si与证据O并无直接的联系,然而证据O的出现会提高原子攻击发生的可能性,进而提高其后置状态存在的可能性。因此,状态节点si的后验概率与其父节点Pre(si)的后验概率有关。
以图3 中t1时刻的概率攻击图PAG1为例,分析在未观测到任何报警事件以及在观测到报警事件O={o1,o3}时,各节点的先验概率和后验概率的变化情况,如图5所示。
图5 带观测节点的概率攻击图
通过定性与定量分析可知以下3 点成立。
1) 在未观测到报警事件o1和o3时,攻击a2发生的概率大于攻击a1发生的概率,节点s3被入侵的概率大于节点s2被入侵的概率,攻击者的攻击意图为s3,攻击路径为path={s0,a2,s1,a5,s3}。
2) 在观测到报警事件o1和o3时,攻击a1和a3发生的概率提高了,其后验概率皆大于其先验概率,且后验概率皆大于50%,表明o1和o3是真实报警。
3) 报警o1和o3为真实有效报警,因此攻击者的攻击意图为s2,s2被入侵的概率提高到0.431,攻击路径为path={s0,a1,s1,a3,s2}。
算法2 首先采用广度优先算法计算各个节点的先验概率和后验概率,将不具有子节点的状态节点加入目标节点集G中;如果某目标状态节点对应的动作节点存在真实报警,则该目标状态为攻击意图;否则对目标状态节点的后验概率进行比较排序,具有最大后验概率gmax的目标节点即为攻击意图,该算法同时可以识别有效报警证据。
算法2攻击意图推断算法
输入候选攻击序列集合H={pathk(s0,G)},观测事件序列
输出节点先验概率vi.Pr 和后验概率vi.Po,攻击意图GMAP
复杂度分析。算法2 的复杂度与图广度搜索算法相同,为候选攻击序列集合中状态节点数、动作节点数以及有向边数之和,即O(num_S+num_A+num_E)。
4.2.3 最大概率攻击路径推断
最大概率攻击路径推断是计算攻击者发动攻击行为的整个可能性,从候选攻击序列集合中选择具有最大后验概率 MAP 的攻击路径,即。
在算法2 得到所有节点的先验概率P(vi)和后验概率P(vi|oi)的基础上,算法3 以攻击意图为起点,通过贪心反向查找具有最大后验概率的动作节点ai和状态节点si,即可得到最大概率攻击路径hMAP。如果当前节点为状态节点,则查找具有真实报警的前置动作节点并加入攻击路径hMAP中;而当出现漏报不存在报警时,则查找后验概率最大的动作节点并加入路径hMAP中;如果当前节点为动作节点,则将其所有的前置状态节点都加入路径hMAP中。
算法3最大概率攻击路径推断算法
输入攻击意图GMAP,节点先验概率vi.Pr 和后验概率vi.Po
输出hMAP=(s0→…si→…G)。
复杂度分析。算法3 的复杂度与算法2 相似,但由于已经确定了攻击意图,状态节点数、动作节点数相对算法2 减少了,且与有向边无关,故复杂度为O(num_S+num_A)。
通过上述报警映射、攻击意图推断和最大概率攻击路径计算,能够得到准确可信的攻击场景。然而由于云环境弹性、动态性的特点,其概率攻击图需要周期性地动态更新,攻击场景也应周期性地动态演化,从而保证攻击场景的完备性和新鲜性。
定义12动态攻击场景(DAS,dynamic attack scenario)。DAS 指在时间域T=[t0,tn]内随攻击步时Δt动态演化的攻击场景序列,可表示为
其中,二元组
攻击场景演化过程如图6 所示。由图6 可知,将第一个攻击周期Δt内的报警序列O1与t1时刻上的概率攻击图PAG1相映射,映射成功则得到t1时刻上的攻击场景AS1;同样将第二个Δt内的报警序列O2与t2时刻上的攻击图PAG2相映射,得到攻击场景AS2;以此类推,可得到t3时刻上的攻击场景AS3。由此可知,时间域T内动态演化的攻击场景序列为DAST={
本节首先介绍云平台实验环境以及此环境中的安全漏洞,构建该环境下的初始概率攻击图;然后,根据观测报警序列及其置信度推断出攻击者的攻击意图和最大概率攻击路径,并构建动态演化的攻击场景。
云平台实验环境如图7 所示。云平台中包括了4 个浪潮云服务器,搭建了Xen 虚拟化云系统,配置信息如表4 所示。
表4 云平台配置信息
图6 攻击场景演化过程
图7 云平台实验环境
云服务器PM1被分割成了4 个VM,分别运行网络控制器(NC,network control)、Nessus 漏洞扫描器、MulVAL 攻击图生成工具以及IDS;云服务器PM2被分割成若干个VM,作为云租户所用VM,VM 间由可编程的虚拟交换机(OVS,open vSwitch)相连接。OVS 仅完成数据转发功能,而路由控制则由PM1中NC 来完成;服务器PM3和PM4分别运行Hadoop 和Spark 分布式计算平台。在DMZ 区域部署了网站服务器(WS,Web server)、文件服务器(FS,file server)等。这里假设PM3只允许VM1访问其计算服务,而PM4只允许VM2访问其服务。
5.2.1 概率攻击图的结构和参数
利用Nessus 扫描器对云平台中各主机进行漏洞扫描,获得的各漏洞信息如表5 所示。其中,Xen系统的漏洞CVE-2017-2620 为ti时刻新发现的漏洞。将网络连通性、网络配置及漏洞信息等输入MulVAL 工具,从而生成初始概率攻击图PAG0的网络结构,如图8 所示。
从图8 可知,存在6 种可能的攻击路径,其中,攻击者利用WS 上的溢出漏洞CVE-2010-2227 获取WS 的管理员权限,进而通过NFS 接口在FS上写入木马程序,该木马程序被不小心执行,从而让攻击者控制了FS。当然攻击者也可以直接利用FS 上的溢出漏洞CVE-2017-7895 获取FS 的权限。接着,VM2从FS 上下载了带木马的文件从而被控制,攻击者操控 VM2利用漏洞CVE-2018-8024 对Spark 服务器发动攻击。同样,攻击者操控FS 对虚拟机VM1发动攻击,并进一步利用漏洞CVE-2016-3086 对Hadoop 平台展开攻击,窃取其重要信息或文件等。
根据图8 中概率攻击图的结构和表5 中CASS属性(AV/AC/Au)能够确定概率攻击图PAG0中有向边的权值,如表6 所示。表6 中有向边(s8,a12)和(a12,s9)为ti时刻发现新漏洞时新增的有向边。依据网络结构和网络参数,构建完整的初始概率攻击图PAG0。
图8 初始概率攻击图的结构
表5 云平台漏洞信息
表6 有向边的权值
5.2.2 攻击场景构建过程及分析
在初始概率攻击图PAG0的基础上,依据攻击步时Δt内的更新操作情况,利用算法1 生成概率攻击图序列。依据IDS 观测到的报警序列O,利用算法2 和算法3 即可推断出攻击意图gMAP和最大概率攻击路径hMAP,从而构建出攻击场景,如表7 所示。
概率攻击图的动态更新及攻击场景的动态演化过程如图9 所示。为了不失一般性,在t0时刻假设没有观测到任何报警事件O0={null},这相当于初始概率攻击图PAG0。图9(a)直观地展示了攻击者最可能的攻击意图和攻击路径。在该情况下,状态节点s5的概率是0.89,状态节点s8的概率是0.27,因此攻击者的攻击意图为s5,攻击目标是运行Hadoop 的主机PM3,最大概率攻击路径则是{s0,a7,s3,a4,s4,a5,s5}。
在t1时刻更新概率攻击图,假设GC1=∅,即攻击图没有任何更新操作,IDS 在t1时刻观测到报警事件O1={o1,o2,o3},其对应的置信度为PO={0.81,0.6,0.38}。在此情况下可知,报警o3为误报警,攻击a3实际上并未发生,其发生的概率应是0.27。候选攻击序列包括{s0,a1,s1,a2,s2,a3,s3,a8,s6,a9,s7,a10,s8}和{s0,a1,s1,a2,s2,a3,s3,a4,s4,a5,s5},经计算知状态节点s5的概率是0.92,状态节点s8的概率是0.35,因此攻击者的攻击意图仍为s5,最大概率攻击路径为{s0,a1,s1,a2,s2,a3,s3,a4,s4,a5,s5},攻击场景如图9(b)所示。
在t2时刻修复了PM3中的漏洞,则在概率攻击图中应删除对应的失效动作节点a5及其后置状态节点s5以及相关边,即执行更新图操作GC2={
在t3时刻发现 Xen 系统中存在新的漏洞CVE-2017-2620,则在概率攻击图中需要增加与漏洞相对应的动作节点a12,并基于可达性关系搜索该原子攻击的前置状态。由于虚拟机VM2能够访问Xen系统的虚拟CPU、虚拟内存等资源,可能发动DoS或漏洞利用攻击,因此节点a12的前提状态为VM2的状态s7,通过前提边进行连接,同时增加该动作节点的后置状态s9和后果边,更新操作为GC3={I,a12,s9}。同样,在t3时刻观测到报警事件o12,其对应的置信度为0.54,则可判断出t3时刻的攻击意图为s9,最大概率攻击路径为{s0,a1,s1,a11,s7,a10,s8,a11,s9},如图9(d)所示。此时的攻击场景包括两条成功的攻击路径和一次失败的攻击尝试,展现了攻击者的攻击渗透过程。
表7 攻击场景构建过程
图9 概率攻击图动态更新及攻击场景动态演化过程
5.2.3 实验比较分析
文献[10]和文献[13]的工作中没有考虑报警观测事件推导到攻击发生的不确定性,观测事件与攻击发生是一一对应的,即报警置信度PO 的取值全为1,从而无法识别真实有效的报警。文献[11]的工作中没有解决误报、漏报问题对攻击场景造成的影响。上述方法均没有考虑攻击场景的动态演化,无法保证攻击场景的完备性和新鲜性。表8 展示了现有基于概率攻击图的报警关联方法在各方面的对比。从表8 可以看出,本文方法支持有效报警识别和动态演化,优于其他3 种方法。
表8 基于概率攻击图的报警关联方法对比
实验验证了本文方法的有效性。此外,本文方法具有以下优势。
1) 通过将报警事件与概率攻击图进行映射匹配,从定性与定量分析2 个方面构建了攻击场景,不仅能够解决误报、漏报问题,识别有效报警证据,还能够推断出攻击者的攻击意图和实际攻击路径,从而保证了攻击场景的准确性。
2) 动态概率攻击图是随时间推移而动态变化的,依据动态概率攻击图,将攻击场景随之动态演化,能够适应云计算环境弹性、动态性的特点,保证了攻击场景的完备性和新鲜性。
3) 全时域内的动态攻击场景完整地展现了攻击者的逐步渗透和权限提升过程,方便管理员从整体上把握云环境的安全态势,确定攻击演变过程中危害较大的阶段或者关键节点,进而采取切实有效的措施来抑制攻击的发生。
面向云环境的攻击场景重构技术逐渐成为网络安全防御领域的研究热点,旨在再现攻击者的逐步渗透过程和攻击活动全貌,是应对复杂多步攻击的重要手段。本文在概率攻击图的基础上,立足于攻击步骤间的因果依赖关系和概率推理关系,考虑其时空动态特性,创建了动态概率攻击图模型,设计了概率攻击图更新算法,实现了概率攻击图的周期性或触发性更新,解决了传统的静态不变的概率攻击图无法适应弹性、动态性的云环境问题;利用概率攻击图作为模板,将异常检测系统观测到的报警与概率攻击图进行映射匹配,能够获得初步的攻击场景;针对误报、漏报等现象导致攻击场景存在错误、歧义、断裂等不确定性问题,设计了攻击意图推断算法和最大概率攻击路径推断算法,利用最大后验估计原理对候选攻击序列进行定量推理,重构出准确可信的攻击场景;同时将攻击场景随动态概率攻击图动态演化,保证了攻击场景的完备性和新鲜性。通过攻击场景的初建、重构及演化,实现了云环境复杂多步攻击的及时发现。实验结果表明,本文方法能够有效地推断出攻击意图和计算攻击路径,构建完整的、动态演化的攻击场景,进而帮助云安全管理员从整体上把握云环境的安全态势,为构建可监管可追责的云环境提供了一定的依据和参考。