CN114491530B - 基于抽象流图和图神经网络的安卓应用程序分类方法 - Google Patents
基于抽象流图和图神经网络的安卓应用程序分类方法 Download PDFInfo
- Publication number
- CN114491530B CN114491530B CN202111566330.3A CN202111566330A CN114491530B CN 114491530 B CN114491530 B CN 114491530B CN 202111566330 A CN202111566330 A CN 202111566330A CN 114491530 B CN114491530 B CN 114491530B
- Authority
- CN
- China
- Prior art keywords
- edge
- abstract
- application program
- graph
- malicious
- 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 23
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 19
- 238000010586 diagram Methods 0.000 claims abstract description 32
- 230000006399 behavior Effects 0.000 claims abstract description 17
- 238000012549 training Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 38
- 230000003993 interaction Effects 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 5
- 238000001914 filtration Methods 0.000 claims description 5
- 238000011478 gradient descent method Methods 0.000 claims description 4
- 238000005065 mining Methods 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 claims description 2
- 238000002372 labelling Methods 0.000 claims 2
- 230000011218 segmentation Effects 0.000 claims 1
- 238000000638 solvent extraction Methods 0.000 claims 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 20
- 238000001514 detection method Methods 0.000 description 12
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000011160 research Methods 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/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
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computer Security & Cryptography (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种基于抽象流图和图神经网络的安卓应用程序分类方法,主要解决现有技术对未知恶意应用程序识别能力弱和无法准确识别恶意程序行为的问题。其实现方案是:从相关样本库和国内外主流应用市场下载恶意和良性的安卓应用软件样本;构建与安卓应用程序恶意行为和漏洞有关的关键应用程序接口API列表;生成安卓应用程序的调用跟踪图,并利用其和API列表构建安卓应用程序的抽象流图;为抽象流图添加标签并使用带标签的抽象流图对图神经网络GNN进行训练;利用训练好的图神经网络GNN对未知安全性的安卓应用程序分出良性或恶意的类别。本发明具有泛化能力强及对良性和恶意应用程序的行为区分度高的优点,可用于对恶意应用程序的检测。
Description
技术领域
本发明属于网络安全技术领域,特别涉及一种安卓应用程序分类方法,可用于对恶意应用程序的检测。
背景技术
安卓操作***是一种基于Linux的操作***,主要使用于移动设备,如智能手机和平板电脑,是目前使用最为广泛的移动终端。在2021年Android操作***占据的智能手机市场超过80%。由于其市场的高占用率和Android***的开源特性,Android应用程序成为了黑客恶意攻击的重点。因而Android上的智能手机恶意软件已成为我们日常生活中的主要安全问题,这将严重威胁用户个人信息安全甚至国家的信息安全。
目前对Android恶意应用程序的检测技术主要分为静态检测技术和动态检测技术两种。静态检测技术是在不运行Android应用程序的条件下从程序中提取应用程序的特征,如所需权限、意图信息和敏感应用程序接口API调用等;
动态检测技术是通过在实际环境中执行软件记录运行时的软件行为,该动态检测技术虽然在已出现的恶意软件中正确率高,但却无法识别新型的恶意应用程序,不利于检测尚未记录的恶意软件,且研究花费时间较多,比较复杂,不适合实际使用,因此一般采用静态分析。
上述这些静态检测和动态检测的传统检测技术均需要安全专家人为地定义需要提取的特征,不仅耗费人力,且在提取过程中容易出现错误。因此,近些年有越来越多的Android恶意软件检测手段借助深度学习的方法进行自动化检测,由于检测精度高,使得深度学习在安全领域也越来越被认为是强大且有效的工具。
在名称为《Permission-Based Android Malware Application Detection UsingMulti-Layer Perceptron》作者为O.S.Jannath Nisha,S.Mary Saira Bhanu,DOI:10.1007/978-3-030-16660-1_36的文献中,研究者以Android应用程序所需权限为特征,通过多层感知器进行训练,以达到识别恶意程序的目的,这种方法在差别较大的样本中可以取得不错的效果,但缺乏对真实世界中复杂样本和未知恶意应用程序的泛化能力。
中国民航大学在其申请号为CN201811024430.1的专利文献中提出一种基于双通道卷积神经网络的Android恶意应用程序检测方法。该方法首先将安装包APK文件反编译,提取操作码序列和指令功能序列作为特征,并输入到卷积神经网络中,对神经网络进行训练,通过训练好的神经网络对待检测的应用程序进行检测。该方法由于将提取应用程序的操作码序列和指令功能序列作为检测恶意程序的特征,这种特征含有较多与恶意代码和漏洞无关的冗余信息,因而对良性和恶意两种应用程序类别的区分度不高。
发明内容
本发明的目的在于针对上述现有技术的不足,提出一种基于抽象流图和图神经网络的安卓应用程序分类方法,以有效区分良性和恶意应用程序,捕捉未知恶意程序的恶意行为,提高泛化能力。
本发明的技术思路是:从Android应用程序提取能充分反映Android应用程序的敏感API调用关系和组件间敏感信息的交互行为的特征,通过这种体现程序语义和结构的特征对图神经网络进行训练,实现对恶意应用程序的识别。其实现方案包括如下:
(1)从相关样本库和国内外主流应用市场下载恶意和良性的Android应用软件样本,其中良性样本和恶意样本所占比例为1:1,每种类型的样本数量均不少于A个,A为大于等于1的正整数;
(2)构建一个与Android应用程序恶意行为和漏洞有关的关键应用程序接口API列表;
(3)生成(1)中所有软件样本的调用跟踪图;
(3a)对Android应用程序包APK文件进行反编译处理,将反编译后的结果作为修改后的Intellidroid工具的输入,使其能输出以一个应用程序入口点为源的所有调用路径,作为调用跟踪图的一个子图;
(3b)通过ic3工具提取Android应用程序的组件间交互ICC信息,获取其中通过Intent进行组件间交互ICC的函数及与该函数进行交互的组件,据此将不同子图中通过Intent进行组件通信的节点连接起来,生成整个Android应用程序的调用跟踪图;
(4)生成所有软件样本的抽象流图;
(4a)对调用跟踪图的节点进行分割生成抽象流图的节点;
(4b)对调用跟踪图进行深度优先遍历得到调用路径,通过(2)中关键API列表对该调用路径进行过滤后得到关键边,从调用跟踪图中提取Intent发送边、邻边、ICC边、隐式邻边,并获取这5种边的反向边,将这10种边添加到抽象流图中,作为抽象流图的边集,并删去抽象流图中没有边连接的孤立节点;
(4c)对所有节点和边添加标签构成抽象流图;
(5)通过(3)-(4)生成(1)中软件样本的抽象流图,将其作为图神经网络GNN的输入,使用反向传播算法和梯度下降法对GNN进行训练,得到训练好的图神经网络GNN;
(6)对未知安全性的Android应用程序,采用与(3)-(4)的相同方法,生成待检测应用程序的抽象流图,并将其输入到训练好的图神经网络GNN中,输出待分类应用程序的良性和恶意概率,取概率最大的结果为最终的判别类型。本发明与现有技术相比,具有如下优点:
第一,本发明通过构建关键应用程序接口API列表,可以更加准确地提取出Android应用程序的敏感API调用行为,从而识别出Android恶意软件更多的恶意行为特征,实现对未知恶意Android应用软件的检测。
第二,本发明通过生成Android应用程序的抽象流图,提取和抽象了应用程序的敏感API调用行为及程序的组件间交互ICC信息,可以更加准确地描述恶意程序的行为特征,对良性应用程序和恶意应用程序具有高度的区分性。
附图说明
图1为本发明的实现流程图;
图2为本发明中生成跟踪调用图的子流程图;
图3为本发明中生成抽象流图的子流程图;
图4为本发明中生成的抽象流图示意图。
具体实施方式
下面结合附图对本发明的实施例作进一步详细描述。
参照图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:
词频-逆文档频率用以评估一个词对于一个文件集或一个语料库中的重要程度,其计算如下:
计算Vi中特定关键词的词频:其中,h为该关键词在描述语句Vi中出现的次数,s为语句Vi中所包含的总词数;
计算Vi中特定关键词的逆文档频率:其中,B为包含特定关键词的语句总数;
根据词频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)对Android应用程序包APK文件进行反编译处理,将反编译后的结果作为修改后的Intellidroid工具的输入,修改前的IntelliDroid工具输出的文件中只包括一条调用路径的入口点和最终的敏感API调用,对Intellidroid工具进行修改,使其能输出以一个应用程序入口点为源的所有完整调用路径,作为调用跟踪图的一个子图;
3.2)通过ic3工具提取Android应用程序的组件间交互ICC信息,获取其中通过Intent进行组件间交互ICC的函数及与该函数进行交互的组件,将组件间交互ICC的函数作为ICC交互边的起点,将该组件在启动时执行的onCreate函数作为ICC交互边的终点,通过ICC交互边将不同子图中通过Intent进行组件通信的节点连接起来,生成整个Android应用程序的调用跟踪图。
步骤4,生成所有软件样本的抽象流图。
参照图3,本步骤的具体实现如下:
4.1)对上述调用跟踪图的节点进行分割,生成抽象流图的节点;
4.1a)借助Androguard库对Android应用程序反编译,得到该应用程序中每个函数的操作码,可以获取调用跟踪图节点对应的操作码opcode;
4.1b)在调用跟踪图的节点内部判断操作码opcode是否调用了用户自定义函数或发送Intent的应用程序接口API:
若是,则在调用处对该函数的opcode进行分割,将分割后得到的opcode序列作为抽象流图的节点;
若没有调用,则不进行分割;
4.2)根据关键API列表和调用跟踪图获得抽象流图的边集:
4.2a)对调用跟踪图进行深度优先遍历得到调用路径,通过关键API列表对调用路径进行过滤,以在调用路径中寻找属于关键API列表的函数,并将找到该函数的这条调用路径入口点中的第一个节点和该函数中的最后一个节点抽象为关键边的起点和终点,生成关键边;
4.2b)从调用跟踪图中提取Intent发送边、邻边、ICC边以及隐式邻边;
从调用跟踪图入口点的第一个节点起进行深度优先遍历,将入口点的第一个节点作为Intent发送边的起点,若在遍历过程发现以调用发送Intent的API为结尾的节点,则停止遍历,并将该节点作为Intent发送边的终点,生成Intent发送边;
判断抽象流图的节点是否从同一个调用跟踪图的节点分割得到:
若是,则使用有向边将这些顺序相邻的抽象流图节点连接起来,将这种边称为邻边;
若否,则不进行连接;
将Android应用程序包APK文件作为ic3的输入,获取ic3输出的结果,提取其中通过Intent进行组件间通信ICC的函数及与该函数进行交互的组件,将该函数中以调用发送Intent的API为结尾的节点作为抽象流图中ICC边的起点,将该组件启动时执行的OnCreate函数的第一个节点作为ICC边的终点,生成ICC边;
对上述生成的一条Intent发送边,将其起点作为隐式邻边的起点,若抽象流图中的一个节点同时满足以下三个条件:
与该Intent发送边的起点在同一组件内;
在该Intent发送边的起点之后被执行;
调用了接收Intent的应用程序接口API;
则将这种节点作为隐式邻边的终点,生成隐式邻边;
图4为一个示例程序的抽象流图,包含上述五种不同的边,该抽象流图中节点格式为“函数名_V_数字”,表示应用程序一个函数中的第几个节点;该抽象流图中包含的5种边为:其中边上标注‘a’的边为关键边,边上标注‘b’的边为Intent发送边,边上标注‘e’的边为邻边,边上标注‘c’的边为ICC边,边上标注‘d’的边为隐式邻边;
4.2c)获取上述这5种边对应的反向边,将这10种边作为抽象流图的边集,并删去所有节点中没有边连接的孤立节点;
4.3)对删去孤立节点后的所有节点和边添加标签构成抽象流图;
4.3a)从Android官网上获取所有操作码opcode的集合,其中共包含232个操作码,对这些操作码进行顺序编码,即将操作码集合的第一个操作码编码为1,将第二个操作码编码为2,依此类推,将所有opcode编码为数字;
4.3b)根据上述编码后的opcode集合对每个节点的opcode序列进行编码,将节点中所有opcode对应的编码值作为节点的标签,由于节点中opcode数并不一致,生成的节点标签长度也不一致,对长度大于D的节点标签进行截断处理,对长度小于D的节点标签进行补齐处理,由于0不表示任何信息,因而用0将节点标签补齐,使节点标签长度一致;
4.3c)通过对边的类型作one-hot编码生成边的标签,将上述10种边类型从1到10进行编号,边的标签为一个长度为10的向量,向量中只有边类型对应的位处为1,其余位都为0。
步骤5,根据所有软件样本的抽象流图,采用反向传播算法和梯度下降法对图神经网络GNN进行训练,得到训练好的GNN网络。
(5.1)将良性Android应用程序的抽象流图标注为良性,将恶意Android应用程序的抽象流图标注为恶意,得到带标签的抽象流图;
(5.2)设置图神经网络GNN网络的最大训练次数E=65,对GNN网络参数随机初始化,将带标签的抽象流图输入到GNN中;
(5.3)GNN的输出为样本软件的良性和恶意概率,取概率大的作为GNN对软件样本的预测结果,根据该预测结果和抽象流图对应的标签计算损失函数,由深到浅计算网络中所有参数的梯度值,并计算评价GNN网络性能的指标F1:
将GNN模型对样本软件的预测结果进行分类标记:
若GNN模型把原本的恶意软件预测为恶意,记为真正例TP;
若GNN模型把原本的良性软件预测为恶意,记为假正例FP;
若GNN模型把原本的恶意软件预测为良性,记为假负例FN;
根据TP,FP计算预测精确率:
根据TP,FN计算召回率:
根据精确率P和召回率R计算评价GNN网络性的指标:
(5.4)沿着网络中参数梯度的反方向,对网络中的参数进行迭代更新,使损失函数逐渐减小;
(5.5)循环执行(5.3)-(5.4),直至达到最大的训练次数,从E次训练中选择评价指标F1最优的网络模型,作为训练好的GNN网络模型。
步骤6,通过训练好的GNN网络对Android应用程序进行分类。
对未知安全性的Android应用程序,通过步骤3与步骤4,生成待检测应用程序的抽象流图,并将其输入到步骤5训练好的图神经网络GNN中,输出待分类应用程序的良性和恶意概率,取概率最大的结果为最终的判别类型。
以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明的内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
Claims (8)
1.一种基于抽象流图和图神经网络的安卓应用程序分类方法,其特征在于,包括如下:
(1)从样本库和应用市场下载恶意和良性的Android应用软件样本,其中良性样本和恶意样本所占比例为1:1,每种类型的样本数量均不少于A个,A为大于等于1的正整数;
(2)构建一个与Android应用程序恶意行为和漏洞有关的关键应用程序接口API列表;
(3)生成(1)中所有软件样本的调用跟踪图;
(3a)对Android应用程序包APK文件进行反编译处理,将反编译后的结果作为修改后的Intellidroid工具的输入,使其能输出以一个应用程序入口点为源的所有调用路径,作为调用跟踪图的一个子图;
(3b)通过ic3工具提取Android应用程序的组件间交互ICC信息,获取其中通过Intent进行组件间交互ICC的函数及与该函数进行交互的组件,据此将不同子图中通过Intent进行组件通信的节点连接起来,生成整个Android应用程序的调用跟踪图;
(4)生成所有软件样本的抽象流图;
(4a)对调用跟踪图的节点进行分割生成抽象流图的节点;
(4b)对调用跟踪图进行深度优先遍历得到调用路径,通过(2)中关键API列表对该调用路径进行过滤后得到关键边,从调用跟踪图中提取Intent发送边、邻边、ICC边、隐式邻边,并获取这5种边的反向边,将这10种边添加到抽象流图中,作为抽象流图的边集,并删去抽象流图中没有边连接的孤立节点;
(4c)对所有节点和边添加标签构成抽象流图;
(5)通过(3)-(4)生成(1)中软件样本的抽象流图,将其作为图神经网络GNN的输入,使用反向传播算法和梯度下降法对GNN进行训练,得到训练好的图神经网络GNN;
(6)对未知安全性的Android应用程序,采用与(3)-(4)的相同方法,生成待检测应用程序的抽象流图,并将其输入到训练好的图神经网络GNN中,输出待分类应用程序的良性和恶意概率,取概率较大的类别为最终的判别类型。
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所述的方法,其特征在于,(4a)中对调用跟踪图节点进行分割生成抽象流图节点,实现如下:
(4a1)借助Androguard库对应用程序包APK进行反编译,获得调用跟踪图节点对应的操作码opcode;
(4a2)在调用跟踪图的节点内部判断操作码opcode是否调用了用户自定义函数或发送Intent的应用程序接口API:
若是,则在调用处对该函数的opcode进行分割,将分割后得到的opcode序列作为抽象流图的节点;
若没有调用,则不进行分割。
5.根据权利要求1所述的方法,其特征在于,(4b)中通过关键API列表对调用路径过滤得到关键边,是在调用路径中寻找属于关键API列表的函数,若找到,则将这条调用路径入口点中的第一个节点和该函数中的最后一个节点抽象为关键边的起点和终点,并将该关键边添加到抽象流图的关键边集合中。
6.根据权利要求1所述的方法,其特征在于,(4b)中从调用跟踪图中提取Intent发送边、邻边、ICC边、隐式邻边,实现如下:
(4b1)从调用跟踪图入口点的第一个节点起进行深度优先遍历,将入口点的第一个节点作为Intent发送边的起点,若在遍历过程发现以调用发送Intent的API为结尾的节点,则停止遍历,并将该节点作为Intent发送边的终点,再将该Intent发送边添加到抽象流图的Intent发送边集合中;
(4b2)判断(4a)生成的抽象流图节点是否从同一个调用跟踪图的节点分割得到:
若是,则使用有向边将这些顺序相邻的抽象流图节点连接起来,并将该有向边添加到抽象流图的邻边集合中;
若否,则不进行连接;
(4b3)根据(3b)获取的通过Intent进行组件间通信ICC的函数及与该函数进行交互的组件,将该函数中以调用发送Intent的API为结尾的节点作为抽象流图中ICC边的起点,将该组件启动时执行的OnCreate函数的第一个节点作为ICC边的终点,并将该ICC边添加到抽象流图的ICC边集合中;
(4b4)对(4b1)中生成的任意一条Intent发送边,将其起点作为隐式邻边的起点,若抽象流图的中的一个节点同时满足以下三个条件:
与该Intent发送边的起点在同一组件内;
在该Intent发送边的起点之后被执行;
调用了接收Intent的应用程序接口API;
则将这种节点作为隐式邻边的终点,并将该隐式邻边添加到抽象流图的隐式邻边集合中。
7.根据权利要求1所述的方法,其特征在于,(4c)中为抽象流图所有节点和边添加标签,实现如下:
(4c1)从Android官网上获取所有操作码opcode的集合,将其作为操作码opcode的全局字典,并将opcode编码为数字;
(4c2)对照opcode字典对抽象流图每个节点的opcode序列进行编码,将节点中所有opcode的编码值作为节点的标签;
(4c3)对边的类型作one-hot编码得到边的标签。
8.根据权利要求1所述的方法,其特征在于,(5)中使用反向传播算法和梯度下降法对GNN进行训练,实现如下:
(5a)将良性Android应用程序的抽象流图标注为良性,将恶意Android应用程序的抽象流图标注为恶意,得到带标签的抽象流图;
(5b)设置GNN网络的最大训练次数E,对GNN网络参数随机初始化,将带标签的抽象流图输入到GNN中;
(5c)通过GNN网络的输出和抽象流图对应的标签计算损失函数,由深到浅计算网络中所有参数的梯度值,并计算精确率P和召回率R的调和平均数F1这一评价GNN网络性能的指标;
(5d)沿着网络中参数梯度的反方向,对网络中的参数进行迭代更新,使损失函数逐渐减小;
(5e)循环执行(5c)-(5d),直至达到最大的训练次数,从E次训练中选择评价指标F1最优的网络模型,作为训练好的GNN网络模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111566330.3A CN114491530B (zh) | 2021-12-20 | 2021-12-20 | 基于抽象流图和图神经网络的安卓应用程序分类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111566330.3A CN114491530B (zh) | 2021-12-20 | 2021-12-20 | 基于抽象流图和图神经网络的安卓应用程序分类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114491530A CN114491530A (zh) | 2022-05-13 |
CN114491530B true CN114491530B (zh) | 2024-05-17 |
Family
ID=81493161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111566330.3A Active CN114491530B (zh) | 2021-12-20 | 2021-12-20 | 基于抽象流图和图神经网络的安卓应用程序分类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114491530B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114818987B (zh) * | 2022-06-20 | 2022-11-08 | 中山大学深圳研究院 | 一种科技服务数据的处理方法、装置以及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684840A (zh) * | 2018-12-20 | 2019-04-26 | 西安电子科技大学 | 基于敏感调用路径的Android恶意软件检测方法 |
CN112883378A (zh) * | 2021-03-30 | 2021-06-01 | 北京理工大学 | 图嵌入与深度神经网络相融合的安卓恶意软件检测方法 |
CN113360906A (zh) * | 2021-06-04 | 2021-09-07 | 中南大学 | 可解释的基于图嵌入的Android恶意软件自动检测 |
CN113760764A (zh) * | 2021-09-09 | 2021-12-07 | Oppo广东移动通信有限公司 | 应用程序检测方法、装置、电子设备及存储介质 |
CN114491529A (zh) * | 2021-12-20 | 2022-05-13 | 西安电子科技大学 | 基于多模态神经网络的安卓恶意应用程序识别方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102415971B1 (ko) * | 2015-12-10 | 2022-07-05 | 한국전자통신연구원 | 악성 모바일 앱 감지 장치 및 방법 |
US20210312042A1 (en) * | 2020-04-06 | 2021-10-07 | Cybereason Inc. | Graph-Based Classification of Elements |
-
2021
- 2021-12-20 CN CN202111566330.3A patent/CN114491530B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684840A (zh) * | 2018-12-20 | 2019-04-26 | 西安电子科技大学 | 基于敏感调用路径的Android恶意软件检测方法 |
CN112883378A (zh) * | 2021-03-30 | 2021-06-01 | 北京理工大学 | 图嵌入与深度神经网络相融合的安卓恶意软件检测方法 |
CN113360906A (zh) * | 2021-06-04 | 2021-09-07 | 中南大学 | 可解释的基于图嵌入的Android恶意软件自动检测 |
CN113760764A (zh) * | 2021-09-09 | 2021-12-07 | Oppo广东移动通信有限公司 | 应用程序检测方法、装置、电子设备及存储介质 |
CN114491529A (zh) * | 2021-12-20 | 2022-05-13 | 西安电子科技大学 | 基于多模态神经网络的安卓恶意应用程序识别方法 |
Non-Patent Citations (5)
Title |
---|
BGNN4VD: Constructing Bidirectional Graph Neural-Network for Vulnerability Detection;Sicong Cao等;Information and Software Technology 136 (2021) 106576;20210320;全文 * |
DeepCatra: Learning flow‐ and graph‐based behaviours for Android malware detection;Yafei Wu等;IET Information Security;20220807;第119-130页 * |
一种基于Native层的Android恶意代码检测机制;孙炳林;庄毅;;计算机与现代化;20190515(第05期);第5-10+16页 * |
基于多粒度匹配的Android应用程序第三方库检测;伍亚飞;中国优秀硕士学位论文全文数据库 信息科技辑;20231015;I138-28 * |
基于属性数据流图的恶意代码家族分类;杨频;朱悦;张磊;;信息安全研究;20200305(第03期);第38-44页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114491530A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109753800B (zh) | 融合频繁项集与随机森林算法的Android恶意应用检测方法及*** | |
CN109684840B (zh) | 基于敏感调用路径的Android恶意软件检测方法 | |
CN107180192B (zh) | 基于多特征融合的安卓恶意应用程序检测方法和*** | |
CN114491529B (zh) | 基于多模态神经网络的安卓恶意应用程序识别方法 | |
US11580222B2 (en) | Automated malware analysis that automatically clusters sandbox reports of similar malware samples | |
CN109614795B (zh) | 一种事件感知的安卓恶意软件检测方法 | |
CN108694319B (zh) | 一种恶意代码家族判定方法及装置 | |
Fan et al. | Ctdroid: leveraging a corpus of technical blogs for android malware analysis | |
CN109255241A (zh) | 基于机器学习的Android权限提升漏洞检测方法及*** | |
CN114861194A (zh) | 一种基于bgru与cnn融合模型的多类型漏洞检测方法 | |
CN114491530B (zh) | 基于抽象流图和图神经网络的安卓应用程序分类方法 | |
CN113297580A (zh) | 基于代码语义分析的电力信息***安全防护方法及装置 | |
CN116956080A (zh) | 一种数据处理方法、装置以及存储介质 | |
Ban et al. | Fam: Featuring android malware for deep learning-based familial analysis | |
CN108171057B (zh) | 基于特征匹配的Android平台恶意软件检测方法 | |
CN113067792A (zh) | 一种xss攻击识别方法、装置、设备及介质 | |
CN105468972B (zh) | 一种移动终端文件检测方法 | |
CN105243327A (zh) | 一种文件安全处理方法 | |
Pei et al. | Combining multi-features with a neural joint model for Android malware detection | |
CN117056924A (zh) | 一种基于恶意行为序列特征建模的恶意软件包检测方法 | |
Haojie et al. | Vulmg: A static detection solution for source code vulnerabilities based on code property graph and graph attention network | |
CN114817925B (zh) | 基于多模态图特征的安卓恶意软件检测方法及*** | |
CN114143074B (zh) | webshell攻击识别装置及方法 | |
Fazeen et al. | Another free app: Does it have the right intentions? | |
CN114117419A (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 |