论文部分内容阅读
近年来,安卓系统因其开放性始终占据移动市场的主导地位。然而,安卓恶意应用的日益增长严重威胁着用户的财产和信息安全。安卓应用的安全性逐渐引起人们的重视,针对安卓恶意应用的研究和检测方法应运而生,其中静态分析技术备受研究者的青睐成为主要的检测方法。然而近年来,混淆技术被广泛地应用于安卓应用,良性应用的开发者通过混淆技术来保证自己的知识产权不受到侵害,而恶意应用的开发者通常利用该技术增加应用被逆向分析的难度或者使用反射技术隐藏恶意代码,从而躲避静态分析。因此安卓混淆技术是一把双刃剑,在安卓混淆应用中良性应用和恶意应用并存。5G时代的到来使得移动设备的安全问题更加突出,如何有效地检测市场中的安卓混淆恶意应用是一个意义重大且亟待解决的问题。当前,混淆恶意应用的检测与分析方法存在数据集不明确且静态分析技术效率低下的问题。针对这些问题,本文构建了一个动态检测安卓混淆恶意应用的方法,该方法分为混淆应用检测和恶意应用检测两个模块。使用混淆应用检测方法构建了用于混淆恶意应用检测的数据集,分别包括778和712个混淆的正常和恶意应用。恶意应用检测模块在误报率为1.55%的情况下达到了 93.49%的准确率。本文的研究工作包括如下三个部分:(1)全面总结安卓混淆技术:安卓应用的混淆技术复杂多样,且使用不同混淆技术的应用具有不同的特征。通过判断应用所用的混淆技术则可以提取针对具体混淆技术的相关特征,从而提高安卓恶意应用的检测效率。因此本文全面地总结了当前常用的安卓混淆技术,分别是标识符重命名、字符串加密、控制流混淆、Java反射和打包技术。为了评估混淆技术检测的效果,本文从开源市场下载安卓应用的源码文件,并使用3种不同的混淆技术对它们进行混淆操作,得到了3个纯粹的混淆应用数据集,包括375个被标识符重命名的混淆应用、342个字符串加密的应用和338个控制流混淆的应用。(2)混淆应用检测:对混淆恶意应用的有效检测建立在纯粹的混淆数据集上,而当前市场中没有现成的混淆数据集,因此本文提出了一个用于检测混淆应用的方法。首先在混淆应用检测的内部构建了 3个用于识别不同混淆技术的检测器,依次是标识符重命名检测器、字符串加密检测器和控制流混淆检测器,然后分别使用支持向量机算法对应用程序进行分类。使用上文构建的3个混淆数据集,3个内部检测器的准确率分别达到了 90.91%、88.47%和78.96%。对于未知的安卓应用,若应用使用了其中任意一种混淆技术,则将其归类为混淆应用。最后,该方法从1315个正常应用和1288个恶意应用中分别筛选出了 778和712个混淆应用,以此作为检测混淆恶意应用的数据集。(3)混淆恶意应用检测:针对混淆应用躲避静态分析的问题,本文构建了一个动态检测混淆恶意的方法。通过在模拟器中安装并运行安卓应用,分析其行为特征,本文选取了 12类常用的动态特征,并基于混淆应用的特点新增了两个特征。该方法使用支持向量机、决策树和随机森林对实验进行评估,分别得到了 93.49%、91.89%、93.03%的准确率,验证了检测混淆恶意应用的有效性。