一种恶意安卓虚拟化应用程序检测方法

文档序号:37467943发布日期:2024-03-28 18:50阅读:8来源:国知局
一种恶意安卓虚拟化应用程序检测方法

本发明属于网络安全,具体涉及一种恶意安卓虚拟化应用程序检测方法。


背景技术:

1、现今移动设备便携、智能备受用户青睐,搭载其上的android操作系统功能强大、市场份额高,吸引了大量的android恶意软件开发者以谋取灰色利益,导致了android恶意软件的快速传播,破坏了安卓系统生态安全。特别是,安卓虚拟化程序可在运行时加载恶意代码,使得恶意功能不会在应用程序安装时立即显现,具有隐蔽性。因此安卓虚拟化技术被广泛采用以实施各种恶意行为,如窃取敏感信息、执行未经授权的操作等。具体而言,由于安卓虚拟化程序可对恶意插件进行加密如pluginphantom,或者在程序运行后从互联网上动态加载其插件如hummingbad,传统的安卓恶意应用检测方案难以直接用于识别此类恶意行为。为了辅助下游安全分析人员分析与选择针对性的检测手段,亟待研究如何确定待检测应用属于安卓虚拟化程序。

2、现有技术中存在以静态检测和动态检测为主的安卓虚拟化程序检测方法。静态检测认为若所声明的组件之间有80%以上是相似的,则相应的应用程序很可能会使用虚拟化技术。因此出现了状态检测模型,其通过控制流图来查看插件组件是否最终被桩组件取代,以此来识别apk文件中应用程序虚拟化框架是否存在。但该方案皆基于已有框架的固定观察,难以对多种类型的虚拟化程序进行检测。而动态检测通过实时监测、分析和评估插件的行为,确保宿主应用程序在加载各类应用插件时的安全性。可通过采用plugin killer检测不匹配的android manifest文件和组件信息来判断app是否被作为插件调用。有学者在plugin assassin中发现当应用程序在插件环境中运行时,同一种类型的android组件在同一进程和新进程两种情况下启动activity产生时间开销不成比例。一种现有方法收集并计算在两种情况下启动activity的时间比率,将该比率与预定义的阈值进行比较以判断当前环境的类型。另外,有研究提出了可通过内外存储目录、进程名和未声明权限、堆栈跟踪和可疑的库调用这六个特征来检测应用程序是否正在由宿主应用启动。

3、在针对利用虚拟化技术的安卓恶意程序检测中,对于如何准确识别恶意安卓虚拟化程序需要解决以下两个问题:1.如何精确抓住安卓恶意虚拟化应用程序的恶意特征,判断其恶意属性;2.现有的针对安卓恶意虚拟化应用程序的检测方法主要基于静态或动态分析,但检测结果并不理想,准确性有待提升。


技术实现思路

1、针对现有技术存在的不足,本发明提出了一种恶意安卓虚拟化应用程序检测方法,该方法包括:

2、s1:获取待测试应用的apk并对其进行反向编译,得到源代码文件;

3、s2:从源代码文件中提取应用程序加载插件的路径;

4、s3:采用静态分析工具对源代码文件进行处理,得到第一隐藏加载行为检测结果;

5、s4:在模拟器中执行apk并动态分析用户交互界面,得到第二隐藏加载行为检测结果;

6、s5:根据应用程序加载插件的路径获取插件并检测插件应用敏感权限和api调用情况,根据插件的敏感权限和api调用情况分析得到插件检测结果;

7、s6:根据第一、第二隐藏加载行为检测结果和插件检测结果分析得到待测试应用的恶意安卓虚拟化应用程序检测结果。

8、优选的,步骤s2具体包括:使用frida框架hook待测试应用的dexclassloader函数接口,检测待测试应用是否动态加载插件并获取应用程序加载插件的路径。

9、优选的,步骤s3具体包括:

10、使用静态分析工具androguard,根据源代码文件构建应用程序的控制流图和数据流图;

11、根据应用程序的控制流图获取数据处理和传递路径;

12、根据应用程序的数据流图获取函数间的调用关系;

13、将数据处理和传递路径、函数间的调用关系与预期行为进行比较;若不符合预期行为,则判断应用程序存在隐藏加载行为,否则,判断为可疑应用程序。

14、优选的,步骤s4具体包括:在模拟器中执行apk,若用户交互界面未出现用户交互弹窗以获取用户同意,或者用户交互界面未出现图标,则判断应用程序存在隐藏加载行为,否则,判断为可疑应用程序。

15、优选的,步骤s5具体包括:根据应用程序加载插件的路径得到插件的apk文件;对插件的apk文件进行反编译,得到插件的源代码文件;对源代码文件进行解析并获取插件源代码文件中的所有权限;判断所有权限中是否存在敏感权限;若是,则提取出敏感权限并获取敏感权限对应的api调用情况,否则,判断插件正常;构建敏感权限和其对应的api调用情况之间的映射关系;判断敏感权限和api调用情况之间的映射关系是否符合预期,若符合,则判断插件正常,否则,判断插件异常。

16、进一步的,所述敏感权限包括相机、存储、麦克风和电话。

17、优选的,步骤s6中,得到待测试应用的恶意安卓虚拟化应用程序检测结果的过程包括:若第一、第二隐藏加载行为检测结果均为待测试应用为可疑应用程序,插件检测结果为插件正常,则待测试应用最终被判断为良性安卓虚拟化应用程序;否则,待测试应用最终被判断为恶意安卓虚拟化应用程序。

18、本发明的有益效果为:本发明通过结合静、动态分析有效提高对恶意安卓虚拟化应用程序的检测准确率。这种混合分析方式可以结合应用程序的控制流图和数据流图,并对待测apk进行动态分析以确认更加准确的检测结果。其参考了用户交互信息,即使恶意行为发生在运行时也能被检测到,从而提升了检测的全面性和准确性。此外,本发明还注意到被加载插件的敏感权限与api调用情况,抓住安卓恶意虚拟化应用程序容易被忽略的恶意特征,更能准确的检查出恶意属性。



技术特征:

1.一种恶意安卓虚拟化应用程序检测方法,其特征在于,包括:

2.根据权利要求1所述的一种恶意安卓虚拟化应用程序检测方法,其特征在于,步骤s2具体包括:使用frida框架hook待测试应用的dexclassloader函数接口,检测待测试应用是否动态加载插件并获取应用程序加载插件的路径。

3.根据权利要求1所述的一种恶意安卓虚拟化应用程序检测方法,其特征在于,步骤s3具体包括:

4.根据权利要求1所述的一种恶意安卓虚拟化应用程序检测方法,其特征在于,步骤s4具体包括:在模拟器中执行apk,若用户交互界面未出现用户交互弹窗以获取用户同意,或者用户交互界面未出现图标,则判断应用程序存在隐藏加载行为,否则,判断为可疑应用程序。

5.根据权利要求1所述的一种恶意安卓虚拟化应用程序检测方法,其特征在于,步骤s5具体包括:根据应用程序加载插件的路径得到插件的apk文件;对插件的apk文件进行反编译,得到插件的源代码文件;对源代码文件进行解析并获取插件源代码文件中的所有权限;判断所有权限中是否存在敏感权限;若是,则提取出敏感权限并获取敏感权限对应的api调用情况,否则,判断插件正常;构建敏感权限和其对应的api调用情况之间的映射关系;判断敏感权限和api调用情况之间的映射关系是否符合预期,若符合,则判断插件正常,否则,判断插件异常。

6.根据权利要求5所述的一种恶意安卓虚拟化应用程序检测方法,其特征在于,所述敏感权限包括相机、存储、麦克风和电话。

7.根据权利要求1所述的一种恶意安卓虚拟化应用程序检测方法,其特征在于,步骤s6中,得到待测试应用的恶意安卓虚拟化应用程序检测结果的过程包括:若第一、第二隐藏加载行为检测结果均为待测试应用为可疑应用程序,插件检测结果为插件正常,则待测试应用最终被判断为良性安卓虚拟化应用程序;否则,待测试应用最终被判断为恶意安卓虚拟化应用程序。


技术总结
本发明属于网络安全技术领域,具体涉及一种恶意安卓虚拟化应用程序检测方法;包括:获取待测试应用的APK并对其进行反向编译,得到源代码文件;从源代码文件中提取应用程序加载插件的路径;采用静态分析工具对源代码文件进行处理,得到第一隐藏加载行为检测结果;在模拟器中执行APK并动态分析用户交互界面,得到第二隐藏加载行为检测结果;根据应用程序加载插件的路径获取插件并检测插件应用的敏感权限和API调用情况,根据插件的敏感权限和API调用情况分析得到插件检测结果;根据第一、第二隐藏加载行为检测结果和插件检测结果分析得到待测试应用的恶意安卓虚拟化应用程序检测结果;本发明可提升检测的全面性和准确性。

技术研发人员:王练,杨炯梅
受保护的技术使用者:重庆邮电大学
技术研发日:
技术公布日:2024/3/27
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1