方 明
(91977部队,北京 100841)
网络安全是一个广义的概念,它主要用来处理一组互联的计算机之间的安全威胁,每一台互联的计算机都有自己的安全流。计算机网络安全风险值是通过网络攻击的概率以及攻击所造成的后果的严重程度计算出来的。几乎所有的网络攻击都是利用网络安全漏洞所进行的多级攻击,在多级网络攻击中,某一特定的网络安全漏洞被黑客所利用的概率依赖于与之相关的其他网络安全漏洞被利用的概率,一些已经发表的网络安全模型中已经提出了这种相关性如文献[1-3]。该模型通过每一个网络安全漏洞以及与之相关的其他安全漏洞来定义网络安全威胁,并计算安全风险值。
在文章的第二部分,我们对相关的文献进行评论,在文章的第三部分,我们对一些必要的背景材料进行介绍并阐述标准建模语言(Unified Model Language,UML)安全模型,在文章的第四部分,我们介绍如何针对特定的网络应用该模型,并产生该网络的风险值。文章的最后部分,我们对评估的结果进行总结,并对未来的进一步工作进行探讨。
攻击者通过网络安全漏洞可以无授权访问计算机网络中的资产,并对计算机网络系统构成安全威胁。为了方便起见,我们把网络安全漏洞被攻击者利用的风险称作“漏洞风险”。文献[4-8]提出了几种漏洞风险的评估方法。常见漏洞评分系统[7](Common Vulnerability Scoring System,CVSS)和共同弱点评分系统[8](Common Weakness Scoring System,CWSS)提出了一组用于评估漏洞风险的可量化指标,但是这些方法只是分别针对每个漏洞风险进行风险值评估,并没有考虑漏洞之间的关联性。
目前有很多针对多级攻击的建模方法,比如petri网模型[2,9]、博弈论模型[1,10]、以及攻击树模型[3,11-14],这些模型代表了网络中彼此互联的网络安全漏洞,并指定攻击路径。由于攻击树建模方法容易被人们理解,并且符合图论理论,因此攻击树模型被广泛研究。攻击图不仅是指定和分析攻击路径的手段,同时也可以代表网络安全漏洞被利用时所必须的相关漏洞,并可以计算这些漏洞被利用的概率。在文献[11,15,16]中贝叶斯网络被用于代表安全漏洞被利用概率与攻击者攻破网络目标节点概率之间的依赖项。在文献[17]中,贝叶斯网络被用来确定网络中风险最高的威胁项集合,并确定如何实施风险控制措施以达到在有限预算条件下获得最优网络安全等级的目标。虽然这些工作在网络风险值评估以及降低网络安全威胁过程中很高效,但是他们都没有考虑攻击路径在构造过程中的复杂度和困难。由于攻击图或贝叶斯网络的复杂程度,这些分析方法依然需要网络安全专家的指导意见。
本文所提出的网络安全风险分析模型,不需要网络管理员拥有专业的网络安全知识就可以实施网络安全风险分析过程,代替这些网络安全专业知识的是一个与攻击方式和网络类型相关的抽象的模型。
正如我们之前所提到的,产生和分析网络安全模型时会遇到一系列的困难和问题,为了获得更加精确的结果,我们需要网络安全专家为我们修正那些由扫描仪和分析仪等自动化工具所获得的数据。此外,这些自动化工具也需要必要的网络系统信息,通常这些信息主要来源于对网络异常情况的记录。
我们所提出的网络安全风险分析模型适用于任何类型的计算机网络,这个网络安全风险分析模型的主要优点总结如下:
(1)计算机网络安全风险分析过程所必须的复杂概念被一个抽象化的模型所代替。
(2)我们定义了在一个实例化网络中,安全风险值及风险概率的计算过程。
(3)我们提出的安全风险分析模型是动态的并且对网络系统的改动是自适应的,比如在网络中增加或移除一台主机时所产生的网络结构变化对网络连接关系或网络漏洞的影响会通过安全模型进行发布,同时根据网络变化自动更新网络风险值,与其他模型[11,18]不同的是,当网络结构变动时,我们的模型不需要重新构建。
(4)我们的模型保持网络拓扑结构和网络逻辑结构的一致性,这种一致性可以有效提高风险控制方案的实施效率,同时降低风险的影响后果。
我们所提出的UML模型是由两种模型结合产生的,一个是抽象安全模型(Abstract Security Model, ASM)另一个是网络安全模型(Network Security Model,NSM)。其中ASM模型是用于描述网络节点和安全分析时所必须的类信息模型,例如安全漏洞、网络节点间的可达性以及安全漏洞之间的关系等,ASM模型是建立目标网络NSM模型的基础,ASM模型通常只建立一次,并在此基础上建立不同网络的NSM模型。
图1 UML风险模型概况
通过对目标网络的ASM模型进行实例化,我们可以得到目标网络的NSM模型,目标网络的实例化过程需要目标网络的相关信息,并将目标网络的相关信息与目标网络ASM模型中所定义的适当的类相结合产生出目标网络的NSM模型。图1展示了这种实例化的过程,以及这两个模型之间的关系。
ASM模型是网络节点的上层模型,它提供了以概率论推倒网络安全风险值的基础。在图2中我们展示了ASM模型中所定义的类图,在图中每个网络节点都由网络节点类所表示。一个网络节点可以是一台数据终端或者是服务器。
在ASM模型中,每个网络节点都是经由连接类所连接。每个网络节点都包含一个访问权限类,这个访问权限类指定了每个网络节点的用户访问类型。攻击者很有可能是一个合法的用户,并且对于一些网络节点,攻击者拥有合法的访问权限。对于一个网络系统而言,一个网络节点很有可能包含某个特定的安全漏洞。为了利用这个网络安全漏洞,攻击者必须拥有一定的网络节点访问权限等级,当攻击者针对某一安全漏洞成功实施攻击后,他极有可能获得了更大的访问权限等级。所以安全漏洞类是攻击实施前攻击者访问权限等级与攻击实施后攻击者访问权限等级之间的关联类。一个网络系统包含许多网络节点,每个网络节点都包含一定的安全需求,这些安全需求的作用是允许指定的权限等级访问网络节点,并对非法的访问操作进行记录。
ASM模型是由一系列类所组成,它们被表示为:C1,C2,C3…每个类都有一些属性集合和一些操作集合,通过这两个集合我们可以指定攻击路径以及计算攻击实施成功的概率。对于某个类C,属性集合表示为A(C),操作集合表示为O(C)。C.A表示类C的属性集合,C.O表示类C的操作集合。用D(C.A)表示类C的属性集合的域,例如:访问权限类(Privilege)的访问类型属性(Access Type)集合的域包括:网络,本地用户,ROOT访问。所以它被表示为:D(Privilege.AccessType)={网络,本地用户,ROOT访问}。
构建目标网络的网络安全模型所需要的对象来源于ASM模型中适当的类的实例化。在NSM模型中,我们用实例化的ASM模型的类对象来代表目标网络中的节点,包括节点的特性和连接关系。每个对象的构造函数都用一个参数来表示增加这个对象后,可能增加的违反网络安全需求的概率。这个概率的每一次修改,模型都会向与之相关的对象进行发布。这个概率是由贝耶斯方法计算出来的,而这个概率的发布方法是由前面介绍过的文献[11]提供的。
通过在主机H中增加漏洞V,这个漏洞对于主机H的安全需求的影响会马上生效,并更新主机H可能违反安全需求的概率H.Pi,当H.Pi进行更新时,它会同时调用与主机H有连接关系的节点中权限类对象的函数,这些被调用的函数用于重新计算每个对象违反安全需求的概率。
图2 网络安全风险分析的ASM模型
安全风险值是由违反安全需求的概率与网络漏洞影响值相乘的结果得出的,由式(1)计算。
常见漏洞评估系统[7,19],可以为评估网络安全漏洞被利用后的影响值提供一系列的指标依据。虽然我们的风险评估模型不依赖于某一个特定的影响值评估模型,但是CVSS模型中基本指标的一个子集对安全漏洞影响值的计算还是有很大帮助的。这些指标包括:保密影响、信誉影响和可用性影响。最终的安全漏洞被利用的影响值由等式(2)给出。影响值的计算是依据CVSS标准的。
其中Impactconf代表保密性影响值,Impactinteg代表信誉影响值,Impactavail代表可用性影响值。在本文所提出的风险评估模型中,一组基本的CVSS模型指标用于评估网络安全漏洞被利用的可能性,这些指标主要包括:访问向量、访问复杂度、以及认证功能强度等。网络漏洞被利用的概率由等式(3)计算,在文献[19]中说明了CVSS指标值的含义。
在对多级攻击下网络漏洞被利用的概率计算过程中,我们还要考虑网络漏洞间的关联性,并将这种关联性反应到网络漏洞被利用概率的数值上。我们的风险攻击模型用贝叶斯攻击图模型[3,11]来代表关联的概率。
贝叶斯攻击图是由攻击图模型和贝叶斯网络结合产生的。贝叶斯网络是一个有向无环图,在图中每个节点都包含一个离散的随机变量,图中每个弧代表了随机变量间的独立性条件。
此外,每个节点对应于一个条件概率表,这个条件概率表指明了该节点的父母节点的概率状态。
攻击图模型说明了针对目标网络实施多级攻击时可能被使用的攻击路径[20]。在攻击图模型中,每个节点代表了一个网络安全漏洞以及该漏洞被利用之前和之后系统的状态。图中的弧展示了网络漏洞与漏洞被利用之前、之后系统状态间的相关性。
贝叶斯攻击图用一个4元组表示:BAG={X,ε,τ,P},其中X代表攻击图中的节点,包括终点、内部节点、外部节点。图中的弧用有序对集合τ表示。集合ε表示进入同一个节点不同弧之间的关系,集合ε的值包括“与”和“或”即,ε={AND,OR}。P是一个条件概率分布集合,包含的条件概率为:P=Pr(ni|Parent[ni])。这个概率值是由联合概率分布和噪声或关系(Noisy-Or)按照文献[3]中定义的方法计算的。计算方法如下所示:在di=AND的情况下,Pr(ni|Parent[ni])=0如果ni满足条件 nj∈parent[ni],有nj=0。如果不存在nj=0,则:
在di=OR的情况下,Pr(ni|Parent[ni])=0,如果满足条件:∀nj∈parent[ni],有nj=0。否则:
其中ei表示网络漏洞被利用的事件,当这个网络漏洞被利用后,系统从状态ni过渡到nj。事件ei的概率由等式(3)计算。在ASM模型中,Pr(ei)包含在网络安全漏洞类的属性集合中。攻击者可以通过利用网络漏洞从一个状态过渡到另一个状态并且可以获得新的网络系统权限。当一个节点的被攻击概率改变时,它的继任节点的被攻击概率也会受到相应的影响,这个影响值通过贝叶斯等式(6)进行发布,并更新继任节点被攻击的概率。
测试网络结构图以及在其上部署的安全漏洞 见图3。
在ASM模型中,这个过程由权限类操作集合中的AdjustProbability()操作函数实施。当一个权限类中的综合概率参数Privilege.compromiseProbability发生改变时,就会触发其所有继任节点调用AdjustProbability()操作函数来更新被攻击概率。全系统的被攻破概率由AdjustProbability()操作函数的调用环实现。
图3 测试网络结构图以及在其上部署的安全漏洞
在这一部分,为了应用我们的风险评估模型,我们对试验网络进行风险评估,我们展现了用试验网络的ASM模型构造NSM的实例化结果。
我们将本文提出的风险评估模型应用到如图3所示的测试网络中,在该网络中包含两个区域,一个信任域(Trusted Zone)和一个隔离域(DMZ Zone)。在测试网络结构图中,我们用红色标出每个网络主机中的安全漏洞,把图2中所示的ASM模型用测试网络信息实例化,我们构造出了测试网络的NSM模型,如图4所示。
为了构造测试网络的NSM模型,我们需要选取ASM模型中适当类进行实例化后的对象,我们将用实例化的对象来代替测试网络中每个节点以及节点的属性和连接关系。模型通过调用对象的构造函数来向NSM模型中添加一个实例化的对象。新对象的构造函数对于NSM中已经存在的对象所产生的影响是自适应的。
举个例子,在一个简单测试网络的NSM模型中,为了代替主机1(host1)和数据库服务器(SQLServer)之间的连接关系,我们实例化一个连接类的对象取名为C3。这个连接意味着主机1(host1)与数据库服务器(SQLServer)之间有一个通过1433端口的网络访问。通过向目标网络NSM模型中增加这个对象,我们发现在权限类P3与P4之间产生一条攻击链路,同时在权限类P2与P4之间也产生了一条攻击链路。产生这个攻击链路的原因是因为主机1有一个通过端口1433对数据库服务器的访问流程。所以,一个拥有主机1 root权限的攻击者可以利用网络漏洞4(Vul4)。Vul4漏洞是数据库注入漏洞,利用这个漏洞的前提是攻击者拥有网络访问数据库的权限。
图4 目标网络的NSM模型
为了展示测试网络安违反全需求概率的计算过程,图5中列出了建立NSM模型的两个连续的步骤。图6中展示了目标网络NSM模型。WebServer实例化对象还没有添加进测试网络的NSM模型中。图5展示了测试网络NSM模型的初步构建过程,进一步的构建过程如图6所示,在图6中,我们向由图5所示的构建过程产生的初步NSM模型中增加实例化的网络安全漏洞Vul3(MS Video Active Stack BoF),测试结果显示,一条连接权限类对象P1和P3的攻击链路被建立起来,这条链路就是漏洞Vul3被利用后产生的后果。网络漏洞构造函数在实例化的时候会建立一条连接漏洞被利用前和利用后权限类对象的链路,以展示网络漏洞被利用后攻击者权限的更改。同时,当漏洞类构造函数实例化Vul3时,它会调用权限类对象P3的概率调整函数P3.AdjustProbability(),P3.AdjustProbability()被调用后,权限类对象P3被攻击者获得的概率增加到0.86,由于P3的概率被更改导致所有与P3连接的权限类对象的AdjustProbability()都会被调用,以发布漏洞Vul3对全网安全性的影响。在本例中所有连接P3的路的集合只有一条链路Link2,它是连接P3与P4的唯一链路。当主机1与数据库服务器通过端口1433建立连接时,这条链路就产生了,所以P4的AdjustProbability()函数被调用,它将权限类对象P4的概率由0提升到0.86,由于P4的概率被更改了,所以P5的AdjustProbability()函数也被调用,这是由于P5通过链路Link1与P4连接,所以当P5的AdjustProbability()函数被调用后,P5的概率更新为0.69。
通过向测试网络NSM模型中增加或移除类对象,对象的概率值与风险值会被相应的更新。事实上类对象概率的每一次更改都会通过AdjustProbability()函数向整个NSM模型发布。举个例子,由于目标网络增加了漏洞防护措施,使得某一漏洞被利用概率降低了,这种概率的变化会影响到所有与之相关的类对象。测试网络系统安全需求被违反的最终风险值在表1中列出。风险值以及对安全需求的影响值分别有等式(1)与(2)计算。
表1 系统最终风险值
图5 NSM模型构建的中间步骤
图6 增加网络漏洞后的NSM模型
本文提出了两个UML模型来代替安全专家提供的专业信息。ASM模型提供了一个影响网络安全风险的网络要素的一个抽象视图。ASM模型只构建一次,并且可以多次产生任何网络的NSM模型,同时,NSM模型可以识别目标网络的安全威胁并计算目标网络的风险值。NSM模型是动态适应目标网络拓补结构变化的,当增加网络节点时,该网络节点对全网的安全影响将通过调用AdjustProbability()函数来发布。我们的模型的另一个优点就是与目标网络物理模型的一致性,这有利于网络管理员更好的分配安全风险控制措施。在进一步的工作中,我们可以考虑将NSM模型的产生过程完全自动化,为了达到这个目的,我们首先要将NSM模型的产生过程以及产生该模型所使用的输入进行正式的定义。