防御决策是协同防御的重要过程, 该过程通过分析攻击与攻击间的关系, 构造协同防御所需的防御方案.攻击图能够描述攻击与攻击间的关系, 分析攻击的发生和发展.因此, 攻击图常作为防御决策分析的重要工具.然而, 传统攻击图更多关注已知漏洞, 不关注未知漏洞, 这导致攻击图语义表达的缺失, 不能满足当前的安全需求.使用未知漏洞发起的攻击, 其攻击路径相较于传统攻击图是隐藏的, 因此无法基于传统攻击图分析.2010年6月首次被检出的震网病毒(stuxnet)[1]使用了4个微软的0-day漏洞(若无特殊说明, 不区分未知漏洞和0-day漏洞), 对网络和现实世界产生了巨大的影响.无法描述的未知漏洞使得基于传统攻击图的决策分析过程的有效性大打折扣.
本文通过构造混合路径攻击图(mixed pathattack graph, MPAG)模型, 在同一攻击图下描述由已知漏洞产生的显式攻击路径和由未知漏洞产生的隐式攻击路径, 扩展攻击图的语义表达.同时, 在MPAG基础上, 结合多目标优化理论, 给出一种防御方案自动生成方法.
1 相关工作 1.1 攻击图生成现有针对攻击图的研究更多关注如何改进生成算法的效率[2-4], 并将其应用于大规模网络.然而, 结合防御决策的研究背景, 现有攻击图研究只关注已知漏洞, 很少关注未知漏洞.不考虑未知漏洞的攻击图本质上是残缺的攻击图, 针对残缺攻击图的分析自然不能得到最好的结果, 因此研究未知漏洞, 并将其加入攻击图进行分析具有重要价值[5].
对未知漏洞的研究包括漏洞建模和未知漏洞利用规则建模.已有对未知漏洞的研究多以已知漏洞的特性为基础, 未知漏洞和已知漏洞之间存在着必然的联系, 如漏洞之间存在的共有属性(诱因、效果和发生位置等)[6].Mcqueen等[7]通过分析已有漏洞库中漏洞的生命周期, 预测某一个特定时间段未知漏洞可能出现的数量.Zhang等[8]利用数据挖掘的方法, 通过对NVD漏洞库中漏洞历史数据的分析, 预测特定应用的下一个未知漏洞的出现时间.目前对0-day利用规则的研究相对较少, Ingols等[5, 9]将0-day漏洞利用规则分为远程漏洞利用和本地漏洞利用, 并给出了每类的利用前件和后件.Wang等[9-10]将远程0-day的利用前件定义为3个:目的主机上的服务、源主机和目的主机上的连接关系以及与攻击者已经获取的源主机上的权限;将本地0-day的利用前件定义为2个:目的主机上的服务和目的主机上的权限;同时给出了0-day漏洞利用的后件, 即权限提升.
1.2 防御方案生成方法按照防御方案生成过程中考虑的指标, 将防御方案生成方法分为3类:考虑攻击目标状态的防御方案生成方法[11-12]、考虑单个指标的防御方案生成方法[13]以及考虑多个指标的防御方案生成方法[14-15].
考虑攻击目标状态的防御方案生成方法, 通常从攻击者的角度出发, 考虑达成攻击目标的攻击集, 随后从中选取需要应对的攻击集, 找到攻击集对应的防御集, 从而形成防御方案对应的任务集.闫峰[16]称攻击集为关键攻击集, 并给出了关键攻击集的概念, 即当且仅当从现有攻击集合中删除关键攻击集时, 攻击者无法达到攻击目标;若不存在关键攻击集的子集仍为关键攻击集, 则此关键攻击集为最小关键攻击集.该研究通过找到最小关键攻击集的弥补集, 从而构成防御方案的任务集.Noel等[11-12]提出对初始条件进行防御即可阻止攻击者从初始状态达到目标状态, 并基于此给出了最优初始条件修复集.从攻击集的角度考虑防御方案生成的方法, 能够迅速找到防御方案对应的防御任务集, 并有利于缩短攻防时间差, 然而这种方法不考虑防御成本, 实际操作时不一定可行, 如可能受成本条件限制.
考虑单个指标的防御方案生成方法, 通常从防御任务成本或网络风险最低的角度出发, 通过选择具有最优防御成本或最低网络风险的防御任务集形成防御方案.考虑到不同漏洞修复需要的代价不同, 吴金宇等[17]基于网络流理论,以防御成本为指标,构建具有最小防御成本的防御方案.在假设所有漏洞都已存在相应防御措施的前提下, Khosravi-Farmad等[18]通过贝叶斯网络构建漏洞间连接关系, 并找到防御成本最小的防御措施集形成防御方案.陈小军等[19]给出最优安全防护策略问题定义, 指出寻找最优安全防护策略问题,即寻找一组防御措施, 使得在给定预算的前提下, 防御措施使得攻击者从初始状态达到目标状态的概率最小, 即目标状态风险最小, 并将寻找最优安全防护策略问题等价于背包问题, 使用贪心算法寻找最优安全防护策略.只考虑防御成本最低或网络风险最小的防御方案生成方法都存在片面性, 因为降低成本带来的损失可能是无法承受的,同时,由于风险小带来的防御成本也可能是无法承受的.
考虑多个指标的防御方案生成方法, 通常包括攻击损失、网络风险和防御成本等, 使用的方法包括单目标优化算法和多目标优化算法.Wang等[20]基于隐式马尔科夫模型计算系统状态的变迁概率, 并在此基础上计算攻击损失和防御成本的平衡点, 通过给攻击损失和防御成本赋予不同的权重, 将多目标优化问题转化为单目标优化问题, 并使用蚁群算法找到最终的防御措施集.Dewri等[15]首次对基于多目标优化的防御方案生成问题进行了形式化, 将问题定义为限制防御成本不高于阈值的情况下, 找到造成最小损失的防御措施集的过程, 并构建了一个基于攻击树的风险评估模型.然而, 文中基于静态攻击图进行的防御措施部署和风险计算, 所得到的最优防御措施集不适应于网络的动态变化.基于文献[15]的不足之处, Poolsappasit等[21]提出基于贝叶斯网络的动态风险评估方法, 将网络中发生的安全事件纳入风险计算过程中, 构成动态风险评估模型, 并对防御成本和安全产出(威胁不发生概率下的收益和威胁发生概率下的损失差值)这2个指标进行考量;但在计算安全产出时, 使用了威胁发生的损失和威胁不发生的收益这2个不好获取的经验值, 这对于防御措施集的选择具有一定影响, 同时将当前网络中发生的安全事件加入到攻击图中时, 没有考虑安全事件的不确定性, 简单的将事件影响的属性概率置为1, 这将影响最终选定的防御措施集.
现有防御方案生成算法大多只考虑任务集生成, 不考虑任务集间的关系, 然而, 存在矛盾关系的任务对是无法形成防御方案的;同时在方案生成过程中均没有考虑未知漏洞的存在, 使得生成的防御方案具有片面性.综上所述, 防御方案生成过程应该考虑任务间的关系, 生成方法应该能够适应网络的动态变化, 且需要将未知漏洞作为考虑因素.
2 防御方案自动生成 2.1 MPAG相关定义定义1 MPAG可表示为
$ {\varepsilon _{{\rm{MPAG}}}} = (S,{N_{{\rm{OE}}}},E,{P_{{\rm{ex}}}},{P_{{\rm{suc}}}},{P_{{\rm{oe}}}},R). $ |
式中:S为攻击图的属性节点, NOE为观察事件节点, E为攻击图的利用动作节点, Pex、Psuc和Poe分别为漏洞的利用概率、利用成功率和观察事件概率, R为属性节点和利用动作节点之间的关系.如此定义的MPAG是一个贝叶斯网络.
定义2 观察事件为由安全设备捕获的安全事件, 即已发生的安全事件.
在MPAG中, 不是所有的属性节点都会参与到属性概率计算中, 因此将属性节点进一步分为事实属性节点和概率属性节点.由于事实属性节点不影响整个属性节点的概率计算, 可将事实属性节点和概率属性节点合并为联合属性节点.
定义3 事实属性节点:若si为由网络中第i个事实形成的节点, S表示所有事实, 则有si∈S, 且所有事实si的发生概率P(si)=1.
定义4 概率属性节点:若sj为由利用规则推导出的属性节点, 发生概率受攻击图中其他节点概率变化的影响, 且P(sj)不恒等于1.
定义5 联合属性节点为由事实属性节点和概率属性节点合并得到的联合节点.
一条漏洞利用规则属性合并后, 联合属性节点的数量和规则内概率属性节点数量一致;多条漏洞利用规则属性合并后, 同样按照规则内概率属性节点数量合并, 合并后不改变规则所表示属性节点和利用动作节点之间的连接关系.
下面分别举例说明非0-day和0-day漏洞利用规则属性合并方法.
1) 非0-day漏洞属性合并.
如图 1所示为由4条漏洞利用规则(包括3条远程漏洞利用规则和1条本地漏洞利用规则)生成的原始攻击图及其对应的联合属性攻击图.图 1(a)中, 节点hs、hv、hp、hc分别表示主机上服务、主机上漏洞、主机权限和主机间连接关系, 其中hs、hv和hc是事实属性节点, hp是概率属性节点.图 1(b)中, 节点Local_1的父节点即为由同一漏洞利用规则合并产生的联合属性节点;节点Remote_2和Remote_3的父节点为由多条漏洞利用规则合并产生的联合属性节点.
2) 0-day漏洞属性合并.
假定同一主机上0-day漏洞数量多于1个, 独立分析每个0-day漏洞, 将会产生大量包含该主机0-day漏洞的攻击路径.目前尚无法针对特定0-day漏洞进行防御部署, 将这些攻击路径加入到攻击图的构造过程中, 所产生的攻击图不具备分析意义.因此, 将同一主机上0-day漏洞的利用规则属性以及利用动作进行合并.
如图 2所示为由远程提权类0-day漏洞利用规则构成的攻击图, 且属性节点已经合并, 其中, pi和qi分别表示属性节点到动作节点以及动作节点到属性节点的转换概率.如图 3所示, 将0-day利用规则的利用动作进行合并, 得到远程提权类0-day漏洞在攻击图中的攻击路径, 其中, 合并之后的属性节点Ua和Ub之间存在一条攻击路径, 表示攻击者基于属性Ua利用特定主机上远程提权类0-day漏洞达到状态Ub.这样合并即符合攻击图的物理含义, 又有利于后续分析, .
MPAG节点间存在2种关系, 即属性节点间的“与”关系和利用节点间的“或”关系.属性节点间的“与”关系表示:存在“与”关系的属性节点及其利用节点, 以及利用节点的后续属性节点之间构成一条利用规则, 如图 4(a)所示, 表示属性节点A和B是利用节点C的前件,节点D是利用节点C的后件, 节点A、B、C和节点D构成一条规则.利用节点间的“或”关系表示多条利用规则, 且规则的后件一样, 如图 4(b)所示.
当MPAG中某节点的父节点间是“与”关系时, 通过下式计算该节点的条件概率分布[21]:
$ \begin{array}{l} P\left( {{N_j}\left| {pa\left( {{N_j}} \right)} \right.} \right) = \\ \;\;\;\;\left\{ \begin{array}{l} 0,\;\exists {N_i} \in f\left( {{N_j}} \right)\left| {{N_i}} \right. = 0;\\ P\left( {\bigcap\limits_{{N_i} = 1} {{e_i}} } \right) = \prod\limits_{{N_i} = 1} {P\left( {{e_i}} \right),其他.} \end{array} \right. \end{array} $ | (1) |
当MPAG中某节点的父节点间是“或”关系时, 通过下式计算该节点的条件概率分布[21]:
$ \begin{array}{l} P\left( {{N_j}\left| {pa\left( {{N_j}} \right)} \right.} \right) = \\ \;\;\;\;\left\{ \begin{array}{l} 0,\;\forall {N_i} \in f\left( {{N_j}} \right)\left| {{N_i}} \right. = 0;\\ P\left( {\bigcap\limits_{{N_i} = 1} {{e_i}} } \right) = 1 - \prod\limits_{{N_i} = 1} {\left( {1 - P\left( {{e_i}} \right)} \right),其他.} \end{array} \right. \end{array} $ | (2) |
式中:Nj表示MPAG中的属性节点或利用动作节点, f(Nj)表示Nj的父节点集, ei表示节点之间的转换概率Pex或Psuc.
2.3 漏洞分类和利用规则形式化漏洞分类研究多限定目标或限定场景[22].Ou等[23]从利用范围和利用效果两方面对漏洞进行的分类, 最符合本文的研究场景.本文从3个维度对漏洞进行分类:基于源主机和目的主机之间的关系(利用范围), 将漏洞分为本地漏洞和远程漏洞;根据漏洞是否已知, 将漏洞分为已知漏洞和未知漏洞;参考CVE漏洞库[24], 基于利用行为产生的效果, 将漏洞分为信息泄露、权限提升和拒绝服务.
结合漏洞分类, 给出漏洞利用规则的形式化描述.远程漏洞利用规则Rrule形式化描述如下:
$ \left. \begin{array}{l} {R_{{\rm{rule}}}} = \left( {{S_{{\rm{rpre}}}},{S_{{\rm{rpost}}}}} \right),\\ {S_{{\rm{rpre}}}} = \left( {{s_{{\rm{hs}}}},{s_{{\rm{hv}}}},{s_{{\rm{hc}}}},{s_{{\rm{hp}}}},{s_{{\rm{ex}}}},{E_{\rm{r}}}} \right),\\ {E_{\rm{r}}} = {e_{{\rm{zr}}}} \cup {e_{{\rm{kr}}}},\\ {e_{{\rm{zr}}}} = {e_{{\rm{zrpe}}}} \cup {e_{{\rm{zrddos}}}} \cup {e_{{\rm{zrfile}}}} \cup {e_{{\rm{zrex}}}},\\ {e_{{\rm{kr}}}} = {e_{{\rm{krpe}}}} \cup {e_{{\rm{krddos}}}} \cup {e_{{\rm{krfile}}}} \cup {e_{{\rm{krex}}}},\\ {S_{{\rm{rpost}}}} = {s_{{\rm{hp}}}} \cup {s_{{\rm{hf}}}} \cup {s_{\rm{s}}} \cup {s_{{\rm{ex}}}}. \end{array} \right\} $ | (3) |
式中:Srpre即远程漏洞利用规则的前件, 包括主机服务shs、主机连接shc、主机权限shp、主机漏洞shv、其他扩展特性sex以及远程漏洞利用动作Er, 其中shs、shc、shp、shv为远程漏洞利用的通用前件;Srpost为规则后件, 包括主机权限shp、主机文件状态shf、主机服务状态ss以及扩展利用效果sex.远程漏洞利用动作Er包括已知远程漏洞利用动作ekr和未知远程漏洞利用动作ezr, 且ekr包含4种利用动作:远程提权ekrpe、远程DDoS ekrddos、远程信息泄露ekrfile和远程扩展利用动作ekrex;ezr包含4种利用动作:远程提权ezrpe、远程DDoS ezrddos、远程信息泄露ezrfile和远程扩展利用动作ezrex.
对于本地漏洞利用规则, 其形式化如下所示:
$ \left. \begin{array}{l} {L_{{\rm{rule}}}} = \left( {{S_{{\rm{lpre}}}},{S_{{\rm{lpost}}}}} \right),\\ {S_{{\rm{lpre}}}} = \left( {{s_{{\rm{hs}}}},{s_{{\rm{hv}}}},{s_{{\rm{hc}}}},{s_{{\rm{hp}}}},{s_{{\rm{ex}}}},{E_{\rm{l}}}} \right),\\ {E_{\rm{l}}} = {e_{{\rm{zl}}}} \cup {e_{{\rm{kl}}}},\\ {e_{{\rm{zl}}}} = {e_{{\rm{zlpe}}}} \cup {e_{{\rm{zlddos}}}} \cup {e_{{\rm{zlfint}}}} \cup {e_{{\rm{zlex}}}},\\ {e_{{\rm{kl}}}} = {e_{{\rm{klpe}}}} \cup {e_{{\rm{klddos}}}} \cup {e_{{\rm{klfint}}}} \cup {e_{{\rm{klex}}}},\\ {S_{{\rm{lpost}}}} = {s_{{\rm{hp}}}} \cup {s_{{\rm{hf}}}} \cup {s_{\rm{s}}} \cup {s_{{\rm{ex}}}}. \end{array} \right\} $ | (4) |
本地漏洞利用规则的形式化描述和远程漏洞利用规则基本一致, 不再详述.对比远程漏洞利用规则和本地漏洞利用规则的形式化描述可得, 0-day漏洞分为6类:远程提权、远程DDoS、远程信息泄露、本地提权、本地DDoS和本地信息泄露, 且可以看出远程漏洞利用规则前件多了主机间连接关系shc, 这是两者间的重要区别.
2.4 MPAG生成算法MPAG生成算法以当前网络事实、目标状态以及漏洞利用规则实例为输入, 通过反向深度优先搜索(backward deepth first search, BDFS)形成原始MPAG, 与文献[23]使用的XSB推理算法思想一致, XSB推理算法的时间复杂度为O(k3), 其中k为主机数量, 是目前攻击图生成算法中时间复杂度较好的算法(由于不同攻击图考虑因素不一样, 无法直接进行对比).本文算法时间复杂度为O(M3N), 其中M为攻击图中属性节点数量, N为漏洞利用规则数量.
MAPG生成算法伪代码如下.
ALGORITHM原始MPAG生成算法
INPUT:主机节点状态事实SET(包括初始主机信息、服务信息hs、连接信息hc、漏洞信息hv和权限信息hp)、漏洞利用规则R以及目标节点状态T.
OUTPUT:原始MPAG, ΓAZAG
PROCEDURE generateMPAG()
Initialize SET//初始化网络状态事实
Initialize R//初始化攻击规则
Initialize S//初始化目标节点
nodeStack PUSH S//节点进栈
WHILE nodeStack≠∅ DO
NODE = nodeStack.getStackFront()
IF NODE∈SET//判断节点是否在状态事实列表中
ΓAZAG←NODE//将节点加入到MPAG
ΓAZAG←tempMPAG
nodeStack POP NODE
END IF
ELSE
Search R and find {ri|ri ∈ R, i ∈ [1, n]} deduce NODE//找到一条符合的利用规则
nodeStack POP NODE
tempMPAG←NODE
FOR i=1, n
nodeStack PUSH prei(NODE) //将能推出当前状态的规则ri的谓词节点进栈
tempMPAG←prei(NODE) //将能推出当前状态的所有谓词节点加入到临时MPAG
IF tempMPAG cicled
tempMPAG
nodeStack POP prei(NODE)
END IF
END FOR
END ELSE
END WHILE
2.5 0-day漏洞利用概率计算由于无法获取特定0-day漏洞的具体情况, 计算特定0-day漏洞的利用概率非常困难.若通过计算给出某一类0-day漏洞利用概率的统计值, 则可分析包含0-day的隐路径.MPAG是有向无环图, 符合贝叶斯网络的特性, 因此可贝叶斯网络计算MPAG中的节点风险.
定义0-day漏洞利用概率Pve为0-day漏洞的发现率rvr和0-day漏洞平均利用难度Ev的乘积:
$ {P_{{\rm{ve}}}} = {r_{{\rm{vr}}}} \cdot {E_{\rm{v}}}. $ | (5) |
当前研究大多通过CVE漏洞库给出的3个指标:攻击复杂度(access complexity, AC)、攻击向量(access vector, AV)和身份认证(authentication, AU)计算漏洞利用概率[24].当漏洞为已知漏洞时, 可认为漏洞发现率rvr=1, 则式(5) 给出的漏洞利用概率计算公式与当前已知漏洞计算方法相符.
1)0-day漏洞发现率rvr.
Alhazmi等[25]基于已有漏洞的分析, 给出软件漏洞积累数量变化的3个阶段:第一阶段是从软件开发完成到被人熟悉之前, 第二阶段是软件被大部分人熟悉并使用, 第三阶段是软件已经相对比较成熟, 如图 5所示.同时, 文献[25]指出漏洞的发现速率dy/dt和已发现漏洞数量y以及漏洞总数量B相关, 并给出:
$ \frac{{{\rm{d}}y}}{{{\rm{d}}t}} = Ay\left( {B - y} \right) \Rightarrow y = f\left( t \right) = \frac{B}{{BC{e^{ - ABt}} + 1}}. $ | (6) |
式中:A、B和C为待拟合的参数, t为距离软件发布的时间.不同软件会拟合出不同参数, Alhazmi等[25]通过实验证明了该模型的有效性.
本文基于文献[25]中的漏洞积累数量和时间的关系模型f(t), 预测软件特定时间区间内指定类型0-day漏洞的发现率:
$ {r_{{\rm{vr}}}} = \frac{{\left( {f\left( {{t_i}} \right) - f\left( {{t_j}} \right)} \right)}}{{f\left( {{t_i}} \right)}} \cdot \frac{{{w_{{\rm{vuln}}}}}}{{{w_{{\rm{tol}}}}}}. $ | (7) |
式中:[tj, ti]表示预测时间区间.不同类型0-day漏洞发现率不同, 在计算0-day漏洞的发现率时, 要针对具体类型.wvuln和wtol分别表示已发现的指定类型漏洞的数量和已发现漏洞总和, 通过wvuln/wtol计算不同类型0-day漏洞所占比例, 这2个值可通过CVE漏洞库得到.
2)0-day漏洞平均利用难度E(xv).
不同漏洞的利用难度不同, 按照CVSS(common vulnerability scoring system)的3个打分指标:AC、AV和AU, 将不同漏洞的利用难度分为27种[24], 其中远程漏洞(本地网络和非本地网络)包括18种, 本地漏洞包括9种.本文通过下式计算某类0-day漏洞利用难度期望E(xv), 即平均利用难度:
$ E\left( {{x_j}} \right) = \sum\limits_{i = 1}^n {\frac{{{m_i}{d_i}}}{{{m_{{\rm{total}}}}}}} ,j \in \left[ {1,6} \right],j \in {\bf{N}}. $ | (8) |
式中:j为特定类型漏洞的标号.当j∈[1,3]时, E(xj)表示远程提权漏洞、远程DDoS漏洞以及远程信息泄露漏洞的平均利用难度;当j∈[4, 6]时, E(xj)表示本地提权漏洞、本地DDoS漏洞以及本地信息泄露漏洞的平均利用难度.由于远程类漏洞有18种利用难度, 本地漏洞有9种, 当j∈[1,3]时, n=18, 当j∈[4, 6]时, n=9.mi和mtotal分别表示某类利用难度漏洞的数量以及远程类或者本地类漏洞总数量;di为漏洞利用难度.
2.6 防御任务优选问题建模防御任务优选过程是防御方案生成的主要过程, 优选的防御任务子集必须同时满足防御成本约束和网络风险约束, 即考虑降低防御成本, 且不能导致风险过高.这显然是2个相互冲突的指标.极端情况下, 通过防御任务部署, 移除网络内所有漏洞, 则网络风险将会极小, 然而这种情况可能会导致防御成本过高, 使得防御方无法接受;相反地, 若防御任务的总成本过低, 则可能导致网络风险过大, 使得不满足防御方的安全需求.因此, 防御任务优选问题是一个防御成本和网络风险的多目标优化问题[26], 对该问题建模过程如下.
通过攻防关联知识库, 获取MPAG中漏洞对应的防御措施集, 进而可得到措施集对应的防御任务集, 设T={task1, task2, …, taski, …, taskn}为防御任务集, 由防御任务集T可构成2n种不同的防御方案.M=(m1, m2, …, mi, …, mn), 其中, mi取0或1, 当mi=1时, 表示第i个任务被选取, 否则表示未被选取, 则M可表示防御方案包含的防御任务集.
设防御任务taski的成本函数为C(taski), 则所选取的防御任务防御成本之和可表示为
$ f\left( \mathit{\boldsymbol{M}} \right) = \sum\limits_{i = 1}^n {\left( {C\left( {{\rm{tas}}{{\rm{k}}_i}} \right) \cdot {m_i}} \right)} . $ | (9) |
设网络风险函数为g(M), 表示一组防御任务部署后通过计算得到的网络风险值.
防御任务优选问题是一个具有2个目标函数, n个决策变量的多目标优化问题:
$ \left. \begin{array}{l} \min y = F\left( \mathit{\boldsymbol{M}} \right) = \left( {f\left( \mathit{\boldsymbol{M}} \right),g\left( \mathit{\boldsymbol{M}} \right)} \right),\\ {\rm{s}}{\rm{.t}}{\rm{.}}\;\;\;\;\;\;\;f\left( \mathit{\boldsymbol{M}} \right) \le {C_{{\rm{cost}}}},\\ \;\;\;\;\;\;\;\;\;\;\;g\left( \mathit{\boldsymbol{M}} \right) \le {R_{{\rm{risk}}}},\\ \;\;\;\;\;\;\;\;\;\;\;y \in k\left( \mathit{\boldsymbol{M}} \right),\\ \;\;\;\;\;\;\;\;\;\;\;\mathit{\boldsymbol{M = }}\left( {{m_1},{m_2}, \cdots ,{m_i}, \cdots {m_n}} \right) \in D,\\ \;\;\;\;\;\;\;\;\;\;\;y = \left( {f\left( \mathit{\boldsymbol{M}} \right),g\left( \mathit{\boldsymbol{M}} \right)} \right) \in T. \end{array} \right\} $ | (10) |
式中:f(M)和g(M)为目标函数;M为决策变量;f(M)≤Ccost和g(M)≤Rrisk分别表示成本约束和风险约束;k(M)为防御任务集约束函数, 表示通过分析任务间前件约束和后件约束得到的关系约束;D为决策空间;y=(f(M), g(M))为目标函数;T为目标空间.
下面给出防御任务优选问题相关概念.
定义6 可行防御方案.若M对应的防御任务集满足成本约束、风险约束和任务间约束, 则M对应的防御任务集构成的防御方案为可行防御方案S.所有可行防御方案构成的集合记为Vm.
定义7 pareto占优的防御方案.若M1和M2可构成可行防御方案S1和S2, 当且仅当式(11) 成立时, M1 pareto占优于M2, 且S1相较于S2是pareto占优, 或称S1支配S2, 记为
$ \begin{array}{l} \left( {f\left( {{\mathit{\boldsymbol{M}}_1}} \right) < f\left( {{\mathit{\boldsymbol{M}}_2}} \right) \wedge g\left( {{\mathit{\boldsymbol{M}}_1}} \right) < g\left( {{\mathit{\boldsymbol{M}}_2}} \right)} \right) \vee \\ \left( {f\left( {{\mathit{\boldsymbol{M}}_1}} \right) \le f\left( {{\mathit{\boldsymbol{M}}_2}} \right) \wedge g\left( {{\mathit{\boldsymbol{M}}_1}} \right) < g\left( {{\mathit{\boldsymbol{M}}_2}} \right)} \right) \vee \\ \left( {f\left( {{\mathit{\boldsymbol{M}}_1}} \right) < f\left( {{\mathit{\boldsymbol{M}}_2}} \right) \wedge g\left( {{\mathit{\boldsymbol{M}}_1}} \right) \le g\left( {{\mathit{\boldsymbol{M}}_2}} \right)} \right). \end{array} $ | (11) |
定义8 防御方案pareto最优解.可行防御方案S是防御方案pareto最优解, 当且仅当S满足式(10) 时,
$ \neg \exists {S_x} \in {V_m}:{S_x} \prec S. $ | (12) |
由pareto最优解集Pm对应的目标函数值组成的集合Pf称为防御方案pareto前端:
$ {P_{\rm{f}}} = \left\{ {F\left( {{\mathit{\boldsymbol{M}}_x}} \right) = \left( {f\left( {{\mathit{\boldsymbol{M}}_x}} \right) < g\left( {{\mathit{\boldsymbol{M}}_x}} \right)} \right)\left| {{S_x} \in {P_{\rm{m}}}} \right.} \right\}. $ | (13) |
防御任务优选过程即求解防御方案pareto前端, 并从前端中优选待执行的防御任务集的过程.
定义9 防御任务覆盖属性为受防御任务影响的MPAG联合属性.
定义10 防御任务覆盖路径为包含防御任务覆盖属性的MPAG利用路径.
2.7 防御任务优选算法本文基于NSGA-Ⅱ算法对防御任务优选进行求解, 该算法通过非劣排序进行个体适应度选择, 并通过拥挤距离保证解的多样性[27].根据具体应用场景, 对NSGA-Ⅱ算法的编码和交叉部分进行修改.
1) 编码.
在防御任务优选问题模型中, 通过1和0表示防御任务的选择与否, 因而使用二进制编码, 则决策变量M为q位二进制串, 其中q为防御任务集包含的防御任务的数量.例如“0000 0000 0000 0011”表示选取的防御任务为task12和task13(编码的第12和13位为1).
2) 交叉.
本文NSGA-Ⅱ采用均匀交叉算子进行交叉计算,均匀交叉算子的大致计算过程如下:均匀交叉算子在附带选取完毕之后,随机生成交叉模板, 依照交叉模板对父代进行交叉操作.均匀交叉算子的计算过程如图 6所示, 父代1和父代2在交叉模板的指导下, 进行子代1和子代2的生成.
防御任务优选算法的思路如下:
a)初始化MPAG.包括威胁发生概率、资产价值、防御任务的防御成本以及防御任务的覆盖属性.
b)设i为迭代次数, 若i=0, 则随机初始化防御任务集种群Pi, 种群数为G;若i>0, 则对种群Pi进行选择、交叉和变异, 生成新种群Qi, 种群数为G;
c)合并种群Pi和Qi得到种群Ri, Ri种群的数量为2G;
d)对Ri进行非劣排序, 参考NAGA-Ⅱ算法[27];
e)对排序之后的Ri按照拥挤距离从大到小再次排序, 参考NSGA-Ⅱ算法[27], 并选取排序之后的前G个个体形成新种群Pi+1;
f)判断i是否等于终止进化代数, 若是, 则终止进化;若否, 则跳转到b).
防御任务优选算法的伪代码如下.
INPUT: MPAG以及初始状态概率pini, 网络设备资产值集V, 防御任务全集T以及防御任务对网络属性的影响E(作用于属性的条件概率), 防御措施成本集C;
OUTPUT:确定的防御任务集Tsub;
PROCEDURE confirmTask()
Initialize MPAG and pini //生成MPAG和属性概率
Initialize V//初始化资产价值
Initialize T, C and E//初始化任务库、防御任务成本以及防御任务影响
FOR t=1, n//循环n代
IF(t==0)//处理初始种群的情况
generate Pt//随机产生初始种群P0
select-crossover-varision(Pt)=Qt//初始种群的选择交叉和变异生成新种群Q0
Rt=Pt∪Qt//形成新种群
non-dominate-sort(Qt)={F1, F2, …, Fi, …, Fm}//通过非劣排序得到非劣解的前沿面
For i=1, m
calculate-crow-distance(Fi)= F′i//对各个前沿面进行拥挤距离排序
F′i→Q′t
END FOR
choosePopulationFrom(Q′t)→Pt+1//从Q′t选择拥挤距离大的G个个体构成Pt+1
END IF
ELSE
select-crossover-varision(Pt)=Qt//种群的选择交叉和变异
Rt=Pt∪Qt//形成新种群
non-dominate-sort(Qt)={F1, F2, …, Fi, …, Fm}//通过非劣排序得到非劣解的前沿面
For i=1, m
calculate-crow-distance(Fi)= F′i//对各个前沿面进行拥挤距离排序
F′i→Q′t
END FOR
choosePopulationFrom(Q′t)→Pt+1//从Q′t选择拥挤距离最小的N个个体构成Pt+1
END ELSE
END FOR
3 实验设置实验目的:通过对比传统攻击图和混合路径攻击图场景下生成的防御方案, 说明本文方法的意义.
3.1 网络拓扑实验的拓扑结构如图 7所示, 包括11台主机.其中, host0为外部攻击者所在主机, 局域网由一个DMZ(demilitarized zone)区和一个内部网络组成.考虑到安全需求和工作便利, 防火墙设置了访问控制规则, 实验环境的具体说明见附录A.
1) 传统攻击图生成.
不考虑0-day时生成的传统攻击图, 如图 8所示.攻击图中攻击路径为9条, 节点为13个.节点6和节点9为初始状态, 初始概率为0.6(下方数字为发现新证据之后重新计算的概率), 分别代表user-2上的内网攻击和外网攻击概率.标号为3的椭圆节点为目标状态, 代表攻击者获取目标主机Database Server上的root权限.Evidence为证据节点.
基于传统攻击图进行2组不同实验, 分别是未观测到证据节点Evidence和观测到证据节点Evidence的情况.将这2种情况下计算得到的各属性概率分别标注于各属性节点下, 属性节点下的上方数字为未观测到证据节点情况下得到的非条件概率, 下方数字为观测到证据节点情况下得到的条件概率, 分别表示静态风险评估和动态风险评估的威胁发生概率.未观测到Evidence节点的情况下, 计算得出的目标属性节点3的发生概率为0.29;观测到Evidence节点之后, 将节点12的发生概率置为1.计算可得, 证据节点的加入使得目标节点3的后验概率变为0.40.计算风险后得到, 未发现Evidence节点的情况下, 网络风险值为956.54, 发现证据节点后网络风险值变为1 373.55.这是由于证据节点的发现, 导致网络中部分威胁发生的概率增加, 进而导致网络风险增大.
2) 基于传统攻击图的方案生成.
根据防御任务优选算法, 设定进化代数为100代, 种群数量为50, 交叉概率为0.9, 变异率为0.1.基于图 8, 通过计算可得防御任务集的pareto前端, 如图 9所示.图中,r为网络风险,c为防御成本.图中虚线圆圈标示出的pareto前端解不是pareto最优解(Rank2解), 如图 8所示攻击图只有9条攻击路径, 所能够找到的pareto最优解总数不超过50个, 按照NSGA-Ⅱ的非劣排序方法, 将Rank2的解加入到pareto前端.
在任务集优选过程中, 首先考虑风险约束和成本约束, 其次考虑任务间关系约束.图 9中, 成本高于8 000的任务集均包含防御任务M8(内外网隔离), 考虑到M8成本过高, 将成本设定为8 000以下, 又因为不采用Rank2的解, 最终确定防御成本不高于2 300, 且网络风险不高于980.
考虑到防御任务间关系约束, 最终确定备选防御方案如表 1所示.由表 1可知, 在不考虑0-day漏洞的情况下, 生成的pareto最优防御方案的路径覆盖率大部分在90%以上, 表 1中, mi表示第i个防御任务, p表示路径覆盖率.
1) 混合路径攻击图生成.
考虑0-day漏洞之后, 生成的MPAG如图 10所示, 灰色矩形表示0-day漏洞利用动作, 无背景色矩形表示已知漏洞利用动作, 椭圆表示联合属性节点.攻击路径增至286条, 其中, 不含0-day漏洞的攻击路径为9条, 含1~6个0-day漏洞的攻击路径分别为40、76、55、83、20和3条.286条攻击路径是当前主机状况和主机连接状况下得到的攻击路径上限, 可以根据安全需求对MPAG的规模进行合理限定, 如:限定每条攻击路径上0-day漏洞的数量不超过a个.
从定性的角度, 考虑0-day之后生成的MPAG引入了隐式攻击路径, 按照漏洞利用规则和主机间连接关系构造了0-day的利用关系, 这样既符合漏洞利用的规律, 也能够降低MPAG复杂度.MPAG将0-day漏洞和已知漏洞的利用路径关系表达在一张图中, 扩展了传统攻击图的语义表达;另一方面, 0-day漏洞的引入, 不仅导致攻击路径的增加, 还可能将原有不会被利用的已知漏洞加入到攻击路径中.图 10中圈出的标号为14的动作节点表示漏洞“CVE-2007-3039”利用行为, 该漏洞在传统攻击图中并不存在, 说明0-day漏洞的引入导致该已知漏洞可以被攻击者利用.这将会影响防御方案的部署, 而传统攻击图无法表达这种情况.
根据式(3), 定量分析MPAG中0-day漏洞的利用概率e, 所得结果如表 2所示.基于贝叶斯网络理论和MPAG, 进行风险计算, 得到传统攻击图和MPAG两种情况下目标节点威胁发生概率p和网络风险r, 如表 3所示.传统攻击图低估了网络中威胁发生的可能性, 0-day漏洞的引入, 将影响风险计算和最终防御方案生成.
2) 基于MPAG的防御方案生成.
防御任务优选算法得到的100代和150代防御任务集pareto前端如图 11和12所示.实验中, 种群数量为50, 交叉概率为0.9, 变异率为0.1.通过比较100代和150代防御任务集pareto前端中包含的pareto最优解可得, 最优解基本不再发生变化, 且pareto前端已经收敛并稳定.实验同时比较了50代的防御任务集pareto前端, 结果基本与100代和150代一样.导致50代就基本收敛的原因如下:防御方案的搜索空间为213=8 192, 量级不高, 当搜索空间更大, 即防御任务集中的防御任务数更多时, 算法的收敛代数要求会更高.
由图 11可知, 当防御成本在8 000以上时, 风险值在400以下;当防御成本在6 000~8 000时, 不存在pareto最优解;当成本在6 000以下时, 风险值在400~1 400.安全管理员可以依据自身需求对其进行选择.成本高于8 000的任务集均包含防御任务M8(内外网隔离), 考虑到M8成本过高, 通常不选择该防御任务;同时, 当风险值较高的时候, 路径覆盖率将减小, 因此, 本文以成本6 035(无防御任务M8) 为基点, 依次选取成本小于6 035的17个pareto最优解.
基于图 10生成的防御任务集的成本约束小于820, 风险约束为小于6 100, 通过确认任务间约束, 最终确定备选防御方案, 如表 4所示.由表 4可知, 路径覆盖率最高为275/277, 没有覆盖的2条路径分别对应图 12中攻击路径:
$ \begin{array}{l} 9 \to 13 \to 11 \to 16 \to 8 \to 24 \to 3,\\ 9 \to 13 \to 11 \to 10 \to 8 \to 24 \to 3. \end{array} $ |
这2条攻击路径中, 前者用了3个0-day漏洞, 包括利用动作节点13, 16和24;后者用了2个0-day漏洞, 包括动作节点13和24.结果表明:本文方法对于寻找安全缺失、完善措施库也有一定帮助.
通过比较可知, 传统攻击图下生成的防御任务集的路径覆盖率表现良好;将其放到MPAG之后, 路径覆盖率最高为257/277=92.7%, 且没有覆盖的攻击路径中, 有8条攻击路径只包含1个0-day漏洞.基于MPAG生成的防御方案更有效, 结合网络成本和网络风险约束以及任务间关系约束, 可确定最终防御任务集.最终选定表 4中序号为3的防御任务集形成防御方案, 此时
$ \mathit{\boldsymbol{M = }}\left( {1,1,1,1,1,0,1,0,1,1,1,0,1} \right). $ |
本文构造了一种能够描述0-day漏洞利用路径(隐路径)的攻击图模型MPAG, 扩展了攻击图的语义表达;基于构造的MPAG和多目标优化理论, 总结出一种防御方案自动生成技术.实验证明:防御方案虽然不能修复0-day漏洞, 但是考虑了0-day存在的因素之后, 可以从一定程度预防0-day漏洞的利用行为;同时, 防御方案自动生成方法能够生成均衡网络风险和网络成本的防御方案.
未来研究方向:防御任务执行约束的描述和总结;防御方案协同执行协议的设计.前者是实现防御执行自动化的前提, 后者是执行自动化的基础.
附录A附录A为本文实验环境说明.
1) 主机、主机连接及漏洞说明.
如表 1所示为实验网络中主机的已知漏洞信息和主机资产价值.
下面分别概述实验网络内主机上已知漏洞和0-day漏洞的设置情况.为方便说明, 限定除Web Server上存在2个服务外, 其他每台主机上只有1个服务, 同时为保证实验环境覆盖更多网络场景(保证攻击路径的多样性), 设定除File Server和User_3所对应服务不存在已知漏洞外, 其他主机服务均对应1个已知漏洞;对于0-day漏洞, 每台主机上均包含6种不同类型的0-day漏洞.
各主机间连接关系描述如下:
connection(Malicious, DNSserver, tcp, 53)
connection(Malicious, WEBserver, tcp, 80)
connection(Malicious, FTPserver_1, tcp, 23)
connection(Malicious, Mailserver, tcp, 25)
connection(WEBserver, FTPserver_1, tcp, 23)
connection(WEBserver, DNSserver, tcp, 53)
connection(WEBserver, Databaseserver, tcp, 1433)
connection(FTPserver_1, Databaseserver, tcp, 1433)
connection(FTPserver_1, Mailserver, tcp, 25)
connection(Mailserver, FTPserver_1, tcp, 23)
connection(Databaseserver, FTPserver_2, tcp, 23)
connection(Fileserver, FTPserver_2, tcp, 23)
connection(FTPserver_2, Fileserver, tcp, 21)
connection(User_1, DNSserver, tcp, 53)
connection(User_1, WEBserver, tcp, 80)
connection(User_1, FTPserver_1, tcp, 23)
connection(User_1, Mailserver, tcp, 25)
connection(User_1, Databaseserver, tcp, 1433)
connection(User_1, Fileserver, tcp, 21)
connection(User_1, FTPserver_2, tcp, 23)
connection(User_1, User_2, tcp, 5190)
connection(User_2, User_1, tcp, 5190)
connection(User_2, User_3, tcp, 5190)
connection(User_3, User_2, tcp, 5190)
connection(User_3, User_1, tcp, 5190)
connection(DNSserver, User_3, tcp, 5190)
2) 防御任务集说明.
如表 2所示为根据图 8和图 10逆向得到的防御任务集(通过确定攻击图中攻击对应的防御措施, 进而得到防御任务).表 2中“无0-day场景下覆盖属性”和“0-day场景下覆盖属性”这2列中的属性编号分别对应图 8和图 10中属性节点的编号.
[1] | KENNEY M. Cyber-Terrorism in a Post-Stuxnet world[J]. Orbis, 2015, 59(1): 111–128. DOI:10.1016/j.orbis.2014.11.009 |
[2] | RITCHEY R W, AMMANN P. Using model checking to analyze network vulnerabilities[C]//Proceeding of the IEEE Symposium on Security and Privacy. New Jersey:IEEE, 2000:156-165. http://ieeexplore.ieee.org/xpl/tocresult.jsp?isnumber=18435&isyear=2000 |
[3] | SHEYNER O, HAINES J, JHA S, et al. Automated generation and analysis of attack graphs[C]//Proceeding of the IEEE Symposium on Security and Privacy. New Jersey:IEEE, 2002:273-284. http://ieeexplore.ieee.org/document/1004377/ |
[4] | SHEYNER O, WING J. Tools for generating and analyzing attack graphs[C]//Proceeding of the International Symposium on Formal Methods for Components and Objects. Berlin:Springer, 2003:344-371. https://link.springer.com/chapter/10.1007/978-3-540-30101-1_17 |
[5] | INGOLS K, CHU M, LIPPMANN R, et al. Modeling modern network attacks and countermeasures using attack graphs[C]//Proceeding of the IEEE International Conference on Computer Security Applications. New Jersey:IEEE, 2009:117-126. http://ieeexplore.ieee.org/document/5380524/ |
[6] | TRIPATHI A, SINGH U K. Taxonomic analysis of classification schemes in vulnerability databases[C]//Proceeding of the 6th IEEE International Conference on Computer Sciences and Convergence Information Technology. New Jersey:IEEE, 2011:686-691. http://ieeexplore.ieee.org/document/6316704/ |
[7] | MCQUEEN M A, MCQUEEN T A, BOYER W F, et al. Empirical estimates and observations of 0-day vulnerabilities[C]//Proceeding of the 42nd IEEE International Conference on System Sciences. New Jersey:IEEE, 2009:1-12. http://ieeexplore.ieee.org/document/4755605/ |
[8] | ZHANG S, CARAGEA D, OU X. An empirical study on using the national vulnerability database to predict software vulnerabilities[C]//Proceeding of the international Conference on Database and Expert Systems Applications. Berlin:Springer, 2011:217-231. |
[9] | WANG L, JAJODIA S, SINGHAL A, et al. K-zero day safety:a network security metric for measuring the risk of unknown vulnerabilities[J]. IEEE Transactions on Dependable and Secure Computing, 2014, 11(1): 30–44. DOI:10.1109/TDSC.2013.24 |
[10] | WANG L, JAJODIA S, SINGHAL A, et al. K-zero day safety:measuring the security risk of networksagainst unknown attacks[C]//Proceeding of the International Symposium on Research in Computer Security. Berlin:Springer, 2010:573-587. http://ieeexplore.ieee.org/document/6529081/ |
[11] | NOEL S, JAJODIA S, O'BERRY B, et al. Efficient minimum-cost network hardening via exploit dependency graphs[C]//Proceeding of the 19th IEEE International Conference on Computer Security Applications. New Jersey:IEEE, 2003:86-95. http://ieeexplore.ieee.org/document/1254313/ |
[12] | WANG L, NOEL S, JAJODIA S. Minimum-cost network hardening using attack graphs[J]. Computer Communications, 2006, 29(18): 3812–3824. DOI:10.1016/j.comcom.2006.06.018 |
[13] | ALBANESE M, JAJODIA S, NOEL S. Time-efficient and cost-effective network hardening using attack graphs[C]//Proceeding of the 42nd IEEE International Conference on Dependable Systems and Networks. New Jersey:IEEE, 2012:1-12. http://ieeexplore.ieee.org/document/6263942/ |
[14] | SERRA E, JAJODIA S, PUGLIESE A, et al. Pareto-optimal adversarial defense of enterprise systems[J]. ACM Transactions on Information and System Security, 2015, 17(3): 11–15. |
[15] | DEWRI R, RAY I, POOLSAPPASIT N, et al. Optimal security hardening on attack tree models of networks:a cost-benefit analysis[J]. International Journal of Information Security, 2012, 11(3): 167–188. DOI:10.1007/s10207-012-0160-y |
[16] |
闫峰. 基于攻击图的网络安全风险评估技术研究[D]. 吉林: 吉林大学, 2014: 12-31.
YAN Feng. Research on the technology of network security risk evaluation based on attack graph[D]. Jiling:Jiling University, 2014:12-31. http://cdmd.cnki.com.cn/Article/CDMD-10183-1014268129.htm |
[17] |
吴金宇, 金舒原, 杨智. 基于网络流的攻击图分析方法[J].
计算机研究与发展, 2011, 48(8): 1497–1505.
WU Jin-yu, JIN Shu-yuan, YANG Zhi. Analysis of attack graphs based on network flow method[J]. Journal of Computer Research and Development, 2011, 48(8): 1497–1505. |
[18] | KHOSRAVI-FARMAD M, REZAEE R, HARATI A, et al. Network security risk mitigation using Bayesian decision networks[C]//Proceeding of the 4th IEEE International Conference on Computer and Knowledge Engineering. New Jersey:IEEE, 2014:267-272. http://ieeexplore.ieee.org/document/6993444/ |
[19] |
陈小军, 时金桥, 徐菲, 等. 面向内部威胁的最优安全策略算法研究[J].
计算机研究与发展, 2014(7): 1565–1577.
CHEN Xiao-jun, SHI Jin-jiao, XU Fei, et al. Algorithm of optimal security hardening measures against insider threat[J]. Journal of Computer Research and Development, 2014(7): 1565–1577. DOI:10.7544/issn1000-1239.2014.20131854 |
[20] | WANG S, ZHANG Z, KADOBAYASHI Y. Exploring attack graph for cost-benefit security hardening:a probabilistic approach[J]. Computers and Security, 2013, 32(2013): 158–169. |
[21] | POOLSAPPASIT N, DEWRI R, Ray I. Dynamic security risk management using bayesian attack graphs[J]. IEEE Transactions on Dependable and Secure Computing, 2012, 9(1): 61–74. DOI:10.1109/TDSC.2011.34 |
[22] | LI Y L. An approach towards standardising vulnerability categories[D]. Pretoria:University of Pretoria, 2008. http://repository.up.ac.za/bitstream/handle/2263/26304/dissertation.pdf?sequence=1&isAllowed=y |
[23] | OU X, GOVINDAVAJHALA S, APPEL A W. MulVAL:a logic-based network security analyzer[C]//Proceedings of the 14th Conference on USENIX Security Symposium-Volume 14. Berkeley:USENIX Association, 2005:8-12. |
[24] | MELL P, SCARFONE K, ROMANOSKY S, et al. Common vulnerability scoring system[J]. IEEE Security and Privacy, 2006, 4(6): 85–89. DOI:10.1109/MSP.2006.145 |
[25] | ALHAZMI O H, MALAIYA Y K, RAY I. Measuring, analyzing and predicting security vulnerabilities in software systems[J]. Computers and Security, 2007, 26(3): 219–228. DOI:10.1016/j.cose.2006.10.002 |
[26] | SERRA E, JAJODIA S, PUGLIESE A, et al. pareto-optimal adversarial defense of enterprise systems[J]. ACM Transactions on Information and System Security, 2015, 17(3): 11–15. |
[27] | DEB K, PRATAP A, AGARWAL S, et al. A fast and elitist multiobjective genetic algorithm:NSGA-Ⅱ[J]. IEEE Transactions on Evolutionary Computation, 2002, 6(2): 182–197. DOI:10.1109/4235.996017 |