CN112487368B - 一种基于图卷积网络的函数级混淆检测方法 - Google Patents
一种基于图卷积网络的函数级混淆检测方法 Download PDFInfo
- Publication number
- CN112487368B CN112487368B CN202011521368.4A CN202011521368A CN112487368B CN 112487368 B CN112487368 B CN 112487368B CN 202011521368 A CN202011521368 A CN 202011521368A CN 112487368 B CN112487368 B CN 112487368B
- Authority
- CN
- China
- Prior art keywords
- confusion
- graph
- function
- control flow
- detection
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 104
- 238000000034 method Methods 0.000 claims abstract description 60
- 239000011159 matrix material Substances 0.000 claims abstract description 40
- 238000005516 engineering process Methods 0.000 claims abstract description 22
- 238000012549 training Methods 0.000 claims abstract description 12
- 238000003062 neural network model Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 89
- 238000012545 processing Methods 0.000 claims description 15
- 239000013598 vector Substances 0.000 claims description 13
- 238000005096 rolling process Methods 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 8
- 238000012905 input function Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 5
- 238000012360 testing method Methods 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 210000002569 neuron Anatomy 0.000 claims description 3
- 238000010801 machine learning Methods 0.000 description 8
- 230000002441 reversible effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 239000000284 extract Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008571 general function Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013398 bayesian method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
Images
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/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/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Computer Hardware Design (AREA)
- Virology (AREA)
- Probability & Statistics with Applications (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种基于图卷积网络的函数级混淆检测方法,属于网络安全领域。本发明包括如下步骤:使用不同的混淆技术生成混淆后的函数;函数的控制流图特征提取;混淆检测模型的构建;在函数级混淆检测的基础上进行apk级别的混淆检测。本发明针对x86汇编代码与Android应用,从开源平台获取原始未混淆程序,选择合适的混淆器生成混淆后的程序;获得未混淆的函数与使用不同混淆技术生成的混淆函数,提取每个函数邻接矩阵与基本块特征矩阵;构建GCN‑LSTM的混合神经网络模型作为混淆检测模型并对模型训练;使用训练好的混淆检测模型以及设定阈值来进行apk级别的混淆检测。本发明的方法在函数级别的检测和apk级别的检测方面都优于基线方法。
Description
技术领域
本发明属于网络安全领域,具体涉及一种基于图卷积网络的函数级混淆检测方法。
背景技术
由于混淆技术的日益完善,恶意软件编写者常常通过应用混淆技术来修改恶意软件代码,改变恶意代码的静态特征,同时仍然保留该代码的恶意能力。被混淆后的恶意代码能逃避反恶意软件工具的特征匹配算法,从而绕过检测。因此,混淆检测技术可以作为恶意代码检测的重要辅助手段。此外,对于安全从业者来说,混淆检测技术可以在人工逆向分析之前进行自动化的检测,快速确定待分析的代码是否使用了混淆技术或使用了哪种混淆技术,从而帮助逆向工程师更有针对性地进行逆向分析,减少工作量。近年来,混淆检测技术开始出现。例如:提取apk的操作码顺序序列,使用ngram方法对操作码序列进行处理以获得输入的特征,利用静态分析和机器学习分类算法来识别Android应用是否被混淆技术修改;提取apk的整体统计特征,使用机器学习的方法检测Android应用程序中三种常见混淆类型(即标识符重命名、字符串加密和控制流混淆);基于朴素贝叶斯方法的生成性方法来检测Android应用中的字符串混淆。
然而,现有的混淆检测方法存在三个问题,第一,缺乏通用性且检测粒度粗,现有的混淆检测方法的检测对象主要集中在Android应用,且检测粒度为apk,缺乏通用性与实用性;第二,检测效果不够好,现有的混淆检测方法提取的特征较为单一化,只提取了统计特征或者是操作码的顺序序列,且大多使用的是传统的机器学习方法,在特征较少的情况下表现较差。检测的效果由于特征的局限以及机器学习方法的缺陷而受到了限制;第三,便捷性与适应性较差,现有的混淆检测方法针对不同的混淆技术提取不同的特征,或者为每一种混淆技术训练一个基于机器学习的二分类器。这样的特征提取过程与训练过程十分繁琐,不够便捷。并且,机器学习模型的增量训练较为困难,当有新的数据加入时,往往需要对所有数据重新学习,适应性差。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种基于图卷积网络的函数级混淆检测方法,以解决现有技术中存在的缺陷,使得能进行更细粒度的函数级混淆检测,且在此基础上进行的apk级混淆检测具有比现有混淆检测技术更好的效果,总体上具有更高的通用性、便捷性与适应性。
(二)技术方案
为了解决上述技术问题,本发明提出一种基于图卷积网络的函数级混淆检测方法,该方法包括如下步骤:
S1、从开源平台获取原始未混淆的x86汇编程序与Android应用,然后分别选择合适的混淆器生成混淆后的程序/app;
S2、对步骤S1中得到的程序/app进行逆向,获得未混淆的函数与使用不同混淆技术生成的混淆函数;提取每个函数的控制流图(CFG)做为其特征,表现形式为控制流图(CFG)的邻接矩阵与基本块特征矩阵;
S3、基于得到的函数特征的特性,结合图卷积神经网络(GCN)以及长短期记忆网络(LSTM)建立GCN-LSTM的混合神经网络模型作为混淆检测模型,并对该混淆检测模型进行训练以便进行函数级别的混淆检测;
S4、通过使用训练好的针对Android应用的函数级别的混淆检测模型以及为每种混淆技术设定的阈值,来进行apk级别的混淆检测。
进一步地,对于x86汇编程序,使用的混淆器为OLLVM;对于Android应用,使用的混淆器为Obfuscapk。
进一步地,所述混淆器OLLVM的混淆技术包括:指令替换(SUB)、虚假控制流(BCF)和控制流平展(FLA);所述混淆器Obfuscapk的混淆技术包括标识符重命名、字符串加密和控制流混淆。
进一步地,所述步骤S2具体包括:首先使用反汇编工具IDA Pro对原始的与混淆后的程序/app进行逆向,获得程序/app中的所有函数;接着,提取每个函数的控制流图作为其特征,表现形式为控制流图的邻接矩阵与基本块特征矩阵,其中,提取每个函数的控制流图,控制流图包含基本块与基本块之间的跳转,一个控制流图就是一个拓扑图,基本块为图中的节点,基本块的特征为节点特征,基本块之间的跳转为图中的边,某个基本块的特征向量为该基本块中操作码与常量的统计特征,所有基本块的特征向量的组合即为基本块特征矩阵。
进一步地,对于x86汇编程序与Android应用,使用相同的方式提取控制流图的邻接矩阵;基本块特征的提取与代码的指令集以及要检测的混淆技术有关,x86汇编代码使用的是x86指令集,Android应用使用的是Dalvik指令集,且两者常用的混淆技术也不同,针对这两者分别提取特定的基本块特征。
进一步地,所述步骤S3具体包括:使用GCN对输入的函数的控制流图进行节点特征嵌入,将一个控制流图CFG中所有节点的嵌入求和得到整个图的嵌入,使用LSTM对图嵌入进行处理,进一步提取图的整体信息,最后对LSTM的输出使用softmax进行处理,获得所有分类的概率分布。
进一步地,x86汇编程序与Android应用使用相同的模型结构,但分别单独进行训练与测试。
进一步地,所述步骤S3具体包括如下步骤:
S31、使用GCN对输入的函数的控制流图进行节点特征嵌入,聚合节点信息与图的结构信息,对每个节点生成更高维的特征向量,即嵌入,其中,控制流图的表现形式为邻接矩阵与基本块特征矩阵,节点代表基本块;
S32、将一个CFG中所有节点的嵌入进行求和,即为整个图的嵌入;
S33、使用LSTM对图嵌入进行处理,进一步提取图的整体信息;在LSTM层中加入Dropout,在正向传递和权值更新的过程中概率性的断开部分神经元来有效避免过拟合问题的发生;
S34、对LSTM的输出使用softmax进行处理,获得所有分类的概率分布,从而得到该函数所使用的混淆技术的分类结果。
进一步地,所述步骤S4具体包括:使用训练好的针对Android应用的函数级混淆检测模型对一个apk中的所有函数进行混淆检测,从而得到该apk中每个函数的检测结果;为每种混淆技术设定一个阈值,如果该apk中被某种混淆技术混淆的函数比例超过其对应的阈值,则认为该apk被该种混淆技术混淆,从而得到apk的混淆检测结果。
进一步地,对于字符串加密混淆,apk中不包含字符串的函数不会被混淆,对于控制流混淆,apk中已知的第三方库函数不会被混淆。
(三)有益效果
本发明提出一种基于图卷积网络的函数级混淆检测方法,理论和实验证明,无论是对于x86汇编代码还是Android应用,本发明的混淆检测方法都获得了很好的效果,并且在函数级别的检测和apk级别的检测方面都优于基线方法,充分的证明了本发明的通用性和有效性。与现有技术相比,本发明具有以下的有益效果:
1、由于步骤S2的函数特征提取方案能提取到更全面的特征,不仅包含函数的统计特征,还包含函数的结构特征,能为训练与预测阶段提供更多的原始特征信息,从而能获得更好的混淆检测效果。
2、由于步骤S3构建的混合神经网络模型结构适用于处理提取的特征,且能学习到原始特征的更高维更优化的表达,因此能获得更好的混淆检测效果。且只训练一个多分类的神经网络模型就能对一个平台的所有混淆技术进行检测,从而提高了便捷性。此外,神经网络模型具有很高的适应性,因为它可以很容易的实现模型的保存与再训练。
3、由于步骤S4的apk级混淆检测方案基于函数级混淆检测方案,检测粒度比只能进行apk级检测的现有技术更细,且函数级混淆检测针对x86汇编代码与Android应用,在针对Android应用的函数级混淆检测的基础上还能进行apk级的混淆检测,因此具有更高的通用性。
附图说明
图1为本发明的基于图卷积网络的函数级混淆检测方法的流程图;
图2为本发明的混淆检测模型图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为实现上述目的,本发明提供了一种基于图卷积网络的函数级混淆检测方法,包括以下步骤:
S1、混淆代码获取。从开源平台获取原始未混淆的x86汇编程序与Android应用,然后使用混淆器生成混淆后的程序/app。这一步将获得原始的程序/app以及使用不同混淆技术分别生成的混淆程序/app。对于x86汇编代码,使用的混淆器为OLLVM;对于Android应用,使用的混淆器为Obfuscapk。
S2、函数特征提取方案实现。使用反汇编工具IDA Pro对步骤S1中得到的待处理的程序/app进行逆向,获得未混淆的函数与使用不同混淆技术生成的混淆函数。提取每个函数的控制流图CFG做为其特征,表现形式为控制流图CFG的邻接矩阵与基本块特征矩阵。某个基本块的特征向量为该基本块中操作码与常量的统计特征,所有基本块的特征向量的组合即为基本块特征矩阵。
S3、混淆检测模型构建和训练。基于步骤S2得到的函数特征的特性(控制流图为拓扑图),建立GCN-LSTM的混合神经网络模型作为混淆检测模型,并对该混淆检测模型进行训练以便进行函数级别的混淆检测。它使用GCN对输入的函数的控制流图进行节点特征嵌入,将一个控制流图CFG中所有节点的嵌入求和得到整个图的嵌入,使用LSTM对图嵌入进行处理,进一步提取图的整体信息,最后对LSTM的输出使用softmax进行处理,获得所有分类的概率分布。x86汇编代码与Android应用使用相同的模型结构,但分别单独进行训练与测试。混淆检测问题是一个多分类问题,对一个函数进行混淆检测,就是对该函数使用的混淆技术类别进行判定,类别包括未混淆以及步骤S1中选择的混淆技术。
S4、apk级混淆检测方案实现。使用步骤S3中训练好的针对Android应用的函数级混淆检测模型对一个apk中的所有函数进行混淆检测,从而得到该apk中每个函数的检测结果。与此同时,为每种混淆技术设定一个阈值,如果该apk中被某种混淆技术混淆的函数比例超过其对应的阈值,则认为该apk被该种混淆技术混淆,从而得到apk的混淆检测结果。
函数特征提取方案、混淆检测模型和apk级混淆检测方案由本发明的使用者自行设计和实现。
针对现有的混淆检测方法提取的特征较为单一化,只提取了统计特征或者是操作码的顺序序列,导致混淆检测效果不够好的问题,提出一种基于函数控制流图的特征提取方案。该方案中,提取每个函数的控制流图做为其特征,一个控制流图就是一个拓扑图,基本块为图中的节点,基本块的特征为节点特征,基本块之间的跳转为图中的边。因此,提取的特征的最终表现形式为控制流图的邻接矩阵与基本块特征矩阵。某个基本块的特征向量为该基本块中操作码与常量的统计特征,所有基本块的特征向量的组合即为基本块特征矩阵。
针对现有的混淆检测方法大多使用的是传统的机器学习方法,在特征较少的情况下表现较差导致逆向效果不够好的问题,以及为每一种混淆技术训练一个基于机器学习的二分类器导致的便捷性与适应性较差的问题,提出一个基于混合神经网络GCN-LSTM的混淆检测模型。该模型结合了专门用于处理拓扑图的图卷积神经网络(GCN)以及在分类任务上表现优异的长短期记忆网络(LSTM)来对输入的函数CFG(表现形式为邻接矩阵与基本块特征矩阵)进行训练与测试。x86汇编代码与Android应用使用相同的模型结构,但分别单独进行训练与测试。该混淆检测模型是一个多分类模型,类别包括未混淆以及选择的多种混淆技术。
针对现有的混淆检测方法检测对象主要集中在Android应用且检测粒度为apk,导致缺乏通用性且检测粒度粗的问题,提出一种通用的函数级混淆检测方案以及在此基础上进行的apk级混淆检测。该方案中,函数级混淆检测针对x86汇编代码与Android应用,在此基础上,使用训练好的针对Android应用的函数级混淆检测模型以及为每种混淆技术设定一个阈值,来进行apk级别的混淆检测。
具体而言,本发明基于图卷积网络的函数级混淆检测方法中包括以下步骤:
S1、从开源平台获取原始未混淆程序/app,然后使用混淆器生成混淆后的程序/app。
对于x86汇编代码,选择了四种由C语言编写的开源软件或库文件,包括Openssl、libgmp.so、libcurl和SQLite。然后,使用OLLVM工具将它们混淆编译为二进制可执行文件与动态链接库文件。混淆器OLLVM包含以下三种混淆技术:
1)指令替换(SUB):这种混淆技术采用的是恒等运算混淆策略,旨在用语义相同但更复杂的的指令序列替换简单的指令。主要针对二元运算符进行替换,如加减乘除、布尔运算等。该混淆技术会修改基本块的内容,增加算术指令、逻辑指令和常量数量等。
2)虚假控制流(BCF):这种混淆技术通过添加大量不相关的随机基本块和分支来修改控制流图。它还将拆分、合并和重新排序原始基本块,并在原本的基本块中插入随机选择的垃圾指令。该混淆技术破坏了CFG和基本块的完整性,使控制流分支变得错综复杂,节点数增加,垃圾指令以及常量数量也随之增多。
3)控制流平展(FLA):这种混淆技术是一种压扁控制流策略,通过添加switch语句与循环将源程序中有关于条件转移和嵌套循环的控制结构平展。该混淆技术会对基本块进行拆分,产生多余的垃圾指令和伪分支。混淆后的流程图基本完全失去原本的结构。
对于Android应用,从广受欢迎的良性应用程序开源存储库F-Droid下载了一些开源Android应用(.apk文件)。然后,使用混淆器Obfuscapk对原始apk进行混淆,获得混淆后的apk。Obfuscapk包含了Android应用常用的三种混淆技术:
1)标识符重命名:这种混淆技术包含类名的重命名、函数的重命名以及字段的重命名。混淆后的标识符的名称是无意义的,从而增加了逆向分析的难度。
2)字符串加密:常量字符串可能泄漏敏感的和私有的源代码信息。因此,它们以不同的方式加密(Obfuscapk使用的是加密算法AES),以防止对应用程序进行方便的逆向分析。
3)控制流混淆:控制流混淆通过扩展或扁平程序的CFG,来增加逆向工程的成本。常见的方法包括注入不相关代码、扩展循环条件、添加冗余操作、重新排序语句等。
S2、CFG是汇编函数拓扑结构的鲁棒表示,此外,基本块特征对于描述汇编函数的语义或行为具有同样重要的作用。因此,提取的特征既包含CFG的结构特征,也包含基本块特征。
首先使用反汇编工具IDA Pro对原始的与混淆后的程序/app进行逆向,获得程序/app中的所有函数。接着,提取每个函数的控制流图作为其特征,表现形式为控制流图的邻接矩阵与基本块特征矩阵。某个基本块的特征向量为该基本块中操作码与常量的统计特征,所有基本块的特征向量的组合即为基本块特征矩阵。需要注意的是,对于x86汇编代码与Android应用,使用相同的方式提取控制流图的邻接矩阵。邻接矩阵为结构信息,与代码的指令集无关。然而,基本块特征的提取与代码的指令集以及要检测的混淆技术有关。x86汇编代码使用的是x86指令集,而Android应用使用的是Dalvik指令集,且两者常用的混淆技术也有区别。因此,针对这两者分别提取特定的基本块特征。
x86汇编代码使用的是复杂指令集(CISC),CISC的操作码种类与数量非常多,且X86汇编代码的三种混淆技术都会一定程度上添加、删除或改变操作码。因此,对所要提取的指令种类(即操作码种类)进行了较为细致的划分,提取的基本块统计特征共计27维,包含数据转移指令的数量、算数指令的数量、逻辑指令的数量、条件转移指令的数量、调用的数量、字符串常量的数量等。Android应用所使用的Dalvik指令集相较于x86指令集来说要简单一些,包含的操作码种类较少,且它的三种混淆技术并不是都会改变操作码,因此提取的基本块统计特征包含Dalvik指令集中较为常见的操作码种类以及其它的统计特征,共计15维,包含跳转指令的数量、比较指令的数量、调用的数量、数值常量的数量、字符串常量的数量、函数名中数值的数量、字符串名称中数值的数量等。
S3、在提取了函数的控制流图邻接矩阵与基本块特征矩阵之后,构建GCN-LSTM的混合神经网络模型作为混淆检测模型来进行函数级别的训练与检测。GCN在处理拓扑图方面有着传统神经网络所没有的优势,它能聚合每个节点及其周围节点的信息,所生成的节点嵌入不仅包含节点自身的特征信息,也包含节点邻居的特征信息,从而一定程度上包含了图的结构信息。一个控制流图就是一个拓扑图,因此,选择GCN对其进行第一步处理,对原始的基本块特征进行更高维度的抽象。此外,近年来,LSTM在分类任务上取得了显著的成绩,因此,也将其包含在模型中。
如图2所示,混淆检测模型主要包含四个部分:
1)使用GCN对输入的函数的控制流图(实际表现形式为邻接矩阵与基本块特征矩阵)进行节点特征嵌入(节点代表基本块),聚合节点信息与图的结构信息,对每个节点生成更高维的特征向量(即嵌入)。
给定一个CFG,它的原始基本块特征矩阵为X∈RN×M,邻接矩阵为A∈RN×N,其中N为节点个数,M为节点特征的维度。使用两层GCN,它的逐层传播规则如下:
H(l+1)=σ(LH(l)W(l)),with上=D-1/2A′D-1/2
其中,为第1层的节点嵌入矩阵,Ml为该层节点嵌入的维度;H(0)=X。是特定层的可训练权重矩阵。L为图的拉普拉斯矩阵。A′=A+IN,IN为单位阵。D为度矩阵,Dii=∑jA′ij。σ(·)表示激活函数,例如ReLU(·)=max(0,·)。
3)使用LSTM对图嵌入进行处理,进一步提取图的整体信息。此外,在LSTM层中加入Dropout,它是一种训练过程中常用的正则化方法,在正向传递和权值更新的过程中概率性的断开部分神经元来有效的避免过拟合问题的发生。LSTM层的输出为s∈Rk,其中k是要检测的混淆技术类别的数量:
s=Dropout(LSTM(g))
4)对LSTM层的输出使用softmax层进行处理,softmax层的输出为y∈Rk:
y=softmax(s)
y是所有分类的概率分布,根据y得到该函数所使用的混淆技术的分类结果。
S4、在函数级混淆检测的基础上进行apk级别的混淆检测。使用训练好的针对Android应用的函数级混淆检测模型对一个apk中的所有函数进行混淆检测,从而得到该apk中每个函数的检测结果。需要注意的是,对于字符串加密混淆,apk中不包含字符串的函数不会被混淆,对于控制流混淆,apk中已知的第三方库函数不会被混淆。因此,为每种混淆技术设定一个阈值(通过实验确定最恰当的阈值),如果该apk中被某种混淆技术混淆的函数比例超过其对应的阈值,则认为该apk被该种混淆技术混淆,从而得到apk的混淆检测结果。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种基于图卷积网络的函数级混淆检测方法,其特征在于,该方法包括如下步骤:
S1、从开源平台获取原始未混淆的x86汇编程序与Android应用,然后分别选择合适的混淆器生成混淆后的程序/app;
S2、对步骤S1中得到的程序/app进行逆向,获得未混淆的函数与使用不同混淆技术生成的混淆函数;提取每个函数的控制流图(CFG)做为其特征,表现形式为控制流图(CFG)的邻接矩阵与基本块特征矩阵;
S3、基于得到的函数特征的特性,结合图卷积神经网络(GCN)以及长短期记忆网络(LSTM)建立GCN-LSTM的混合神经网络模型作为混淆检测模型,并对该混淆检测模型进行训练以便进行函数级别的混淆检测;
S4、通过使用训练好的针对Android应用的函数级别的混淆检测模型以及为每种混淆技术设定的阈值,来进行apk级别的混淆检测;
所述步骤S3具体包括:使用GCN对输入的函数的控制流图进行节点特征嵌入,将一个控制流图CFG中所有节点的嵌入求和得到整个图的嵌入,使用LSTM对图嵌入进行处理,进一步提取图的整体信息,最后对LSTM的输出使用softmax进行处理,获得所有分类的概率分布;
x86汇编程序与Android应用使用相同的模型结构,但分别单独进行训练与测试;
所述步骤S3具体包括如下步骤:
S31、使用GCN对输入的函数的控制流图进行节点特征嵌入,聚合节点信息与图的结构信息,对每个节点生成更高维的特征向量,即嵌入,其中,控制流图的表现形式为邻接矩阵与基本块特征矩阵,节点代表基本块;
S32、将一个CFG中所有节点的嵌入进行求和,即为整个图的嵌入;
S33、使用LSTM对图嵌入进行处理,进一步提取图的整体信息;在LSTM层中加入Dropout,在正向传递和权值更新的过程中概率性的断开部分神经元来有效避免过拟合问题的发生;
S34、对LSTM的输出使用softmax进行处理,获得所有分类的概率分布,从而得到该函数所使用的混淆技术的分类结果。
2.如权利要求1所述的基于图卷积网络的函数级混淆检测方法,其特征在于,所述步骤S1中,对于x86汇编程序,使用的混淆器为OLLVM;对于Android应用,使用的混淆器为Obfuscapk。
3.如权利要求2所述的基于图卷积网络的函数级混淆检测方法,其特征在于,所述混淆器OLLVM的混淆技术包括:指令替换(SUB)、虚假控制流(BCF)和控制流平展(FLA);所述混淆器Obfuscapk的混淆技术包括标识符重命名、字符串加密和控制流混淆。
4.如权利要求1所述的基于图卷积网络的函数级混淆检测方法,其特征在于,所述步骤S2具体包括:首先使用反汇编工具IDA Pro对原始的与混淆后的程序/app进行逆向,获得程序/app中的所有函数;接着,提取每个函数的控制流图作为其特征,表现形式为控制流图的邻接矩阵与基本块特征矩阵,其中,提取每个函数的控制流图,控制流图包含基本块与基本块之间的跳转,一个控制流图就是一个拓扑图,基本块为图中的节点,基本块的特征为节点特征,基本块之间的跳转为图中的边,某个基本块的特征向量为该基本块中操作码与常量的统计特征,所有基本块的特征向量的组合即为基本块特征矩阵。
5.如权利要求4所述的基于图卷积网络的函数级混淆检测方法,其特征在于,对于x86汇编程序与Android应用,使用相同的方式提取控制流图的邻接矩阵;基本块特征的提取与代码的指令集以及要检测的混淆技术有关,x86汇编代码使用的是x86指令集,Android应用使用的是Dalvik指令集,且两者常用的混淆技术也不同,针对这两者分别提取特定的基本块特征。
6.如权利要求1所述的基于图卷积网络的函数级混淆检测方法,其特征在于,所述步骤S4具体包括:使用训练好的针对Android应用的函数级混淆检测模型对一个apk中的所有函数进行混淆检测,从而得到该apk中每个函数的检测结果;为每种混淆技术设定一个阈值,如果该apk中被某种混淆技术混淆的函数比例超过其对应的阈值,则认为该apk被该种混淆技术混淆,从而得到apk的混淆检测结果。
7.如权利要求6所述的基于图卷积网络的函数级混淆检测方法,其特征在于,对于字符串加密混淆,apk中不包含字符串的函数不会被混淆,对于控制流混淆,apk中已知的第三方库函数不会被混淆。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011521368.4A CN112487368B (zh) | 2020-12-21 | 2020-12-21 | 一种基于图卷积网络的函数级混淆检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011521368.4A CN112487368B (zh) | 2020-12-21 | 2020-12-21 | 一种基于图卷积网络的函数级混淆检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112487368A CN112487368A (zh) | 2021-03-12 |
CN112487368B true CN112487368B (zh) | 2023-05-05 |
Family
ID=74915040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011521368.4A Active CN112487368B (zh) | 2020-12-21 | 2020-12-21 | 一种基于图卷积网络的函数级混淆检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112487368B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113158147B (zh) * | 2021-03-24 | 2022-12-09 | 中国人民解放军战略支援部队信息工程大学 | 一种基于母体融合的代码混淆方法 |
CN112995238B (zh) * | 2021-05-21 | 2021-09-14 | 华中科技大学 | 一种减轻DDoS攻击的方法、可编程交换机及SDN控制器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7103417B1 (en) * | 2003-04-18 | 2006-09-05 | Advanced Bionics Corporation | Adaptive place-pitch ranking procedure for optimizing performance of a multi-channel neural stimulator |
US8489689B1 (en) * | 2006-05-31 | 2013-07-16 | Proofpoint, Inc. | Apparatus and method for obfuscation detection within a spam filtering model |
CN106845171A (zh) * | 2017-01-20 | 2017-06-13 | 暨南大学 | 一种Android应用程序代码保护机制鉴别方法 |
CN107516041A (zh) * | 2017-08-17 | 2017-12-26 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
CN108985063A (zh) * | 2018-07-13 | 2018-12-11 | 南方电网科学研究院有限责任公司 | 一种恶意代码混淆检测方法、系统、计算机设备、介质 |
CN110750789A (zh) * | 2019-10-18 | 2020-02-04 | 杭州奇盾信息技术有限公司 | 解混淆方法、装置、计算机设备和存储介质 |
CN111723368A (zh) * | 2020-05-28 | 2020-09-29 | 中国人民解放军战略支援部队信息工程大学 | 基于Bi-LSTM和自注意力的恶意代码检测方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101027928B1 (ko) * | 2008-07-23 | 2011-04-12 | 한국전자통신연구원 | 난독화된 악성 웹페이지 탐지 방법 및 장치 |
-
2020
- 2020-12-21 CN CN202011521368.4A patent/CN112487368B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7103417B1 (en) * | 2003-04-18 | 2006-09-05 | Advanced Bionics Corporation | Adaptive place-pitch ranking procedure for optimizing performance of a multi-channel neural stimulator |
US8489689B1 (en) * | 2006-05-31 | 2013-07-16 | Proofpoint, Inc. | Apparatus and method for obfuscation detection within a spam filtering model |
CN106845171A (zh) * | 2017-01-20 | 2017-06-13 | 暨南大学 | 一种Android应用程序代码保护机制鉴别方法 |
CN107516041A (zh) * | 2017-08-17 | 2017-12-26 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
CN108985063A (zh) * | 2018-07-13 | 2018-12-11 | 南方电网科学研究院有限责任公司 | 一种恶意代码混淆检测方法、系统、计算机设备、介质 |
CN110750789A (zh) * | 2019-10-18 | 2020-02-04 | 杭州奇盾信息技术有限公司 | 解混淆方法、装置、计算机设备和存储介质 |
CN111723368A (zh) * | 2020-05-28 | 2020-09-29 | 中国人民解放军战略支援部队信息工程大学 | 基于Bi-LSTM和自注意力的恶意代码检测方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于BPTT算法的webshell检测研究;先正锴等;《计算机与数字工程》;20200220(第02期);第107-112页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112487368A (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Boenisch | A systematic review on model watermarking for neural networks | |
Martín et al. | MOCDroid: multi-objective evolutionary classifier for Android malware detection | |
Caliskan et al. | When coding style survives compilation: De-anonymizing programmers from executable binaries | |
CN112487368B (zh) | 一种基于图卷积网络的函数级混淆检测方法 | |
US11256975B2 (en) | Distributed architecture for explainable AI models | |
CN109492355B (zh) | 一种基于深度学习的软件抗分析方法和系统 | |
Li et al. | Deep learning backdoors | |
Iqbal et al. | Extending learning classifier system with cyclic graphs for scalability on complex, large-scale boolean problems | |
CN114692156B (zh) | 内存片段恶意代码入侵检测方法、系统、存储介质及设备 | |
Leitner et al. | Mars terrain image classification using cartesian genetic programming | |
Liu et al. | Sparsity may cry: Let us fail (current) sparse neural networks together! | |
Jiang et al. | Function-level obfuscation detection method based on graph convolutional networks | |
He et al. | Msdroid: Identifying malicious snippets for android malware detection | |
CN115017511A (zh) | 一种源代码漏洞检测方法、装置以及存储介质 | |
Hota et al. | Deep Neural Networks for Android Malware Detection. | |
Benoit et al. | Binary level toolchain provenance identification with graph neural networks | |
Tang et al. | Defense against explanation manipulation | |
Martínez et al. | Efficient model similarity estimation with robust hashing | |
US20230376577A1 (en) | Watermarking quantum models by leveraging metadata | |
Debie et al. | Reduct based ensemble of learning classifier system for real-valued classification problems | |
He et al. | FINER: Enhancing State-of-the-art Classifiers with Feature Attribution to Facilitate Security Analysis | |
Li et al. | A feature-map-based large-payload DNN watermarking algorithm | |
Wu et al. | Utilizing obfuscation information in deep learning-based Android malware detection | |
WO2021198816A1 (en) | Systems, methods, and storage media for creating secured transformed code from input code using a neural network to obscure a function | |
Vashishtha et al. | Feature Selection Using PSO: A Multi Objective Approach |
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 |