CN114372266A - 基于操作码图的安卓恶意软件检测方法 - Google Patents
基于操作码图的安卓恶意软件检测方法 Download PDFInfo
- Publication number
- CN114372266A CN114372266A CN202011105174.6A CN202011105174A CN114372266A CN 114372266 A CN114372266 A CN 114372266A CN 202011105174 A CN202011105174 A CN 202011105174A CN 114372266 A CN114372266 A CN 114372266A
- Authority
- CN
- China
- Prior art keywords
- operation code
- graph
- opcode
- instruction
- android
- 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.)
- Pending
Links
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/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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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/53—Decompilation; Disassembly
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于操作码图的安卓恶意软件检测方法,包括以下内容:从安卓平台中收集良性和恶意应用集合;对安卓应用进行反编译从而获取操作码序列集合;分析虚拟机中定义的多种操作码,并将这些操作码的特征进行向量化表示构建操作码图中节点的特征向量;利用2‑gram模型对操作码序列进行处理形成共现操作码对构建操作码图的边,计算共现操作码对出现频数,并对矩阵行进行标准化形成共现矩阵从而构建操作码图的边权重;利用改进后的深度图卷积网络对该操作码图进行有监督学习实现安卓恶意软件的检测。本发明利用操作码图从代码层面对安卓应用程序进行表示,具有较好的说服性,并在安卓恶意软件检测方面取得了较好的准确率。
Description
技术领域
本发明属于移动平台信息安全领域,特别是一种基于操作码图的安卓恶意软件检测方法。
背景技术
目前,Android平台的恶意软件检测主要的检测方法分为静态分析和动态分析。在静态分析中,分析应用程序本身的数据而不运行应用程序。静态分析通常提取和分析应用程序中的签名、权限请求、应用程序编程接口(API)调用、操作码序列和控制流。在动态分析中,给定的Android应用程序在虚拟环境中执行,例如虚拟机或沙箱,以模拟它在设备上实际运行的方式,并分析运行的进程或进程中的动态数据。常用的动态分析包括动态染色分析和网络流量分析。静态分析简单而快速,并且不需要额外的虚拟环境,它适用于大量应用程序的快速检测,但容易受到代码混淆等技术的影响。动态分析可以有效地抵抗重新打包和代码混淆等技术,但它也需要虚拟环境来模拟应用程序的实际执行,并且在分析过程中消耗大量的计算资源。操作码序列是从应用程序的反编译文件中提取的,操作码序列通常很长。虽然恶意软件的操作码维数小于良性软件的公共样本,但利用目前主流的机器学习和深度学习方法直接分析和研究操作码序列,很难获得非常好的结果。因此,基于操作码序列的恶意软件静态分析仍然是一个具有挑战性的问题。
发明内容
本发明的目的在于提供一种基于操作码图的安卓恶意软件检测方法。
实现本发明目的的技术解决方案为:一种基于操作码图的安卓恶意软件检测方法,包括以下步骤:
步骤1、构建应用数据集:从安卓平台中下载良性应用构成良性软件集合,下载恶意应用构成恶意软件集合,从而构建实验所用的应用数据集;
步骤2、提取操作码序列:使用反编译工具apktool对安卓应用软件进行反编译,并从反汇编文件smail中提取操作码序列;
步骤3、操作码特征向量化:利用操作码指令自身的先验知识特征构建初始的操作码特征向量;再与操作码在良性样本数据集和恶意样本数据集中各自的词频特征相结合,构造最终的操作码节点特征向量;
步骤4、建立操作码图:将每个样本的操作码序列中的每个非重复操作码作为操作码图中的一个节点,并利用2-gram模型和操作码序列对构建操作码图的边,其中边的权值为对应的2-gram操作码对的计数概率;
步骤5、应用程序检测:将构建好的操作码图作为输入,利用改进后的DGCNN模型进行学习,得出应用软件的检测结果:良性或恶意。
本发明与现有技术相比,其显著优点为:1)将操作码指令自身的先验知识特征与操作码在良性样本数据集和恶意样本数据集中的词频特征相结合,构造操作码节点的特征向量,结合了操作码自身的特性,较好地对操作码进行向量化表示;2)利用关联计数概率作为边的权值,提高操作码图的鲁棒性;3)构建操作码图,采用改进后的DGCNN模型进行安卓恶意软件的检测,得出了较好的检测结果。
附图说明
图1为本发明基于操作码图的安卓恶意软件检测方法的流程图。
图2为本发明操作码特征向量构造示意图。
图3为本发明操作码图邻接矩阵构建示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细描述。
结合图1,本发明基于操作码图的安卓恶意软件检测方法,包括以下步骤:
步骤1、构建应用数据集:从小米软件商店下载良性应用构成良性软件集合,从恶意软件收录网站virusshare.com下载恶意应用构成恶意软件集合,从而构建实验所用的应用数据集;
步骤2、提取操作码序列:使用反编译工具apktool对安卓应用软件进行反编译,并从反汇编文件smail中提取操作码序列;
步骤3、操作码特征向量化:利用操作码指令自身的先验知识特征构建初始的操作码特征向量;再与操作码在良性样本数据集和恶意样本数据集中各自的词频特征相结合,构造最终的操作码节点特征向量;
步骤4、建立操作码图:将每个样本的操作码序列中的每个非重复操作码作为操作码图中的一个节点,并利用2-gram模型和操作码序列对构建操作码图的边,其中边的权值为对应的2-gram操作码对的计数概率;
步骤5、应用程序检测:将构建好的操作码图作为输入,利用改进后的Deep GraphConvolutional Neural Network(DGCNN)模型进行学习,得出应用软件的检测结果:良性或恶意。
进一步地,在其中一个实施例中,步骤3中利用操作码指令自身的先验知识特征构建初始的操作码特征向量;再与操作码在良性样本数据集和恶意样本数据集中各自的词频特征相结合,构造最终的操作码节点特征向量,具体为:
步骤3-1、对Dalvik虚拟机中定义的218个操作码进行分析,根据操作功能将操作码分为14种类型:移动指令、返回指令、常量指令、监控指令、对象操作指令、数值操作指令、跳转指令、比较指令、域操作指令、呼叫指令、数据转换指令、数据操作指令、其他指令;每种操作码代表一种特定的指令行为;
表1操作码特征信息表
步骤3-1、对Dalvik虚拟机中定义的218个操作码进行分析,根据操作功能将操作码分为14种类型:移动指令、返回指令、常量指令、监控指令、对象操作指令、数值操作指令、跳转指令、比较指令、域操作指令、呼叫指令、数据转换指令、数据操作指令、其他指令;
步骤3-2、分析操作码指令的数据类型后缀,整理出44个不同的操作码数据类型后缀;
步骤3-3、通过对所有操作码指令的分析,总结出10种消除歧义的操作码定义;
步骤3-4、将14种操作功能、44种数据类型后缀和10种消除歧义的操作码定义组合成一个68维的操作码特征向量;操作码中包含该位的特征则将该位置为1,反之为0,从而构建初始的操作码特征向量;构造出的初始的操作码指令特征向量如图2所示:
步骤3-5、计算各个操作码在良性样本和恶意样本中操作码在样本中的词频:
其中,tfop,c为单个操作码在c类应用操作码集合中的频率,nop,c代表单个操作码在c类操作码集合中的计数,∑nops,c为c类操作码集合中所有操作码的总计数;
步骤3-6、将初始操作码特征向量与操作码在良性样本数据集和恶意样本数据集中各自的词频特征相乘,构造最终的操作码节点特征向量:
xopcode=tfop,c·xop_ins
其中,xopcode为单个操作码最终的特征向量表示,xop_ins为步骤3-4中所述依据操作码先验知识构建的初始操作码特征向量。
进一步地,在其中一个实施例中,步骤4中所述的根据操作码序列建立操作码图,具体为:
步骤4-1、定义操作码图Gop=(Vop,Eop),Vop={v1,v2,......,vn}为节点集合,Eop为边集合;每个操作码在操作码序列中表示一个Dalvik操作码,边集合中的每条边代表两个节点之间的关系,且边是有方向的;边表示节点vi在前,边表示的则是节点vj到节点vi;
步骤4-2、构建操作码邻接矩阵,邻接矩阵中的每个非零元素表示图中的一条边;使用2-gram模型从操作码序列中生成操作码对,每个操作码对表示节点之间存在一条边;对每个文件中的操作码对进行计数,将计数作为操作码之间边的初始权值,构建初始的操作码邻接矩阵;
步骤4-3、利用行标准化处理方法,计算关联计数概率生成新的边权值,构建出最终的操作码邻接矩阵;构建出最终的操作码邻接矩阵如图3所示:
进一步地,在其中一个实施例中,步骤5中根据Deep Graph ConvolutionalNeural Network(DGCNN)改进后的模型对应用程序进行检测,具体为:
1)图卷积层通过聚合节点邻居的表示来更新自身节点的表示:
忽略操作码图本身的自循环,对所有顶点加入自循环,重新定义图的邻接矩阵:
2)排序池层通过对节点的特征描述符进行排序来预测整个图。这一层使用了最后一层图卷积层的WL颜色,它定义了一个基于图拓扑的排序来对节点进行排序,两个图中具有相似图结构的节点将被表示为相同的位置;排序池层通过输出相同大小的图数据矩阵来解决图数据中节点数量不同的问题。
3)直接使用多层感知器(MLP)分类,该MLP分类器由四个全连接的层和一个softmax层组成。四个全连接层的激活函数都是ReLU函数,每个ReLU函数后面都有一个dropout层。
利用以上构建的操作码图,并将这些特征输入到改进后的深度图卷积网络中进行学习,从而生成基于操作码图的安卓恶意软件检测模型。
综上所述,本发明利用操作码图对安卓应用软件进行表征,并利用操作码的先验知识和词频特征对操作码特征向量化处理,在安卓恶意软件检测方面取得了如下结果:准确率91.97%、精确率92.08%、召回率91.97%以及F191.96%。
Claims (5)
1.一种基于操作码图的安卓恶意软件检测方法,其特征在于,包括以下步骤:
步骤1、构建应用数据集:从安卓平台中下载良性应用构成良性软件集合,下载恶意应用构成恶意软件集合,从而构建实验所用的应用数据集;
步骤2、提取操作码序列:使用反编译工具apktool对安卓应用软件进行反编译,并从反汇编文件smail中提取操作码序列;
步骤3、操作码特征向量化:利用操作码指令自身的先验知识特征构建初始的操作码特征向量;再与操作码在良性样本数据集和恶意样本数据集中各自的词频特征相结合,构造最终的操作码节点特征向量;
步骤4、建立操作码图:将每个样本的操作码序列中的每个非重复操作码作为操作码图中的一个节点,并利用2-gram模型和操作码序列对构建操作码图的边,其中边的权值为对应的2-gram操作码对的计数概率;
步骤5、应用程序检测:将构建好的操作码图作为输入,利用改进后的DGCNN模型进行学习,得出应用软件的检测结果:良性或恶意。
2.根据权利要求1所述的基于操作码图的安卓恶意软件检测方法,其特征在于,步骤2所述的从反汇编文件smail中提取操作码序列,具体为:
逐行遍历读取样本的smail文件,选取文件中.method字段和.end method字段之间的数据段,并利用操作码映射表进行匹配,筛选出数据段内每行中的操作码,构建样本相对应的操作码序列。
3.根据权利要求1所述的基于操作码图的安卓恶意软件检测方法,其特征在于,步骤3所述的利用操作码指令自身的先验知识特征构建初始的操作码特征向量;再与操作码在良性样本数据集和恶意样本数据集中各自的词频特征相结合,构造最终的操作码节点特征向量,具体为:
步骤3-1、对Dalvik虚拟机中定义的218个操作码进行分析,根据操作功能将操作码分为14种类型:移动指令、返回指令、常量指令、监控指令、对象操作指令、数值操作指令、跳转指令、比较指令、域操作指令、呼叫指令、数据转换指令、数据操作指令、其他指令;
步骤3-2、分析操作码指令的数据类型后缀,整理出44个不同的操作码数据类型后缀;
步骤3-3、通过对所有操作码指令的分析,总结出10种消除歧义的操作码定义;
步骤3-4、将14种操作功能、44种数据类型后缀和10种消除歧义的操作码定义组合成一个68维的操作码特征向量;操作码中包含该位的特征则将该位置为1,反之为0,从而构建初始的操作码特征向量;
步骤3-5、计算各个操作码在良性样本和恶意样本中操作码在样本中的词频:
其中,tfop,c为单个操作码在c类应用操作码集合中的频率,nop,c代表单个操作码在c类操作码集合中的计数,∑nops,c为c类操作码集合中所有操作码的总计数;
步骤3-6、将初始操作码特征向量与操作码在良性样本数据集和恶意样本数据集中各自的词频特征相乘,构造最终的操作码节点特征向量:
xopcode=tfop,c·xop_ins
其中,xopcode为单个操作码最终的特征向量表示,xop_ins为步骤3-4中所述依据操作码先验知识构建的初始操作码特征向量。
4.根据权利要求1所述的基于操作码图的安卓恶意软件检测方法,其特征在于,步骤4所述的建立操作码图,具体为:
步骤4-1、定义操作码图Gop=(Vop,Eop),Vop={v1,v2,......,vn}为节点集合,Eop为边集合;每个操作码在操作码序列中表示一个Dalvik操作码,边集合中的每条边代表两个节点之间的关系,且边是有方向的;边表示节点vi在前,边表示的则是节点vj到节点vi;
步骤4-2、构建操作码邻接矩阵,邻接矩阵中的每个非零元素表示图中的一条边;使用2-gram模型从操作码序列中生成操作码对,每个操作码对表示节点之间存在一条边;对每个文件中的操作码对进行计数,将计数作为操作码之间边的初始权值,构建初始的操作码邻接矩阵;
步骤4-3、利用行标准化处理方法,计算关联计数概率生成新的边权值,构建出最终的操作码邻接矩阵。
5.根据权利要求1所述的基于操作码图的安卓恶意软件检测方法,其特征在于,步骤5所述将利用改进后的DGCNN模型进行检测,具体为:
1)图卷积层通过聚合节点邻居的表示来更新自身节点的表示,如下公式所示:
忽略操作码图本身的自循环,对所有顶点加入自循环,重新定义图的邻接矩阵:
2)排序池层通过对节点的特征描述符进行排序来预测整个图;这一层使用最后一层图卷积层的WL颜色,它定义一个基于图拓扑的排序来对节点进行排序,两个图中具有相似图结构的节点将被表示为相同的位置;
3)使用多层感知器MLP分类,该MLP分类器由四个全连接层和一个softmax层组成;四个全连接层的激活函数都是ReLU函数,每个ReLU函数后面都有一个dropout层;
利用以上构建的操作码图,并将这些特征输入到改进后的DGCNN中进行学习,从而生成基于操作码图的安卓恶意软件检测模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011105174.6A CN114372266A (zh) | 2020-10-15 | 2020-10-15 | 基于操作码图的安卓恶意软件检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011105174.6A CN114372266A (zh) | 2020-10-15 | 2020-10-15 | 基于操作码图的安卓恶意软件检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114372266A true CN114372266A (zh) | 2022-04-19 |
Family
ID=81139063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011105174.6A Pending CN114372266A (zh) | 2020-10-15 | 2020-10-15 | 基于操作码图的安卓恶意软件检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114372266A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117034273A (zh) * | 2023-08-28 | 2023-11-10 | 山东省计算中心(国家超级计算济南中心) | 基于图卷积网络的安卓恶意软件检测方法及系统 |
-
2020
- 2020-10-15 CN CN202011105174.6A patent/CN114372266A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117034273A (zh) * | 2023-08-28 | 2023-11-10 | 山东省计算中心(国家超级计算济南中心) | 基于图卷积网络的安卓恶意软件检测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yan et al. | Classifying malware represented as control flow graphs using deep graph convolutional neural network | |
Zhang et al. | Towards characterizing adversarial defects of deep learning software from the lens of uncertainty | |
US20210141897A1 (en) | Detecting unknown malicious content in computer systems | |
Lu | Malware detection with lstm using opcode language | |
Jian et al. | A novel framework for image-based malware detection with a deep neural network | |
Tang et al. | Dynamic API call sequence visualisation for malware classification | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及系统 | |
Chan et al. | A method to evaluate CFG comparison algorithms | |
RU2722692C1 (ru) | Способ и система выявления вредоносных файлов в неизолированной среде | |
KR101858620B1 (ko) | 기계 학습을 이용한 자바스크립트 분석 장치 및 방법 | |
CN108491228A (zh) | 一种二进制漏洞代码克隆检测方法及系统 | |
Thakkar et al. | Clairvoyant: AdaBoost with cost-enabled cost-sensitive classifier for customer churn prediction | |
CN115344863A (zh) | 一种基于图神经网络的恶意软件快速检测方法 | |
CN114036531A (zh) | 一种基于多尺度代码度量的软件安全漏洞检测方法 | |
Blanco et al. | Applying cost-sensitive classifiers with reinforcement learning to ids | |
CN114372266A (zh) | 基于操作码图的安卓恶意软件检测方法 | |
Ackermann et al. | Black-box learning of parametric dependencies for performance models | |
Zhao et al. | Suzzer: A vulnerability-guided fuzzer based on deep learning | |
Lin et al. | Towards interpreting ML-based automated malware detection models: A survey | |
CN112783513A (zh) | 一种代码风险检查方法、装置及设备 | |
Zhang et al. | Automatic detection of Android malware via hybrid graph neural network | |
CN115795487B (zh) | 漏洞检测方法、装置、设备及存储介质 | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
KR101645214B1 (ko) | 악성코드 분류 장치 및 악성코드 분류 방법 |
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 |