CN114491529A - 基于多模态神经网络的安卓恶意应用程序识别方法 - Google Patents
基于多模态神经网络的安卓恶意应用程序识别方法 Download PDFInfo
- Publication number
- CN114491529A CN114491529A CN202111564448.2A CN202111564448A CN114491529A CN 114491529 A CN114491529 A CN 114491529A CN 202111564448 A CN202111564448 A CN 202111564448A CN 114491529 A CN114491529 A CN 114491529A
- Authority
- CN
- China
- Prior art keywords
- graph
- key
- calling
- edge
- application program
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000010586 diagram Methods 0.000 claims abstract description 17
- 230000006399 behavior Effects 0.000 claims abstract description 13
- 238000012549 training Methods 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 claims description 50
- 230000003993 interaction Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 12
- 230000011218 segmentation Effects 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 5
- 230000015654 memory Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 5
- 238000011478 gradient descent method Methods 0.000 claims description 4
- 239000013598 vector Substances 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 claims description 3
- 238000005065 mining Methods 0.000 claims description 3
- 230000009193 crawling Effects 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 claims description 2
- 239000013604 expression vector Substances 0.000 claims description 2
- 238000001914 filtration Methods 0.000 claims 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 25
- 238000001514 detection method Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000007637 random forest analysis Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000000638 solvent extraction 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/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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- 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/044—Recurrent networks, e.g. Hopfield 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)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Virology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种基于多模态神经网络的安卓恶意应用程序识别方法,主要解决现有技术中使用单一特征识别恶意程序以及无法有效融合不同特征的问题。其实现方案是:从相关样本库和国内外主流应用市场下载恶意和良性的安卓应用软件样本;构建与安卓应用程序恶意行为和漏洞有关的关键应用程序接口列表;根据该列表和调用跟踪图生成所有软件样本的关键调用路径,并利用该路径和调用跟踪图构建应用程序的抽象流图;将关键调用路径向量化,使用抽象流图和向量化的关键调用路径对多模态神经网络进行训练;利用训练好的多模态网络识别恶意程序。本发明能有效融合应用程序不同特征,准确区分应用程序的良性和恶意行为,可用于对安卓应用程序的检测。
Description
技术领域
本发明属于网络安全技术领域,特别涉及一种安卓恶意应用程序识别方法,可用于对恶意应用程序的检测和识别。
背景技术
安卓Android系统是目前移动终端上搭载的最为流行、使用最为广泛的移动操作系统,2021年Android操作系统占据的智能手机市场超过80%。随着Android应用的蓬勃发展,恶意软件也在迅速兴起,在种类繁多的Android应用软件中充斥着大量的恶意软件。Android恶意软件不仅对用户个人隐私信息造成了严重威胁,甚至会危害国家信息安全。随着其攻击技术的日趋成熟,Android恶意软件越来越难以检测。因此,如何有效地识别Android恶意应用程序是目前急需解决的问题。
如今,随着深度学习的飞速发展,深度学习方法被大量地应用到Android恶意软件识别当中,基本思想是建立一个基于提取特征的分类系统,对未知的应用进行检测并识别其类型。在Android恶意软件识别方面,深度学习的方法精度高,而且可以实现自动化检测,其在安全领域越来越被人认为是强大且有效的工具。
中南大学在其申请号为CN202110628306.1的专利文献中提出一种可解释的基于图嵌入的Android恶意软件自动检测方法。该方法从函数调用图的角度出发,挖掘函数调用图中函数节点对应的敏感API序列,以敏感API序列作为特征对基于注意力机制的神经网络进行训练,使用训练好地神经网络实现恶意软件的识别和检测。该方法由于只以单一的敏感API序列作为识别恶意程序的特征,因而无法准确地对恶意应用程序进行识别。
杭州电子科技大学在其申请号为CN202011387081.7的专利文献中提出一种Android恶意软件检测方法。该方法将应用程序的权限和API调用序列特征分别作为随机森林和卷积神经网络模型的输入,对随机森林和卷积神经网络模型分别进行训练,将两个模型分别训练好之后,再将二者的预测结果进行线性结合计算最终的预测结果。该方法由于对两个模型分别进行训练,故无法对应用程序的两种特征进行有效的耦合,因而降低恶意应用程序的识别精度,造成对恶意应用程序的误报和漏报问题。
发明内容
本发明的目的在于针对上述现有技术的不足,提出一种基于多模态神经网络的安卓恶意应用程序识别方法,以对应用程序的不同特征进行有效融合,精确识别恶意程序的恶意行为,提高对恶意应用程序的检测精度。
本发明的技术思路是:通过构建应用程序的抽象流图,并提取应用程序的关键调用路径,以充分反映应用程序的语义和结构特征;通过使用抽象流图和关键调用路径两种不同的特征训练多模态神经网络,以有效融合应用程序的不同特征,减少因不同特征之间的相关性而产生的冗余信息,实现对恶意应用程序的准确识别。
根据上述思路,本发明的实现方案包括如下:
1)从相关样本库和国内外主流应用市场下载恶意和良性的安卓Android应用软件样本,其中良性样本和恶意样本所占比例为1∶1,每种类型的样本数量均不少于A个,A为大于等于1的正整数;
2)构建一个与Android应用程序恶意行为和漏洞有关的关键应用程序接口API列表;
3)生成所有软件样本的调用跟踪图;
3a)对(1)中的Android应用软件样本进行反编译处理,将反编译后的结果作为修改后的Intellidroid工具输入,使其能输出以一个应用程序入口点为源的所有调用路径,作为调用跟踪图的一个子图;
3b)通过ic3工具提取Android应用软件样本的组件间交互ICC信息,获取其中通过Intent进行组件间交互ICC的函数及与该函数进行交互的组件,据此将不同子图中通过Intent进行组件通信的节点连接起来,生成整个Android应用软件样本的调用跟踪图;
4)根据关键API列表和调用跟踪图生成所有软件样本的关键调用路径:
对于一个软件样本的调用跟踪图,从其入口点开始进行深度优先遍历,在遍历过程中判断遍历得到的函数是否属于关键API列表体现Android漏洞或恶意行为的函数:
若是,则顺序记录遍历过程中得到的所有函数,生成一条关键调用路径;
若不是,则继续遍历,直至对调用跟踪图的所有入口点完成深度优先遍历;
5)生成所有软件样本的抽象流图;
5a)对调用跟踪图的节点进行分割生成抽象流图的节点;
5b)将4)中关键调用路径入口点中的第一个节点和关键应用程序接口API的最后一个节点抽象为关键边的起点和终点,生成关键边,并从调用跟踪图中提取Intent发送边、邻边、ICC边、隐式邻边,再获取这5种边的反向边,将这10种边添加到抽象流图中,作为抽象流图的边集,并删去抽象流图中没有边连接的孤立节点;
5c)从Android官网上获取所有操作码opcode的集合,并将其中的opcode编码为数字,获取操作码opcode的全局字典,根据opcode字典为所有节点添加标签,通过对边类型进行one-hot编码为边添加标签,构成抽象流图;
6)生成4)的关键调用路径的操作码opcode序列,并对其进行分割和编码,得到向量化的关键调用路径;
7)将软件样本的抽象流图作为多模态神经网络子网络图神经网络GNN的输入,将软件样本的关键调用路径的操作码opcode序列作为多模态神经网络子网络长短期记忆网络LSTM的输入,使用反向传播算法和梯度下降法对多模态神经网络整体进行训练,得到训练好的多模态神经网络;
8)对未知安全性的Android应用程序,采用与3)-5)的相同方法,生成待检测应用程序的抽象流图,采用6)方法生成该应用程序向量化的关键调用路径,并将二者输入到训练好的多模态神经网络中,输出待分类应用程序的良性和恶意概率,取概率最大的结果为最终的判别类型,完成对恶意程序的识别。
本发明与现有技术相比,具有以下优点:
第一,本发明通过构建Android应用程序的抽象流图和完整的关键调用路径,提取和抽象了应用程序的敏感API调用行为及程序的组件间交互ICC信息,可以更加准确地描述恶意程序的行为特征,对良性应用程序和恶意应用程序具有更高度的区分性。
第二,本发明通过使用应用程序的抽象流图和关键调用序列两种不同的特征对多模态神经网络进行训练,得到两种特征中最具差异性的信息,可以减少因不同特征之间的相关性而产生的冗余信息,同时由于对两种不同的特征进行有效的耦合,进一步提高了对恶意程序的识别精度。
附图说明
图1为本发明的实现流程图;
图2为本发明中生成跟踪调用图的子流程图;
图3为本发明中生成抽象流图的子流程图;
图4为本发明中生成的抽象流图示意图;
图5为本发明中对调用路径向量化的子流程图。
具体实施方式
下面结合附图对本发明的实施例作进一步详细描述。
参照图1,本发明的实现步骤如下:
步骤1,下载和收集良性和恶意的Android应用程序样本。
从相关样本库和国内外主流应用市场下载恶意和良性的Android应用软件样本,其中良性样本和恶意样本所占比例为1:1。
本实施例是从公开网站收集良性Android应用程序共9873个,从CICInvesAndMal数据集、Drebin数据集、DroidAnalytics数据集、VirusShare样本库收集恶意Android应用程序共9873个。
步骤2,构建一个与Android应用程序恶意行为和漏洞有关的关键API列表。
2.1)利用网络爬虫技术,从CVE官网和Exploit Database网站上爬取有关描述Android漏洞的语句,并从Stack Overflow网站中收集易受攻击的Android代码样本,建立描述Android漏洞的语句库:malicious_lib={V1,V2,...,Vi,...,Vn},其中,Vi为用来描述第i个Android漏洞的描述语句,1≤i≤n,n为描述Android漏洞的语句总数;
2.2)对malicious_lib进行文本挖掘,从中提取出关键词,计算关键词的词频-逆文档频率P,用于评估一个词对于一个文件集或一个语料库中的重要程度,其计算如下:
2.2.3)根据词频TF和逆文档频率IDF计算Vi中特定词汇的词频-逆文档频率P:
P=TF*IDF,其中*表示乘法;
2.3)通过2.2)的过程,计算除Java关键词、内置类型以及变量名的其他关键词的词频-逆文档频率P,并将这些词汇的词频-逆文档频率P按照从大到小排序,最终收集和排序10782个关键词;
2.4)选取排名前的150个关键词,这些排名靠前的关键词具有良好的Android应用程序类别区分能力,通过这些关键词对官方在线文档和现成工具中的应用程序接口API列表进行搜索,从中找出所有包含关键词的API,最终得到与Android漏洞和恶意行为关联的关键API列表,该列表包含的关键API共632个。
步骤3,对步骤1中所有软件样本生成其调用跟踪图。
参照图2,本步骤的具体实现如下:
3.1)对Intellidroid工具进行修改,并使用修改后的Intellidroid工具生成调用跟踪图的子图:
对Android应用程序包APK文件进行反编译处理,将反编译后的结果作为Intellidroid工具的输入,由于IntelliDroid工具输出的文件中只包括一条调用路径的入口点和最终的敏感API调用,因而需要对Intellidroid工具进行修改,使其能输出以一个应用程序入口点为源的所有完整调用路径,作为调用跟踪图的一个子图;
3.2)通过ic3工具提取Android应用程序的组件间交互ICC信息,获取其中通过Intent进行组件间交互ICC的函数及与该函数进行交互的组件,将组件间交互ICC的函数作为ICC交互边的起点,将该组件在启动时执行的onCreate函数作为ICC交互边的终点,通过ICC交互边将不同子图中通过Intent进行组件通信的节点连接起来,生成整个Android应用程序的调用跟踪图。
步骤4,根据关键API列表和调用跟踪图生成所有软件样本的关键调用路径:
4.1)对一个软件样本的调用跟踪图,从其调用跟踪图的入口点开始进行深度优先遍历,在遍历过程中判断遍历得到的函数是否属于关键API列表:
若是,则顺序记录遍历过程中得到的所有函数,生成一条关键调用路径;
若不是,则继续遍历,直至对该调用跟踪图的所有入口点完成深度优先遍历;
4.2)重复上述过程,直至对所有软件样本调用跟踪图完成深度优先遍历,得到所有软件样本的关键调用路径。
步骤5,生成所有软件样本的抽象流图。
参照图3,本步骤的具体实现如下:
5.1)对上述调用跟踪图的节点进行分割,生成抽象流图的节点;
5.1.1)借助Androguard库对Android应用程序反编译,得到该应用程序中每个函数的操作码,可以获得调用跟踪图节点对应的操作码opcode;
5.1.2)在调用跟踪图的节点内部判断操作码opcode是否调用了用户自定义函数或发送Intent的应用程序接口API:
若是,则在调用处对该函数的opcode进行分割,将分割后得到的opcode序列作为抽象流图的节点;
若没有调用,则不进行分割;
5.2)根据步骤3中调用跟踪图和步骤4中关键调用路径获得抽象流图的边集:
5.2.1)将关键调用路径入口点中的第一个节点和关键应用程序接口API的最后一个节点抽象为关键边的起点和终点,生成关键边;
5.2.2)从调用跟踪图入口点的第一个节点起进行深度优先遍历,将入口点的第一个节点作为Intent发送边的起点,若在遍历过程发现以调用发送Intent的API为结尾的节点,则停止遍历,并将该节点作为Intent发送边的终点,生成Intent发送边;若在遍历过程没有发现,则继续遍历,直至对调用跟踪图的所有入口点完成遍历;
5.2.3)判断抽象流图的节点是否从同一个调用跟踪图的节点分割得到:
若是,则使用有向边将这些顺序相邻的抽象流图节点连接起来,将这种边称为邻边;
若否,则不进行连接;
5.2.4)将Android应用程序包APK文件作为ic3的输入,获取ic3输出的结果,提取其中通过Intent进行组件间通信ICC的函数及与该函数进行交互的组件,将该函数中以调用发送Intent的API为结尾的节点作为抽象流图中ICC边的起点,将该组件启动时执行的OnCreate函数的第一个节点作为ICC边的终点,生成ICC边;
5.2.5)将上述生成的一条Intent发送边的起点作为隐式邻边的起点,若抽象流图中的一个节点同时满足:与该Intent发送边的起点在同一组件内;在该Intent发送边的起点之后被执行;调用了接收Intent的应用程序接口API这三个条件,则将这种节点作为隐式邻边的终点,生成隐式邻边;
图4为一个示例程序的抽象流图,其包含上述五种不同的边,其中边上标注‘a’的边为关键边,边上标注‘b’的边为Intent发送边,边上标注‘e’的边为邻边,边上标注‘c’的边为ICC边,边上标注‘d’的边为隐式邻边;该抽象流图中节点格式为“函数名_V_数字”,表示应用程序一个函数中的第几个节点;
5.2.6)获取上述这5种边对应的反向边,即关键边的反向边,Intent发送边的反向边,邻边的反向边,ICC边的反向边,隐式邻边的反向边,将这5种边及5种反向边共10种边作为抽象流图的边集,并删去所有节点中没有边连接的孤立节点;
5.3)对删去孤立节点后的所有节点和边添加标签构成抽象流图:
5.3.1)从Android官网上获取所有操作码opcode的集合,其中共包含232个操作码,对这些操作码进行顺序编码,即将操作码集合的第一个操作码编码为1,将第二个操作码编码为2,依此类推,将所有opcode编码为数字;
5.3.2)根据上述编码后的opcode集合对每个节点的opcode序列进行编码,将节点中所有opcode对应的编码值作为节点的标签,由于节点中opcode数并不一致,生成的节点标签长度也不一致,对长度大于D的节点标签进行截断处理,对长度小于D的节点标签进行补齐处理,由于0不表示任何信息,因而用0将节点标签补齐,使节点标签长度一致;
5.3.3)通过对边的类型作one-hot编码生成边的标签,将上述10种边类型从1到10进行编号,边的标签为一个长度为10的向量,向量中只有边类型对应的位处为1,其余位都为0。
步骤6,将关键调用路径的opcode序列向量化。
在步骤5构建的抽象流图中,由于其关键边只抽象了步骤4中关键调用路径的起点和终点,忽略了关键调用路径中重要的时序信息,因此在本步骤中将完整的关键调用路径进行向量化,以提取对关键应用程序接口API的调用关系和关键调用路径中重要的时序信息。
参照图5,本步骤的具体实现如下:
6.1)对于一条关键调用路径,从入口点开始对这条路径函数中的每个节点进行判断,判断其是否以调用下一个函数为结尾:
若是,则进入下一个函数中;
若否,则将该节点的opcode添加到opcode序列中,并进入这个函数的下一个节点;
6.2)循环执行6.1),直至遍历完这条调用路径中的所有函数,得到一条关键调用路径的opcode序列;
6.3)由于关键调用路径的opcode序列长度有很大差别,为达到统一输入数据格式的目的,对关键调用路径的opcode序列采取分割策略使其数据格式统一,判断关键调用路径opcode序列长度是否大于分割长度Length=100:
若是,则从末端起将关键调用路径的opcode序列分割为若干长度为Length=100的序列,起始部分剩余的opcode序列将被舍弃;
若否,则保留这条关键调用路径的全部opcode;
6.4)利用opcode字典对分割后的opcode序列进行编码操作,将opcode序列的每个操作码替换为其对应的编号,得到向量化的opcode序列。
步骤7,根据所有样本的抽象流图和向量化的关键调用序列,使用反向传播算法和梯度下降法对多模态神经网络进行训练,得到训练好的多模态神经网络。
7.1)将良性Android应用程序的抽象流图和向量化的关键调用路径标注为良性,将恶意Android应用程序的抽象流图和向量化的关键调用路径标注为恶意,得到带标签的抽象流图和带标签的向量化的关键调用路径;
7.2)根据多模态神经网络对输入的特征能充分进行学习来设置多模态神经网络的最大训练次数E,对多模态神经网络参数随机初始化,将带标签的抽象流图输入到多模态神经网络的子网络图神经网络GNN中,将带标签的向量化的关键调用路径输入到多模态神经网络的子网络长短期记忆网络LSTM中,本实施例设但不限于最大训练次数E=25;
7.3)子网络图神经网络GNN和子网络长短期记忆网络LSTM分别输出一个对Android应用程序的高级表示向量,将这两个子网络的向量表示进行前后拼接,作为一个全连接层的输入,全连接层的输出经过一个softmax层得到多模态神经网络的最终输出,即样本软件的良性概率和恶意概率;
7.4)取良性概率和恶意概率中两者较大的概率类别作为多模态神经网络对软件样本的预测结果,通过下式计算交叉熵损失L:
7.5)根据反向传播算法由深到浅计算网络中所有参数的梯度值;
7.6)计算评价多模态神经网络性能的指标F1:
7.6.1)将多模态神经网络对样本软件的预测结果进行分类标记:
若多模态神经网络把原本的恶意软件预测为恶意,记为真正例TP;
若多模态神经网络把原本的良性软件预测为恶意,记为假正例FP;
若多模态神经网络把原本的恶意软件预测为良性,记为假负例FN;
7.6.4)根据精确率P和召回率R计算评价GNN网络性的指标:
7.7)沿着网络中参数梯度的反方向,对网络中的参数进行迭代更新,使损失函数逐渐减小;
7.8)循环执行7.3)-7.7),直至达到最大的训练次数,从E次训练中选择评价指标F1最优的网络模型,作为训练好的多模态网络模型。
步骤8,通过训练好的多模态神经网络对Android应用程序进行分类。
8.1)对未知安全性的Android应用程序,通过步骤3至步骤5,生成待检测应用程序的抽象流图;
8.2)采用与步骤6相同的方法生成该应用程序的向量化的关键调用路径,并将该向量化的关键调用路径和8.1)生成的抽象流图输入到训练好的多模态神经网络中,输出待分类应用程序的良性和恶意概率,取概率最大的结果为最终的判别类型,完成对恶意程序的识别。
以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明的内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
Claims (8)
1.一种基于多模态神经网络的安卓恶意应用程序识别方法,其特征在于,包括如下:
1)从相关样本库和国内外主流应用市场下载恶意和良性的安卓Android应用软件样本,其中良性样本和恶意样本所占比例为1:1,每种类型的样本数量均不少于A个,A为大于等于1的正整数;
2)构建一个与Android应用程序恶意行为和漏洞有关的关键应用程序接口API列表;
3)生成所有软件样本的调用跟踪图;
3a)对(1)中的Android应用软件样本进行反编译处理,将反编译后的结果作为修改后的Intellidroid工具输入,使其能输出以一个应用程序入口点为源的所有调用路径,作为调用跟踪图的一个子图;
3b)通过ic3工具提取Android应用软件样本的组件间交互ICC信息,获取其中通过Intent进行组件间交互ICC的函数及与该函数进行交互的组件,据此将不同子图中通过Intent进行组件通信的节点连接起来,生成整个Android应用软件样本的调用跟踪图;
4)根据关键API列表和调用跟踪图生成所有软件样本的关键调用路径:
4a)对一个软件样本的调用跟踪图,从其调用跟踪图的入口点开始进行深度优先遍历,在遍历过程中判断遍历得到的函数是否属于关键API列表:
若是,则顺序记录遍历过程中得到的所有函数,生成一条关键调用路径;
若不是,则继续遍历,直至对该调用跟踪图的所有入口点完成深度优先遍历;
4b)重复上述过程,直至对所有软件样本调用跟踪图的所有入口点完成深度优先遍历,得到所有软件样本的关键调用路径。
5)生成所有软件样本的抽象流图;
5a)对调用跟踪图的节点进行分割生成抽象流图的节点;
5b)将4)中关键调用路径入口点中的第一个节点和关键应用程序接口API的最后一个节点抽象为关键边的起点和终点,生成关键边,并从调用跟踪图中提取Intent发送边、邻边、ICC边、隐式邻边,再获取这5种边的反向边,将这10种边添加到抽象流图中,作为抽象流图的边集,并删去抽象流图中没有边连接的孤立节点;
5c)从Android官网上获取所有操作码opcode的集合,并将其中的opcode编码为数字,获取操作码opcode的全局字典,根据opcode字典为所有节点添加标签,通过对边类型进行one-hot编码为边添加标签,构成抽象流图;
6)生成4)的关键调用路径的操作码opcode序列,并对其进行分割和编码,得到向量化的关键调用路径;
7)将软件样本的抽象流图作为多模态神经网络中的子网络图神经网络GNN的输入,将软件样本的关键调用路径的操作码opcode序列作为多模态神经网络中的子网络长短期记忆网络LSTM的输入,使用反向传播算法和梯度下降法对多模态神经网络整体进行训练,得到训练好的多模态神经网络;
8)对未知安全性的Android应用程序,采用与3)-5)的相同方法,生成待检测应用程序的抽象流图,采用6)方法生成该应用程序向量化的关键调用路径,并将二者输入到训练好的多模态神经网络中,输出待分类应用程序的良性和恶意概率,取概率最大的结果为最终的判别类型,完成对恶意程序的识别。
2.根据权利要求1所述的方法,其特征在于,2)中构建与Android应用程序恶意行为和漏洞有关的关键应用程序接口API列表,实现如下:
2a)使用网络爬虫技术,从漏洞存储库中爬取描述Android漏洞的语句,并从代码存储库中收集易受攻击的Android代码样本,建立用于描述Android漏洞和恶意行为的语句库,再对语句库进行文本挖掘,从中提取出M个关键词,M为大于等于1的正整数;
2b)使用词频-逆文档频率TF-IDF方法对(2a)提取的关键词中除Java关键词、内置类型及变量名以外的其他关键词进行排序;
2c)选取排名前N的关键词,1≤N<M,通过这些排名靠前的关键词对官方在线文档和一些常用分析工具中的API列表进行过滤,最终得到与Android漏洞和恶意行为关联的关键API列表。
3.根据权利要求1所述的方法,其特征在于,3b)中连接不同子图中通过Intent组件通信的节点,是将组件间交互ICC的函数作为ICC交互边的起点,将该组件在启动时执行的onCreate函数作为ICC交互边的终点,通过该ICC交互边将调用跟踪图的子图桥接起来,得到整个Android应用程序的调用跟踪图。
4.根据权利要求1所述的方法,其特征在于,5a)中对调用跟踪图节点进行分割生成抽象流图节点,实现如下:
5a1)借助Androguard库对软件样本即Android应用程序包APK文件进行反编译,获得调用跟踪图节点对应的操作码opcode;
5a2)在调用跟踪图的节点内部判断操作码opcode是否调用了用户自定义函数或发送Intent的应用程序接口API:
若是,则在调用处对该函数的opcode进行分割,将分割后得到的opcode序列作为抽象流图的节点;
若没有调用,则不进行分割。
5.根据权利要求1所述的方法,其特征在于,5b)中从调用跟踪图中提取Intent发送边、邻边、ICC边、隐式邻边,实现如下:
5b1)从调用跟踪图入口点的第一个节点起进行深度优先遍历,将入口点的第一个节点作为Intent发送边的起点,若在遍历过程发现以调用发送Intent的API为结尾的节点,则停止遍历,并将该节点作为Intent发送边的终点,再将该Intent发送边添加到抽象流图的Intent发送边集合中;
5b2)判断5a)生成的抽象流图节点是否从同一个调用跟踪图的节点分割得到:
若是,则使用有向边将这些顺序相邻的抽象流图节点连接起来,并将该有向边添加到抽象流图的邻边集合中;
若否,则不进行连接;
5b3)根据3b)获取的通过Intent进行组件间通信ICC的函数及与该函数进行交互的组件,将该函数中以调用发送Intent的API为结尾的节点作为抽象流图中ICC边的起点,将该组件启动时执行的OnCreate函数的第一个节点作为ICC边的终点,并将该ICC边添加到抽象流图的ICC边集合中;
5b4)对5b1)中生成的任意一条Intent发送边,将其起点作为隐式邻边的起点,若抽象流图的中的一个节点同时满足以下三个条件:
与该Intent发送边的起点在同一组件内;
在该Intent发送边的起点之后被执行;
调用了接收Intent的应用程序接口API;
则将这种节点作为隐式邻边的终点,并将该隐式邻边添加到抽象流图的隐式邻边集合中。
6.根据权利要求1所述的方法,其特征在于,5c)中根据opcode字典为所有节点添加标签,是对照opcode字典对抽象流图每个节点的opcode序列进行编码,将节点中所有opcode的编码值作为节点的标签。
7.根据权利要求1所述的方法,其特征在于,6)中获取关键调用路径的操作码opcode序列并对其进行分割和编码得到向量化的关键调用路径,实现如下:
6a)对于4)中的一条关键调用路径,从入口点开始对这条路径函数中的每个节点进行判断,判断其是否以调用下一个函数为结尾:
若是,则进入下一个函数中;
若否,则将该节点的opcode添加到opcode序列中,并进入这个函数的下一个节点;
6b)循环执行6a),直至遍历完这条调用路径中的所有函数,得到一条关键调用路径的opcode序列;
6c)将生成的关键调用路径opcode序列从末端起分割为若干长度为Length的序列,起始部分剩余的opcode序列将被舍弃,并保留opcode序列长度小于分割长度这条调用路径的全部opcode;
6d)利用5c)中得到的opcode字典对分割后的opcode序列进行编码操作,将opcode序列的每个操作码替换为其对应的编号,得到向量化的关键调用路径。
8.根据权利要求1所述的方法,其特征在于,7)中使用反向传播算法和梯度下降法对多模态神经网络进行训练,实现如下:
7a)将良性Android应用程序的抽象流图和向量化的关键调用路径标注为良性,将恶意Android应用程序的抽象流图和向量化的关键调用路径标注为恶意,得到带标签的抽象流图和带标签的向量化的关键调用路径;
7b)设置多模态神经网络的最大训练次数E,对多模态神经网络参数随机初始化,将带标签的抽象流图输入到其子网络图神经网络GNN中,将带标签的向量化的关键调用路径输入到其子网络长短期记忆网络LSTM中;
7c)子网络图神经网络GNN和子网络长短期记忆网络LSTM分别输出一个对Android应用程序的高级表示向量,将得到的两个子网络的输出向量前后拼接,作为一个全连接层的输入,全连接层的输出经过一个softmax层得到多模态神经网络的最终输出;
7d)利用多模态网络的输出和抽象流图、向量化的关键调用路径对应的标签计算损失函数,由深到浅计算网络中所有参数的梯度值,并计算精确率P和召回率R的调和平均数F1这一评价多模态网络性能的指标;
7e)沿着网络中参数梯度的反方向,对网络中的参数进行迭代更新,使损失函数逐渐减小;
7f)循环执行(7c)-(7e),直至达到最大的训练次数,从E次训练中选择评价指标F1最优的网络模型,作为训练好的多模态网络模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111564448.2A CN114491529B (zh) | 2021-12-20 | 2021-12-20 | 基于多模态神经网络的安卓恶意应用程序识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111564448.2A CN114491529B (zh) | 2021-12-20 | 2021-12-20 | 基于多模态神经网络的安卓恶意应用程序识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114491529A true CN114491529A (zh) | 2022-05-13 |
CN114491529B CN114491529B (zh) | 2024-05-17 |
Family
ID=81494595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111564448.2A Active CN114491529B (zh) | 2021-12-20 | 2021-12-20 | 基于多模态神经网络的安卓恶意应用程序识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114491529B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114491530A (zh) * | 2021-12-20 | 2022-05-13 | 西安电子科技大学 | 基于抽象流图和图神经网络的安卓应用程序分类方法 |
CN114817925A (zh) * | 2022-05-19 | 2022-07-29 | 电子科技大学 | 基于多模态图特征的安卓恶意软件检测方法及系统 |
CN115577361A (zh) * | 2022-12-09 | 2023-01-06 | 四川大学 | 一种改进的基于图神经网络的PHP Web shell检测方法 |
CN116186702A (zh) * | 2023-02-24 | 2023-05-30 | 中国科学院信息工程研究所 | 基于协同注意力的恶意软件分类方法和装置 |
CN117034273A (zh) * | 2023-08-28 | 2023-11-10 | 山东省计算中心(国家超级计算济南中心) | 基于图卷积网络的安卓恶意软件检测方法及系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130326625A1 (en) * | 2012-06-05 | 2013-12-05 | Los Alamos National Security, Llc | Integrating multiple data sources for malware classification |
CN109684840A (zh) * | 2018-12-20 | 2019-04-26 | 西安电子科技大学 | 基于敏感调用路径的Android恶意软件检测方法 |
US20190230107A1 (en) * | 2018-01-24 | 2019-07-25 | Hrl Laboratories, Llc | System for continuous validation and threat protection of mobile applications |
CN110941826A (zh) * | 2018-09-21 | 2020-03-31 | 武汉安天信息技术有限责任公司 | 恶意安卓软件检测方法及装置 |
CN111259388A (zh) * | 2020-01-09 | 2020-06-09 | 中山大学 | 一种基于图卷积的恶意软件api调用序列检测方法 |
CN111523117A (zh) * | 2020-04-10 | 2020-08-11 | 西安电子科技大学 | 一种安卓恶意软件检测和恶意代码定位系统及方法 |
CN112149124A (zh) * | 2020-11-02 | 2020-12-29 | 电子科技大学 | 一种基于异构信息网络的安卓恶意程序检测的方法和系统 |
CN112257066A (zh) * | 2020-10-30 | 2021-01-22 | 广州大学 | 面向带权异质图的恶意行为识别方法、系统和存储介质 |
US20210092140A1 (en) * | 2019-09-24 | 2021-03-25 | Vectra Ai, Inc. | Method, product, and system for detecting malicious network activity using a graph mixture density neural network |
CN113034331A (zh) * | 2021-05-06 | 2021-06-25 | 国家计算机网络与信息安全管理中心上海分中心 | 一种基于多模态融合的安卓赌博应用识别方法和系统 |
CN113360906A (zh) * | 2021-06-04 | 2021-09-07 | 中南大学 | 可解释的基于图嵌入的Android恶意软件自动检测 |
US20210312042A1 (en) * | 2020-04-06 | 2021-10-07 | Cybereason Inc. | Graph-Based Classification of Elements |
-
2021
- 2021-12-20 CN CN202111564448.2A patent/CN114491529B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130326625A1 (en) * | 2012-06-05 | 2013-12-05 | Los Alamos National Security, Llc | Integrating multiple data sources for malware classification |
US20190230107A1 (en) * | 2018-01-24 | 2019-07-25 | Hrl Laboratories, Llc | System for continuous validation and threat protection of mobile applications |
CN110941826A (zh) * | 2018-09-21 | 2020-03-31 | 武汉安天信息技术有限责任公司 | 恶意安卓软件检测方法及装置 |
CN109684840A (zh) * | 2018-12-20 | 2019-04-26 | 西安电子科技大学 | 基于敏感调用路径的Android恶意软件检测方法 |
US20210092140A1 (en) * | 2019-09-24 | 2021-03-25 | Vectra Ai, Inc. | Method, product, and system for detecting malicious network activity using a graph mixture density neural network |
CN111259388A (zh) * | 2020-01-09 | 2020-06-09 | 中山大学 | 一种基于图卷积的恶意软件api调用序列检测方法 |
US20210312042A1 (en) * | 2020-04-06 | 2021-10-07 | Cybereason Inc. | Graph-Based Classification of Elements |
CN111523117A (zh) * | 2020-04-10 | 2020-08-11 | 西安电子科技大学 | 一种安卓恶意软件检测和恶意代码定位系统及方法 |
CN112257066A (zh) * | 2020-10-30 | 2021-01-22 | 广州大学 | 面向带权异质图的恶意行为识别方法、系统和存储介质 |
CN112149124A (zh) * | 2020-11-02 | 2020-12-29 | 电子科技大学 | 一种基于异构信息网络的安卓恶意程序检测的方法和系统 |
CN113034331A (zh) * | 2021-05-06 | 2021-06-25 | 国家计算机网络与信息安全管理中心上海分中心 | 一种基于多模态融合的安卓赌博应用识别方法和系统 |
CN113360906A (zh) * | 2021-06-04 | 2021-09-07 | 中南大学 | 可解释的基于图嵌入的Android恶意软件自动检测 |
Non-Patent Citations (5)
Title |
---|
TAEGUEN KIM 等: "A multimodal deep learning method for Android malware detection using various features", IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY, vol. 14, no. 3, 31 March 2019 (2019-03-31), pages 773 - 788 * |
YAFEI WU 等: "DeepCatra: Learning flow‐ and graph‐based behaviours for Android malware detection", IET INFORMATION SECURITY, 7 August 2022 (2022-08-07), pages 119 - 130 * |
吴兴茹 等: "基于函数调用图的Android重打包应用检测", 计算机工程, vol. 43, no. 11, 15 November 2017 (2017-11-15), pages 122 - 127 * |
李创丰 等: "基于CNN和朴素贝叶斯方法的安卓恶意应用检测算法", 信息安全研究, vol. 5, no. 06, 5 June 2019 (2019-06-05), pages 470 - 476 * |
祝小兰 等: "基于敏感权限及其函数调用图的Android恶意代码检测", 四川大学学报(自然科学版), vol. 53, no. 03, 28 May 2016 (2016-05-28), pages 526 - 533 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114491530A (zh) * | 2021-12-20 | 2022-05-13 | 西安电子科技大学 | 基于抽象流图和图神经网络的安卓应用程序分类方法 |
CN114491530B (zh) * | 2021-12-20 | 2024-05-17 | 西安电子科技大学 | 基于抽象流图和图神经网络的安卓应用程序分类方法 |
CN114817925A (zh) * | 2022-05-19 | 2022-07-29 | 电子科技大学 | 基于多模态图特征的安卓恶意软件检测方法及系统 |
CN115577361A (zh) * | 2022-12-09 | 2023-01-06 | 四川大学 | 一种改进的基于图神经网络的PHP Web shell检测方法 |
CN116186702A (zh) * | 2023-02-24 | 2023-05-30 | 中国科学院信息工程研究所 | 基于协同注意力的恶意软件分类方法和装置 |
CN116186702B (zh) * | 2023-02-24 | 2024-02-13 | 中国科学院信息工程研究所 | 基于协同注意力的恶意软件分类方法和装置 |
CN117034273A (zh) * | 2023-08-28 | 2023-11-10 | 山东省计算中心(国家超级计算济南中心) | 基于图卷积网络的安卓恶意软件检测方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114491529B (zh) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | A novel neural source code representation based on abstract syntax tree | |
CN114491529B (zh) | 基于多模态神经网络的安卓恶意应用程序识别方法 | |
CN109753800B (zh) | 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统 | |
Tann et al. | Towards safer smart contracts: A sequence learning approach to detecting security threats | |
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
CN112579477A (zh) | 一种缺陷检测方法、装置以及存储介质 | |
US11580222B2 (en) | Automated malware analysis that automatically clusters sandbox reports of similar malware samples | |
CN107102993B (zh) | 一种用户诉求分析方法和装置 | |
CN111400719A (zh) | 基于开源组件版本识别的固件脆弱性判别方法及系统 | |
Wisse et al. | Scripting dna: Identifying the javascript programmer | |
CN114861194B (zh) | 一种基于bgru与cnn融合模型的多类型漏洞检测方法 | |
CN116406459A (zh) | 一种代码处理方法、装置、设备及介质 | |
Ibba et al. | Evaluating machine-learning techniques for detecting smart ponzi schemes | |
CN111881300A (zh) | 面向第三方库依赖的知识图谱构建方法及系统 | |
CN113297580A (zh) | 基于代码语义分析的电力信息系统安全防护方法及装置 | |
Chida et al. | Repairing dos vulnerability of real-world regexes | |
US20230222223A1 (en) | Computer-implemented method for testing the cybersecurity of a target environment | |
CN116992052B (zh) | 用于威胁情报领域的长文本摘要方法、装置和电子设备 | |
CN114491530B (zh) | 基于抽象流图和图神经网络的安卓应用程序分类方法 | |
Pei et al. | Combining multi-features with a neural joint model for Android malware detection | |
CN113971283A (zh) | 一种基于特征的恶意应用程序检测方法及设备 | |
CN116821903A (zh) | 检测规则确定及恶意二进制文件检测方法、设备及介质 | |
CN115935367A (zh) | 一种基于图神经网络的源代码漏洞静态检测及定位方法 | |
Ma et al. | A knowledge graph-based sensitive feature selection for android malware classification | |
CN112446026A (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 |