CN118036006A - 基于敏感api的恶意软件检测方法、系统、设备及介质 - Google Patents
基于敏感api的恶意软件检测方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN118036006A CN118036006A CN202410436840.6A CN202410436840A CN118036006A CN 118036006 A CN118036006 A CN 118036006A CN 202410436840 A CN202410436840 A CN 202410436840A CN 118036006 A CN118036006 A CN 118036006A
- Authority
- CN
- China
- Prior art keywords
- api
- sensitive
- node
- call graph
- graph
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 239000008186 active pharmaceutical agent Substances 0.000 claims abstract description 58
- 238000001514 detection method Methods 0.000 claims abstract description 32
- 238000013135 deep learning Methods 0.000 claims abstract description 11
- 239000013598 vector Substances 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 10
- 238000000605 extraction Methods 0.000 claims description 8
- 230000015654 memory Effects 0.000 claims description 8
- 238000003062 neural network model Methods 0.000 claims description 6
- 238000003860 storage Methods 0.000 claims description 5
- 230000004913 activation Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 2
- 230000006399 behavior Effects 0.000 description 18
- 239000010410 layer Substances 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 239000000306 component Substances 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 125000000524 functional group Chemical group 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于敏感API的恶意软件检测方法、系统、设备及介质,其属于软件检测技术领域,包括:对待检测的APK文件进行反编译,并从中提取API调用图、操作码以及包名;对API调用图中的每个节点进行分类,获得内部调用节点和外部调用节点;其中,对于内部调用节点采用操作码进行特征表示,外部调用节点采用API所在的包名进行特征表示;基于预设敏感API数据集,获取满足预设要求的若干敏感API,并基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,获得增强后的API调用图;将所述增强后的API调用图输入预先训练的基于深度学习的安卓恶意软件检测模型中,获得检测结果。
Description
技术领域
本发明属于软件检测技术领域,尤其涉及一种基于敏感API的恶意软件检测方法、系统、设备及介质。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
在移动应用安全领域,尤其是在Android应用安全分析中,对应用程序包(APK)的深度静态分析是一项关键任务。传统方法通常采用简单的反编译手段以获取程序内部结构和API调用关系,但此类方法往往忽视了调用图中的节点的细化特征和重要性问题,以及如何有效利用这些信息来识别潜在的安全威胁;同时,一些研究者倾向于精简调用图以减少分析复杂度,然而这种做法可能导致丢失大量有助于区分正常行为与恶意行为的详细信息,尤其在涉及敏感API调用的情况下,仅依赖于粗略的调用关系网络可能不足以精确识别出恶意活动或潜在的安全漏洞。
发明内容
为克服上述现有技术的不足,本发明提供了一种基于敏感API的恶意软件检测方法、系统、设备及介质,所述方案构建并充分利用了应用程序的API调用图这一关键特征表示,通过深入挖掘各组件间的调用关系和交互模式,来捕捉潜在的恶意行为模式;同时,进一步丰富了特征提取维度,不仅包括API调用图结构信息,还整合了操作码序列特征以及敏感API调用频率等辅助特征,通过这些辅助特征来补充反映代码执行的具体逻辑细节,尤其是涉及隐私数据访问、设备控制等高风险行为的部分,通过将这些多元化的信息融合生成增强后的调用图,可以更准确地描绘出应用软件的安全属性,最后,以所得的增强后的调用图作为图卷积网络模型的输入,从而实现了对安卓应用的高效且精确的恶意与否判断,所述方案极大地提升了对复杂、隐蔽性高的恶意行为识别能力,并且充分利用了多种层次的软件行为特征,提高了整体检测系统的性能与鲁棒性。
为实现上述目的,本发明的第一个方面提供一种基于敏感API的恶意软件检测方法,包括:
对待检测的APK文件进行反编译,并从中提取API调用图、操作码以及包名;
对API调用图中的每个节点进行分类,获得内部调用节点和外部调用节点;其中,对于内部调用节点采用操作码进行特征表示,外部调用节点采用API所在的包名进行特征表示;
基于预设敏感API数据集,获取满足预设要求的若干敏感API,并基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,获得增强后的API调用图;
将所述增强后的API调用图输入预先训练的基于深度学习的安卓恶意软件检测模型中,获得检测结果。
进一步的,所述基于预设敏感API数据集,获取满足预设要求的若干敏感API,具体为:对于预设敏感API数据集中的每个敏感API,计算其TF-IDF值;基于TF-IDF值进行降序排列,从中选取前预设数量的敏感API。
进一步的,所述TF-IDF值的计算,具体为:对于预设敏感API数据集中的每个敏感API,在预设APK样本数据集中计算每个敏感API在其对应APK样本中的词频,以及每个敏感API在整个APK样本数据集中的逆文档频率;将所述词频和逆文档频率相乘,获得每个敏感API的TF-IDF值。
进一步的,所述基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,具体为:将API调用图中的每个节点与获得的预设数量的敏感API进行匹配,若存在匹配的敏感API,则对当前节点进行标记,其中,所述标记具体为:为每个节点添加一个以敏感API数量为长度的向量,若当前节点与某一敏感API匹配,则敏感API在向量中的对应位置标记为1,否则标记为0。
进一步的,所述对APK文件进行反编译,具体采用Androguard工具对APK文件进行反编译生成Classes.dex文件,基于生成的Classes.dex提取API调用图。
进一步的,所述基于深度学习的安卓恶意软件检测模型采用图卷积神经网络模型。
进一步的,所述图卷积神经网络模型采用GraphConv卷积层,以及,对于GraphConv卷积层的输出,采用全局节点平均策略,将所有节点的特征向量进行加权处理,并将得到的特征输入LSTM层获得节点的特征表示,基于节点的特征表示,结合预设的激活函数获得检测结果。
本发明的第二个方面提供一种基于敏感API的恶意软件检测系统,包括:
提取单元,其用于对待检测的APK文件进行反编译,并从中提取API调用图、操作码以及包名;
分类单元,其用于对API调用图中的每个节点进行分类,获得内部调用节点和外部调用节点;其中,对于内部调用节点采用操作码进行特征表示,外部调用节点采用API所在的包名进行特征表示;
特征增强单元,其用于基于预设敏感API数据集,获取满足预设要求的若干敏感API,并基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,获得增强后的API调用图;
检测单元,其用于将所述增强后的API调用图输入预先训练的基于深度学习的安卓恶意软件检测模型中,获得检测结果。
本发明的第三个方面提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行一种基于敏感API的恶意软件检测方法。
本发明的第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行一种基于敏感API的恶意软件检测方法。
以上一个或多个技术方案存在以下有益效果:
(1)本发明所述方案提供了一种基于敏感API的恶意软件检测方法、系统、设备及介质,所述方案构建并充分利用了应用程序的API调用图这一关键特征表示,通过深入挖掘各组件间的调用关系和交互模式,来捕捉潜在的恶意行为模式;同时,进一步丰富了特征提取维度,不仅包括API调用图结构信息,还整合了操作码序列特征以及敏感API调用频率等辅助特征,通过这些辅助特征来补充反映代码执行的具体逻辑细节,尤其是涉及隐私数据访问、设备控制等高风险行为的部分,通过将这些多元化的信息融合生成增强后的调用图,可以更准确地描绘出应用软件的安全属性,最后,以所得的增强后的调用图作为图卷积网络模型的输入,从而实现了对安卓应用的高效且精确的恶意与否判断,所述方案极大地提升了对复杂、隐蔽性高的恶意行为识别能力,并且充分利用了多种层次的软件行为特征,提高了整体检测系统的性能与鲁棒性。
(2)本发明采用了操作码序列和包名作为节点特征,取代传统的简单标记方法,这有助于揭示API调用的具体实现细节及其功能归属,显著提升了节点分类的有效性和准确性。
(3)本发明所述方案通过引入了TF-IDF算法,在实际数据集中对每一个API调用的显著性和潜在风险进行量化排序,从而筛选出具有高代表性及安全威胁的敏感API子集,并将其引入API调用图中,这种方法根据实际应用场景的数据分布特性动态确定API权重和优先级,不仅减少了分析负担,还提高了检测精确度,为深入揭露Android应用中的恶意行为及安全隐患提供了更为精准的关键线索。
(4)本发明所述方案以所得的增强型特征图作为GCN模型的输入,获得检测结果,从而实现了对安卓应用的高效且精确的恶意与否判断,所述方案极大地提升了对复杂、隐蔽性高的恶意行为识别能力,并且充分利用了多种层次的软件行为特征,提高了整体检测系统的性能与鲁棒性。
(5)本发明所述方案在经典的GCN模型的基础上,采用GraphConv卷积层结构,与先前研究中采用的多层次设计、融合了诸如谱归一化图卷积(SAGEConv)、切比雪夫图卷积(ChebConv)等高级变体及包含池化层构建的复杂GCN模型相异,本发明所述方案着重简化模型架构以增强其可解释性和运行效率,同时,在此基础之上,通过引入长短期记忆网络(LSTM)层,进一步整合节点序列中的时间或顺序特性,并考虑节点特征随时间动态变化的潜在影响,有效保证了特征提取的准确性,进而提高恶意软件的检测精度。
(6)本发明选择GraphConv作为图卷积神经网络的核心组件,其直接作用于邻接矩阵,具备直观简洁的算法实现特点,并能在学习过程中更好地保留并传递节点与其邻居节点间的直接交互信息,GraphConv通过优化权重分配与信息传播机制,能够更准确地捕捉到关键的、具有安全意义的API调用路径,从而增强了模型在识别Android APK中敏感API调用模式及其潜在安全风险的能力,有力地推进了移动应用安全防护技术的发展。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为本发明实施例安卓恶意代码检测方法的总体流程图;
图2为本发明实施例中APK文件反汇编后进行信息增强的调用图;
图3为本发明实施例中改进的GCN模型网络结构图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例提供了一种基于敏感API的恶意软件检测方法。
一种基于敏感API的恶意软件检测方法,包括:
对待检测的APK文件进行反编译,并从中提取API调用图、操作码以及包名;
对API调用图中的每个节点进行分类,获得内部调用节点和外部调用节点;其中,对于内部调用节点采用操作码进行特征表示,外部调用节点采用API所在的包名进行特征表示;
基于预设敏感API数据集,获取满足预设要求的若干敏感API,并基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,获得增强后的API调用图;
将所述增强后的API调用图输入预先训练的基于深度学习的安卓恶意软件检测模型中,获得检测结果。
在具体实施中,所述基于预设敏感API数据集,获取满足预设要求的若干敏感API,具体为:对于预设敏感API数据集中的每个敏感API,计算其TF-IDF值;基于TF-IDF值进行降序排列,从中选取前预设数量的敏感API。
在具体实施中,所述TF-IDF值的计算,具体为:对于预设敏感API数据集中的每个敏感API,在预设APK样本数据集中计算每个敏感API在其对应APK样本中的词频,以及每个敏感API在整个APK样本数据集中的逆文档频率;将所述词频和逆文档频率相乘,获得每个敏感API的TF-IDF值。
在具体实施中,所述基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,具体为:将API调用图中的每个节点与获得的预设数量的敏感API进行匹配,若存在匹配的敏感API,则对当前节点进行标记,其中,所述标记具体为:为每个节点添加一个以敏感API数量为长度的向量,若当前节点与某一敏感API匹配,则敏感API在向量中的对应位置标记为1,否则标记为0。
在具体实施中,所述对APK文件进行反编译,具体采用Androguard工具对APK文件进行反编译生成Classes.dex文件,基于生成的Classes.dex提取API调用图。
在具体实施中,所述基于深度学习的安卓恶意软件检测模型采用图卷积神经网络模型。
在具体实施中,所述图卷积神经网络模型采用GraphConv卷积层,以及,对于GraphConv卷积层的输出,采用全局节点平均策略,将所有节点的特征向量进行加权处理,并将得到的特征输入LSTM层获得节点的特征表示,基于节点的特征表示,结合预设的激活函数获得检测结果。
为了便于理解,以下结合附图对本实施例所述方案进行详细说明:
为了解决现有技术存在的问题,本实施例提供了一种基于敏感API的恶意软件检测方法,本实施例所述方案主要采用如下技术构思:
首先,运用Androguard工具集中的AnalyzeAPK组件对目标APK文件进行深度反编译处理。通过调用AnalyzeAPK组件,能够自动化地解压、解析和分析APK包的内容,特别是从Dalvik可执行文件中提取出应用程序各组件间相互调用的API关系,并以此为基础构建一个结构化的API调用图,该API调用图详尽展示了应用程序内部不同类、方法之间的调用链路。
接下来,在获得API调用图后,分别针对图中的外部调用节点(即调用第三方库或者系统API的节点)提取其所属的包名信息,同时抽取内部调用节点所对应的方法或函数的操作码序列;将第三方公共敏感API列表(https://github.com/malscan-android/MalScan)应用TF-IDF算法在当前数据集(在CICMalDroid数据集和Drebin数据集随机选择的各1000个数据)上计算权重,基于所述权重,筛选出前200个最具代表性和潜在安全风险的敏感API,用来确定在API调用图中所有调用API中哪些是具有较高重要性的敏感API。
基于获得的200个敏感API,对API调用图中的每个节点识别是否为较高重要性敏感API,如果是,则对其进行标记(每个节点添加一个向量,如果是,则敏感API在向量中的对应位置标记为1,否则是0),得到节点的敏感属性,从而生成一张包含了更多上下文信息和潜在风险提示的增强信息调用图。
最后,将这张增强信息调用图输入到经过改进优化的Graph ConvolutionalNetwork (GCN)模型中,进行深入的学习与分类,以识别潜在的安全威胁或行为模式。
具体的,如图1所示,一种基于敏感API的恶意软件检测方法,包括:
步骤1:使用Androguard中的AnalyzeAPK模块对APK文件进行反编译,并从中提取API调用图;
其中,所述步骤1具体包括如下处理过程,使用Androguard库中的AnalyzeAPK组件,可以对上传的APK文件进行自动化深度反编译处理。在这一过程中,该组件能解析出APK内部的Dalvik字节码,并构建出详尽的API调用图,该调用图展示了应用程序内部各个组件间的调用关系。
具体的,构建调用图的整体流程为:
首先获取待分析的APK文件,将其传入到Androgurd中用来分析APK文件的AnalyzeAPK组件中,得到一个包含APK详细分析结果的对象,从该对象中提取应用程序的调用图(Call Graph, CG);我们将调用图定义为G=(V,E),其中,V代表方法节点,E代表节点之间的边,即函数调用关系。
步骤2:对提取到的API调用图进行深入分析,根据节点的内在属性和行为特征,将图中的节点精确细分为内部调用节点和外部调用节点两个类别,以及对内部调用节点采用操作码序列进行特征表示,对外部调用节点采用包名信息进行特征表示;
具体来说,步骤1使用Androguard工具反编译得到操作码和包名用于后续操作。对于代表内部实现机制的内部调用节点,提取其对应的方法体内的操作码序列作为特征,这些操作码序列详实地展现了API的实际执行逻辑和功能实现细节,有助于揭示潜在的安全风险点。相反,针对指向外部资源或系统库调用的外部调用节点,则选用其所关联的包名信息作为特征标识,借此反映该调用在整体功能组织结构中的定位以及其所处的应用上下文环境,从而辅助判断调用的安全性和合理性。通过这种基于节点特性的分层特征提取方式,我们得以更全面地理解和评估移动应用中各API调用的安全状况。
本实施例中,通过上述方式实现节点特征的精细化处理与分类;
其中,所述步骤2具体包括如下处理过程:
针对获取到的API调用图,对其包含的所有节点进行细致分类,将其划分为两大类别:外部调用节点与内部调用节点。
本实施例的上述分类策略,有助于更精确地模拟应用程序的内外部交互和内部逻辑结构。
传统方法往往不对节点进行分类,而是统一提取所有节点的操作码序列和API方法信息,这会导致一些问题:一方面,不区分外部库或系统API与应用程序内部方法,导致分析时数据量巨大,加重了计算资源消耗和算法复杂性;另一方面,全盘记录所有细节可能导致安全敏感信息淹没在海量数据中,不利于精准定位风险和快速评估威胁程度。
对于外部调用节点,本实施例所述方案不再直接使用完整的API方法名称,而是以被调用API所在的包名为代表,该包名在公用规范中总结为226个,此种方式能有效地反映出节点所关联的功能模块或服务领域,帮助快速识别潜在的高风险系统权限或不安全的第三方接口。例如:对于一个调用java.lang.String.length的外部API节点,本实施例所述方案将其映射到API trie树中的java.lang包名索引位置,从而转化为特定包名的特征向量,这种表示方法有助于提升分析模型的实用性与泛化能力。
对于内部调用节点,它们体现了应用程序内部方法和函数间的相互调用关系,为了深入理解内部执行流程,本实施例所述方案在处理内部调用节点时采用操作码序列作为主要特征,其中,操作码是Dalvik虚拟机指令集的基本元素,我们将操作码进一步聚类成若干个功能组(在本实施例中使用Vinayaka KV中的总结,将操作码分类成21个种类),这样既可以降低数据维度,也能捕捉更具代表性的执行模式,为分析提供更为精准的基础。
具体的,对于内部调用节点的处理,当遍历调用图节点时,如果节点不是外部调用节点,则通过分析节点所代表的方法内部指令,并将其归类到不同的操作码组别中,随后将这些操作码组别的ID转化为二进制向量并存入特征向量的"user"部分。具体的,对于调用图的每个节点都通过相同长度的特征向量进行表述,每个特征向量中包含三个部分,即"api"、"user"和"sensitive"。每个向量长度都为447(21位操作码标识+226位包名标识+200位敏感API标识),初始值为447个0向量,当节点判断为外部或者内部时,相应的特征向量部分置为1。
这样,我们就完成了对应用程序内部逻辑结构的编码表示,有助于更好地理解和识别程序的行为模式。
步骤3:运用TF-IDF(term frequency–inverse document frequency)算法对第三方公共敏感API列表进行加权排序,结合实际应用数据集(本实施例使用的在CICMalDroid数据集和Drebin数据集随机选择的各1000个数据),筛选出排序靠前的预设数量(本实施例采用前200个)的最具代表性和潜在安全风险的敏感API,通过将这些重要API的信息整合到分类好的调用图中,生成一张包含丰富语义信息和针对性强化的增强型调用图,具体来说,基于获得的200个敏感API,遍历每一个调用图节点,与这些重要API进行匹配,若存在匹配的敏感API,则对应节点特征向量的"sensitive"部分的相应位置设置为1,若不存在则置为0。
其中,所述步骤3具体包括如下处理过程:
基于预定义的敏感API列表,运用TF-IDF(Term Frequency-Inverse DocumentFrequency)算法计算出预设数据集中(在CICMalDroid数据集和Drebin数据集随机选择的各1000个APK样本数据)所有API调用图(每个APK样本数据对应一个API调用图)中权重得分降序排列的前预设数量(本实施例采用前200个)的最具代表性的敏感API。
如图2后半部分所示,具体的,首先需要建立一个术语-文档矩阵。在这个矩阵中,每一行代表一个APK样本,该行对应的每一列代表一个敏感API。然后,使用TF-IDF算法来计算每个API在整个样本集中的重要性,以便确定最具代表性的敏感API。
TF-IDF算法的计算分为两个步骤:
计算词频(TF):对于每个APK样本中的每个敏感API,计算其在该样本中的出现频率。TF的计算方式是,将该API在该样本中出现的次数除以该样本中的总词数。这样可以确保衡量的是该API在该样本中的相对重要性。
计算逆文档频率(IDF):对于每个敏感API,计算其在整个样本集中的逆文档频率。IDF的计算方式是,将总文档数除以包含该API的文档数,然后取对数。这个过程可以降低常见API的权重,提高在少数样本中出现但在整个样本集中很重要的API的权重。
最后,将TF和IDF相乘,得到TF-IDF值。通过计算所有敏感API的TF-IDF值,并按照降序排列,选择前200个最高的API作为最具代表性的敏感API。
通过这种方法,我们能够在众多敏感API中定位到最重要的敏感API,这有助于聚焦于关键隐私问题的解决,提高隐私保护的效果和精度。
步骤4:将此经过充分信息增强的调用图输入至改进的基于Graph ConvolutionalNetwork (GCN)的安全检测模型中,所述安全检测模型通过迭代学习和传播节点间的高阶关联信息,进而准确分析并识别出可能存在的恶意行为或安全漏洞,最终得出具有高度精确性的检测结果。
图卷积网络(Graph Convolutional Network, GCN)是一种能够有效学习节点特征并传播上下文信息的模型,其通过迭代的局部信息聚合过程,在保持原始图结构的同时提取出节点间的高阶关联。相较于某些研究中使用的Chebyshev图卷积(ChebConv),尽管它基于Chebyshev多项式近似快速计算拉普拉斯矩阵特征分解,从而降低了计算复杂度,但其缺点在于对大规模图数据和深度模型训练时可能由于多项式级数的计算限制而效率不高,并且在实践中可能难以捕捉到长距离依赖关系,对于复杂网络结构的安全分析可能存在一定的局限性。
其中,所述步骤4具体包括如下处理过程:
基于步骤2分类好的调用图节点,以及步骤3选择的重要敏感API,生成信息增强后的调用图,直接输入到改进的基于GCN的安全检测模型中。
其中,将节点分类为外部调用节点和内部调用节点有助于为调用图提供更清晰的结构化信息,通过使用操作码代替内部调用节点,可以减少调用图中的信息冗余,使得图的结构更加紧凑;通过识别出在所有APK样本中最重要的敏感API,可以优化隐私分析的效果,使其更加准确和全面。
所述改进的基于GCN的安全检测模型通过消息传递在图结构上进行节点嵌入的学习,有效整合了调用图的拓扑联系以及节点自身的特征信息,进而生成能够精准捕捉样本行为模式的图表示,以支持对各类应用程序行为的有效分类识别。
本实施例所述方案充分考虑到复杂的图卷积网络(GCN)模型可能导致计算负担加重、参数冗余增加以及训练复杂度提升等问题,故采用GraphConv卷积层结构,与先前研究中采用的多层次设计、融合了诸如谱归一化图卷积(SAGEConv)、切比雪夫图卷积(ChebConv)等高级变体及包含池化层构建的复杂GCN模型相异,本方案着重简化模型架构以增强其可解释性和运行效率,同时,在此基础之上,为了进一步整合节点序列中的时间或顺序特性,并考虑节点特征随时间动态变化的潜在影响,还引入长短期记忆网络(LSTM)层。图3展示了改进的GCN模型网络结构。
本实施例所述的基于GCN的安全检测模型,具体执行如下处理过程:
GraphConv处理:利用单层GraphConv卷积层从静态的Android应用程序敏感调用图中提取节点的高级特征表示。
节点平均策略:不同于传统的池化操作,该模型采用了全局节点平均策略,将所有节点的特征向量加权或简单相加后求平均值,这样有助于保留整个图的关键信息,避免由于池化过程可能导致的信息丢失,并保持原始图结构的整体性。
LSTM层引入:将上述经过平均化的节点特征输入至LSTM网络中,通过其门控机制捕捉节点序列间的时序模式和长期依赖关系,通过LSTM层能够根据节点在恶意软件行为序列中的位置及与其他节点交互的时间序列上下文,生成更具有动态性和时序意义的节点表示。
Sigmoid激活函数应用:最后,将LSTM层输出的节点表示通过Sigmoid函数进行非线性变换,得到每个APK属于恶意软件或良性软件类别的概率得分,从而实现对Android恶意软件检测任务的节点级分类。
综上所述,这种方法结合了图卷积网络和循环神经网络的优势,不仅考虑了图结构的固有属性,还充分挖掘了节点特征随时间演变的规律,有效提升了模型在Android恶意软件检测任务上的性能表现。
这样优化的模型更专注于捕获应用程序行为的核心特征表达,减少了不必要的参数调整,并降低了训练过程中的过拟合风险,提高了模型在真实应用环境下的泛化能力和实用性。
本实例使用公开的实验数据集良性应用程序来自加拿大网络安全研究所网站上的开放访问数据集——CICMalDroid数据集和Drebin数据集来对实验进行验证。从5000个良性与5000个恶意APK中随机选择1000个进行实验。
本实施例中将提出的方案与参考的Vinayaka K V的方法—仅使用外部api和操作码的特征以及GCN模型进行对比,实验结果如表1所示。
表1本实施例所述方法与现有方法的对比结果
根据表1所呈现的实验对比结果,可以看出我们在Android恶意软件检测领域采用了两种不同的特征组合和机器学习模型进行实验。首行展示的是参照方法,即仅使用API调用与操作码特征,并配合GCN(Graph Convolutional Network)模型进行检测。该方法展现了较高的检测性能,精确率、召回率、准确率和F1分数分别为0.975、0.978、0.977和0.977,显示出较强的恶意软件识别能力。
然而,本实施例所述方案进一步创新和优化了特征集,将API调用、操作码特征与经过tf-idf处理的敏感API特征相结合,并在原有GCN模型的基础上叠加了LSTM层,形成了更为强大的深度学习模型。实验结果显示,这种改进方法在各项评估指标上均有显著提升,精确率上升至0.987,召回率提高到0.993,准确率增至0.991,F1分数也达到了0.990。
综上所述,相较于仅使用API和操作码特征的传统方法,本实施例所述方案成功提升了Android恶意软件检测的精确度和全面性,证明了这种方法在恶意软件检测领域的可行性。
实施例二
本实施例的目的是提供一种基于敏感API的恶意软件检测系统。
一种基于敏感API的恶意软件检测系统,包括:
提取单元,其用于对待检测的APK文件进行反编译,并从中提取API调用图、操作码以及包名;
分类单元,其用于对API调用图中的每个节点进行分类,获得内部调用节点和外部调用节点;其中,对于内部调用节点采用操作码进行特征表示,外部调用节点采用API所在的包名进行特征表示;
特征增强单元,其用于基于预设敏感API数据集,获取满足预设要求的若干敏感API,并基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,获得增强后的API调用图;
检测单元,其用于将所述增强后的API调用图输入预先训练的基于深度学习的安卓恶意软件检测模型中,获得检测结果。
此处需要说明的是,本实施例所述系统与实施例一中所述的方法相对应,其技术细节在实施例中已经进行了详细说明,故此处不再赘述。
在更多的实施方式中:
提供了一种计算装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时执行上述方法的步骤。
本领域技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算机装置来实现,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本发明不限制于任何特定的硬件和软件的结合。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种基于敏感API的恶意软件检测方法,其特征在于,包括:
对待检测的APK文件进行反编译,并从中提取API调用图、操作码以及包名;
对API调用图中的每个节点进行分类,获得内部调用节点和外部调用节点;其中,对于内部调用节点采用操作码进行特征表示,外部调用节点采用API所在的包名进行特征表示;
基于预设敏感API数据集,获取满足预设要求的若干敏感API,并基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,获得增强后的API调用图;
将所述增强后的API调用图输入预先训练的基于深度学习的安卓恶意软件检测模型中,获得检测结果。
2.如权利要求1所述的一种基于敏感API的恶意软件检测方法,其特征在于,所述基于预设敏感API数据集,获取满足预设要求的若干敏感API,具体为:对于预设敏感API数据集中的每个敏感API,计算其TF-IDF值;基于TF-IDF值进行降序排列,从中选取前预设数量的敏感API。
3.如权利要求2所述的一种基于敏感API的恶意软件检测方法,其特征在于,所述TF-IDF值的计算,具体为:对于预设敏感API数据集中的每个敏感API,在预设APK样本数据集中计算每个敏感API在其对应APK样本中的词频,以及每个敏感API在整个APK样本数据集中的逆文档频率;将所述词频和逆文档频率相乘,获得每个敏感API的TF-IDF值。
4.如权利要求1所述的一种基于敏感API的恶意软件检测方法,其特征在于,所述基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,具体为:将API调用图中的每个节点与获得的预设数量的敏感API进行匹配,若存在匹配的敏感API,则对当前节点进行标记,其中,所述标记具体为:为每个节点添加一个以敏感API数量为长度的向量,若当前节点与某一敏感API匹配,则敏感API在向量中的对应位置标记为1,否则标记为0。
5.如权利要求1所述的一种基于敏感API的恶意软件检测方法,其特征在于,所述对APK文件进行反编译,具体采用Androguard工具对APK文件进行反编译生成Classes.dex文件,基于生成的Classes.dex提取API调用图。
6.如权利要求1所述的一种基于敏感API的恶意软件检测方法,其特征在于,所述基于深度学习的安卓恶意软件检测模型采用图卷积神经网络模型。
7.如权利要求6所述的一种基于敏感API的恶意软件检测方法,其特征在于,所述图卷积神经网络模型采用GraphConv卷积层,以及,对于GraphConv卷积层的输出,采用全局节点平均策略,将所有节点的特征向量进行加权处理,并将得到的特征输入LSTM层获得节点的特征表示,基于节点的特征表示,结合预设的激活函数获得检测结果。
8.一种基于敏感API的恶意软件检测系统,其特征在于,包括:
提取单元,其用于对待检测的APK文件进行反编译,并从中提取API调用图、操作码以及包名;
分类单元,其用于对API调用图中的每个节点进行分类,获得内部调用节点和外部调用节点;其中,对于内部调用节点采用操作码进行特征表示,外部调用节点采用API所在的包名进行特征表示;
特征增强单元,其用于基于预设敏感API数据集,获取满足预设要求的若干敏感API,并基于所述若干敏感API对分类后的API调用图中的节点进行重要性标记,获得增强后的API调用图;
检测单元,其用于将所述增强后的API调用图输入预先训练的基于深度学习的安卓恶意软件检测模型中,获得检测结果。
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1-7任一项所述的一种基于敏感API的恶意软件检测方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-7任一项所述的一种基于敏感API的恶意软件检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410436840.6A CN118036006B (zh) | 2024-04-12 | 2024-04-12 | 基于敏感api的恶意软件检测方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410436840.6A CN118036006B (zh) | 2024-04-12 | 2024-04-12 | 基于敏感api的恶意软件检测方法、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118036006A true CN118036006A (zh) | 2024-05-14 |
CN118036006B CN118036006B (zh) | 2024-07-05 |
Family
ID=90986210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410436840.6A Active CN118036006B (zh) | 2024-04-12 | 2024-04-12 | 基于敏感api的恶意软件检测方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118036006B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160306971A1 (en) * | 2015-04-15 | 2016-10-20 | Los Alamos National Security, Llc | Automated identification and reverse engineering of malware |
CN111090859A (zh) * | 2019-11-25 | 2020-05-01 | 北京理工大学 | 一种基于图编辑距离的恶意软件检测方法 |
CN113626810A (zh) * | 2021-07-11 | 2021-11-09 | 南京理工大学 | 基于敏感子图的安卓恶意软件检测方法及系统 |
CN114595451A (zh) * | 2022-02-22 | 2022-06-07 | 北京亚鸿世纪科技发展有限公司 | 基于图卷积的安卓恶意应用分类方法 |
CN114676431A (zh) * | 2022-03-23 | 2022-06-28 | 北京理工大学 | 一种基于api增强顺序的安卓恶意代码检测方法 |
CN117034273A (zh) * | 2023-08-28 | 2023-11-10 | 山东省计算中心(国家超级计算济南中心) | 基于图卷积网络的安卓恶意软件检测方法及系统 |
CN117668837A (zh) * | 2023-10-20 | 2024-03-08 | 成都西电网络安全研究院 | 一种结合动静态分析的Android恶意软件检测方法 |
CN117708815A (zh) * | 2023-12-08 | 2024-03-15 | 重庆邮电大学 | 一种基于精简行为图的安卓恶意软件检测方法 |
-
2024
- 2024-04-12 CN CN202410436840.6A patent/CN118036006B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160306971A1 (en) * | 2015-04-15 | 2016-10-20 | Los Alamos National Security, Llc | Automated identification and reverse engineering of malware |
CN111090859A (zh) * | 2019-11-25 | 2020-05-01 | 北京理工大学 | 一种基于图编辑距离的恶意软件检测方法 |
CN113626810A (zh) * | 2021-07-11 | 2021-11-09 | 南京理工大学 | 基于敏感子图的安卓恶意软件检测方法及系统 |
CN114595451A (zh) * | 2022-02-22 | 2022-06-07 | 北京亚鸿世纪科技发展有限公司 | 基于图卷积的安卓恶意应用分类方法 |
CN114676431A (zh) * | 2022-03-23 | 2022-06-28 | 北京理工大学 | 一种基于api增强顺序的安卓恶意代码检测方法 |
CN117034273A (zh) * | 2023-08-28 | 2023-11-10 | 山东省计算中心(国家超级计算济南中心) | 基于图卷积网络的安卓恶意软件检测方法及系统 |
CN117668837A (zh) * | 2023-10-20 | 2024-03-08 | 成都西电网络安全研究院 | 一种结合动静态分析的Android恶意软件检测方法 |
CN117708815A (zh) * | 2023-12-08 | 2024-03-15 | 重庆邮电大学 | 一种基于精简行为图的安卓恶意软件检测方法 |
Non-Patent Citations (4)
Title |
---|
YI LIU 等: "Morest: Model-based RESTful API Testing with Execution Feedback", 《2022 IEEE/ACM 44TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE)》, 25 May 2022 (2022-05-25), pages 1406 - 1417, XP059151847, DOI: 10.1145/3510003.3510133 * |
ZIQIANG WANG 等: "Using Maximum Margin Criterion and Minimax Probability Machine for Document Classification", 《2010 THIRD INTERNATIONAL CONFERENCE ON KNOWLEDGE DISCOVERY AND DATA MINING》, 10 January 2010 (2010-01-10), pages 399 - 402, XP031649154 * |
李向军;孔珂;魏智翔;王科选;肖聚鑫;: "面向Android恶意应用静态检测的特征频数差异增强算法", 计算机工程与科学, no. 06, 15 June 2020 (2020-06-15), pages 993 - 1002 * |
杨子祺 等: "一种云取证中间件系统的设计", 《山东科学》, vol. 31, no. 5, 31 October 2018 (2018-10-31), pages 115 - 120 * |
Also Published As
Publication number | Publication date |
---|---|
CN118036006B (zh) | 2024-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pei et al. | AMalNet: A deep learning framework based on graph convolutional networks for malware detection | |
Mahdavifar et al. | Application of deep learning to cybersecurity: A survey | |
Xu et al. | Hadm: Hybrid analysis for detection of malware | |
Feng et al. | A two-layer deep learning method for android malware detection using network traffic | |
Jeon et al. | Hybrid malware detection based on Bi-LSTM and SPP-Net for smart IoT | |
CN109905385B (zh) | 一种webshell检测方法、装置及系统 | |
Gao et al. | Android malware detection via graphlet sampling | |
Su et al. | DroidDeep: using Deep Belief Network to characterize and detect android malware | |
Naway et al. | Using deep neural network for Android malware detection | |
Ali et al. | Deep learning methods for malware and intrusion detection: A systematic literature review | |
Bayazit et al. | A deep learning based android malware detection system with static analysis | |
Kakisim et al. | Sequential opcode embedding-based malware detection method | |
Arslan et al. | AMD‐CNN: Android malware detection via feature graph and convolutional neural networks | |
Liu et al. | MOBIPCR: Efficient, accurate, and strict ML-based mobile malware detection | |
CN116361788A (zh) | 一种基于机器学习的二进制软件漏洞预测方法 | |
Sharma et al. | Windows and IoT malware visualization and classification with deep CNN and Xception CNN using Markov images | |
Wang et al. | A survey of Android malware detection based on deep learning | |
Dahl et al. | Stack-based buffer overflow detection using recurrent neural networks | |
Wu et al. | IoT malware classification based on reinterpreted function-call graphs | |
Banik et al. | Android malware detection by correlated real permission couples using FP growth algorithm and neural networks | |
Pei et al. | Combining multi-features with a neural joint model for Android malware detection | |
Zhao et al. | IoT intrusion detection model based on gated recurrent unit and residual network | |
Yadav et al. | Deep learning in malware identification and classification | |
CN118036006B (zh) | 基于敏感api的恶意软件检测方法、系统、设备及介质 | |
CN111506313A (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 |