李红娇, 何文豪, 李晋国
(上海电力大学 计算机科学与技术学院, 上海 200090)
风险评估在于识别潜在的威胁,通常以定量的方式描述风险并适当地表示不确定性,最终目标是提高网络的完整性和稳定性[1]。漏洞风险评估是风险评估中的关键技术之一。HACKMAGEDDON[2]公布的数据显示,漏洞攻击是10大主要网络攻击手段之一。因此,提升并完善漏洞风险评估技术势在必行。考虑到漏洞之间的依赖关系以及网络状况的可视化,目前的研究主要是将攻击图应用于漏洞风险评估中,即通过模拟网络攻击过程来找出所有可能到达攻击目标的路径。
攻击图用于通过模拟网络攻击过程来找到所有可以到达攻击目标的攻击路径。除了通常默认提供的网络连接以外,要构建攻击图,还需要网络中每台主机的开放服务。攻击者通常首先使用漏洞扫描工具对这些开放服务进行扫描,然后利用存在的漏洞攻击目标来达到相应的攻击意图。
攻击图示例如图1所示。每个节点表示主机的状态,其中,Sg表示要达到的目标状态,Si表示要达到目标之前的状态,i=1,2,3,…,n。每条边代表状态转换所需的条件。
图1 攻击图示例
基于攻击图的已知漏洞风险评估(Known Vulnerability Risk Assessment,KVRA)过程如图2所示。
图2 基于攻击图的KVRA
早期阶段攻击图主要通过手动构建生成,导致较高的错误率和较差的可扩展性。如今,已有工具支持攻击图的自动生成,几种常用的攻击图生成工具如表1所示。
表1 攻击图生成工具
MulVAL[3]是用于漏洞评估的攻击图生成工具。该软件的优点是可与漏洞扫描工具Nessus和国家漏洞数据库(NVD)结合使用;缺点在于有两个难以实现的假设:一是默认网络中的设备、规则以及漏洞的可利用性都为100%,二是假设每个漏洞都是独立的。为了解决上述两个问题,本文提出了基于MulVAL改进的漏洞风险评估框架。由于NVD官方网站对漏洞信息的保存使用JSON而不是XML,因此在本文提出的框架中,从NVD获取到的漏洞信息的原始数据将会被保存在MongoDB中。然后,从原始数据中提取需要的内容保存至MySQL。接下来,通过通用漏洞评分系统(Common Vulnerability Scoring System,CVSS)计算漏洞的可利用性。之后,将贝叶斯理论引入攻击图来量化漏洞之间的相关性。最后,结合达到攻击目标所需的资源数量这一指标,进一步筛选最可能被攻击者采用的攻击路径。
MulVAL目前仅面向Linux和Mac操作系统,未包含Windows版本。相较于其他攻击图生成工具而言,MulVAL最大的优势在于它是开源的,可以对源代码进行一定的修改来满足自身的实际需求。MulVAL依赖于XSB,GraphViz,MySQL 3款软件,所以为了能够正常运行MulVAL,需要完成依赖软件的安装。其中:XSB面向Unix和Windows系统,是一种用于逻辑编程和演绎数据库系统;GraphViz是实现攻击图生成的核心组件;MySQL用来存储NVD中的已有的全部漏洞信息。
MulVAL由OU X等人[3]在2005年提出,用于对软件与系统配置的交互进行建模,并且作为入侵检测系统的辅助工具来实现更有效的网络安全分析。SEMBIRING J等人[4]针对MulVAL的固有缺陷进行了改进。首先,使用CVSS和通用配置评分系统(Common Configuration Scoring System,CCSS)分别量化每个漏洞的可利用性和系统配置的漏洞。再使用贝叶斯网络来发现漏洞之间的关系。AKINYEMI B O等人[5]用Nessus和MulVAL分别收集网络信息和生成攻击图。为了解决MulVAL攻击图可能包含循环的缺点,提出新算法以消除攻击者可以利用其中的节点的周期。这种方法的优点是具有可伸缩性,但生成的攻击图缺乏可理解性。PUPPALA G和PASUPULETI S K[6]使用内置的扩展MulVAL工具来构建攻击图,优化生成攻击图时的可扩展性;同时,将贝叶斯定理应用于攻击图,以进行动态风险评估。 SUN X等人[7]提出了一个新的框架,以弥补现有任务影响评估与云计算中网络弹性之间的差距。
本文构建的基于MulVAL改进的漏洞风险评估框架如图3所示。该框架为一个自下而上的运行过程。
图3 基于MulVAL改进的漏洞风险评估框架
第1层显示网络信息的来源。托管网络是指漏洞评估所需的网络。NVD提供了每个已知漏洞的详细信息。漏洞的发现可以依赖于漏洞扫描程序,如Nessus以及针对Wordpress漏洞的kali wpscan工具。
第2层是基于第1层信息生成攻击图。其核心组件是MulVAL框架。MongoDB用于存储来自NVD的漏洞信息,Robo3T是MongoDB的可视化工具。该框架用于生成攻击图。原始和改进的MulVAL框架如图4所示。两者之间的主要区别是NVD的数据格式和用于存储数据的数据库。此外,Nessus虽然是综合性较强的漏洞扫描工具,但是对于具体Web应用存在的漏洞可能会出现遗漏。Python用于数据收集和数据库操作的编程语言。
图4 MulVAL框架的原始以及改进框架
第3层用于完成漏洞评估的定量任务。具体来说,CVSS用于计算每个漏洞的内在属性(即可利用性)。为了克服攻击图忽略漏洞之间的相关性的问题,将贝叶斯理论应用于攻击图[8]。此外,考虑到修复漏洞的成本和时间,系统管理员必须选择攻击图中的关键路径。因此,有必要计算每个可以到达目标的攻击路径的概率。因为概率相同的攻击路径所需的资源数不一定相同,因此资源数为指标。在可利用性概率相同的情况下,某条攻击路径所需的资源数越少,那么该条攻击路径在理论上更容易达到攻击目标。
实验的网络配置如图5所示。在内网中,设备包括工作站、Web服务器、文件服务器以及路由器。文件服务器向工作站提供网络文件服务(NFS),共享文件目录设置为/home/server/share。Web服务器开放tcp和http协议。工作站将文件服务器提供的共享文件目录挂载于/mnt/share下。其中,Web服务器的操作系统为Windows 10。文件服务器的操作系统为ubuntu 16.04。工作站的操作系统为Windows 7。文件服务器与工作站的模拟通过VMware Workstation创建的虚拟机实现。
图5 实验网络配置
图6显示了攻击者位于外网中,并试图渗透到内网中以获得工作站的root权限。该图使用MulVAL生成的原始攻击图,还未进行量化。
图6 针对工作站的单目标原始攻击
为了对单个漏洞的危害性进行评估,使用CVSS[9]对其进行量化。CVSS有3个版本,分别为CVSS v1.0,CVSS v2.0,CVSS v3.0,皆包含基础指标、时间指标及环境指标等3种指标。目前主要使用的是CVSS v2.0和CVSS v3.0。本文采用CVSS v2.0计算漏洞的基础评分。
SB=(0.6SI+0.4×1.5E)×f(SI)
(1)
SI=10.41×[1-(1-C)(1-I)(1-A)]
(2)
E=20×VA×CA×Au
(3)
(4)
式中:SB——基础评分;
SI——影响评分;
E——可利用性;
C,I,A——机密性、完整性、可用性;
VA——访问向量;
CA——访问复杂度;
Au——认证方式。
考虑到漏洞之间可能存在依赖性,因此将贝叶斯理论引入攻击图中来解决评估时漏洞相互独立的缺陷。计算条件概率分布p(Xi|pai)[10]。该概率分布表示,当获得一组前提条件pai的观测值时,达到安全状态Xi。应该考虑两种可能情况,包括逻辑与(AND)和逻辑或(OR)。这类似于攻击图中累积分数[11-12]的概念。式(5)为逻辑与的计算表达式,式(6)为逻辑或的计算表达式。其中,pvj表示攻击者成功利用漏洞vj的概率。
(5)
(6)
经过量化后的实际结果如图7所示。
图7 针对工作站的单目标量化攻击图
其中,图7中所有规则的概率默认值都为0.8,灰色标注的地方是通过使用CVSS以及贝叶斯理论后的实际结果。在未经过处理前,p(vulExists(NFS Server,CVE-1990-0710,ubuntu_linux,remoteClient,privEscalation))=1.0,修改后该节点的概率变成了漏洞CVE-1990-0170的CVSS基础评分。由于该节点的改变,引发了后续相关节点概率的变化,节点的计算主要归属于逻辑与一类。
假设攻击图中2条以上的攻击路径能达到最终的目标。在这种情况下,考虑到网络安全修复及加固的成本,需要对这些攻击路径做进一步的筛选,找到最有可能被攻击者采用的攻击路径。因此,可以将每条攻击路径达到攻击目标所需的不同类型的资源数R作为另一个指标,结合综合评估方法获得更准确的结果。
(7)
式中:pi——相应攻击路径仅基于CVSS的基础评分得到的评估结果;
wpi,wR——pi和R的权重,默认为0.5。
如两条攻击路径的风险概率都为0.75,两者都包含3个资源(诸如http,ssh,rsh等)。但是第1条攻击路径中3个资源中包含2个相同类型的资源,则资源数R=2/3 ;而第2条攻击路径中的3个资源类型皆不同,则R=1。在这样的情况下,最后的评估结果为
从上述评估结果可知,第1条攻击路径比第2条攻击路径更需要被关注,达到了筛选的效果。
在使用MulVAL源代码时,可能碰到的问题以及解决方案如下。
(1) 内存不足 由于漏洞数量逐年递增,所以在写入MySQL时,可能会因为数据量过大而出现内存不足问题。解决方案是修改nvd_sync.sh文件中的内存最小值以及最大值。
(2) 无法使用nvd_sync.sh来获取国家漏洞数据库信息 解决方案是修改nvd_sync.sh中NVD的URL。
(3) 解析漏洞数据(XML格式)失败 解决方案是将XML中的&转换为&,原因是dom4j无法解析XML中的转义字符。
(4) 可解析XML格式的漏洞数据文件,但MySQL中没有存储任何数据 造成该问题的原因是国家漏洞数据库的官网采用JSON格式来代替XML格式对漏洞数据进行存储。因此,解决方案是首先修改nvd_sync.sh中的国家漏洞数据库的URL,然后对JSON格式的漏洞数据文件进行解析,提取需要的数据保存至MongoDB或MySQL中。从实现的难易度角度来说,可以采用MongoDB存取原始数据,然后提取关键数据存放至MySQL中。这是因为MulVAL默认使用的是MySQL,如果仅使用MongoDB,可能需要从代码层面进行大幅度的修改。
在漏洞扫描方面,虽然Nessus能给出网络主机总体漏洞的详细信息,但是它对一些特定Web的应用漏洞不具针对性。为了解决这个问题,可以使用一些特定的工具弥补。如在实验环境中的Web Server上安装了Wordpress应用,向外界展示博客。在这种情况下,处于外网的攻击者如果获取到了Web Server映射到公网的域名,则可以通过kali wpscan工具结合字典攻击来暴力破解Wordpress的账号。具体的代码为
·wpscan-url xxx-e u
·wpscan-url xxx-U username-P wordlist.txt
第1条代码的作用是用来获取对应url下的Wordpress的用户名;第2条代码是暴力破解用户名对应的密码。
攻击图是访问网络安全性并提供网络强化决策的强大工具,既可用于识别攻击者引起的不良活动,还可帮助安全管理员了解是否可以通过多步骤攻击来破坏给定的关键资源。MulVAL作为生成攻击图的开源软件,满足了当前网络安全的可视化需求。为了解决MulVAL攻击图的固有缺陷,本文提出了基于CVSS计算漏洞的可利用性,将贝叶斯理论引入攻击图来评估漏洞之间的依赖性,同时结合达到攻击目标所需的资源数量这一指标进一步筛选出更可能被攻击者采用的攻击路径。