[发明专利]基于词频统计和朴素贝叶斯融合模型的漏洞自动分类方法有效
申请号: | 201710495331.0 | 申请日: | 2017-06-26 |
公开(公告)号: | CN107273752B | 公开(公告)日: | 2020-12-11 |
发明(设计)人: | 胡昌振;吕坤;张皓 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06K9/62;G06F40/216;G06F40/284;H04L29/06 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 仇蕾安 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于词频统计和朴素贝叶斯融合模型的漏洞自动分类方法,属于信息安全技术领域。具体操作为:步骤一、构建一个漏洞数据库,收集漏洞记录。步骤二、确定特权集类别。步骤三、训练词频‑逆向文件频率分类器。步骤四、测试词频‑逆向文件频率分类器分类结果和准确率。步骤五、建立朴素贝叶斯分类器。步骤六、测试朴素贝叶斯分类器分类结果和准确率。步骤七、分类器融合。本发明提出的支持漏洞关联性挖掘的漏洞自动分类法与已有方法相比较,其优点是:本发明方法不仅利用了漏洞数据库中“漏洞描述”字段,同时考虑了漏洞的“可用性评分”、“影响性评分”等属性对漏洞关联性的影响,分类准确率得到大幅提高。 | ||
搜索关键词: | 基于 词频 统计 朴素 贝叶斯 融合 模型 漏洞 自动 分类 方法 | ||
【主权项】:
一种基于词频‑逆向文件频率和朴素贝叶斯融合模型的漏洞自动分类方法,具体操作为:步骤一、构建一个漏洞数据库,收集漏洞记录;选取国家漏洞数据库NVD作为数据源,构建一个漏洞数据库;所述漏洞数据库包括:通用漏洞CVE编号、通用漏洞评分系统CVSS评分、是否需要网络、获取容易程度、是否需要认证、机密性影响、完整性影响、可用性影响、漏洞描述、前提特权集、结果特权集;其中,通用漏洞CVE编号、通用漏洞评分系统CVSS评分、是否需要网络、获取容易程度、是否需要认证、机密性影响、完整性影响、可用性影响、漏洞描述字段是通过国家漏洞数据库直接获取的;前提特权集和结果特权集为空;所述漏洞描述字段是用自然语言描述漏洞的特征,“漏洞描述”字段为“…users/attackers to…by/via…”格式;步骤二、确定特权集类别;特权集类别包括:超级系统管理员特权集、普通系统管理员特权集、普通用户特权集、访问者特权集、受限访问者特权集;所述超级系统管理员特权集包含系统管理员所拥有的所有权限;超级系统管理员为拥有系统最高权限的用户帐号,超级系统管理员的权限为:管理系统设备、系统文件和系统进程,读写任意文件内容;攻击者利用超级系统管理员特权集造成的危害有:植入系统级木马,以虚假身份欺骗或直接追加、修改、删除、创建文件内容,造成系统不可恢复性崩溃;所述普通系统管理员特权集包含系统管理员所拥有的部分权限;普通管理员的权限为:管理部分系统设备、系统文件和系统进程,读写部分系统文件内容;攻击者利用普通系统管理员特权集造成的危害有:通过追加、修改、删除、创建某些系统文件内容或系统进程内存空间的数据结构,造成系统某些文件看起来不可用、系统当机或拒绝服务;所述普通用户特权集包含普通用户所拥有的所有权限;普通用户所拥有的权限为:在自己独立私有的资源空间内追加、修改、删除、创建个人文件;攻击者利用普通用户特权集造成的的危害有:植入用户级木马,修改普通用户的所有文件或进程空间的内容,导致用户崩溃或不可用;所述访问者特权集包含受信任的系统远程访问者所拥有的所有权限;受信任的系统远程访问者所拥有的权限有:与系统交互数据、扫描系统信息;攻击者利用访问者特权集造成的危害有:帮助其他受限访问者用户完成身份验证或发送大量数据包造成系统内存溢出;所述受限访问者特权集是指除去以上四种角色之外的、被系统防火墙隔离在外的不受信任的访问者所拥有的权限;不受信任的访问者仅拥有证实主机有效性的权限,不具备使用该系统的任何权限;攻击者利用受限访问者特权集不能对系统造成危害;漏洞的前提特权集的取值集合为{“受限访问者特权集”,“访问者特权集”,“普通用户特权集”},结果特权集的取值集合为{“访问者特权集”,“普通用户特权集”,“普通系统管理员特权集”,“超级系统管理员特权集”};步骤三、训练词频‑逆向文件频率(Term Frequency‑Inverse Document Frequency,TFIDF)分类器;针对步骤二所述的5个特权集类别,分别训练3个前提特权集训练器和4个结果特权集训练器;具体操作为:步骤3.0:从步骤一中所述漏洞数据库中选取一部分漏洞记录,作为训练数据集;然后人工标注每条漏洞记录的前提特权集和结果特权集;步骤3.1:从训练数据集中选取前提特权集为普通用户特权集的300条以上数据;步骤3.2:对每条训练数据中的“漏洞描述”字段进行处理;“漏洞描述”字段为“…user/attackers to…by/via…”格式;将“by/via”之后的部分截取出来,存入文件d1中,每条训练数据占一行,文件d1的行数用符号J1表示;步骤3.3:利用开源分词工具对文件d1进行处理,统计每个单词出现的数量,文件d1中出现的单词的数量用符号I1表示;步骤3.4:通过公式(1)计算单词的重要性;tfi,j=ni,jΣini,j---(1)]]>其中,tfi,j表示第i个单词在第j行的重要性,i和j均为正整数,并且i∈[1,I1],j∈[1,J1];ni,j表示第i个单词在第j行中出现的次数;步骤3.5:通过公式(2)计算第i个单词的逆向文件频率,用符号idfi表示;逆向文件频率用来度量单词的普遍性;idfi=logJ1|{j:ti∈rj}|---(2)]]>其中,ti表示第i个单词;|{j:ti∈rj}|表示文件d1包含单词ti的行数;步骤3.6:通过公式(3)计算单词的权重得分;TFIDFi=Σjtfi,j×idfi---(3)]]>其中,TFIDFi表示第i个单词的权重得分;某一行的高词语频率,以及该词语在整个文件内的低行数频率,可以产生高权重的TFIDFi;因此,TFIDFi值倾向于过滤掉常见词语,保留重要的词语;步骤3.7:将文件d1中出现的单词按照TFIDFi值降序排列,取前K个词作为特征关键词,K∈[5,12];记录特征关键词及对应的TFIDFi值;并通过公式(4)计算每个关键词的AVLi值,AVLi值的作用是将权重得分映射到0‑1中;AVLi=TFIDFi/Σn=1KTFIDFj---(4)]]>步骤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/attackers to…by/via…”格式;将“to”到“by/via”之间的部分截取出来,存入文件d2中,每条训练数据占一行,文件d2的行数用符号J2表示;步骤3.13:利用开源分词工具对文件d2进行处理,统计每个单词出现的数量,文件d2中出现的单词的数量用符号I2表示;步骤3.14:通过公式(5)计算单词的重要性;tfi′,j′=ni′,j′Σi′ni′,j′---(5)]]>其中,tfi′,j′表示第i′个单词在第j′行的重要性,i′和j′均为正整数,并且i∈[1,I2],j∈[1,J2];ni′,j′表示第i′个单词在第j′行中出现的次数;步骤3.15:通过公式(6)计算第i′个单词的逆向文件频率,用符号idfi′表示;逆向文件频率用来度量单词的普遍性;idfi′=logJ2|{j′:ti′∈rj′}|---(6)]]>其中,ti′表示第i′个单词;|{j′:ti′∈rj′}|表示文件d2包含单词ti′的行数;步骤3.16:通过公式(7)计算单词的权重得分;TFIDFi′=Σj′tfi′,j′×idfi′---(7)]]>其中,TFIDFi′表示第i′个单词的权重得分;步骤3.17:将文件d2中出现的单词按照TFIDFi′值降序排列,取前K'个词作为特征关键词,K'∈[5,12],K'为人为设定值;记录特征关键词及对应的TFIDFi′值;然后,通过公式(8)计算每个关键词的权重得分映射到0‑1中,得到的结果用符号AVLi'表示;AVLi′=TFIDFi′/Σn=1K′TFIDFj′---(8)]]>步骤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/attackers to…by/via…”格式;将“by/via”之后的部分截取出来,并利用开源分词工具处理,得到若干个单词;步骤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/attackers to…by/via…”格式;将“to”到“by/via”之间的部分截取出来,并利用开源分词工具处理,得到若干个单词;步骤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选取的训练数据集,统计其结果特权集分别在c′1、c′2、c′3和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的概率值;P(cy|VB)=P(VB|cy)P(cy)P(VB)---(11)]]>其中,N表示步骤5.1中所述训练数据集中训练样本的数量;P(VB|cy)P(cy)利用公式(12)计算得到;P(VB|cy)=P(cy)Πi=17P(ax|cy)---(12)]]>步骤6.3:为了表示方便,把步骤6.2计算得到的概率值P(cy|VB)用符号PRE_BPy表示,y∈[1,3];然后,将PRE_BPy中最大的概率值对应的分类作为测试数据VB的前提特权集的值;步骤6.4:根据贝叶斯定理,利用公式(13)来计算测试数据VB的结果特权集对应于分类c′j的概率值;P(cy′′|VB)=P(VB|cy′′)P(cy′′)P(VB)---(13)]]>其中,P(VB|c′y')P(c′y')利用公式(14)计算得到;P(VB′|cy′′)=P(cy′′)Πx=17P(ax|cy′′)---(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 (15)其中,q∈[1,3]。步骤7.2:对于测试数据VB,通过公式公式(16)计算它的结果特权集的分类结果,并从4个F_RESq'值中选择最大值,并把所述最大值对应的分类作为测试数据VB的结果特权集;F_RESq'=RES_AVLq'×W_RES1+RES_BPq'×W_RES2 (16)其中,q'∈[1,4]。经过上述步骤的操作,即完成对测试数据VB的自动分类。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710495331.0/,转载请声明来源钻瓜专利网。
- 上一篇:基于多模式匹配的安全漏洞在线发现方法
- 下一篇:一种截屏防泄漏方法及装置