一种基于交叉指纹分析的公共组件库精确版本识别方法及系统技术方案

技术编号:33241857 阅读:10 留言:0更新日期:2022-04-27 17:46
本发明专利技术公开一种基于交叉指纹分析的公共组件库精确版本识别方法及系统,包括:公共组件特征指纹数据库的构建:爬取所有公共组件库历史版本的源代码;提取源代码中不同版本公共组件库的字符串常量及导出函数列表,将字符串常量划分成版权信息、调试信息、函数名以及其他字符常量,将导出函数列表及清洗过的字符串常量作为指纹数据存储到特征指纹数据库中;将特征指纹数据库中的指纹数据作为主体指纹,并提取收集到的真实环境中编译后的二进制公共组件库中对应的指纹数据,使用二进制公共组件库的指纹数据对特征指纹数据库进行反向增强训练;对目标公共组件库进行版本匹配识别。本发明专利技术增加了公共组件库版本识别的准确性。发明专利技术增加了公共组件库版本识别的准确性。发明专利技术增加了公共组件库版本识别的准确性。

【技术实现步骤摘要】
一种基于交叉指纹分析的公共组件库精确版本识别方法及系统


[0001]本专利技术属于网络安全
,尤其涉及一种基于交叉指纹分析的公共组件库精确版本识别方法及系统。

技术介绍

[0002]现有的公共组件库检测技术,根据检测的精度和速度差异,主要包括白名单、相似性检测、聚类以及机器学习等方法。
[0003]基于白名单的公共组件库检测技术,常用的方法是人工辅助创建一个使用组件名称构成的数据库,通过比较目标文件名与数据库中的组件名,确定应用程中是否含有公共组件库。使用特征单一且基础,所以该技术检测速度非常快,但是存在两个明显的缺陷:1)组件种类覆盖率低;2)不能对抗含有名称混淆的程序。
[0004]相似性检测的检测技术需要对构建指纹特征库的数据源有先验的了解,即可先验数据源。其步骤通常为:1)获取源数据并从中提取指定的一个或一组特征; 2)提取的特征进行数据清洗,删除特征中冗余数据并赋予每种特征不同的权重,组构建指纹特征库;3)从目标文件中提取指定的特征组,使用相似度匹配算法计算目标文件与特征库中指纹的相似度,并给匹配结果。
[0005]聚类检测技术常用做法是,确定聚类所使用的特征,使用特征对解耦后的模块文件进行聚类识别,然后将识别的特征和结果存放到数据库中作为特征匹配的数据源,进而对目标文件进行识别。使用聚类技术存在以下前提:1)在无法明确主程序的情况下默认,解耦所获得的所有模块文件均为具有潜在危险的第三方组件;2)聚类处理的应用越多,数据库中的结果就越具备权威性,所以使用聚类方法的数据源通常具有上千个应用;3)使用聚类技术不需要有对数据源数据的先验知识。
[0006]基于机器学习技术来检测第三方组件时,通常会使用大量的已有的训练数据,根据指定的功能和特征,对目标模型进行训练,最终是模型具备更强大的功能。
[0007]然而,上述的公共组件库识别方法更适用于识别组件库的种类,针对具体的公共组件库漏洞,往往需要定位到组件库的具体版本,在此情形下,上述的检测技术已经难以适用于新的需求。
[0008]具体地,已有的公共组件识别技术,通过使用单一的特征,对组件库的种类进行识别,所使用的方法从白名单到机器学习都是区分组件库种类间的差异,由于开发的人员、风格以及开发环境的不同,所以不同种类的组件库之间的差异较大,容易进行区分。但是同种类别的组件库的不同版本,尤其是超近距离的版本,其开发人员、风格以及环境通常是相同的,而且由于版本距离较近,所以经常面临版本与版本之间的差距较小,例如只是对上一个版本所存在的漏洞打补丁,使用先前的方法提取到的特征极有可能是完全相同的,所以现有的识别技术并不能很好地完成组件版本的识别工作。

技术实现思路

[0009]本专利技术针对已有的公共组件识别技术只能够识别公共组件库种类的问题,提出一种基于交叉指纹分析的公共组件库精确版本识别方法及系统,通过从源代码中提取字符串常量及导出函数列表,并且利用相应二进制特征数据进行反向增强训练的方法构建公共组件特征指纹数据库,增强同类不同版本间的公共组件库指纹差异,从而克服先前方法只能够识别公共组件库种类的缺陷,达到识别公共组件库精确版本的要求。
[0010]为了实现上述目的,本专利技术采用以下技术方案:
[0011]本专利技术一方面提出一种基于交叉指纹分析的公共组件库精确版本识别方法,包括:
[0012]公共组件特征指纹数据库的构建;包括:通过爬虫爬取开源平台以及公共组件库官网中的所有公共组件库历史版本的源代码;提取源代码中不同版本公共组件库的字符串常量及导出函数列表,将字符串常量划分成版权信息、调试信息、函数名以及其他字符常量,将导出函数列表及清洗过的字符串常量作为指纹数据存储到特征指纹数据库中;将特征指纹数据库中的指纹数据作为主体指纹,并提取收集到的真实环境中编译后的二进制公共组件库中对应的指纹数据,使用二进制公共组件库的指纹数据对特征指纹数据库进行反向增强训练;
[0013]对目标公共组件库进行版本匹配识别;包括:从目标二进制公共组件库中提取字符串常量以及导出函数列表,将清洗过的目标二进制公共组件库的字符串常量以及导出函数列表与特征指纹数据库中的数据进行匹配,通过导出函数列表判断待识别公共组件库的种类,通过带权重的字符串常量匹配公共组件库的精确版本,并输出最终的识别结果。
[0014]进一步地,按照如下方式对字符串常量进行划分:
[0015]提取源代码中所有的非注释可打印字符串,并把其中带有copyright、库名和版本组合的字符串定义为版权信息,将代码中含有error、debug、warning调试特征的字符串定义为调试信息,并提取源代码中所有的函数名,其余字符串归类为其他字符常量。
[0016]进一步地,按照如下方式对导出函数列表进行提取:
[0017]对于存在导出函数关键字的情况,使用类预处理的方式加载所有可能存在关键字的文件,然后进行宏定义消除,找到公共组件库的导出函数列表;
[0018]对于不存在导出函数关键字的情况,通过构造正则表达式进行导出函数列表的提取。
[0019]进一步地,按照如下方式对字符串常量进行清洗:
[0020]删除源代码和二进制代码中提取出的长度小于12的字符串。
[0021]进一步地,通过导出函数列表判断组件库的种类,匹配规则如下:
[0022]M(EFPools,EF
(target)
)=Candidate_class
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0023][0024]其中M()表示匹配函数,Candidate_class表示同类别版本相近的公共组件库, EFPools表示以类为单位的导出函数列表池,EF(target)表示目标二进制公共组件库中的导出函数列表,EF(Candidate_class_n)表示Candidate_class中第n个候选公共组件库的导出函数列表,EF_Similarity表示目标二进制公共组件库中的导出函数列表与特征指纹
数据库中第n个候选公共组件库的导出函数列表的相似度。
[0025]进一步地,在进行公共组件库的精确版本识别时,使用字符串常量的特征作为匹配特征,赋予不同类型字符串常量以不同的权重,其权重的计算公式为:
[0026]ST_Weight=ST_Effective
×
STC_Retention
ꢀꢀꢀꢀ
(4)
[0027]其中,ST_Effective表示字符串常量的类别在判断具体版本时的有效程度, STC_Retention表示字符串常量的类别在编译过程中的保留程度,ST_Weight表示字符串常量的类别权重;
[0028]在匹配过程中所使用的字符串常量为目标二进制公共组件库中的字符串常量与特征指纹数据库中的字符串常量的交集,即:
[0029]String_Pool=SL
(database_n)
∩SL
(target)本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于交叉指纹分析的公共组件库精确版本识别方法,其特征在于,包括:公共组件特征指纹数据库的构建;包括:通过爬虫爬取开源平台以及公共组件库官网中的所有公共组件库历史版本的源代码;提取源代码中不同版本公共组件库的字符串常量及导出函数列表,将字符串常量划分成版权信息、调试信息、函数名以及其他字符常量,将导出函数列表及清洗过的字符串常量作为指纹数据存储到特征指纹数据库中;将特征指纹数据库中的指纹数据作为主体指纹,并提取收集到的真实环境中编译后的二进制公共组件库中对应的指纹数据,使用二进制公共组件库的指纹数据对特征指纹数据库进行反向增强训练;对目标公共组件库进行版本匹配识别;包括:从目标二进制公共组件库中提取字符串常量以及导出函数列表,将清洗过的目标二进制公共组件库的字符串常量以及导出函数列表与特征指纹数据库中的数据进行匹配,通过导出函数列表判断待识别公共组件库的种类,通过带权重的字符串常量匹配公共组件库的精确版本,并输出最终的识别结果。2.根据权利要求1所述的一种基于交叉指纹分析的公共组件库精确版本识别方法,其特征在于,按照如下方式对字符串常量进行划分:提取源代码中所有的非注释可打印字符串,并把其中带有copyright、库名和版本组合的字符串定义为版权信息,将代码中含有error、debug、warning调试特征的字符串定义为调试信息,并提取源代码中所有的函数名,其余字符串归类为其他字符常量。3.根据权利要求1所述的一种基于交叉指纹分析的公共组件库精确版本识别方法,其特征在于,按照如下方式对导出函数列表进行提取:对于存在导出函数关键字的情况,使用类预处理的方式加载所有可能存在关键字的文件,然后进行宏定义消除,找到公共组件库的导出函数列表;对于不存在导出函数关键字的情况,通过构造正则表达式进行导出函数列表的提取。4.根据权利要求1所述的一种基于交叉指纹分析的公共组件库精确版本识别方法,其特征在于,按照如下方式对字符串常量进行清洗:删除源代码和二进制代码中提取出的长度小于12的字符串。5.根据权利要求1所述的一种基于交叉指纹分析的公共组件库精确版本识别方法,其特征在于,通过导出函数列表判断组件库的种类,匹配规则如下:M(EFPools,EF
(target)
)=Candidate_class
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)其中M()表示匹配函数,Candidate_class表示同类别版本相近的公共组件库,EFPools表示以类为单位的导出函数列表池,EF(target)表示目标二进制公共组件库中的导出函数列表,EF(Candidate_class_n)表示Candidate_class中第n个候选公共组件库的导出函数列表,EF_Similarity表示目标二进制公共组件库中的导出函数列表与特征指纹数据库中第n个候选公共组件库的导出函数列表的相似度。6.根据权利要求1所述的一种基于交叉指纹分析的公共组件库精确版本识别方法,其特征在于,在进行公共组件库的精确版本识别时,使用字符串常量的特征作为匹配特征,赋予不同类型...

【专利技术属性】
技术研发人员:武泽慧魏强王新蕾郭威周国淼王允超
申请(专利权)人:中国人民解放军战略支援部队信息工程大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1