CN116578979B - 一种基于代码特征的跨平台二进制代码匹配方法及系统 - Google Patents
一种基于代码特征的跨平台二进制代码匹配方法及系统 Download PDFInfo
- Publication number
- CN116578979B CN116578979B CN202310540859.0A CN202310540859A CN116578979B CN 116578979 B CN116578979 B CN 116578979B CN 202310540859 A CN202310540859 A CN 202310540859A CN 116578979 B CN116578979 B CN 116578979B
- Authority
- CN
- China
- Prior art keywords
- code
- features
- extracting
- feature
- basic block
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 239000013598 vector Substances 0.000 claims abstract description 94
- 238000012549 training Methods 0.000 claims abstract description 38
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 18
- 238000012795 verification Methods 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 55
- 238000000605 extraction Methods 0.000 claims description 35
- 238000007637 random forest analysis Methods 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 230000003068 static effect Effects 0.000 claims description 8
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 abstract description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000001965 increasing effect Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 101100234002 Drosophila melanogaster Shal gene Proteins 0.000 description 1
- 235000015076 Shorea robusta Nutrition 0.000 description 1
- 244000166071 Shorea robusta Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/24323—Tree-organised classifiers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/216—Parsing using statistical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
- G06F40/242—Dictionaries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Virology (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Probability & Statistics with Applications (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种基于代码特征的跨平台二进制代码匹配方法及系统,包括从内存dump出data或rdata段的数据提取里面的常量字符串特征,并通过算法生成常量字符串的哈希特征值;依次提取语法/文本特征,提取代码的语义特征以及提取图同构的特征,将所有特征按照预定顺序进行首尾相接,拼接成高维的特征向量;对所有高维的特征向量进行降维,使用分类器对降维后的特征向量进行多分类训练,得到训练好的分类器模型,并对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验。本发明能快速找到恶意app用于加密或签名的二进制代码,还能广泛用于代码抄袭检测、补丁检测、代码漏洞发现、恶意软件族谱追踪等。
Description
技术领域
本发明涉及软件安全技术领域,尤其涉及一种基于代码特征的跨平台二进制代码匹配方法及系统。
背景技术
随着智能设备的普及,基于这类设备的app日益增多,其中不乏大量的恶意app,为了更好地防范和打击这类恶意app,需要对app进行代码分析,而因为这类app是已经编译过的app,因此只能分析其二进制代码,但是这类恶意app有很多恶意功能,一般情况下不能在真机中运行,只能通过静态方法或者模拟器执行的方式分析器源码,找到恶意功能实现的细节和原理;为了防止被逆向分析,很多恶意app都会使用加密算法对自身代码进行加密,或者对发送的数据包做加密或指纹签名,因此,分析前必须先解密数据才能继续对代码进行分析。
现有对恶意app用于加密或者签名代码的逆向分析,主要是提取特征后进行比对,比如一种是提取常量特征后转为哈希值匹配,这种方式按照ASCII码的方式提取常量,会提取大量无意义的字符串,这些无意义的字符串常量会反过来增加哈希值数量,加大数据存储和后续计算匹配的压力,而且判断字符串属于哪个函数的运算成本很高,所以通过常量字符串方式多为匹配文件颗粒度的相似度,无法进一步细化到代码相似度的匹配;另一种是提取代码特征后计算特征之间的相似度或用机器学习方法做分类,这种方式如果二进制代码被OLLVM(低水平虚拟机混淆器)混淆,原有代码基本块的跳转关系就会被完全打乱,此时生成的CFG(控制流图)或ICFG(过程间控制流图)图就无法表征原始二进制代码的跳转关系特征,而且原有二进制代码中基本块与函数的上下游调用关系,各种特征也会被完全打乱,原有的特征提取办法就会失效;因此,现有的二进制匹配比对思路都是提取各类特征后做对比,但都不完善,提取的特征都可能会被针对性地破坏或故意误导。
需要说明的是,在上述背景技术部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明的目的在于克服现有技术的缺点,提供了一种基于代码特征的跨平台二进制代码匹配方法及系统,解决了现有方法存在的不足。
本发明的目的通过以下技术方案来实现:一种基于代码特征的跨平台二进制代码匹配方法,所述方法包括:
S1、从内存dump出data或rdata段的数据提取里面的常量字符串特征,并通过算法生成常量字符串的哈希特征值;
S2、依次提取语法/文本特征,提取代码的语义特征以及提取图同构的特征,将所有特征按照预定顺序进行首尾相接,拼接成高维的特征向量;
S3、通过随机森林算法对所有高维的特征向量进行分类实现压缩降维,使用分类器对降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验。
所述提取语法/文本特征包括:
以指令的基础块为单元,去除该单元内所有二进制汇编指令的操作数只保留操作码,以此屏蔽不同的常数项和寄存器带来的文本差异;
对于每个操作码求出其tf-idf值,其值越高说明该指令在当前基础块内的特征越明显;
将所有操作码转换成字典,然后将当前基础块中所有操作码的tf-idf值按照该操作码在字典内的位置顺序排列,形成该基础块的N-hot特征向量。
所述提取代码的语义特征包括:在基础块的最后指令执行完毕后收集所有通用寄存器的值,并按照预定顺序将这些值进行排列,形成基础块输出值特征向量。
所述提取图同构的特征包括:
运行二进制代码文件筛选出没有被执行的所有基础块和二进制代码,通过静态分析的方式将没有被执行的基础块以及其之间的跳转指令进行空指令操作,并将没有被执行的二进制代码进行空指令操作;
在基础块最后指令执行结束时提取通用寄存器的值作为特征,并提取基础块指令条数、基础块的入度和基础块的出度作为特征;
判断跳转指令的跳转类型并提取作为特征,提取函数参数、函数返回值、函数调用的入度、函数调用的出度、函数代码指令条数、函数栈空间大小、函数局部变量个数和函数内部基础块个数作为特征;
将提取的所有特征按照预定顺序依次排列形成N维特征向量。
所述S3的步骤具体包括:
通过随机森林算法产生大量子树,每个子树抽取原特征向量特定数量的维度进行分类并以向量的形式输出分类结果,每个子树的高度为3,叶子节点数为8,即每个子树生成的向量为8维,设子树数量为L,原特征向量维度为N,N/L>8;
将随机森林每个子树运行结果的向量首尾拼接得到新的降维后的特征向量,使用分类器对生成的降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验。
所述方法还包括训练样本生成步骤,所述训练样本生成步骤包括:
将常见的加密和签名且未被混淆的二进制代码使用编译器通过交叉编译的方式编译成不同硬件平台、不同编译器、不同编译器版本、不同操作系统对应的二进制代码文件,以增加训练数据样本,并通过S1和S2步骤提取特征,并拼接成高维特征向量作为训练样本的特征向量对分类器进行训练。
一种基于代码特征的跨平台二进制代码匹配系统,它包括特征转换模块、特征提取模块和训练分类模块;
所述特征转换模块:用于从内存dump出data或rdata段的数据提取里面的常量字符串特征,并通过算法生成常量字符串的哈希特征值;
所述特征提取模块:用于依次提取语法/文本特征,提取代码的语义特征以及提取图同构的特征,将所有特征按照预定顺序进行首尾相接,拼接成高维的特征向量;
所述训练分类模块:用于通过随机森林算法对所有高维的特征向量进行分类实现压缩降维,使用分类器对降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验。
所述特征提取模块包括语法/文本特征提取单元、代码语义特征提取单元和图同构特征提取单元;
所述语法/文本特征提取单元:用于以指令的基础块为单元,去除该单元内所有二进制汇编指令的操作数只保留操作码,以此屏蔽不同的常数项和寄存器带来的文本差异;对于每个操作码求出其tf-idf值,其值越高说明该指令在当前基础块内的特征越明显;将所有操作码转换成字典,然后将当前基础块中所有操作码的tf-idf值按照该操作码在字典内的位置顺序排列,形成该基础块的N-hot特征向量;
所述代码语义特征提取单元:用于在基础块的最后指令执行完毕后收集所有通用寄存器的值,并按照预定顺序将这些值进行排列,形成基础块输出值特征向量;
所述图同构特征提取单元:用于通过运行二进制代码文件筛选出没有被执行的所有基础块和二进制代码,通过静态分析的方式将没有被执行的基础块以及其之间的跳转指令进行空指令操作,并将没有被执行的二进制代码进行空指令操作;在基础块最后指令执行结束时提取通用寄存器的值作为特征,并提取基础块指令条数、基础块的入度和基础块的出度作为特征;判断跳转指令的跳转类型并提取作为特征,提取函数参数、函数返回值、函数调用的入度、函数调用的出度、函数代码指令条数、函数栈空间大小、函数局部变量个数和函数内部基础块个数作为特征;将提取的所有特征按照预定顺序依次排列形成N维特征向量。
还包括训练样本扩展模块,所述训练样本扩展模块:用于将常见的加密和签名且未被混淆的二进制代码使用编译器通过交叉编译的方式编译成不同硬件平台、不同编译器、不同编译器版本、不同操作系统对应的二进制代码文件,以增加训练数据样本,并通过特征转换模块和特征提取模块提取特征,并拼接成高维特征向量作为训练样本的特征向量对分类器进行训练。
本发明具有以下优点:一种基于代码特征的跨平台二进制代码匹配方法及系统,除了快速找到恶意app用于加密或签名的二进制代码,还能广泛用于代码抄袭检测、补丁检测、代码漏洞发现、恶意软件族谱追踪等;而且由于提取的特征有常量字符串特征、图同构特征、函数特征,这些特征是和软硬件平台、操作系统、编译器及版本无关的,所以利用这些特征是可以达到跨软硬件平台、操作系统、编译器及版本做二进制的加密和签名代码相似度检测及匹配。
附图说明
图1为本发明方法的流程示意图;
图2为本发明经过反混淆后的代码效果示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下结合附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的保护范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本发明做进一步的描述。
如图1所示,本发明其中一种实施方式涉及一种基于代码特征的跨平台二进制代码匹配方法,其具体包括以下内容:
S1、为了提取最精准的特征,并尽可能节约提取和存储的时间及计算机硬件成本,在提取常量字符串时只提取二进制文件data或rdata段的常量,从内存dump出data或rdata段的数据提取里面的常量字符串特征,并通过MD5或shal算法生成常量字符串的哈希特征值;
S2、依次提取语法/文本特征,提取代码的语义特征以及提取图同构的特征,将所有特征按照预定顺序进行首尾相接,拼接成高维的特征向量;
S3、通过随机森林算法对所有高维的特征向量进行分类实现压缩降维,使用分类器对降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验。
进一步地,对于同一段源码,不同编译器、不同版本的编译器可能编译成不同的二进制代码,所以提取二进制代码的语法或文本特征时,需要考虑到不同指令顺序和不同操作数带来的文本差异,提取语法/文本特征包括:
以指令的基础块为单元,去除该单元内所有二进制汇编指令的操作数只保留操作码,以此屏蔽不同的常数项和寄存器带来的文本差异;
对于每个操作码求出其tf-idf(词频-逆文档频率)值,其值越高说明该指令在当前基础块内的特征越明显,后续用机器学习算法做分类的精确率和召回率越高;
将x86架构下所有操作码转换成字典,然后将当前基础块中所有操作码的tf-idf值按照该操作码在字典内的位置顺序排列,形成该基础块的N-hot特征向量。
进一步地,提取代码的语义特征包括:为了防止被逆向和破解,恶意app开发人员可能会在正常的二进制源码之间人为增加大量的无效、无用代码指令,以此来增加逆向破解人员分析的成本。但不论增加了多少无效、无用代码指令,也不论增加了哪些无效、无用代码指令,基础块最终输出的结果是不会变的,所以在基础块的最后一行代码执行完毕后,可以收集所有通用寄存器的值(去掉eip、esp、ebp、eflags等寄存器的值),按照既定的顺序将这些值排列,形成基础块输出值特征向量。
进一步地,整个二进制文件是由多个没有跳转指令的基础块构成的。基础块实现最基本的功能,然后由各种跳转指令(诸如jmp、call、ret等)控制基础块之间的执行转移,OLLVM或VMP混淆就是通过在原基础块之间添加大量无用、无效的基础块来打乱原有基本块之间的跳转关系。部分混淆甚至还会把原较大基础块继续拆分成多个更小基础块,然后通过互相跳转的方式来保证更改前的大基础块和更改后的多个小基础块保持语义一致性;提取图同构的特征包括:
静态分析:运行二进制代码文件筛选出没有被执行的所有基础块,通过静态分析的方式将没有被执行的基础块以及其之间的跳转指令进行空指令操作;
动态追踪:IDA、frida等业界常用的逆向破解工具都有二进制代码动态执行的追踪trace功能,由此可以识别出未被执行的二进制代码,这部分代也可以直接进行空指令操作;
模拟执行:unidbg、unicorn等业界常用的模拟器也可以逐行执行汇编代码,同样可以识别出未被执行的二进制代码,这部分代也可以直接进行空指令操作。
如图2所示,经过上述方法后可以去掉大量无效、无用的跳转和对应的基础块,从图中可以发现,原始程序经过反混淆后,减少了大量的基础块和跳转关系,基本恢复了混淆前二进制代码的状态。
在基础块最后指令执行结束时提取通用寄存器的值作为特征,并提取基础块指令条数、基础块的入度和基础块的出度作为特征;
判断跳转指令是否为条件跳转还是无条件跳转,基础块之间的跳转是单向还是双向,并提取作为特征,提取函数参数、函数返回值、函数调用的入度、函数调用的出度、函数代码指令条数、函数栈空间大小、函数局部变量个数和函数内部基础块个数作为特征;
将提取的所有特征按照预定顺序依次排列形成N维特征向量。
进一步地,S3的步骤具体包括:
通过随机森林算法产生大量子树,每个子树抽取原特征向量特定数量的维度进行分类并以向量的形式输出分类结果,这一步的本质就是借助机器学习的树模型进一步提取维度特征,将原高纬度特征向量降为低纬度特征向量。
为避免随机森林子树过拟合,每个子树的高度为3,叶子节点数为8,即每个子树生成的向量为8维,设子树数量为L,原特征向量维度为N,为了降维,N/L>8,比如取N/L=16,可以将原特征向量的维度减半;如果取M/N=24,原特征向量维度减少2/3;
将随机森林每个子树运行结果的向量首尾拼接得到新的降维后的特征向量,长度为8L,使用分类器(如逻辑回归、SVM、贝叶斯和决策树等等)对生成的降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验。
进一步地,方法还包括训练样本生成步骤,训练样本生成步骤包括:
将常见的加密和签名且未被混淆的二进制代码使用主流的编译器(包括但不限于GCC、Clang、Visual C++、C++Compiler、Clang-Tidy、TCC等)通过交叉编译的方式编译成不同硬件平台(包括但不限于x86、arm的32位和64位版本)、不同编译器、不同编译器版本、不同操作系统对应的二进制代码文件,以增加训练数据样本,并通过S1和S2步骤提取特征,并拼接成高维特征向量作为训练样本的特征向量对分类器进行训练。
本发明的另一种实施方式具体涉及一种基于代码特征的跨平台二进制代码匹配系统,它包括特征转换模块、特征提取模块和训练分类模块;
所述特征转换模块:用于从内存dump出data或rdata段的数据提取里面的常量字符串特征,并通过算法生成常量字符串的哈希特征值;
所述特征提取模块:用于依次提取语法/文本特征,提取代码的语义特征以及提取图同构的特征,将所有特征按照预定顺序进行首尾相接,拼接成高维的特征向量;
所述训练分类模块:用于通过随机森林算法对所有高维的特征向量进行分类实现压缩降维,使用分类器对降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验。
所述特征提取模块包括语法/文本特征提取单元、代码语义特征提取单元和图同构特征提取单元;
所述语法/文本特征提取单元:用于以指令的基础块为单元,去除该单元内所有二进制汇编指令的操作数只保留操作码,以此屏蔽不同的常数项和寄存器带来的文本差异;对于每个操作码求出其tf-idf值,其值越高说明该指令在当前基础块内的特征越明显;将所有操作码转换成字典,然后将当前基础块中所有操作码的tf-idf值按照该操作码在字典内的位置顺序排列,形成该基础块的N-hot特征向量;
所述代码语义特征提取单元:用于在基础块的最后指令执行完毕后收集所有通用寄存器的值,并按照预定顺序将这些值进行排列,形成基础块输出值特征向量;
所述图同构特征提取单元:用于通过运行二进制代码文件筛选出没有被执行的所有基础块和二进制代码,通过静态分析的方式将没有被执行的基础块以及其之间的跳转指令进行空指令操作,并将没有被执行的二进制代码进行空指令操作;在基础块最后指令执行结束时提取通用寄存器的值作为特征,并提取基础块指令条数、基础块的入度和基础块的出度作为特征;判断跳转指令的跳转类型并提取作为特征,提取函数参数、函数返回值、函数调用的入度、函数调用的出度、函数代码指令条数、函数栈空间大小、函数局部变量个数和函数内部基础块个数作为特征;将提取的所有特征按照预定顺序依次排列形成N维特征向量。
还包括训练样本扩展模块,所述训练样本扩展模块:用于将常见的加密和签名且未被混淆的二进制代码使用编译器通过交叉编译的方式编译成不同硬件平台、不同编译器、不同编译器版本、不同操作系统对应的二进制代码文件,以增加训练数据样本,并通过特征转换模块和特征提取模块提取特征,并拼接成高维特征向量作为训练样本的特征向量对分类器进行训练。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (7)
1.一种基于代码特征的跨平台二进制代码匹配方法,其特征在于:所述方法包括:
S1、从内存dump出data或rdata段的数据提取里面的常量字符串特征,并通过算法生成常量字符串的哈希特征值;
S2、依次提取语法/文本特征,提取代码的语义特征以及提取图同构的特征,将所有特征按照预定顺序进行首尾相接,拼接成高维的特征向量;
S3、通过随机森林算法对所有高维的特征向量进行分类实现压缩降维,使用分类器对降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验;
所述提取图同构的特征包括:
运行二进制代码文件筛选出没有被执行的所有基础块和二进制代码,通过静态分析的方式将没有被执行的基础块以及其之间的跳转指令进行空指令操作,并将没有被执行的二进制代码进行空指令操作;
在基础块最后指令执行结束时提取通用寄存器的值作为特征,并提取基础块指令条数、基础块的入度和基础块的出度作为特征;
判断跳转指令的跳转类型并提取作为特征,提取函数参数、函数返回值、函数调用的入度、函数调用的出度、函数代码指令条数、函数栈空间大小、函数局部变量个数和函数内部基础块个数作为特征;
将提取的所有特征按照预定顺序依次排列形成N维特征向量。
2.根据权利要求1所述的一种基于代码特征的跨平台二进制代码匹配方法,其特征在于:所述提取语法/文本特征包括:
以指令的基础块为单元,去除该单元内所有二进制汇编指令的操作数只保留操作码,以此屏蔽不同的常数项和寄存器带来的文本差异;
对于每个操作码求出其tf-idf值,其值越高说明该操作码在当前基础块内的特征越明显;
将所有操作码转换成字典,然后将当前基础块中所有操作码的tf-idf值按照该操作码在字典内的位置顺序排列,形成该基础块的N-hot特征向量。
3.根据权利要求1所述的一种基于代码特征的跨平台二进制代码匹配方法,其特征在于:所述提取代码的语义特征包括:在基础块的最后指令执行完毕后收集所有通用寄存器的值,并按照预定顺序将这些值进行排列,形成基础块输出值特征向量。
4.根据权利要求1所述的一种基于代码特征的跨平台二进制代码匹配方法,其特征在于:所述S3的步骤具体包括:
通过随机森林算法产生大量子树,每个子树抽取原特征向量特定数量的维度进行分类并以向量的形式输出分类结果,每个子树的高度为3,叶子节点数为8,即每个子树生成的向量为8维,设子树数量为L,原特征向量维度为N,N/L>8;
将随机森林每个子树运行结果的向量首尾拼接得到新的降维后的特征向量,使用分类器对生成的降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验。
5.根据权利要求1-4中任意一项所述的一种基于代码特征的跨平台二进制代码匹配方法,其特征在于:所述方法还包括训练样本生成步骤,所述训练样本生成步骤包括:
将常见的加密和签名且未被混淆的二进制代码使用编译器通过交叉编译的方式编译成不同硬件平台、不同编译器、不同编译器版本、不同操作系统对应的二进制代码文件,以增加训练数据样本,并通过S1和S2步骤提取特征,并拼接成高维特征向量作为训练样本的特征向量对分类器进行训练。
6.一种基于代码特征的跨平台二进制代码匹配系统,其特征在于:它包括特征转换模块、特征提取模块和训练分类模块;
所述特征转换模块:用于从内存dump出data或rdata段的数据提取里面的常量字符串特征,并通过算法生成常量字符串的哈希特征值;
所述特征提取模块:用于依次提取语法/文本特征,提取代码的语义特征以及提取图同构的特征,将所有特征按照预定顺序进行首尾相接,拼接成高维的特征向量;
所述训练分类模块:用于通过随机森林算法对所有高维的特征向量进行分类实现压缩降维,使用分类器对降维后的特征向量进行多分类训练,得到训练好的分类器模型,通过该分类器模型对新的特征向量进行分类匹配,判断新的特征向量的二进制代码属于哪种加密或者签名校验所述特征提取模块包括语法/文本特征提取单元、代码语义特征提取单元和图同构特征提取单元;
所述语法/文本特征提取单元:用于以指令的基础块为单元,去除该单元内所有二进制汇编指令的操作数只保留操作码,以此屏蔽不同的常数项和寄存器带来的文本差异;对于每个操作码求出其tf-idf值,其值越高说明该操作码在当前基础块内的特征越明显;将所有操作码转换成字典,然后将当前基础块中所有操作码的tf-idf值按照该操作码在字典内的位置顺序排列,形成该基础块的N-hot特征向量;
所述代码语义特征提取单元:用于在基础块的最后指令执行完毕后收集所有通用寄存器的值,并按照预定顺序将这些值进行排列,形成基础块输出值特征向量;
所述图同构特征提取单元:用于通过运行二进制代码文件筛选出没有被执行的所有基础块和二进制代码,通过静态分析的方式将没有被执行的基础块以及其之间的跳转指令进行空指令操作,并将没有被执行的二进制代码进行空指令操作;在基础块最后指令执行结束时提取通用寄存器的值作为特征,并提取基础块指令条数、基础块的入度和基础块的出度作为特征;判断跳转指令的跳转类型并提取作为特征,提取函数参数、函数返回值、函数调用的入度、函数调用的出度、函数代码指令条数、函数栈空间大小、函数局部变量个数和函数内部基础块个数作为特征;将提取的所有特征按照预定顺序依次排列形成N维特征向量。
7.根据权利要求6所述的一种基于代码特征的跨平台二进制代码匹配系统,其特征在于:还包括训练样本扩展模块,所述训练样本扩展模块:用于将常见的加密和签名且未被混淆的二进制代码使用编译器通过交叉编译的方式编译成不同硬件平台、不同编译器、不同编译器版本、不同操作系统对应的二进制代码文件,以增加训练数据样本,并通过特征转换模块和特征提取模块提取特征,并拼接成高维特征向量作为训练样本的特征向量对分类器进行训练。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310540859.0A CN116578979B (zh) | 2023-05-15 | 2023-05-15 | 一种基于代码特征的跨平台二进制代码匹配方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310540859.0A CN116578979B (zh) | 2023-05-15 | 2023-05-15 | 一种基于代码特征的跨平台二进制代码匹配方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116578979A CN116578979A (zh) | 2023-08-11 |
CN116578979B true CN116578979B (zh) | 2024-05-31 |
Family
ID=87533527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310540859.0A Active CN116578979B (zh) | 2023-05-15 | 2023-05-15 | 一种基于代码特征的跨平台二进制代码匹配方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116578979B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2020235616A1 (zh) * | 2019-05-21 | 2020-11-26 | ||
CN112084146A (zh) * | 2020-09-08 | 2020-12-15 | 国网上海市电力公司 | 基于多维特征的固件同源性检测方法 |
CN112596736A (zh) * | 2020-12-24 | 2021-04-02 | 哈尔滨工业大学 | 一种基于语义的跨指令架构二进制代码相似性检测方法 |
CN113010209A (zh) * | 2020-10-19 | 2021-06-22 | 四川大学 | 一种抗编译差异的二进制代码相似性比较技术 |
CN113553056A (zh) * | 2021-07-21 | 2021-10-26 | 浙江大学 | 基于图匹配的llvm中间语言差分分析方法及系统 |
CN113900923A (zh) * | 2021-08-16 | 2022-01-07 | 中国人民解放军战略支援部队信息工程大学 | 一种跨指令集架构的二进制函数相似性检查系统及方法 |
CN115098857A (zh) * | 2022-06-15 | 2022-09-23 | 天津大学 | 一种可视化恶意软件的分类方法及装置 |
CN115113877A (zh) * | 2022-07-06 | 2022-09-27 | 上海交通大学 | 跨架构二进制代码相似性检测方法及系统 |
CN115168856A (zh) * | 2022-07-29 | 2022-10-11 | 山东省计算中心(国家超级计算济南中心) | 二进制代码相似性检测方法及物联网固件漏洞检测方法 |
CN115455382A (zh) * | 2022-08-11 | 2022-12-09 | 武汉大学 | 一种二进制函数代码的语义比对方法及装置 |
CN115544490A (zh) * | 2022-09-29 | 2022-12-30 | 山东大学 | 一种检测二进制文件中密码常量的方法及系统 |
CN115576840A (zh) * | 2022-11-01 | 2023-01-06 | 中国科学院软件研究所 | 基于机器学习的静态程序插桩检测方法及装置 |
CN115758164A (zh) * | 2022-10-12 | 2023-03-07 | 清华大学 | 二进制代码相似度检测方法、模型训练方法及装置 |
KR20230062204A (ko) * | 2021-10-29 | 2023-05-09 | 삼성에스디에스 주식회사 | 악성 코드 탐지 방법 및 그 장치 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10367841B2 (en) * | 2016-12-16 | 2019-07-30 | Patternex, Inc. | Method and system for learning representations for log data in cybersecurity |
US11934458B2 (en) * | 2020-05-22 | 2024-03-19 | The George Washington University | Binary code similarity detection system |
US20220358214A1 (en) * | 2021-05-04 | 2022-11-10 | Battelle Energy Alliance, Llc | Systems and methods for binary code analysis |
-
2023
- 2023-05-15 CN CN202310540859.0A patent/CN116578979B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2020235616A1 (zh) * | 2019-05-21 | 2020-11-26 | ||
CN112084146A (zh) * | 2020-09-08 | 2020-12-15 | 国网上海市电力公司 | 基于多维特征的固件同源性检测方法 |
CN113010209A (zh) * | 2020-10-19 | 2021-06-22 | 四川大学 | 一种抗编译差异的二进制代码相似性比较技术 |
CN112596736A (zh) * | 2020-12-24 | 2021-04-02 | 哈尔滨工业大学 | 一种基于语义的跨指令架构二进制代码相似性检测方法 |
CN113553056A (zh) * | 2021-07-21 | 2021-10-26 | 浙江大学 | 基于图匹配的llvm中间语言差分分析方法及系统 |
CN113900923A (zh) * | 2021-08-16 | 2022-01-07 | 中国人民解放军战略支援部队信息工程大学 | 一种跨指令集架构的二进制函数相似性检查系统及方法 |
KR20230062204A (ko) * | 2021-10-29 | 2023-05-09 | 삼성에스디에스 주식회사 | 악성 코드 탐지 방법 및 그 장치 |
CN115098857A (zh) * | 2022-06-15 | 2022-09-23 | 天津大学 | 一种可视化恶意软件的分类方法及装置 |
CN115113877A (zh) * | 2022-07-06 | 2022-09-27 | 上海交通大学 | 跨架构二进制代码相似性检测方法及系统 |
CN115168856A (zh) * | 2022-07-29 | 2022-10-11 | 山东省计算中心(国家超级计算济南中心) | 二进制代码相似性检测方法及物联网固件漏洞检测方法 |
CN115455382A (zh) * | 2022-08-11 | 2022-12-09 | 武汉大学 | 一种二进制函数代码的语义比对方法及装置 |
CN115544490A (zh) * | 2022-09-29 | 2022-12-30 | 山东大学 | 一种检测二进制文件中密码常量的方法及系统 |
CN115758164A (zh) * | 2022-10-12 | 2023-03-07 | 清华大学 | 二进制代码相似度检测方法、模型训练方法及装置 |
CN115576840A (zh) * | 2022-11-01 | 2023-01-06 | 中国科学院软件研究所 | 基于机器学习的静态程序插桩检测方法及装置 |
Non-Patent Citations (2)
Title |
---|
二进制代码相似度分析及在嵌入式设备固件漏洞搜索中的应用;于颖超 等;《软件学院》;20221115;4138-4172 * |
基于深度学习的android恶意应用分类及其关键技术研究;毛青于;《中国优秀硕士学位论文全文数据库·信息科技辑》;20200215;34-35页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116578979A (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Enhancing state-of-the-art classifiers with api semantics to detect evolved android malware | |
Harer et al. | Automated software vulnerability detection with machine learning | |
Vu et al. | AdMat: A CNN-on-matrix approach to Android malware detection and classification | |
CN109905385B (zh) | 一种webshell检测方法、装置及系统 | |
US11048798B2 (en) | Method for detecting libraries in program binaries | |
US20140130158A1 (en) | Identification of malware detection signature candidate code | |
CN112800427B (zh) | webshell检测方法、装置、电子设备和存储介质 | |
CN112307473A (zh) | 一种基于Bi-LSTM网络和注意力机制的恶意JavaScript代码检测模型 | |
KR101858620B1 (ko) | 기계 학습을 이용한 자바스크립트 분석 장치 및 방법 | |
US20200159925A1 (en) | Automated malware analysis that automatically clusters sandbox reports of similar malware samples | |
CN114047929B (zh) | 基于知识增强的用户定义函数识别方法、装置及介质 | |
Alrabaee et al. | On leveraging coding habits for effective binary authorship attribution | |
Kakisim et al. | Sequential opcode embedding-based malware detection method | |
Wang et al. | Explainable apt attribution for malware using nlp techniques | |
Park et al. | Birds of a feature: Intrafamily clustering for version identification of packed malware | |
Ban et al. | Fam: Featuring android malware for deep learning-based familial analysis | |
Shu et al. | Android malware detection methods based on convolutional neural network: A survey | |
Lageman et al. | B in dnn: Resilient function matching using deep learning | |
Wang et al. | DeepVulSeeker: A novel vulnerability identification framework via code graph structure and pre-training mechanism | |
Ye et al. | RapidFuzz: Accelerating fuzzing via generative adversarial networks | |
Banik et al. | Android malware detection by correlated real permission couples using FP growth algorithm and neural networks | |
Zhang et al. | Slowing down the aging of learning-based malware detectors with api knowledge | |
Haile et al. | Identifying ubiquitious third-party libraries in compiled executables using annotated and translated disassembled code with supervised machine learning | |
Sharif et al. | Function identification in android binaries with deep learning | |
CN116578979B (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 |