基于词频统计和朴素贝叶斯融合模型的漏洞自动分类方法与流程

文档序号:11775158阅读:300来源:国知局
基于词频统计和朴素贝叶斯融合模型的漏洞自动分类方法与流程
本发明涉及一种基于词频统计和朴素贝叶斯融合模型的漏洞自动分类方法,属于信息安全
技术领域

背景技术
:网络安全脆弱性是指计算机系统中存在某些可能被恶意主体(攻击者或攻击程序)利用的安全漏洞,从而可能导致对系统资源的非授权访问或对系统造成其他损害。近年来逐渐发展成熟的脆弱性扫描技术及cve(commonvulnerabilities&exposures,公共漏洞和暴露)标准与通用漏洞评分系统(commonvulnerabilityscoringsystem,cvss)漏洞评级方法,可以检测并发现网络中存在的脆弱点,但无法分析脆弱点之间的关联性与相互利用关系。而网络风险中的攻击手段往往是通过彼此关联的漏洞,从一个漏洞切入,逐步利用网络中与此相关的漏洞扩散至整个网络。因此研究挖掘漏洞之间的关联性有重大意义。漏洞关联图是一个描述漏洞间关联关系的有向图,它提供了一种形式化、系统化描述漏洞关联性的方法,能比较直观地反映出漏洞之间的关联关系。漏洞的关联往往体现在某低用户级l的攻击者通过成功地利用某个漏洞,获得一定的特权提升,从而在非授权的情况下达到了一个高用户级h的目的。现有的一种描述用户权限提升过程的方法是采用“特权”、“特权集”与“特权提升”的概念,利用决策树的方法将访问者与特权集集合起来,将访问者分为若干类,并将其拥有的特权集按重要程度设置一个量化的权值,比如在0-1之内的若干个小数。目前存在的漏洞分类法主要有普渡大学coast实验室的aslam提出的unix操作系统分类法,分为操作故障、环境故障和编码故障,但由于没有具体的量化指标,无法评价漏洞的危害级别;哈工大的汪立东提出的软件弱点分类法,描述了漏洞对机密性、完整性和可用性等安全性的影响,knight等人提出的广义分类法,将弱点分为社会工程、策略疏忽、逻辑错误和软件漏洞四种类型,由于一定程度上的概念模糊,类与类之间不具备互斥性。以上分类方法都是将漏洞作为单一缺陷来分析,张永铮强调了漏洞之间的关联性,提出了判断漏洞前后关联性的前提是漏洞可以按“前提特权集”及“结果特权集”进行的准确分类,实现了一种新颖的支持关联性挖掘的多维量化属性漏洞分类法,然而并没有明确指出每一类的具体特征,无法自动进行分类。国家发明专利《支持漏洞关联性挖掘的漏洞自动分类方法》(申请号:201710052203.9)从漏洞的自然语言描述中挖掘出每条漏洞的“前提特权集”及“结果特权集”所属的特权集分类,并根据“特权提升”的概念来判断漏洞之间存在的关联关系,达到分类的目的。但其缺点是只利用了数据库中“漏洞描述”字段这个单一属性,忽视了漏洞的其他属性对漏洞关联性的影响,比如漏洞的“可用性评分”、“影响性评分”等属性。因此,该方法的分类准确率还有待提高。技术实现要素:本发明的目的是提出一种基于词频统计和朴素贝叶斯融合模型的漏洞自动分类方法,通过漏洞的特征属性与自然语言描述挖掘出漏洞的“前提特权集”与“结果特权集”,并以此来判断漏洞之间存在的关联关系。本发明的目的是通过以下技术方案实现的。本发明提出的一种基于词频-逆向文件频率和朴素贝叶斯融合模型的漏洞自动分类方法,具体操作为:步骤一、构建一个漏洞数据库,收集漏洞记录。选取国家漏洞数据库(nationalvulnerabilitydatabase,nvd)作为数据源,构建一个漏洞数据库。所述漏洞数据库包括:通用漏洞(commonvulnerabilitiesandexposures,cve)编号、通用漏洞评分系统(commonvulnerabilityscoringsystem,cvss)评分、是否需要网络、获取容易程度、是否需要认证、机密性影响、完整性影响、可用性影响、漏洞描述、前提特权集、结果特权集。其中,通用漏洞cve编号、通用漏洞评分系统cvss评分、是否需要网络、获取容易程度、是否需要认证、机密性影响、完整性影响、可用性影响、漏洞描述字段是通过国家漏洞数据库直接获取的。前提特权集和结果特权集为空。所述漏洞描述字段是用自然语言描述漏洞的特征,“漏洞描述”字段为“…users/attackersto…by/via…”格式。步骤二、确定特权集类别。特权集类别包括:超级系统管理员特权集、普通系统管理员特权集、普通用户特权集、访问者特权集、受限访问者特权集。所述超级系统管理员特权集包含系统管理员所拥有的所有权限。超级系统管理员为拥有系统最高权限的用户帐号,超级系统管理员的权限为:管理系统设备、系统文件和系统进程,读写任意文件内容。攻击者利用超级系统管理员特权集造成的危害有:植入系统级木马,以虚假身份欺骗或直接追加、修改、删除、创建文件内容,造成系统不可恢复性崩溃。所述普通系统管理员特权集包含系统管理员所拥有的部分权限。普通管理员的权限为:管理部分系统设备、系统文件和系统进程,读写部分系统文件内容。攻击者利用普通系统管理员特权集造成的危害有:通过追加、修改、删除、创建某些系统文件内容或系统进程内存空间的数据结构,造成系统某些文件看起来不可用、系统当机或拒绝服务。所述普通用户特权集包含普通用户所拥有的所有权限。普通用户所拥有的权限为:在自己独立私有的资源空间内追加、修改、删除、创建个人文件。攻击者利用普通用户特权集造成的的危害有:植入用户级木马,修改普通用户的所有文件或进程空间的内容,导致用户崩溃或不可用。所述访问者特权集包含受信任的系统远程访问者所拥有的所有权限。受信任的系统远程访问者所拥有的权限有:与系统交互数据、扫描系统信息。攻击者利用访问者特权集造成的危害有:帮助其他受限访问者用户完成身份验证或发送大量数据包造成系统内存溢出。所述受限访问者特权集是指除去以上四种角色之外的、被系统防火墙隔离在外的不受信任的访问者所拥有的权限。不受信任的访问者仅拥有证实主机有效性的权限,不具备使用该系统的任何权限。攻击者利用受限访问者特权集不能对系统造成危害。漏洞的前提特权集的取值集合为{“受限访问者特权集”,“访问者特权集”,“普通用户特权集”},结果特权集的取值集合为{“访问者特权集”,“普通用户特权集”,“普通系统管理员特权集”,“超级系统管理员特权集”}。步骤三、训练词频-逆向文件频率(termfrequency-inversedocumentfrequency,tfidf)分类器。针对步骤二所述的5个特权集类别,分别训练3个前提特权集训练器和4个结果特权集训练器。具体操作为:步骤3.0:从步骤一中所述漏洞数据库中选取一部分漏洞记录,作为训练数据集。然后人工标注每条漏洞记录的前提特权集和结果特权集。步骤3.1:从训练数据集中选取前提特权集为普通用户特权集的300条以上数据。步骤3.2:对每条训练数据中的“漏洞描述”字段进行处理。“漏洞描述”字段为“…user/attackersto…by/via…”格式。将“by/via”之后的部分截取出来,存入文件d1中,每条训练数据占一行,文件d1的行数用符号j1表示。步骤3.3:利用开源分词工具(standardanalyzer)对文件d1进行处理,统计每个单词出现的数量,文件d1中出现的单词的数量用符号i1表示。步骤3.4:通过公式(1)计算单词的重要性。其中,tfi,j表示第i个单词在第j行的重要性,i和j均为正整数,并且i∈[1,i1],j∈[1,j1];ni,j表示第i个单词在第j行中出现的次数。步骤3.5:通过公式(2)计算第i个单词的逆向文件频率,用符号idfi表示。逆向文件频率用来度量单词的普遍性。其中,ti表示第i个单词;|{j:ti∈rj}|表示文件d1包含单词ti的行数。步骤3.6:通过公式(3)计算单词的权重得分。其中,tfidfi表示第i个单词的权重得分。某一行的高词语频率,以及该词语在整个文件内的低行数频率,可以产生高权重的tfidfi。因此,tfidfi值倾向于过滤掉常见词语,保留重要的词语。步骤3.7:将文件d1中出现的单词按照tfidfi值降序排列,取前k个词作为特征关键词,k∈[5,12]。记录特征关键词及对应的tfidfi值。并通过公式(4)计算每个关键词的avli值,avli值的作用是将权重得分映射到0-1中。步骤3.8:经过步骤3.1至3.7的操作,得到前提特权集为普通用户特权集对应的特征关键词及对应的avli值。步骤3.9:从训练数据集中选取前提特权集为访问者特权集的300条以上数据。重复3.2至至3.7的操作,得到前提特权集为访问者特权集对应的特征关键词及对应的avli值。步骤3.10:从训练数据集中选取前提特权集为受限访问者特权集的300条以上数据。重复3.2至至3.7的操作,得到前提特权集为受限访问者特权集对应的特征关键词及对应的avli值。步骤3.11:从训练数据集中选取结果特权集为超级系统管理员特权集的300条以上数据。步骤3.12:对每条训练数据中的“漏洞描述”字段进行处理。“漏洞描述”字段为“…user/attackersto…by/via…”格式。将“to”到“by/via”之间的部分截取出来,存入文件d2中,每条训练数据占一行,文件d2的行数用符号j2表示。步骤3.13:利用开源分词工具(standardanalyzer)对文件d2进行处理,统计每个单词出现的数量,文件d2中出现的单词的数量用符号i2表示。步骤3.14:通过公式(5)计算单词的重要性。其中,tfi′,j′表示第i′个单词在第j′行的重要性,i′和j′均为正整数,并且i∈[1,i2],j∈[1,j2];ni′,j′表示第i′个单词在第j′行中出现的次数。步骤3.15:通过公式(6)计算第i′个单词的逆向文件频率,用符号idfi′表示。逆向文件频率用来度量单词的普遍性。其中,ti′表示第i′个单词;|{j′:ti′∈rj′}|表示文件d2包含单词ti′的行数。步骤3.16:通过公式(7)计算单词的权重得分。其中,tfidfi′表示第i′个单词的权重得分。步骤3.17:将文件d2中出现的单词按照tfidfi′值降序排列,取前k'个词作为特征关键词,k'∈[5,12],k'为人为设定值。记录特征关键词及对应的tfidfi′值。然后,通过公式(8)计算每个关键词的权重得分映射到0-1中,得到的结果用符号avli'表示。步骤3.18:经过步骤3.11至3.17的操作,得到结果特权集为超级系统管理员特权集对应的特征关键词及对应的avli'值。步骤3.19:从训练数据集中选取结果特权集为普通系统管理员特权集的300条以上数据。重复3.12至至3.17的操作,得到结果特权集为普通系统管理员特权集对应的特征关键词及对应的avli'值。步骤3.20:从训练数据集中选取结果特权集为普通用户特权集的300条以上数据。重复3.12至3.17的操作,得到结果特权集为普通用户特权集对应的特征关键词及对应的avli'值。步骤3.21:从训练数据集中选取结果特权集为访问者特权集的300条以上数据。重复3.12至至3.17的操作,得到结果特权集为访问者特权集对应的特征关键词及对应的avli'值。步骤四、测试词频-逆向文件频率分类器分类结果和准确率。步骤4.1:从步骤一中所述漏洞数据库中选取一条测试数据。步骤4.2:对测试数据中的“漏洞描述”字段进行处理。“漏洞描述”字段为“…user/attackersto…by/via…”格式。将“by/via”之后的部分截取出来,并利用开源分词工具(standardanalyzer)处理,得到若干个单词。步骤4.3:对于步骤4.2得到的单词,依次查找每个单词是否在步骤3.8得到前提特权集为普通用户特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli值并求和,结果用符号p1表示。步骤4.4:对于步骤4.2得到的单词,依次查找每个单词是否在步骤3.9得到前提特权集为访问者特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli值并求和,结果用符号p2表示。步骤4.5:对于步骤4.2得到的单词,依次查找每个单词是否在步骤3.10得到前提特权集为受限访问者特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli值并求和,结果用符号p3表示。步骤4.6:比较p1、p2和p3的值,选取最大值对应的特权集作为该条测试数据的前提特权集的值。步骤4.7:对测试数据中的“漏洞描述”字段进行处理。“漏洞描述”字段为“…user/attackersto…by/via…”格式。将“to”到“by/via”之间的部分截取出来,并利用开源分词工具(standardanalyzer)处理,得到若干个单词。步骤4.8:对于步骤4.7得到的单词,依次查找每个单词是否在步骤3.18得到的结果特权集为超级系统管理员特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli'值并求和,结果用符号r1表示。步骤4.9:对于步骤4.7得到的单词,依次查找每个单词是否在步骤3.19得到的结果特权集为普通系统管理员特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli'值并求和,结果用符号r2表示。步骤4.10:对于步骤4.7得到的单词,依次查找每个单词是否在步骤3.20得到的结果特权集为普通用户特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli'值并求和,结果用符号r3表示。步骤4.11:对于步骤4.7得到的单词,依次查找每个单词是否在步骤3.21得到的访问者特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli'值并求和,结果用符号r4表示。步骤4.12:比较r1、r2、r3和r4的值,选取最大值对应的特权集作为该条测试数据的结果特权集的值。步骤4.13:在步骤一所述的漏洞数据库中选取100条以上前提特权集为受限访问者特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.2至4.6的操作,得到所述100条以上测试数据的前提特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arp1表示。步骤4.14:在步骤一所述的漏洞数据库选取100条以上前提特权集为访问者特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复4.2至4.6的操作,得到所述100条以上测试数据前提特权集的分类结果,对比预先标注的分类结果,并将准确率记录为arp2。步骤4.15:在步骤一所述的漏洞数据库选取100条以上前提特权集为普通用户特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复4.2至4.6的操作,得到所述100条以上测试数据前提特权集的分类结果,对比预先标注的分类结果,并将准确率记录为arp3。步骤4.16:利用公式(9)计算词频-逆向文件频率分类器在前提特权集分类结果的平均准确率,用符号w_pre1表示。w_pre1=(arp1+arp2+arp3)/3(9)步骤4.17:在步骤一所述的漏洞数据库中选取100条以上结果特权集为访问者特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.7至4.12的操作,得到所述100条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arr1表示。步骤4.18:在步骤一所述的漏洞数据库中选取100条以上结果特权集为普通用户特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.7至4.12的操作,得到所述100条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arr2表示。步骤4.19:在步骤一所述的漏洞数据库中选取100条以上结果特权集为普通系统管理员特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.7至4.12的操作,得到所述100条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arr3表示。步骤4.20:在步骤一所述的漏洞数据库中选取100条以上结果特权集为超级系统管理员特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.7至4.12的操作,得到所述100条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arr4表示。步骤4.21:利用公式(10)计算词频-逆向文件频率分类器在结果特权集分类结果的平均准确率。w_res1=(arr1+arr2+arr3+arr4)/4(10)步骤五、建立朴素贝叶斯分类器。每一个漏洞拥有前提特权集与结果特权集,所以训练2个朴素贝叶斯分类器,一个是前提特权集训练器和一个是结果特权集训练器。具体操作为:步骤5.1:在步骤一所述的漏洞数据库中选取一部分漏洞数据作为训练数据,构成训练数据集,所述训练数据集中前提特权集分别是“受限访问者特权集”、“访问者特权集”、“普通用户特权集”的数据条数相同。用符号c表示前提特权集所有的分类集合,c={c1,c2,c3},其中,c1表示“受限访问者特权集”,c2表示“访问者特权集”,c3表示“普通用户特权集”。步骤5.2:用符号va表示漏洞数据的属性集合,va={a1,a2...a7},其中,a1表示通用漏洞评分系统评分,a2表示是否需要网络,a3表示获取容易程度,a4表示是否需要认证,a5表示机密性影响,a6表示完整性影响,a7表示可用性影响。步骤5.3:对于步骤5.1选取的训练数据集,统计训练数据的前提特权集分别在c1、c2、c3中每一个属性ax的概率分布p(ax|cy),(x∈[1,7],y∈[1,3])。为了防止出现p(ax|cy)的值为0时,对结果产生不利影响,设定p(ax|cy)=0时,p(ax|cy)=1。经过步骤5.1至步骤5.3完成前提特权集分类器的建立。步骤5.4:在步骤一所述的漏洞数据库中选取一部分漏洞数据作为训练数据,构成训练数据集,所述训练数据集中结果特权集分别是“访问者特权集”、“普通用户特权集”、“普通系统管理员特权集”与“超级系统管理员特权集”的数据条数相同。用符号c'表示结果特权集所有的分类集合,c'={c′1,c′2,c′3,c′4},其中,c'1表示“访问者特权集”,c'2表示“普通用户特权集”,c'3表示“普通系统管理员特权集”,c'4表示“超级系统管理员特权集”。步骤5.5:用符号va表示漏洞数据的属性集合,va={a1,a2...a7},其中,a1表示通用漏洞评分系统评分,a2表示是否需要网络,a3表示获取容易程度,a4表示是否需要认证,a5表示机密性影响,a6表示完整性影响,a7表示可用性影响。步骤5.6:对于步骤5.4选取的训练数据集,统计其结果特权集分别在c1′、c′2、c3′和c'4中每一个属性ax′的概率分布p(ax|c′y′),(x∈[1,7],y′∈[1,4])。为了防止出现0值对结果产生不利影响,当p(ax|c′y′)=0时,设定p(ax|c′y′)=1。经过步骤5.4至步骤5.6完成结果特权集分类器的建立。步骤六、测试朴素贝叶斯分类器分类结果和准确率。步骤6.1:步骤4.1中所述测试数据,用符号vb表示。步骤6.2:根据贝叶斯定理,利用公式(11)来计算测试数据vb的前提特权集对应于分类cy的概率值。其中,n表示步骤5.1中所述训练数据集中训练样本的数量;p(vb|cy)p(cy)利用公式(12)计算得到。步骤6.3:为了表示方便,把步骤6.2计算得到的概率值p(cy|vb)用符号pre_bpy表示,y∈[1,3];然后,将pre_bpy中最大的概率值对应的分类作为测试数据vb的前提特权集的值。步骤6.4:根据贝叶斯定理,利用公式(13)来计算测试数据vb的结果特权集对应于分类c′j的概率值。其中,p(vb|c′y')p(c′y')利用公式(14)计算得到。步骤6.5:为了方便表示,把通过步骤6.4计算得到的概率值p(c′y′|vb)用符号pre_bpy′表示,y′∈[1,4]。然后,将pre_bpy′中最大的概率值对应的分类作为测试数据vb的结果特权集的值。步骤6.6:在步骤一提到的漏洞数据库中选取300条以上漏洞数据,作为测试数据。其中前提特权集属于受限访问者特权集、访问者特权集、普通用户特权集的测试数据数据条数相同。步骤6.7:依次对选取出来的每条测试数据重复步骤6.2至6.3的操作,得到所述300条以上测试数据的前提特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号w_pre2表示。步骤6.8:在步骤一提到的漏洞数据库中选取400条以上已分类的漏洞数据,作为测试数据。其中结果特权集属于访问者特权集、普通用户特权集、普通系统管理员特权集、超级系统管理员特权集的测试数据数据条数相同。步骤6.9:依次对选取出来的每条测试数据重复步骤6.4至6.5的操作,得到所述400条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号w_res2表示。步骤七、分类器融合。对于测试数据vb,通过计算它在两个分类器中前提特权集与结果特权集的分类结果,通过准确率作为得数权重将两个结果进行融合。具体为:步骤7.1:对于测试数据vb,通过公式(15)计算它的前提特权集的分类结果,并从3个f_preq值中选择最大值,并把所述最大值对应的分类作为测试数据vb的前提特权集。f_preq=pre_avlq×w_pre1+pre_bpq×w_pre2,q∈[1,3](15)步骤7.2:对于测试数据vb,通过公式公式(16)计算它的结果特权集的分类结果,并从4个f_resq'值中选择最大值,并把所述最大值对应的分类作为测试数据vb的结果特权集。f_resq'=res_avlq'×w_res1+res_bpq'×w_res2,q'∈[1,4](16)经过上述步骤的操作,即完成对测试数据vb的自动分类。有益效果本发明提出的支持漏洞关联性挖掘的漏洞自动分类法与已有方法相比较,其优点是:本发明方法不仅利用了漏洞数据库中“漏洞描述”字段,同时考虑了漏洞的“可用性评分”、“影响性评分”等属性对漏洞关联性的影响,分类准确率得到大幅提高。附图说明图1为本发明具体实施方式中支持漏洞关联性挖掘的漏洞自动分类法的流程图;图2为本发明具体实施方式中使用相同的漏洞数据库,分别采用决策树方法(dt)、神经网络分类法(bpn)、贝叶斯分类方法(bayes)和国家发明专利《支持漏洞关联性挖掘的漏洞自动分类方法》(申请号:201710052203.9)中的方法(tfidf)以及本发明方法(fusion)对漏洞进行分类,分类结果的准确率柱状图。具体实施方式下面结合附图和实施例对本发明技术方案做详细描述。采用本发明提出的基于词频-逆向文件频率和朴素贝叶斯融合模型的漏洞自动分类方法对漏洞进行分类并得到漏洞间关联关系的操作流程如图1所示,具体操作步骤为:步骤一、构建一个漏洞数据库,从国家漏洞数据库(nationalvulnerabilitydatabase,nvd)下载2010-2016年的漏洞数据,挑选linux下漏洞数据并筛选字段后导入本地数据库。本地漏洞数据库字段如表1所示。表1漏洞数据库字段表字段名称中文名称字段来源cve_id通用漏洞编号namecvss_score通用漏洞评级系统评分cvss_scorevector_av是否需要网络cvss_vectorvector_ac获取容易程度cvss_vectorvector_au是否需要认证cvss_vectorvector_c机密性影响cvss_vectorvector_i完整性影响cvss_vectorvector_n可用性影响cvss_vectordescript漏洞描述descriptv_pre前提特权集漏洞描述字段挖掘v_res结果特权集漏洞描述字段挖掘步骤二、确定特权集类别。特权集类别包括:超级系统管理员特权集、普通系统管理员特权集、普通用户特权集、访问者特权集、受限访问者特权集。每个特权集对应英文标识如表2所示。表2特权集对应英文标识表漏洞的前提特权集的取值集合为{“受限访问者特权集”,“访问者特权集”,“普通用户特权集”},结果特权集的取值集合为{“访问者特权集”,“普通用户特权集”,“普通系统管理员特权集”,“超级系统管理员特权集”}。步骤三、训练词频-逆向文件频率分类器分类器。针对步骤二所述的5个特权集类别,分别训练3个前提特权集训练器和4个结果特权集训练器。具体操作为:步骤3.0:从步骤一中所述漏洞数据库中选取一部分漏洞记录,作为训练数据集。然后人工标注每条漏洞记录的前提特权集和结果特权集。包含漏洞描述、前提特权集和结果特权集的训练数据集如表3所示。表3训练数据集步骤3.1:从训练数据集中选取前提特权集为普通用户特权集的323条数据。步骤3.2:对每条训练数据中的“漏洞描述”字段进行处理。“漏洞描述”字段为“…usersto…by/via…”格式。将“to”到“by/via”之间的部分截取出来,存入文件d1中,每条训练数据占一行,文件d1的行数j1=323。步骤3.3:利用开源分词工具(standardanalyzer)对文件d1进行处理,统计每个单词出现的数量,文件d1中出现的单词的数量i1=1346。步骤3.4:通过公式(1)计算单词的重要性。其中,tfi,j表示第i个单词在第j行的重要性,i和j均为正整数,并且i∈[1,i1],j∈[1,j1];ni,j表示第i个单词在第j行中出现的次数。文件d1中的第1个单词为“execute”,在第一行出现了1次,而第一行一共出现了5个单词,所以单词“execute”在第一行的重要性tfi,j=0.2。步骤3.5:通过公式(2)计算第i个单词的逆向文件频率,用符号idfi表示。逆向文件频率用来度量单词的普遍性。其中,ti表示第i个单词;|{j:ti∈rj}|表示文件d1包含单词ti的行数。在全部323行数据中,包含单词“execute”的行数为46行,所以单词“execute”的idf1=0.84.步骤3.6:通过公式(3)计算单词的权重得分。单词“execute”的tfidf1值为9.66.其中,tfidfi表示第i个单词的权重得分。某一行的高词语频率,以及该词语在整个文件内的低行数频率,可以产生高权重的tfidfi。因此,tfidfi值倾向于过滤掉常见词语,保留重要的词语。步骤3.7:将文件d1中出现的单词按照tfidfi值降序排列,取前8个词作为特征关键词,记录特征关键词及对应的tfidfi值。步骤3.8:经过步骤3.1至3.7的操作,得到前提特权集为普通用户特权集对应的特征关键词及对应的tfidfi值与avli值,如表4所示。表4前提特权集为普通用户特权集的特征关键词与对应的tfidfi值对应表步骤3.9:从训练数据集中选取前提特权集为访问者特权集的300条以数据。重复3.2至至3.7的操作,得到前提特权集为访问者特权集对应的特征关键词及对应的tfidfi值,如表5所示。表5前提特权集为访问者特权集的特征关键词与对应的tfidfi值对应表特征关键词tfidfiavlipackage12.840.37craft11.670.34vector7.560.22access5.780.17file4.960.14message2.010.06send1.450.04bypass1.040.03步骤3.10:从训练数据集中选取前提特权集为受限访问者特权集的300条以上数据。重复3.2至至3.7的操作,得到前提特权集为受限访问者特权集对应的特征关键词及对应的tfidfi值,如表6所示。表6前提特权集为受限访问者特权集的特征关键词与对应的tfidfi值对应表步骤3.11:从训练数据集中选取结果特权集为超级系统管理员特权集的300条数据。步骤3.12:对每条训练数据中的“漏洞描述”字段进行处理。“漏洞描述”字段为“…usersto…by/via…”格式。将“by/via”之后的部分截取出来,存入文件d2中,每条训练数据占一行,文件d2的行数用符号j2表示。步骤3.13:利用开源分词工具(standardanalyzer)对文件d2进行处理,统计每个单词出现的数量,文件d2中出现的单词的数量用符号i2表示。步骤3.14:通过公式(4)计算单词的重要性。其中,tfi′,j′表示第i′个单词在第j′行的重要性,i′和j′均为正整数,并且i∈[1,i2],j∈[1,j2];ni′,j′表示第i′个单词在第j′行中出现的次数。步骤3.15:通过公式(5)计算第i′个单词的逆向文件频率,用符号idfi′表示。逆向文件频率用来度量单词的普遍性。其中,ti′表示第i′个单词;|{j′:ti′∈rj′}|表示文件d2包含单词ti′的行数。步骤3.16:通过公式(6)计算单词的权重得分。其中,tfidfi′表示第i′个单词的权重得分。步骤3.17:将文件d2中出现的单词按照tfidfi′值降序排列,取前8个词作为特征关键词。记录特征关键词及对应的tfidfi′值。步骤3.18:经过步骤3.11至3.17的操作,得到结果特权集为超级系统管理员特权集对应的特征关键词及对应的tfidfi′值,如表7所示。表7结果特权集为超级系统管理员特权集的特征关键词与对应的tfidfi值对应表特征关键词tfidfiavliroot11.240.18gain10.630.17obtain10.260.17access9.540.15privilege9.320.15system5.640.09denial2.540.04service2.540.04步骤3.19:从训练数据集中选取结果特权集为普通系统管理员特权集的300条以上数据。重复3.12至至3.17的操作,得到结果特权集为普通系统管理员特权集对应的特征关键词及对应的tfidfi′值,如表8所示。表8结果特权集为普通系统管理员特权集的特征关键词与对应的tfidfi值对应表特征关键词tfidfiavliprivilege9.870.25gain9.560.25access8.720.22arbitrary3.210.08service2.540.06bypass2.190.06denial1.960.05guest1.210.03步骤3.20:从训练数据集中选取结果特权集为普通用户特权集的300条以上数据。重复3.12至至3.17的操作,得到结果特权集为普通用户特权集对应的特征关键词及对应的tfidfi′值。表9结果特权集为普通用户特权集的特征关键词与对应的tfidfi值对应表步骤3.21:从训练数据集中选取结果特权集为访问者特权集的300条以上数据。重复3.12至至3.17的操作,得到结果特权集为访问者特权集对应的特征关键词及对应的tfidfi′值。表10结果特权集为访问者特权集的特征关键词与对应的tfidfi值对应表特征关键词tfidfiavlifirewall8.540.19gain7.650.17bypass7.430.17list5.940.12transmission5.610.12communication4.930.11sensitive3.380.07read2.630.05步骤四、测试词频-逆向文件频率分类器分类结果和准确率。步骤4.1:从步骤一中所述漏洞数据库中选取一条测试数据。选取的测试数据cve_id为cve-2014-3390,漏洞描述字段为“thevirtualnetworkmanagementcenter(vnmc)policyimplementationinciscoasasoftware8.7before8.7(1.14),9.2before9.2(2.8),and9.3before9.3(1.1)allowslocaluserstoobtainlinuxrootaccessbyleveragingadministrativeprivilegesandexecutingacraftedscript”。步骤4.2:对测试数据中的“漏洞描述”字段进行处理。“漏洞描述”字段为“…user/attackersto…by/via…”格式。将“by/via”之后的部分截取出来,并利用开源分词工具(standardanalyzer)处理,得到若干个单词。截取的漏洞描述字段内容为“leveragingadministrativeprivilegesandexecutingacraftedscript”,得到的单词为(“leverage”,“administrative”,“privilege”,“execute”,“craft”,“script”)。步骤4.3:对于步骤4.2得到的单词,依次查找每个单词是否在步骤3.8得到前提特权集为普通用户特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli值并求和,结果用符号p1表示。对于步骤4.2得到的单词,“leverage”、“execute”、“craft”和“script”在步骤3.8得到的前提集为普通用户特权集对应的特征关键词中出现,将它们对应的avli值相加,所以p1=0.57.步骤4.4:对于步骤4.2得到的单词,依次查找每个单词是否在步骤3.9得到前提特权集为访问者特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli值并求和,结果用符号p2表示。步骤4.2得到的单词都没有在步骤3.9得到前提集为访问者特权集对应的特征关键词中出现,所以p2=0.步骤4.5:对于步骤4.2得到的单词,依次查找每个单词是否在步骤3.10得到前提特权集为受限访问者特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli值并求和,结果用符号p3表示。步骤4.2得到的单词都没有在步骤3.10得到前提集为受限访问者特权集对应的特征关键词中出现,所以p3=0。步骤4.6:比较p1、p2和p3的值,选取最大值对应的特权集作为该条测试数据的前提特权集的值。比较p1、p2和p3的值,选取最大值p1对应的普通用户特权集作为该条测试数据的前提特权集的值,所以该条漏洞数据的前提特权集字段的值为“user”。步骤4.7:对测试数据中的“漏洞描述”字段进行处理。“漏洞描述”字段为“…user/attackersto…by/via…”格式。将“to”到“by/via”之间的部分截取出来,并利用开源分词工具(standardanalyzer)处理,得到若干个单词。截取的漏洞描述字段内容为“obtainlinuxrootaccess”,得到的单词为(“obtain”,“linux”,“root”,“access”)。步骤4.8:对于步骤4.7得到的单词,依次查找每个单词是否在步骤3.18得到的结果特权集为超级系统管理员特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli'值并求和,结果用符号r1表示。对于步骤4.7得到的单词,“root”、“obtain”、“access”在步骤3.18得到的结果集为超级系统管理员特权集对应的特征关键词中出现,将它们对应的tfidfi'值相加,所以r1=0.5。步骤4.9:对于步骤4.7得到的单词,依次查找每个单词是否在步骤3.19得到的结果特权集为普通系统管理员特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli'值并求和,结果用符号r2表示。对于步骤4.7得到的单词,“access”在步骤3.19得到的结果集为普通系统管理员特权集对应的特征关键词中出现,将它对应的tfidfi'值作为r2,所以r2=0.22.步骤4.10:对于步骤4.7得到的单词,依次查找每个单词是否在步骤3.20得到的结果特权集为普通用户特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli'值并求和,结果用符号r3表示。对于步骤4.7得到的单词,“access”在步骤3.20得到的结果集为普通用户特权集对应的特征关键词中出现,将它对应的tfidfi'值作为r3,所以r3=0.04。步骤4.11:对于步骤4.7得到的单词,依次查找每个单词是否在步骤3.21得到的访问者特权集对应的特征关键词中出现,如果出现,则记录该特征关键词对应的avli'值并求和,结果用符号r4表示。步骤4.7得到的单词都没有在步骤3.21得到的结果集为访问者特权集对应的特征关键词中出现,所以r4=0.步骤4.12:比较r1、r2、r3和r4的值,选取r1对应的超级系统管理员特权集作为该条测试数据的结果特权集的值,所以该条漏洞数据的结果特权集的值为“root”。步骤4.13:在步骤一所述的漏洞数据库中选取100条前提特权集为受限访问者特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.2至4.6的操作,得到所述100条以上测试数据的前提特权集的分类结果,对比预先标注的分类结果,计算准确率,arp1=91.46%。步骤4.14:在步骤一所述的漏洞数据库选取100条前提特权集为访问者特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复4.2至4.6的操作,得到所述100条以上测试数据前提特权集的分类结果,对比预先标注的分类结果,并记录准确率arp2=94.52%。步骤4.15:在步骤一所述的漏洞数据库选取100条前提特权集为普通用户特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复4.2至4.6的操作,得到所述100条以上测试数据前提特权集的分类结果,对比预先标注的分类结果,并将准确率记录为arp3,arp3=89.25%。步骤4.16:利用公式(9)计算词频-逆向文件频率分类器在前提特权集分类结果的平均准确率,用符号w_pre1表示。w_pre1=(arp1+arp2+arp3)/3(9)计算结果为w_pre1=91.74%。步骤4.17:在步骤一所述的漏洞数据库中选取100条结果特权集为访问者特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.7至4.12的操作,得到所述100条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arr1表示,arr1=88.46%。步骤4.18:在步骤一所述的漏洞数据库中选取100条结果特权集为普通用户特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.7至4.12的操作,得到所述100条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arr2表示,arr2=92.49%。步骤4.19:在步骤一所述的漏洞数据库中选取100条结果特权集为普通系统管理员特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.7至4.12的操作,得到所述100条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arr3表示,arr3=95.28%。步骤4.20:在步骤一所述的漏洞数据库中选取100条结果特权集为超级系统管理员特权集的漏洞数据,作为测试数据,然后依次对选取出来的每条测试数据重复步骤4.7至4.12的操作,得到所述100条以上测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号arr4表示,arr4=93.81%。步骤4.21:利用公式(10)计算词频-逆向文件频率分类器在结果特权集分类结果的平均准确率。w_res1=(arr1+arr2+arr3+arr4)/4(10)计算结果为w_res1=92.51%。步骤五、建立朴素贝叶斯分类器。每一个漏洞拥有前提特权集与结果特权集,所以训练2个朴素贝叶斯分类器,一个是前提特权集训练器和一个是结果特权集训练器。具体操作为:步骤5.1:在步骤一所述的漏洞数据库中选取一部分漏洞数据作为训练数据,构成训练数据集,所述训练数据集中前提特权集分别是“受限访问者特权集”、“访问者特权集”、“普通用户特权集”的数据条数相同。用符号c表示前提特权集所有的分类集合,c={c1,c2,c3},其中,c1表示“受限访问者特权集”,c2表示“访问者特权集”,c3表示“普通用户特权集”。步骤5.2:用符号va表示漏洞数据的属性集合,va={a1,a2...a7},其中,a1表示通用漏洞评分系统评分,a2表示是否需要网络,a3表示获取容易程度,a4表示是否需要认证,a5表示机密性影响,a6表示完整性影响,a7表示可用性影响。其中除了a1外,其余均为离散型数值,所以我们需要把a1的取值离散化,实验中设置了“0-2”、“2-4”、“4-6”、“6-8”、“8-10”五组值。步骤5.3:对于步骤5.1选取的训练数据集,统计训练数据的前提特权集分别在c1、c2、c3中每一个属性ax的概率分布p(ax|cy),(x∈[1,7],y∈[1,3])。为了防止出现p(ax|cy)的值为0时,对结果产生不利影响,设定p(ax|cy)=0时,p(ax|cy)=1。经过步骤5.1至步骤5.3完成前提特权集分类器的建立。步骤5.4:在步骤一所述的漏洞数据库中选取一部分漏洞数据作为训练数据,构成训练数据集,所述训练数据集中结果特权集分别是“访问者特权集”、“普通用户特权集”、“普通系统管理员特权集”与“超级系统管理员特权集”的数据条数相同。用符号c'表示结果特权集所有的分类集合,c'={c′1,c′2,c′3,c′4},其中,c'1表示“访问者特权集”,c'2表示“普通用户特权集”,c'3表示“普通系统管理员特权集”,c'4表示“超级系统管理员特权集”。步骤5.5:用符号va表示漏洞数据的属性集合,va={a1,a2...a7},其中,a1表示通用漏洞评分系统评分,a2表示是否需要网络,a3表示获取容易程度,a4表示是否需要认证,a5表示机密性影响,a6表示完整性影响,a7表示可用性影响。其中除了a1外,其余均为离散型数值,所以我们需要把a1的取值离散化,实验中设置了“0-2”、“2-4”、“4-6”、“6-8”、“8-10”五组值。步骤5.6:对于步骤5.4选取的训练数据集,统计其结果特权集分别在c1′、c′2、c3′和c'4中每一个属性ax′的概率分布p(ax|c′y′),(x∈[1,7],y′∈[1,4])。为了防止出现0值对结果产生不利影响,当p(ax|c′y′)=0时,设定p(ax|c′y′)=1。经过步骤5.4至步骤5.6完成结果特权集分类器的建立。步骤六、测试朴素贝叶斯分类器分类结果和准确率。步骤6.1:步骤4.1中所述测试数据,用符号vb表示。步骤6.2:根据贝叶斯定理,利用公式(11)来计算测试数据vb的前提特权集对应于分类cy的概率值。其中,n表示步骤5.1中所述训练数据集中训练样本的数量;p(vb|cy)p(cy)利用公式(12)计算得到。步骤6.3:为了表示方便,把步骤6.2计算得到的概率值p(cy|vb)用符号pre_bpy表示,y∈[1,3];然后,将pre_bpy中最大的概率值对应的分类作为测试数据vb的前提特权集的值。cve_id为cve-2014-3390的测试数据vb,我们得到它的pre_bpi值为0.67,对应前提特权集分类为“user”。步骤6.4:根据贝叶斯定理,利用公式(13)来计算测试数据vb的结果特权集对应于分类c′j的概率值。其中,p(vb|c′y')p(c′y')利用公式(14)计算得到。步骤6.5:为了方便表示,把通过步骤6.4计算得到的概率值p(c′y′|vb)用符号pre_bpy′表示,y′∈[1,4]。然后,将pre_bpy′中最大的概率值对应的分类作为测试数据vb的结果特权集的值。cve_id为cve-2014-3390的测试数据vb,我们得到它的res_bpi'值为0.58,对应前提特权集分类为“root”。步骤6.6:在步骤一提到的漏洞数据库中选取330条漏洞数据,作为测试数据。其中前提特权集属于受限访问者特权集、访问者特权集、普通用户特权集的测试数据数据条数相同。步骤6.7:依次对选取出来的每条测试数据重复步骤6.2至6.3的操作,得到所述300条以上测试数据的前提特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号w_pre2表示。实验计算得到w_pre2=86.34%。步骤6.8:在步骤一提到的漏洞数据库中选取480条漏洞数据,作为测试数据。其中结果特权集属于访问者特权集、普通用户特权集、普通系统管理员特权集、超级系统管理员特权集的测试数据数据条数相同。步骤6.9:依次对选取出来的每条测试数据重复步骤6.4至6.5的操作,得到所述480测试数据的结果特权集的分类结果,对比预先标注的分类结果,计算准确率,用符号w_res2表示。实验计算得w_res2=84.78%。步骤七、分类器融合。对于测试数据vb,通过计算它在两个分类器中前提特权集与结果特权集的分类结果,通过准确率作为得数权重将两个结果进行融合。具体为:步骤7.1:对于测试数据vb,通过公式(15)计算它的前提特权集的分类结果,并从3个f_preq值中选择最大值,并把所述最大值对应的分类作为测试数据vb的前提特权集。f_preq=pre_avlq×w_pre1+pre_bpq×w_pre2,q∈[1,3](15)实验中选取cve-2016-2207漏洞作测试,该漏洞在前提特权集三个分类受限访问者特权集、访问者特权集与普通用户特权集的结果分别记为pre_avl1=0.56、pre_avl2=0.27与pre_avl3=0.12;在贝叶斯分类器同样得到它在这三个分类上的结果,分别记作pre_bp1=0.53、pre_bp2=0.36与pre_bp3=0.11。利用公式(15)对最终结果进行计算,得到f_pre1=0.97,f_pre2=0.57,f_pre3=0.21。把f_pre1对应的分类结果“access”作为待分类漏洞cve-2016-2207的前提特权集。步骤7.2:对于测试数据vb,通过公式公式(16)计算它的结果特权集的分类结果,并从4个f_resq'值中选择最大值,并把所述最大值对应的分类作为测试数据vb的结果特权集。f_resq'=res_avlq'×w_res1+res_bpq'×w_res2,q'∈[1,4](16)实验中选取cve-2016-2207漏洞作测试,该漏洞在结果特权集四个分类访问者特权集、普通用户特权集、普通系统管理员特权集与超级系统管理员特权集的结果分别记为res_avl1=0、res_avl2=0.52、res_avl3=0.28与res_avl4=0.21;在贝叶斯分类器同样得到它在这四个分类上的结果,分别记作res_bp1=0.18、res_bp2=0.44、res_bp3=0.21与res_bp4=0.17,利用公式(16)计算融合得到的结果。利用公式(16)对最终结果进行计算,得到f_res1=0.15,f_res2=0.85,f_res3=0.44,f_res4=0.34。把f_res2对应的分类结果“user”作为待分类漏洞cve-2016-2207的结果特权集。比较漏洞cve-2016-2207与漏洞cve-2014-3390,漏洞cve-2016-2207的前提特权集为access,结果特权集为user;漏洞cve-2014-3390的前提特权集为user,结果特权集为root。对于一个远程访问者来说,特权集为access,不能直接利用漏洞cve-2014-3390,但是该远程访问者可以先利用漏洞cve-2016-2207使自己的特权集提升至user,然后就可以利用漏洞cve-2016-2207,最终一个远程访问者通过一次多级攻击获取了系统的root权限。由此可以得出漏洞cve-2016-2207与漏洞cve-2014-3390是相关联的。为了说明本方法(fusion)的有效性,使用相同的漏洞数据库,分别采用决策树方法(dt)、神经网络分类法(bpn)、贝叶斯分类方法(bayes)和国家发明专利《支持漏洞关联性挖掘的漏洞自动分类方法》(申请号:201710052203.9)中的方法(tfidf)对漏洞进行分类,分类结果的准确率如图2所示。从图2可以看出,单独使用tfidf分类方法使得漏洞分类平均准确率达到了约88.74%。在这几种分类上的整体表现基本优于dt、bpn与bayes,这是因为关于漏洞特权提升的描述信息更多的存在于“漏洞描述”字段中,这个结果表明对自然语言文本的特征提取取得了不错的效果,较为准确地找到了体现每一种分类本质的单词或词组。而后三个分类器也有平均约70%的准确率,这表示漏洞的其他属性如影响性评分、可用性评分等属性与特权提升也存在着一些间接的联系,比如漏洞前提特权集的等级越高,一定程度上反应了较高的攻击复杂度,而漏洞结果特权集越高表示漏洞的危害程度越大等等。实验结果证明了tfidf与bayes两个分类器的融合产生了非常不错的效果,使得分类的准确率获得了大幅提升,在不同分类上的平均准确率达到了94.9%。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1