一种基于网页知识发现的PoC程序提取方法与流程

文档序号:11808345阅读:392来源:国知局
一种基于网页知识发现的PoC程序提取方法与流程

本发明属于安全技术领域,涉及一种基于网页知识发现的PoC程序提取方法,实现了安全漏洞对应PoC程序的提取。



背景技术:

安全漏洞是信息技术、信息产品、信息系统在需求、设计、实现、配置、运行等过程中产生的缺陷,这些缺陷一旦被恶意主体利用,就会对信息系统的安全造成损害,从而危害信息系统及信息的安全。近年来由安全漏洞导致的网络安全事件层出不同,如2014年iCloud被黑客攻击导致大量私人照片泄露,2015年全球最大婚外情网站Ashley Madision被黑客攻击导致10G用户数据被窃取,2015年网易邮箱被破解导致近5亿条用户数据被泄露。

PoC(Proof of Concept,中文翻译为概念验证)程序又称作验证程序,在本发明中特指用于验证安全漏洞的测试代码。PoC程序可以验证安全漏洞是否确实存在,还可以演示该漏洞的利用方式,因此被广泛应用于渗透测试(通过模拟恶意黑客的攻击方法,来评估安全性)、安全漏洞验证等领域,从而在实际应用中,常常需要大量的PoC程序作为测试样例。然而,目前并没有准确、可靠的PoC程序来源。

漏洞库是网络安全隐患分析的重要资源,用于收集和整理漏洞信息。权威漏洞库包括美国国家信息安全漏洞库(NVD,National Vulnerability Database)、中国国家信息安全漏洞库(CNNVD,China National Vulnerability Database of Information Security)、乌云(WooYun)漏洞库等。截止2016年5月23日,NVD中CVE(Common Vulnerabilities&Exposures)漏洞信息共收录76919条,CNNVD共收录漏洞信息61437条,WooYun共收录漏洞信息104195条。

权威漏洞库收录了大量漏洞信息,其中绝大部分漏洞都缺乏对应PoC程序的直接获取途径,而PoC程序又隐藏在漏洞库的各层级数据里。

综上,为了丰富渗透测试、安全漏洞验证等领域的测试样例集,根据权威漏洞库已有信息,快速找到有效的PoC程序就变得很有必要。而基于目前的安全技术,用于提取安全漏洞对应PoC程序的安全漏洞验证程序提取方法并不存在。



技术实现要素:

针对上述问题,本发明提供了一种基于网页知识发现的PoC程序提取方法,用于丰富渗透测试、安全漏洞验证等领域的测试样例集。

为实现上述目的,本发明采用如下技术方案:

一种基于网页知识发现的PoC程序提取方法,其步骤包括:

1)从权威漏洞库中获取所有安全漏洞对应的网页内容,并从上述网页内容中提取得到安全漏洞描述语句集、非安全漏洞描述语句集、PoC程序描述语句集和非PoC程序描述语句集。

2)将步骤1)中得到的4个描述语句集作为训练样本,提取训练样本的特征集,基于深度学习框架,建立网页分类器和Comment分类器,网页分类器用于判断输入内容是否与安全漏洞相关,Comment分类器用于判断输入内容是否在描述PoC程序。

3)根据待测安全漏洞的特征,从相应权威漏洞库获取该待测安全漏洞的网页内容,输入步骤2)建立的网页分类器和Comment分类器,提取待测安全漏洞的PoC程序。

进一步地,所述权威漏洞库包括:美国国家信息安全漏洞库(NVD)、中国国家信息安全漏洞库(CNNVD)和乌云漏洞库(WooYun)。

进一步地,步骤1)具体包括以下步骤:

1-1)从权威漏洞库获取针对所有安全漏洞的安全漏洞网页集;

1-2)对步骤1-1)获取的安全漏洞网页集中的所有网页内容做分句处理,得到语句集;

1-3)在步骤1-2)得到的语句集中,将描述内容与安全漏洞相关的语句归入安全漏洞描述语句集,与安全漏洞无关的语句归入非安全漏洞描述语句集;将在描述PoC程序的语句归入PoC程序描述语句集,将未在描述PoC程序的语句归入非PoC程序描述语句集。

进一步地,步骤2)通过以下方法提取训练样本的特征集:先提取训练样本中每个词的词向量,以此类推,一个词对应一个词向量。一个句子由多个词组成,整合每个词的词向量形成词矩阵,词矩阵即为网页分类特征,而词矩阵集即为训练样本的特征集。

进一步地,所述深度学习框架的目标是训练网页分类器和Comment分类器,因此所有得以实现该目标的深度学习算法均可用于该步骤,包括但不限于卷积神经网络算法。

进一步地,步骤2)中建立网页分类器的步骤具体包括:

2-1-1)基于步骤1)得到的安全漏洞描述语句集和非安全漏洞描述语句集,建立网页分类器的训练样本集。

2-1-2)针对步骤2-1-1)建立的训练样本集进行特征提取,建立网页分类特征集。

2-1-3)将步骤2-1-2)建立的网页分类特征集输入深度学习框架,训练网页分类模型,建立网页分类器。

进一步地,步骤2)中建立Comment分类器的步骤具体包括:

2-2-1)基于步骤1)提供的PoC程序描述语句集合和非PoC程序描述语句集,建立Comment分类器的训练样本集。

2-2-2)针对步骤2-2-1)提供的训练样本集进行特征提取,建立Comment分类特征集。

2-2-3)将步骤2-2-2)提供的Comment分类特征集输入深度学习框架,训练Comment分类模型,建立Comment分类器。

进一步地,步骤3)具体包括以下步骤:

3-1)分析待测安全漏洞,得到相应权威漏洞库来源,从权威漏洞库获取该待测安全漏洞对应网页的网页内容。

3-2)对步骤3-1)获取的网页内容做分句处理,并将分句结果整合为文本语句集。

3-3)将步骤3-2)得到的文本语句集中各语句输入网页分类器进行分类预测,若网页描述内容为安全漏洞,则继续将步骤3-2)得到的文本语句集中各语句输入Comment分类器进行分类预测,若网页内容在描述PoC程序,则定位‘在描述PoC程序’的语句所在网页中的位置,分析网页结构,提取PoC程序,若网页内容未在描述PoC程序,则继续步骤3-4)。

3-4)提取网页中的URL链接,生成URL集。

3-5)判断步骤3-4)生成的URL集是否为空集,若为空集,该步骤结束,若不为空集,转到步骤3-6)。

3-6)依次循环提取步骤3-4)生成的URL集中各URL链接对应的网页内容,判定是否存在PoC程序,若存在,则提取当前URL对应网页内容中的PoC程序,若不存在,转到3-7)。

3-7)针对由步骤3-6)发起的循环操作,判断是否结束循环,若是,获取步骤3-4)提供的URL集中各URL链接对应网页内容,转到3-2),若否,转到3-6)。

进一步地,步骤3-3)提取PoC程序的步骤具体包括:

3-3-1)以‘在描述PoC程序’的语句所在位置的下一行为起始位置,进行PoC程序特征检测处理。

3-3-2)判断是否为PoC程序源码,若是,该PoC程序即为待测安全漏洞对应的PoC程序,结束该步骤;否则转到3-3-3)。

3-3-3)判断是否为URL链接,若是,则进入URL链接对应页面判断网页内容是否为程序源码,转到步骤3-3-4),否则结束该步骤。

3-3-4)如果网页内容为程序源码,则提取网页内容中的PoC程序源码,该PoC程序即为待测安全漏洞对应的PoC程序,否则结束该步骤。

本发明首次提出漏洞库可以作为PoC程序的直接来源,并提供一种有效可行的提取PoC程序的方法,能方便、准确地提取待测安全漏洞对应PoC程序,从而丰富渗透测试、安全漏洞验证等领域的测试样例集,进而促进安全漏洞领域的研究与应用发展。

附图说明

图1是本发明基于网页知识发现的PoC程序提取方法的架构图。

图2是本发明描述语句集获取流程图。

图3(a)是本发明网页分类器的建立流程图;图3(b)是本发明Comment分类器的建立流程图。

图4是本发明待测安全漏洞的PoC程序提取流程图。

图5是本发明PoC程序具体提取流程图。

具体实施方式

下面结合附图,通过实施例对本发明作进一步的说明。

本发明基于网页知识发现的PoC程序提取方法的整体架构图如图1所示,该方法的输入为待测安全漏洞,输出为待测安全漏洞对应PoC程序。其主要包括以下步骤:

1)获取描述语句集。该步骤以权威数据库为数据来源,收集漏洞库中所有安全漏洞相关数据,获取相应网页内容,筛选网页内容并分类,最终得到四个描述语句集,分别为安全漏洞描述语句集、非安全漏洞描述语句集、PoC程序描述语句集和非PoC程序描述语句集。

具体地,描述语句集获取流程图如图2所示,详细说明如下:

1a)从权威漏洞库获取针对所有安全漏洞的安全漏洞网页集,转到1b)。

1b)针对步骤1a)提供的安全漏洞网页集中的所有网页内容做数据预处理(分句),得到语句集,随后将语句集中的所有语句依次送入后续流程,转到1c)。

1c)针对步骤1b)提供的语句,判断各语句描述的内容是否属于安全漏洞范畴,若为是,将描述内容属于安全漏洞范畴的语句归入安全漏洞描述语句集,若为否,将描述内容不属于安全漏洞范畴的语句归入非安全漏洞描述语句集;判断各语句描述的内容是否为PoC程序,若为是,将描述内容为PoC程序的语句归入PoC程序描述语句集,若为否,将描述内容不为PoC程序的语句归入非PoC程序描述语句集,转到1d)。

1d)该步骤结束。

2)建立网页分类器和Comment分类器。以步骤1)中的描述语句集为训练样本,提取训练样本的特征集,基于深度学习框架,建立网页分类器和Comment分类器,网页分类器用于判断该网页是否用于描述安全漏洞问题,Comment分类器用于判断该网页中的文本内容是否用于描述PoC程序。其中安全漏洞/非安全漏洞描述语句集用于建立网页分类器,PoC程序/非PoC程序描述语句集用于建立Comment分类器。

特征提取方法举例,先提取每个词的词向量,提取词向量的方法如word2vec、GloVe等,以此类推,一个词对应一个词向量。一个句子由多个词组成,整合每个词的词向量形成词矩阵,词矩阵即为网页分类特征。

深度学习框架举例,卷积神经网络算法即可适用于该步骤中的深度学习框架。

具体地,网页分类器的建立流程图如图3(a)所示,详细说明如下:

2a)整合步骤1d)提供的安全漏洞描述语句集和步骤1g)提供的非安全漏洞描述语句集,建立网页分类器的训练样本集,转到2b)。

2b)针对步骤2a)提供的训练样本集进行特征提取,建立网页分类特征集,转到2c)。

2c)将步骤2b)提供的网页分类特征集输入深度学习框架,训练网页分类模型,转到2d)。

2d)成功建立网页分类器。

Comment分类器的建立流程图如图3所示,详细说明如下:

2e)整合步骤1f)提供的PoC程序描述语句集合步骤1h)提供的非PoC程序描述语句集,建立Comment分类器的训练样本集,转到2f)。

2f)针对步骤2e)提供的训练样本集进行特征提取,建立Comment分类特征集,转到2g)。

2g)将步骤2f)提供的Comment分类特征集输入深度学习框架,训练Comment分类模型,转到2h)。

2h)成功建立Comment分类器。

3)提取安全漏洞验证程序,即PoC程序。该步骤先根据待测安全漏洞的特征,从相应权威漏洞库获取该安全漏洞的网页内容,并对网页内容做数据预处理(分句),再结合网页分类器和Comment分类器,提取该待测安全漏洞的PoC程序。

待测安全漏洞的安全漏洞验证程序(PoC程序)提取流程如图4所示,详细说明如下:

3a)给定待测安全漏洞,转到3b)。

3b)分析步骤3a)提供的待测安全漏洞,得到相应权威漏洞库来源,从权威漏洞库获取该待测安全漏洞对应网页的网页内容,转到3c)。

3c)针对网页内容做数据预处理,即分句,转到3d)。

3d)将步骤3c)提供的分句结果整合为文本语句集,转到3e)。

3e)将步骤3d)提供的文本语句集中各语句输入网页分类器进行分类预测,分类结果分成两种情况:一,是安全漏洞;二,不是安全漏洞。转到3f)。

3f)分析步骤3e)的分类结果(只要分类结果中有出现‘是安全漏洞’,该网页的描述内容即为安全漏洞),判断该网页描述内容是否为安全漏洞,若为是,转到3g),若为否,转到3r)。

3g)将步骤3f)中判断为安全漏洞的语句集中各语句输入Comment分类器进行分类预测,分类结果分成两种情况:一,是描述PoC程序;二,不是描述PoC程序。转到3h)。

3h)分析步骤3g)的分类结果(只要分类结果中有出现‘是描述PoC程序’,则该网页内容在描述PoC程序,且PoC程序就在网页正文中),判断该网页内容是否在描述PoC程序,若为是,转到3i),若为否,转到3k)。

3i)定位分类结果为‘是描述PoC程序’的语句所在网页中的位置,分析网页结构,提取PoC程序,转到3j),其中提取PoC程序的具体步骤如图5所示,详细说明如下:

3i-a)以步骤3i)提供的PoC程序描述语句所在位置的下一行为起始位置,进行PoC程序特征检测处理,转到3i-b)。

3i-b)判断是否为PoC程序源码,若为是,转到3i-g),若为否,转到3i-c)。

3i-c)判断是否为URL链接,若为是,转到3i-d),若为否,转到3i-h)。

3i-d)进入URL链接对应页面,转到3i-e)。

3i-e)判断网页内容是否为程序源码,若为是,转到3i-f),若为否,转到3i-h)。

3i-f)提取网页内容中的PoC程序源码,转到3i-g)。

3i-g)该PoC程序即为待测安全漏洞对应的PoC程序,转到3i-h)。

3i-h)该步骤结束。

3j)步骤3i)得到的PoC程序即为待测安全漏洞对应的PoC程序,转到3r)。

3k)提取网页中的URL链接,生成URL集,转到3l)。

3l)判断步骤3k)提供的URL集是否为空集,若为空集,转到3r),若不为空集,转到3m)。

3m)依次循环提取步骤3k)提供的URL集中各URL链接对应网页内容,转到3n)。

3n)分析步骤3m)中提取的网页内容,判定是否存在PoC程序,具体操作同步骤3c)-3g),若存在,转到3o),若不存在,转到3p)。

3o)提取当前URL对应网页内容中的PoC程序,具体操作同步骤3i),转到3r)。

3p)针对由步骤3m)发起的循环操作,判断是否结束循环,若为是,转到3q),若为否,转到3m)。

3q)获取步骤3k)提供的URL集中各URL链接对应网页内容,转到3c)。

3r)该步骤到此结束。

实施例

下面提供一个具体的安全漏洞对应PoC程序提取的应用实例:

输入为待测安全漏洞,输出为待测安全漏洞对应的PoC程序。以编号为CVE-2016-2784的安全漏洞为例,具体实施步骤包括:

1)获取描述语句集。该步骤以美国国家信息安全漏洞库(NVD)为数据来源,收集安全漏洞相关数据,获取相应网页内容,筛选网页内容并分类,最终得到四个描述语句集,分别为安全漏洞描述语句集、非安全漏洞描述语句集、PoC程序描述语句集和非PoC程序描述语句集。

2)建立网页分类器和Comment分类器。该步骤以步骤1)中的描述语句集为训练样本,通过word2vec算法提取训练样本的特征集,基于卷积神经网络算法,建立网页分类器和Comment分类器,网页分类器用于判断该网页是否用于描述安全漏洞问题,Comment分类器用于判断该网页中的文本内容是否用于解释说明PoC程序。其中安全漏洞/非安全漏洞描述语句集用于建立网页分类器,PoC程序/非PoC程序描述语句集用于建立Comment分类器。

3)提取安全漏洞验证程序,即PoC程序。首先分析待测安全漏洞基本信息,得知该安全漏洞来自NVD漏洞库,进而从NVD漏洞库获取该安全漏洞的网页内容。其次对网页内容做数据预处理(分句),将分句得到的文本语句集输入网页分类器进行分类,得出结论该网页内容为安全漏洞相关,再将分句得到的文本语句集输入Comment分类器进行分类,得出结论该网页内容中不存在PoC程序。再次提取该网页内容中所有URL链接,形成非空URL集,依次循环获取URL集中各对应网页内容,判断当前网页内容是否包含PoC程序,当循环执行到第6个URL时,该URL对应网页内容中包括PoC程序。最后提取PoC程序,最终得到的PoC程序如下:

步骤3)中提取到的PoC程序即为待测安全漏洞CVE-2016-2784对应的安全漏洞PoC程序,至此,待测安全漏洞的PoC程序已提取完成。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1