【技术实现步骤摘要】
一种基于血缘关系的二进制检测方法及系统
[0001]本专利技术涉及软件安全
,尤其涉及一种基于血缘关系的二进制检测方法及系统。
技术介绍
[0002]SCA(软件成分分析)是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理和追踪的技术;一般SCA分为源代码检测和二进制检测,编译类语言都遵循源代码—>编译—>链接—>二进制文件的过程,各种因素影响着二进制文件的内容,包括不同的CPU架构,不同操作系统和不同编译优化选项,此外,对于开源软件有着非常领的组合编译方式,不同组件的内容可能会被编译在一起,或者有些相似的代码或功能被打包编译成不同的组件。而现有的二进制检测技术方案没有分析待检测组件之间的血缘关系,将组件文件对等地放入到特征库中,忽略了其内部的结构信息,容易将类似的组件一起返回。
[0003]需要说明的是,在上述
技术介绍
部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
[0004]本专利技术的目的在于克服现有技术的缺点,提供了一种基于血缘关系的二进制组件检测方法及系统,解决了现有二进制检测方法存在的不足。
[0005]本专利技术的目的通过以下技术方案来实现:一种基于血缘关系的二进制组件检测方法,所述检测方法包括:
[0006]S1、获取二进制组件和相应版本,并在递归解压二进制软件包后遍历二进制文件;
[0007]S2、根据特征提取部分描述提取 ...
【技术保护点】
【技术特征摘要】
1.一种基于血缘关系的二进制组件检测方法,其特征在于:所述检测方法包括:S1、获取二进制组件和相应版本,并在递归解压二进制软件包后遍历二进制文件;S2、根据特征提取部分描述提取的特征并转化为哈希集合后存入数据库中;S3、计算文件Y1和Y2特征集合之间的重叠系数,得到分别以不同文件为分母的单侧重叠系数,即sim_Y1=|Y1∩Y2|/|Y1|和sim_Y2=|Y1∩Y2|/|Y2|,根据重叠系数计算软件组件之间的血缘关系;S4、依次遍历原有方案检测结果的文件集合{F1,F2,
…
,Fn}中的文件Fi,i=1,
…
,n,依次判断集合中剩余文件Fj,j=1,
…
,n且j≠i,并根据不同的判断结果进行处理,得到最终的优化结果。2.根据权利要求1所述的一种基于血缘关系的二进制组件检测方法,其特征在于:所述S1的步骤具体包括以下内容:S101、下载需要收录的二进制组件和相应版本,二进制组件中包括待解析的二进制可执行文件和库文件;S102、判断输入的二进制文件是否为目录,如果是目录则遍历目录内的内容,如果不是目录,则判断是否为文件,如果是文件,则判断文件的类型;S103、根据文件类型选取相应的处理函数,如果是归档文件,则解归档成目录,如果是压缩文件,则解压成目录,然后深度递归遍历该目录;S104、如果是jar文件,则执行S2步骤提取特征并存储归档;S105、如果是PE/ELF文件,则判断是否是安装包、是否含有overlay,如果没有则执行S2步骤提取特征并存储归档,否则解析数据后再提取特征。3.根据权利要求1所述的一种基于血缘关系的二进制组件检测方法,其特征在于:所述S2的步骤具体包括以下内容:S201、提取二进制中的数字常量和字符串常量,通过第一函数对数字常量进行筛选,通过长度和关键字信息的启发式规则对字符串常量进行筛选;S202、将二进制转化为中间表示IR,然后保留IR的操作指令,生成n
‑
grams的指令序列作为特征;S203、提取二进制文件里的函数信息,保留函数内操作指令序列和相关的参数信息作为特征;S204、提取二进制文件的函数调用图,生成每条函数调用图的路径作为特征;S205、将以上特征均转化为哈希值存入数据库。4.根据权利要求1所述的一种基于血缘关系的二进制组件检测方法,其特征在于:所述S3的步骤具体包括以下内容:S301、判断文件Y1和Y2之间的依赖关系,设置重叠系数为sim_Y1与sim_Y2,如果min(sim_Y1,sim_Y2)>α,则标识Y1与Y2为相似关系,如果sim_Y1>β1且sim_Y2<β2,则标识Y2包含Y1,反之如果sim_Y1<β1且sim_Y2>β2,则标识Y1包含Y2,α、β1和β2均表示人工经验值;S302、根据S301步骤中文件Y1和Y2之间存在的相似关系、包含关系、被包含关系和不相关关系,存储每个文件的三类关系,三类关系包括与该文件相似关系的文件集合、与该文件包含关系的文件集合以及与该文件被包含关系的文件集合。5.根据权利要求4所述的一种基于血缘关系的二进制组件检测方法,其特征在于:所述
S4的步骤具体包括以下内容:S401、如果Fj在与该文件相似关系的文件集合中,则保留Fi与Fj中重叠系数高的文件,删除重叠系数低的文件,如果Fi被删除,则从文件集合{F1,F2,
…
,Fn}中挑选新的文件重新判断与剩余文件之间关系,如果Fj被删除,则继续遍历文件集合{F1,F2,
…
,Fn}中的剩余文件,如果Fj不在与该文件相似关系的文件集合中,则进行S402步骤;S402、如果Fj在与该文件包含关系的文件集合中,则删除Fj,如果Fj不在与该文件包含关系的文件集合中,则进行S403步骤;S403、如果Fj在与该文件被包含关系的文件集合中,则删除Fi,返...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。