CN116954701A - 一种基于血缘关系的二进制检测方法及系统 - Google Patents
一种基于血缘关系的二进制检测方法及系统 Download PDFInfo
- Publication number
- CN116954701A CN116954701A CN202310998661.7A CN202310998661A CN116954701A CN 116954701 A CN116954701 A CN 116954701A CN 202310998661 A CN202310998661 A CN 202310998661A CN 116954701 A CN116954701 A CN 116954701A
- Authority
- CN
- China
- Prior art keywords
- file
- binary
- files
- sim
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 37
- 239000008280 blood Substances 0.000 claims abstract description 35
- 210000004369 blood Anatomy 0.000 claims abstract description 35
- 238000000605 extraction Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000005457 optimization Methods 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 21
- 238000012216 screening Methods 0.000 claims description 12
- 238000009434 installation Methods 0.000 claims description 6
- 229910002056 binary alloy Inorganic materials 0.000 claims description 3
- 238000011835 investigation Methods 0.000 abstract description 2
- 238000007781 pre-processing Methods 0.000 abstract description 2
- 238000011160 research Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 27
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于血缘关系的二进制组件检测方法及系统,包括:获取二进制组件和相应版本,并在递归解压二进制软件包后遍历二进制文件;根据特征提取部分描述提取的特征并转化为哈希集合后存入数据库中;计算文件Y1和Y2特征集合之间的重叠系数,得到分别以不同文件为分母的单侧重叠系数,根据重叠系数计算软件组件之间的血缘关系;遍历原有方案检测结果的文件集合中的文件,依次判断集合中剩余文件,并根据不同的判断结果进行处理,得到最终的优化结果。本发明针对二进制文件之间关系做预处理,构建二进制文件之间的血缘依赖关系,并通过依赖关系优化检测结果,使二进制组件检测结果更简洁,更准确,节约研发人员排查时间。
Description
技术领域
本发明涉及软件安全技术领域,尤其涉及一种基于血缘关系的二进制检测方法及系统。
背景技术
SCA(软件成分分析)是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理和追踪的技术;一般SCA分为源代码检测和二进制检测,编译类语言都遵循源代码—>编译—>链接—>二进制文件的过程,各种因素影响着二进制文件的内容,包括不同的CPU架构,不同操作系统和不同编译优化选项,此外,对于开源软件有着非常领的组合编译方式,不同组件的内容可能会被编译在一起,或者有些相似的代码或功能被打包编译成不同的组件。而现有的二进制检测技术方案没有分析待检测组件之间的血缘关系,将组件文件对等地放入到特征库中,忽略了其内部的结构信息,容易将类似的组件一起返回。
需要说明的是,在上述背景技术部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明的目的在于克服现有技术的缺点,提供了一种基于血缘关系的二进制组件检测方法及系统,解决了现有二进制检测方法存在的不足。
本发明的目的通过以下技术方案来实现:一种基于血缘关系的二进制组件检测方法,所述检测方法包括:
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,并根据不同的判断结果进行处理,得到最终的优化结果。
所述S1的步骤具体包括以下内容:
S101、下载需要收录的二进制组件和相应版本,二进制组件中包括待解析的二进制可执行文件和库文件;
S102、判断输入的二进制文件是否为目录,如果是目录则遍历目录内的内容,如果不是目录,则判断是否为文件,如果是文件,则判断文件的类型;
S103、根据文件类型选取相应的处理函数,如果是归档文件,则解归档成目录,如果是压缩文件,则解压成目录,然后深度递归遍历该目录;
S104、如果是jar文件,则执行S2步骤提取特征并存储归档;
S105、如果是PE/ELF文件,则判断是否是安装包、是否含有overlay,如果没有则执行S2步骤提取特征并存储归档,否则解析数据后再提取特征。
所述S2的步骤具体包括以下内容:
S201、提取二进制中的数字常量和字符串常量,通过第一函数对数字常量进行筛选,通过长度和关键字信息的启发式规则对字符串常量进行筛选;
S202、将二进制转化为中间表示IR,然后保留IR的操作指令,生成n-grams的指令序列作为特征;
S203、提取二进制文件里的函数信息,保留函数内操作指令序列和相关的参数信息作为特征;
S204、提取二进制文件的函数调用图,生成每条函数调用图的路径作为特征;
S205、将以上特征均转化为哈希值存入数据库。
所述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之间存在的相似关系、包含关系、被包含关系和不相关关系,存储每个文件的三类关系,三类关系包括与该文件相似关系的文件集合、与该文件包含关系的文件集合以及与该文件被包含关系的文件集合。
所述S4的步骤具体包括以下内容:
S401、如果Fj在与该文件相似关系的文件集合中,则保留Fi与Fj中重叠系数高的文件,删除重叠系数低的文件,如果Fi被删除,则从文件集合{F1,F2,…,Fn}中挑选新的文件重新判断与剩余文件之间关系,如果Fj被删除,则继续遍历文件集合{F1,F2,…,Fn}中的剩余文件,如果Fj不在与该文件相似关系的文件集合中,则进行S402步骤;
S402、如果Fj在与该文件包含关系的文件集合中,则删除Fj,如果Fj不在与该文件包含关系的文件集合中,则进行S403步骤;
S403、如果Fj在与该文件被包含关系的文件集合中,则删除Fi,返回到S4步骤。
一种基于血缘关系的二进制组件检测系统,它包括二进制文件处理模块、特征提取模块、血缘关系计算模块和结果匹配模块;
所述二进制文件处理模块:用于获取二进制组件和相应版本,并在递归解压二进制软件包后遍历二进制文件;
所述特征提取模块:用于根据特征提取部分描述提取的特征并转化为哈希集合后存入数据库中;
所述血缘关系计算模块:用于计算文件Y1和Y2特征集合之间的重叠系数,得到分别以不同文件为分母的单侧重叠系数,即sim_Y1=|Y1∩Y2|/|Y1|和sim_Y2=|Y1∩Y2|/|Y2|,根据重叠系数计算软件组件之间的血缘关系;
所述结果匹配模块:用于遍历原有方案检测结果的文件集合{F1,F2,…,Fn}中的文件Fi,依次判断集合中剩余文件Fj,并根据不同的判断结果进行处理,得到最终的优化结果。
:所述二进制文件处理模块包括:目录判断单元、文件判断单元、文件类型判断单元和特定文件类型判断单元;
所述目录判断单元:用于在获取到需要收录的二进制组件和相应版本后判断输入的是否为目录,如果是目录则遍历目录内的内容;
所述文件判断单元:用于当不是目录时,判断是否为文件,如果是文件,则判断文件的类型;
所述文件类型判断单元:用于根据文件类型选取相应的处理函数,如果是归档文件,则解归档成目录,如果是压缩文件,则解压成目录,然后深度递归遍历该目录;
所述特定文件类型判断单元:用于如果是第一类特定文件时,则执行特征提取模块,如果是第二类特定文件,则判断是否是安装包、是否含有overlay,如果没有则执行特征提取模块,否则解析数据后再执行特征提取模块。
所述特征提取模块具体执行以下内容:
提取二进制中的数字常量和字符串常量,其中,数字常量根据第一函数筛选得到,字符串常量通过长度和关键字信息的启发式规则筛选得到;
将二进制转化为中间表示IR,然后保留IR的操作指令,生成n-grams的指令序列作为特征;
提取二进制文件里的函数信息,保留函数内操作指令序列和相关的参数信息作为特征;
提取二进制文件的函数调用图,生成每条函数调用图的路径作为特征;
将以上特征均转化为哈希值存入数据库。
所述血缘关系计算模块具体执行以下内容:
判断文件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均表示人工经验值;
根据文件Y1和Y2之间存在的相似关系、包含关系、被包含关系和不相关关系,存储每个文件的三类关系,三类关系包括与该文件相似关系的文件集合、与该文件包含关系的文件集合以及与该文件被包含关系的文件集合。
所述结果匹配模块具体执行以下内容:
如果Fj在与该文件相似关系的文件集合中,则保留Fi与Fj中重叠系数高的文件,删除重叠系数低的文件,如果Fi被删除,则从文件集合{F1,F2,…,Fn}中挑选新的文件重新判断与剩余文件之间关系,如果Fj被删除,则继续遍历文件集合{F1,F2,…,Fn}中的剩余文件,如果Fj不在与该文件相似关系的文件集合中,则进行后续内容;
如果Fj在与该文件包含关系的文件集合中,则删除Fj,如果Fj不在与该文件包含关系的文件集合中,则进行后续内容;
如果Fj在与该文件被包含关系的文件集合中,则删除Fi,返回到S4步骤。
本发明具有以下优点:一种基于血缘关系的二进制组件检测方法及系统,针对二进制文件之间关系做预处理,构建二进制文件之间的血缘依赖关系,并通过依赖关系优化检测结果,使二进制组件检测结果更简洁,更准确,节约研发人员排查时间。
附图说明
图1为本发明的流程示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下结合附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的保护范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本发明做进一步的描述。
如图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,并根据不同的判断结果进行处理,得到最终的优化结果。
其中,原有方案包括:提取被检测文件特征集合后,依次遍历数据库中组件文件的特征集合,计算相似度,并保留超过阈值的组件文件;此处文件集合即表示相似度超过阈值的文件集合。
进一步地,S1的步骤具体包括以下内容:
S101、下载需要收录的二进制组件和相应版本,二进制组件中包括待解析的二进制可执行文件和库文件;
S102、判断输入的二进制文件是否为目录,如果是目录则遍历目录内的内容,如果不是目录,则判断是否为文件,如果是文件,则判断文件的类型;
S103、根据文件类型选取相应的处理函数,如果是归档文件,则解归档成目录,如果是压缩文件,则解压成目录,然后深度递归遍历该目录;
S104、如果是jar文件,则执行S2步骤提取特征并存储归档;
S105、如果是PE/ELF文件,则判断是否是安装包、是否含有overlay,如果没有则执行S2步骤提取特征并存储归档,否则解析数据后再提取特征。
其中,overlay指在PE文件尾附加一段数据,这部分数据一般是需要格式处理后的真实程序数据。
进一步地,S2的步骤具体包括以下内容:
S201、使用radare2类工具(或者IDA工具)提取二进制中的数字常量和字符串常量,其中,数字常量根据measureBitsVariance函数筛选得到,字符串常量通过长度和关键字信息(比如包含组件名字符串,包含version字符串)的启发式规则筛选得到;
S202、使用radare2类工具将二进制转化为中间表示IR,然后保留IR的操作指令,生成4-grams的指令序列作为特征,即每4个指令形成一个特征项;
S203、使用radare2类工具提取二进制文件里的函数信息,保留函数内操作指令序列和相关的参数信息作为特征;
S204、使用radare2类工具提取二进制文件的函数调用图,生成每条函数调用图的路径作为特征;
S205、将以上特征均转化为哈希值存入数据特征库。
进一步地,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均表示人工经验值,通常重叠系数在0-1之间,可以根据业务实际情况设置;
S302、根据S301步骤中文件Y1和Y2之间存在的相似关系、包含关系和被包含关系,存储每个文件的三类关系,三类关系包括与该文件相似关系的文件集合(sim_set)、与该文件包含关系的文件集合(include_set)以及与该文件被包含关系的文件集合(included_set)。
进一步地,S4的步骤具体包括以下内容:
S401、如果Fj在与该文件相似关系的文件集合中,则保留Fi与Fj中重叠系数高的文件,删除重叠系数低的文件,如果Fi被删除,则从文件集合{F1,F2,…,Fn}中挑选新的文件重新判断与剩余文件之间关系,如果Fj被删除,则继续遍历文件集合{F1,F2,…,Fn}中的剩余文件,如果Fj不在与该文件相似关系的文件集合中,则进行S402步骤;
S402、如果Fj在与该文件包含关系的文件集合中,则删除Fj,如果Fj不在与该文件包含关系的文件集合中,则进行S403步骤;
S403、如果Fj在与该文件被包含关系的文件集合中,则删除Fi,返回到S4步骤。
本发明的另一具体实施方式涉及一种基于血缘关系的二进制组件检测系统,它包括二进制文件处理模块、特征提取模块、血缘关系计算模块和结果匹配模块;
所述二进制文件处理模块:用于获取二进制组件和相应版本,并在递归解压二进制软件包后遍历二进制文件;
所述特征提取模块:用于根据特征提取部分描述提取的特征并转化为哈希集合后存入数据库中;
所述血缘关系计算模块:用于计算文件Y1和Y2特征集合之间的重叠系数,得到分别以不同文件为分母的单侧重叠系数,即sim_Y1=|Y1∩Y2|/|Y1|和sim_Y2=|Y1∩Y2|/|Y2|,根据重叠系数计算软件组件之间的血缘关系;
所述结果匹配模块:用于遍历原有方案检测结果的文件集合{F1,F2,…,Fn}中的文件Fi,依次判断集合中剩余文件Fj,并根据不同的判断结果进行处理,得到最终的优化结果。
:所述二进制文件处理模块包括:目录判断单元、文件判断单元、文件类型判断单元和特定文件类型判断单元;
所述目录判断单元:用于在获取到需要收录的二进制组件和相应版本后判断输入的是否为目录,如果是目录则遍历目录内的内容;
所述文件判断单元:用于当不是目录时,判断是否为文件,如果是文件,则判断文件的类型;
所述文件类型判断单元:用于根据文件类型选取相应的处理函数,如果是归档文件,则解归档成目录,如果是压缩文件,则解压成目录,然后深度递归遍历该目录;
所述特定文件类型判断单元:用于如果是第一类特定文件时,则执行特征提取模块,如果是第二类特定文件,则判断是否是安装包、是否含有overlay,如果没有则执行特征提取模块,否则解析数据后再执行特征提取模块。
所述特征提取模块具体执行以下内容:
提取二进制中的数字常量和字符串常量,其中,数字常量根据measureBitsVariance函数筛选得到,字符串常量通过长度和关键字信息的启发式规则筛选得到;
将二进制转化为中间表示IR,然后保留IR的操作指令,生成n-grams的指令序列作为特征;
提取二进制文件里的函数信息,保留函数内操作指令序列和相关的参数信息作为特征;
提取二进制文件的函数调用图,生成每条函数调用图的路径作为特征;
将以上特征均转化为哈希值存入数据库。
所述血缘关系计算模块具体执行以下内容:
判断文件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;
根据文件Y1和Y2之间存在的相似关系、包含关系、被包含关系和不相关关系,存储每个文件的三类关系,三类关系包括与该文件相似关系的文件集合、与该文件包含关系的文件集合以及与该文件被包含关系的文件集合。
所述结果匹配模块具体执行以下内容:
如果Fj在与该文件相似关系的文件集合中,则保留Fi与Fj中重叠系数高的文件,删除重叠系数低的文件,如果Fi被删除,则从文件集合{F1,F2,…,Fn}中挑选新的文件重新判断与剩余文件之间关系,如果Fj被删除,则继续遍历文件集合{F1,F2,…,Fn}中的剩余文件,如果Fj不在与该文件相似关系的文件集合中,则进行后续内容;
如果Fj在与该文件包含关系的文件集合中,则删除Fj,如果Fj不在与该文件包含关系的文件集合中,则进行后续内容;
如果Fj在与该文件被包含关系的文件集合中,则删除Fi,返回到S4步骤。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (10)
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,返回到S4步骤。
6.一种基于血缘关系的二进制组件检测系统,其特征在于:它包括二进制文件处理模块、特征提取模块、血缘关系计算模块和结果匹配模块;
所述二进制文件处理模块:用于获取二进制组件和相应版本,并在递归解压二进制软件包后遍历二进制文件;
所述特征提取模块:用于根据特征提取部分描述提取的特征并转化为哈希集合后存入数据库中;
所述血缘关系计算模块:用于计算文件Y1和Y2特征集合之间的重叠系数,得到分别以不同文件为分母的单侧重叠系数,即sim_Y1=|Y1∩Y2|/|Y1|和sim_Y2=|Y1∩Y2|/|Y2|,根据重叠系数计算软件组件之间的血缘关系;
所述结果匹配模块:用于遍历原有方案检测结果的文件集合{F1,F2,…,Fn}中的文件Fi,依次判断集合中剩余文件Fj,并根据不同的判断结果进行处理,得到最终的优化结果。
7.根据权利要求6所述的一种基于血缘关系的二进制组件检测系统,其特征在于:所述二进制文件处理模块包括:目录判断单元、文件判断单元、文件类型判断单元和特定文件类型判断单元;
所述目录判断单元:用于在获取到需要收录的二进制组件和相应版本后判断输入的是否为目录,如果是目录则遍历目录内的内容;
所述文件判断单元:用于当不是目录时,判断是否为文件,如果是文件,则判断文件的类型;
所述文件类型判断单元:用于根据文件类型选取相应的处理函数,如果是归档文件,则解归档成目录,如果是压缩文件,则解压成目录,然后深度递归遍历该目录;
所述特定文件类型判断单元:用于如果是第一类特定文件时,则执行特征提取模块,如果是第二类特定文件,则判断是否是安装包、是否含有overlay,如果没有则执行特征提取模块,否则解析数据后再执行特征提取模块。
8.根据权利要求6所述的一种基于血缘关系的二进制组件检测系统,其特征在于:所述特征提取模块具体执行以下内容:
提取二进制中的数字常量和字符串常量,其中,数字常量根据第一函数筛选得到,字符串常量通过长度和关键字信息的启发式规则筛选得到;
将二进制转化为中间表示IR,然后保留IR的操作指令,生成n-grams的指令序列作为特征;
提取二进制文件里的函数信息,保留函数内操作指令序列和相关的参数信息作为特征;
提取二进制文件的函数调用图,生成每条函数调用图的路径作为特征;
将以上特征均转化为哈希值存入数据库。
9.根据权利要求6所述的一种基于血缘关系的二进制组件检测系统,其特征在于:所述血缘关系计算模块具体执行以下内容:
判断文件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均表示人工经验值;
根据文件Y1和Y2之间存在的相似关系、包含关系、被包含关系和不相关关系,存储每个文件的三类关系,三类关系包括与该文件相似关系的文件集合、与该文件包含关系的文件集合以及与该文件被包含关系的文件集合。
10.根据权利要求9所述的一种基于血缘关系的二进制组件检测系统,其特征在于:所述结果匹配模块具体执行以下内容:
如果Fj在与该文件相似关系的文件集合中,则保留Fi与Fj中重叠系数高的文件,删除重叠系数低的文件,如果Fi被删除,则从文件集合{F1,F2,…,Fn}中挑选新的文件重新判断与剩余文件之间关系,如果Fj被删除,则继续遍历文件集合{F1,F2,…,Fn}中的剩余文件,如果Fj不在与该文件相似关系的文件集合中,则进行后续内容;
如果Fj在与该文件包含关系的文件集合中,则删除Fj,如果Fj不在与该文件包含关系的文件集合中,则进行后续内容;
如果Fj在与该文件被包含关系的文件集合中,则删除Fi,返回到S4步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310998661.7A CN116954701B (zh) | 2023-08-09 | 2023-08-09 | 一种基于血缘关系的二进制组件检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310998661.7A CN116954701B (zh) | 2023-08-09 | 2023-08-09 | 一种基于血缘关系的二进制组件检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116954701A true CN116954701A (zh) | 2023-10-27 |
CN116954701B CN116954701B (zh) | 2024-05-14 |
Family
ID=88452994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310998661.7A Active CN116954701B (zh) | 2023-08-09 | 2023-08-09 | 一种基于血缘关系的二进制组件检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116954701B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362343A (zh) * | 2019-07-19 | 2019-10-22 | 上海交通大学 | N-Gram的检测字节码相似度的方法 |
CN110399729A (zh) * | 2019-04-11 | 2019-11-01 | 国家计算机网络与信息安全管理中心 | 一种基于组件特征权重的二进制软件分析方法 |
US20220147629A1 (en) * | 2020-11-06 | 2022-05-12 | Vmware Inc. | Systems and methods for classifying malware based on feature reuse |
CN115309796A (zh) * | 2021-05-07 | 2022-11-08 | 深信服科技股份有限公司 | 一种相似性查询方法、数据库更新方法、装置及系统 |
CN115794629A (zh) * | 2022-11-24 | 2023-03-14 | 深圳开源互联网安全技术有限公司 | 软件成分检测方法、电子设备及计算机可读存储介质 |
-
2023
- 2023-08-09 CN CN202310998661.7A patent/CN116954701B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399729A (zh) * | 2019-04-11 | 2019-11-01 | 国家计算机网络与信息安全管理中心 | 一种基于组件特征权重的二进制软件分析方法 |
CN110362343A (zh) * | 2019-07-19 | 2019-10-22 | 上海交通大学 | N-Gram的检测字节码相似度的方法 |
US20220147629A1 (en) * | 2020-11-06 | 2022-05-12 | Vmware Inc. | Systems and methods for classifying malware based on feature reuse |
CN115309796A (zh) * | 2021-05-07 | 2022-11-08 | 深信服科技股份有限公司 | 一种相似性查询方法、数据库更新方法、装置及系统 |
CN115794629A (zh) * | 2022-11-24 | 2023-03-14 | 深圳开源互联网安全技术有限公司 | 软件成分检测方法、电子设备及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
曾鸣;赵荣彩;姚京松;王小芹;: "基于特征提取的二进制代码比较技术", 计算机工程与应用, no. 22, 1 August 2006 (2006-08-01) * |
Also Published As
Publication number | Publication date |
---|---|
CN116954701B (zh) | 2024-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102485179B1 (ko) | 설명 정보 확정 방법, 장치, 전자 기기 및 컴퓨터 저장 매체 | |
US9135289B2 (en) | Matching transactions in multi-level records | |
RU2420791C1 (ru) | Метод отнесения ранее неизвестного файла к коллекции файлов в зависимости от степени схожести | |
CN106843840B (zh) | 一种基于相似度分析的源代码版本演化注释复用方法 | |
CN111597243B (zh) | 基于数据仓库抽象数据加载的方法及系统 | |
US11651014B2 (en) | Source code retrieval | |
US9372846B1 (en) | Method for abstract syntax tree building for large-scale data analysis | |
CN116431520A (zh) | 测试场景确定方法、装置、电子设备和存储介质 | |
CN109325217B (zh) | 一种文件转换方法、系统、装置及计算机可读存储介质 | |
CN110069455B (zh) | 一种文件合并方法及装置 | |
KR101827965B1 (ko) | 연동 통제 문서 분석 장치 및 방법 | |
CN107679055B (zh) | 信息检索方法、服务器及可读存储介质 | |
CN111460137B (zh) | 一种基于主题模型的微服务关注点识别方法、设备及介质 | |
CN116954701B (zh) | 一种基于血缘关系的二进制组件检测方法及系统 | |
CN111444411A (zh) | 网络数据增量采集方法、装置、设备及存储介质 | |
CN113821496B (zh) | 数据库迁移方法、系统、设备及计算机可读存储介质 | |
CN116400910A (zh) | 一种基于api替换的代码性能优化方法 | |
CN111859896B (zh) | 配方文档检测方法、装置、计算机可读介质及电子设备 | |
CN115203494A (zh) | 一种面向文本的时间信息抽取方法及装置 | |
CN113342749A (zh) | 文件路径匹配方法、装置、设备及计算机可读存储介质 | |
Tan et al. | Checking Refactoring Detection Results Using Code Changes Encoding for Improved Accuracy | |
KR102286451B1 (ko) | 자연어 처리 기반 난독화된 식별자 인식 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
CN112749186B (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 | |
CN112836477B (zh) | 代码注释文档的生成方法、装置、电子设备及存储介质 | |
CN116975040A (zh) | 一种危化品信息管理方法、装置、设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |