关键词:
Android
函数调用图
时间序列
恶意应用检测
恶意家族
摘要:
如何有效分析Android恶意应用程序是目前研究热点。传统的Android恶意应用分析存在如下问题:(1)基于权限请求的恶意行为判别方法容易将合法应用程序系统权限滥用行为误判为恶意行为;(2)基于特定官方API(指谷歌官方定义的一组实现特定功能的可调用函数)调用查找的方法虽然可以实现较为精准的恶意行为判别,但该方法会因为Android版本更新升级导致官方API调用方式改变而失效;(3)针对恶意应用程序进行家族分类可以有效提高分析效率并帮助追踪恶意程序的演变过程,但是现有的恶意家族分类研究无法解决小样本恶意家族准确分类的问题。针对上述问题,本文提出了一种Android恶意应用程序判别及家族分类方法,该方法通过对应用程序调用官方API调用的行为模式进行特征识别实现恶意应用判别及家族分类。在应用程序静态分析中,通过提取应用程序的用户自定义函数和官方API的调用关系图构建应用程序的行为模式,采用改进的图注意力网络分类方法实现恶意应用判别;在应用程序动态分析中,通过动态监测应用程序的执行流程,提取官方API调用的时间序列,采用改进的最大区分子序列(shapelet)算法实现恶意应用判别;在恶意家族分类上,提出了一种结合聚类与分类算法的恶意家族综合判别方法,以解决小样本恶意家族的有效分类问题。本文的主要工作和创新点如下:1.在应用程序静态分析中,针对现有恶意应用程序对有滥用系统权限行为的合法程序误判率较高,以及随着Android系统升级导致判别方法失效的问题,提出了一种基于用户自定义函数和官方API的调用关系图的恶意程序静态分析方法。该方法首先提取用户自定义函数和官方API的调用关系图;接着从调用关系图中对使用危险权限的官方API进行标记,提取图的行为模式特征;进一步根据官方API使用危险权限的敏感程度对函数调用图重要节点进行权重调整;在此基础上采用图注意力网络分类方法实现恶意应用判别。经实验表明,该方法有较好的分类效果,其在Drebin等数据集上的准确率和F1值分别达到了0.9342和0.9336,与传统图注意力分类方法相比有较好的分类性能。2.在应用程序动态分析中,针对现有时间序列分类算法应用于API调用序列分析时间复杂度较高的问题,提出了一种基于局部最优的随机最大区分子序列分析的Android恶意应用判别方法。该方法首先对含有特定名称的控件进行定向触发控制应用运行方式以获取稳定的API调用时间序列;接着提出一种基于局部特征的随机shapelet获取算法用于提取时间序列关键特征,进行恶意应用程序判别,该算法可有效降低shapelet计算复杂度。经实验表明,其在Drebin等数据集上的准确率和F1值分别达到0.8873和0.8613。如将静态分析与动态分析相结合,则准确率和F1值可提升至0.9721和0.9574。3.在恶意家族分类上,针对在恶意家族分类中样本缺乏导致难以发现小样本恶意家族的问题,提出了一种基于聚类与分类相结合的恶意家族综合判别方法。该方法首先采用基于自编码器的无监督聚类方法,根据API调用序列特征找出存在恶意行为的序列所属的潜在家族;接着提出了一种基于图机器学习的恶意家族分类方法,通过从函数调用图中获取恶意模块作为特征进行分类;最后提出了一种结合聚类结果与分类结果的恶意家族综合判别方法,以提高小样本恶意家族识别的准确率。经实验表明,其准确率和宏F1值分别为0.9745和0.9710,与其他分类器相比提升较大。同时在小样本恶意家族的分类上表现更为优秀,在样本数量小于40个的家族中平均准确率达到0.925。