基于函数调用图的Android插件恶意性检测方法
未命名
07-29
阅读:196
评论:0
基于函数调用图的android插件恶意性检测方法
技术领域
1.本发明属于移动安全领域,涉及基于函数调用图的android插件恶意性检测方法。
背景技术:
2.移动端插件化动态加载方案的诞生,从技术角度将,具有编译速度提升,启动速度提升,对于模块按需加载的优点,从产品的角度来说,具有提升app用户体验,增加用户粘度的好处,然而与此同时,伴生的安全问题也接踵而至。围绕移动app的恶意攻击愈发猖獗。现有的插件化环境检测方案不足以对现有的插件化框架进行一个鉴别,由于插件的动态加载性,现有的apk静态恶意检测无法对具有插件化环境的app功能进行检测。
3.基于函数调用图的android插件应用恶意检测方法,不需要获取插件的源码。通过函数调用图的方法检测apk是否包含插件环境,插件的动态加载过程离不开类加载机制的帮助,函数调用图某种程度上可以代表代码的行为,所以以函数调用图为特征,利用机器学习算法对apk进行识别,可以判断apk是否具有插件化环境,并对含有插件环境的apk进行插件的功能进行预判,即可得到插件的功能是否具有恶意性。
技术实现要素:
4.有鉴于此,本发明的目的在于提供一种基于函数调用图的android插件恶意性检测方法。
5.为达到上述目的,本发明提供如下技术方案:
6.基于函数调用图的android插件恶意性检测方法,该方法包括以下步骤:
7.s1:准备大量apk样本为构建插件化特征库做准备;
8.s2:将apk的函数调用图以dexclassloader、basedexclassloader为核心,以及他们的邻接节点的函数调用子图抽取出来;
9.s3:将操作s2生成的函数调用子图量化为二维矩阵,并将二维矩阵通过归一化算法进行归一化处理;
10.s4:将二维矩阵降维处理;
11.s5:将收集到的特征文件通过机器学习算法进行分类;
12.s6:对含有插件化环境的apk进行下一步的检测操作,预测apk未加载插件的权限集合;
13.s7:根据预测的插件功能所需的权限对插件的恶意性进行预测;
14.s8:通过权限判断未加载插件为恶意性的样本进行动态恶意检测。
15.可选的,所述s2中,抽取函数调用图的操作具体包括:
16.s21:利用androguard攻击将apk的整个函数调用图提取出来;
17.s22:找到s21操作中提取的函数调用图中包含dexclassloader、getclass的节点;
18.s23:找出s22操作找到的节点的邻接节点;
19.s24:将包含s22、s23找到的所有节点的函数调用子图抽取出来,保留节点间的函
数调用关系。
20.可选的,所述s3中,将函数调用子图量化为二维矩阵的操作为,生成函数调用图的邻接矩阵,对邻接矩阵进行归一化操作的归一化算法为:
21.lp(p,q)=1/(p.out+q.in) (1)
22.进行归一化操作的目的是为将函数的入度与初度进行处理,将节点调用次数信息进行关联。
23.可选的,所述s4中,降维操作是将二维矩阵中的非零值抽取出来,形成一维向量,将非零值抽取成一维向量,邻接矩阵通过余弦相似度进行计算,每两两apk都有50%左右的相似度,将邻接矩阵降维,以排除0值对接下来模型训练效果的影响。
24.可选的,所述s5具体包括:
25.s51:对特征样本集按8:2划分为训练集和测试集;
26.s52:将训练集输入到初始分类器,利用随机森林树算法对其训练分类;
27.s53:将训练好的分类模型,利用测试集评估分类器的准确率。
28.可选的,所述s6具体包括:
29.s61:将apk中api对应所需要的权限映射为集合a;
30.s62:抽取apk中的androidmanifest.xml清单文件中的权限信息,为集合b;
31.s63:利用apriori关联分析算法提取恶意apk的恶意权限规则;
32.s64:预测插件权限集合c=b-(a∩b);通过apriori关联分析算法提取的恶意权限规则将集合c中筛选掉的权限添加进集合c。
33.可选的,所述s7具体包括:
34.s71:预测apk中未加载的插件所需的权限为集合c;
35.s72:通过提取权限特征对恶意apk以及良性apk训练,得到模型文件,通过该模型文件对插件的权限集合进行恶意性预测;
36.s73:如果的到插件的预测结果为恶意,则输入插件动态恶意检测模块进行检测;
37.s74:通过插件动态化检测模块得到准确的插件恶意性判断。
38.本发明的有益效果在于:解决了android插件化框架的检测以及插件恶意性无法判断的问题,有效保证了android终端用户财产、隐私等安全。
39.本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
40.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
41.图1为本发明流程图。
42.图2位本发明框架结构图。
具体实施方式
43.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
44.其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
45.本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
46.请参阅图1和图2,为基于函数调用图的android插件恶意性检测方法,包括以下步骤:
47.s1:准备大量apk为构建插件化特征库做准备;
48.s2:将apk的函数调用图以dexclassloader、basedexclassloader为核心,以及他们的邻接节点的函数调用子图抽取出来;
49.s3:将s2生成的函数调用子图量化为二维矩阵,并将二维矩阵通过归一化算法进行归一化处理;
50.s4:将二维矩阵降维处理;
51.s5:将收集到的特征文件通过机器学习算法进行分类。
52.s6:对含有插件化环境的apk进行下一步的检测操作,预测apk未加载插件的权限集合;
53.s7:根据预测的插件功能所需的权限对插件的恶意性进行预测;
54.s8:通过权限判断未加载插件为恶意性的样本进行进一步动态恶意检测;
55.所述s2抽取函数调用图的操作具体包括:
56.s21:利用androguard攻击将apk的整个函数调用图提取出来;
57.s22:找到s21操作中提取的函数调用图中包含dexclassloader、getclass的节点;
58.s23:找出s22操作找到的节点的邻接节点;
59.s24:将包含s22、s23找到的所有节点的函数调用子图抽取出来,保留节点间的函数调用关系;
60.所述s3中,将函数调用子图量化为二维矩阵的操作为,生成函数调用图的邻接矩阵,对邻接矩阵进行归一化操作的归一化算法为:
61.lp(p,q)=1/(p.out+q.in) (1)
62.所述s4具体包括,将二维矩阵中的非零值抽取出来,形成一维向量;
63.所述s5具体包括:
64.s51:对特征样本集按8:2划分为训练集和测试集;
65.s52:将训练集输入到初始分类器,利用随机森林树算法对其训练分类;
66.s53:将训练好的分类模型,利用测试集评估分类器的准确率;
67.所述s6具体包括:
68.s61:将apk中api对应所需要的权限映射为集合a;
69.s62:抽取apk中的androidmanifest.xml清单文件中的权限信息,为集合b;
70.s63:利用apriori关联分析算法提取恶意apk的恶意权限规则;
71.s64:预测插件权限集合c=b-(a∩b)。通过apriori关联分析算法提取的恶意权限规则将集合c中筛选掉的权限添加到集合c中;
72.所述s7具体包括:
73.s71:预测apk中未加载的插件所需的权限为权限集合c;
74.s72:通过提取权限特征对恶意apk以及良性apk训练,得到模型文件,通过该模型文件对插件的权限集合进行恶意性检测;
75.s73:如果得到插件的预测结果为恶意,则输入插件动态恶意检测模块做进一步的检测;
76.s74:通过插件动态化检测模块得到准确地插件恶意性判断。
77.最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
技术特征:
1.基于函数调用图的android插件恶意性检测方法,其特征在于:该方法包括以下步骤:s1:准备若干apk样本为构建插件化特征库做准备;s2:将apk的函数调用图以dexclassloader、basedexclassloader为核心,以及他们的邻接节点的函数调用子图抽取出来;s3:将s2生成的函数调用子图量化为二维矩阵,并将二维矩阵通过归一化算法进行归一化处理;s4:将二维矩阵降维处理;s5:将收集到的特征文件通过机器学习算法进行分类;s6:对含有插件化环境的apk进行下一步的检测操作,预测apk未加载插件的权限集合;s7:根据预测的插件功能所需的权限对插件的恶意性进行预测;s8:通过权限判断未加载插件为恶意性的样本进行动态恶意检测。2.根据权利要求1所述的基于函数调用图的android插件恶意性检测方法,其特征在于:所述s2中,抽取函数调用图的操作具体包括:s21:利用androguard攻击将apk的整个函数调用图提取出来;s22:找到s21操作中提取的函数调用图中包含dexclassloader、getclass的函数的节点;s23:找出s22操作找到的节点的邻接节点;s24:将包含s22、s23找到的所有节点的函数调用子图抽取出来,保留节点间的函数调用关系。3.根据权利要求1所述的基于函数调用图的android插件恶意性检测方法,其特征在于:所述s3中,将函数调用子图量化为二维矩阵的操作为,生成函数调用图的邻接矩阵,对邻接矩阵进行归一化操作的归一化算法为:lp(p,q)=1/(p.out+q.in) (1)进行归一化操作的目的是为将函数的入度与出度进行处理,将节点调用次数信息进行关联。4.根据权利要求1所述的基于函数调用图的android插件恶意性检测方法,其特征在于:所述s4中,降维操作是将二维矩阵中的非零值抽取出来,形成一维向量,将非零值抽取成一维向量,邻接矩阵通过余弦相似度进行计算,每两两apk都有50%左右的相似度,将邻接矩阵降维,以排除0值对接下来模型训练效果的影响。5.根据权利要求1所述的基于函数调用图的android插件恶意性检测方法,其特征在于:所述s5具体包括:s51:对特征样本集按8:2划分为训练集和测试集;s52:将训练集输入到初始分类器,利用随机森林树算法对其训练分类;s53:将训练好的分类模型,利用测试集评估分类器的准确率。6.根据权利要求1所述的基于函数调用图的android插件恶意性检测方法,其特征在于:所述s6具体包括:s61:将apk中api对应所需要的权限映射为集合a;s62:抽取apk中的androidmanifest.xml清单文件中的权限信息,为集合b;
s63:利用apriori关联分析算法提取恶意apk的恶意权限规则;s64:预测插件权限集合c=b-(a∩b);通过apriori关联分析算法提取的恶意权限规则将集合c中筛选掉的权限添加进集合c。7.根据权利要求1所述的基于函数调用图的android插件恶意性检测方法,其特征在于:所述s7具体包括:s71:预测apk中未加载的插件所需的权限为集合c;s72:通过提取权限特征对恶意apk以及良性apk训练,得到模型文件,通过该模型文件对插件的权限集合进行恶意性预测;s73:如果的到插件的预测结果为恶意,则输入插件动态恶意检测模块进行检测;s74:通过插件动态化检测模块得到准确的插件恶意性判断。
技术总结
本发明涉及一种基于函数调用图的Android插件恶意性检测方法,属于移动安全领域。该方法分为两部分,第一部分为插件化的环境检测,检测方法包括:函数调用图提取、调用图抽取、调用图量化、相似度比较。第二部分为插件的恶意性功能检测:检测方法包括:API权限映射,清单文件权限提取、插件功能判断。本发明提出了通过函数调用图相似性的方法来判断APK是否含有插件化环境,并基于插件化环境的基础上判断插件是否含有恶意性。件是否含有恶意性。件是否含有恶意性。
技术研发人员:陈龙 韩世凯
受保护的技术使用者:重庆邮电大学
技术研发日:2023.04.04
技术公布日:2023/7/28
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
