关键词:
Android恶意软件
静态分析
动态分析
函数调用图
网络流量
摘要:
当前,随着互联网技术的普及和Android操作系统的广泛使用,Android恶意软件的数量也在与日俱增,这对Android用户的隐私和信息安全构成了严重威胁。如何有效地对Android恶意软件进行检测对于保护用户财产安全有着重要的意义。
本文针对现有Android恶意软件的静态分析方法和动态分析方法存在的问题进行改进。在静态分析方面,提出了一种基于行为特征和语义特征的多模态Android恶意软件的静态检测方法;在动态分析方面提出了一种联合本地特征和网络特征的动态恶意软件检测方法。同时,在上述两种检测方法的基础上设计并实现了一个Android恶意软件检测系统。本文的主要研究工作如下:
(1)在静态分析方面,提出了一种基于行为特征和语义特征的多模态Android恶意软件的检测方法。针对Android官方危险权限集合中权限数量有限的问题,提出了一种基于敏感度计算的危险权限集合扩充方法,并基于扩充集合对APK的权限特征进行权限匹配生成表示向量。针对基于单个操作码或字节码的统计方法无法挖掘潜在的代码语义信息,提出了一种基于2-gram的字节概率矩阵生成方法,通过2-gram统计不同类型组合的字节码出现的概率,用于表示APK内部相邻操作码潜在的语义关系,并基于卷积神经网络方法对概率矩阵进行特征编码。针对APK函数调用图中节点特征如何表示的问题,本文基于函数调用关系和不同类型操作码出现频率信息生成包含了节点特征的属性图,并利用图神经网络方法对属性图进行特征编码。在此基础上对上述特征进行特征融合输入神经网络实现恶意软件检测。经过实验验证,本文所提的静态分析方法有着96.5%的准确率和96.2%的F1分数,相较于现有的静态分析方法,如基于权限的检测方法、基于操作码的检测方法、基于字节码图像的检测方法和基于函数调用图的检测方法,本文方法的准确率平均高出20%,在检测性能上有着优势。
(2)在动态分析方面,提出了一种联合本地特征和网络特征的动态恶意软件检测方法。针对现有基于本地特征的恶意软件检测方法存在的API调用序列冗余问题,提出了一种基于旗鱼算法的最优API子集生成方法,通过该最优API子集缩短API调用序列,并通过带有Attention机制的GRU网络对API调用子序列进行特征编码。此外,为了捕捉网络流量特征,提出了一种基于BM25的流量矩阵生成方法,该方法考虑了网络流量中每个字节的重要性不同,并利用CNN+LSTM网络对流量矩阵进行特征编码,捕获流量矩阵中的空间关系与时序依赖关系。实验结果表明,本文所提的动态分析方法有着97.1%的准确率和96.9%的F1分数,相较于现有的基于API调用序列或基于网络流量的动态分析方法准确率平均高出12%,在检测性能上有着优势。
(3)基于本文所提出的静态和动态分析方法,设计并实现了一个Android恶意软件检测系统。该系统主要包含系统登陆模块、Android应用程序上传模块、应用程序分析模块和历史分析结果持久化与展示模块,其中应用程序分析模块为本系统的核心模块,其检测分析算法基于以上所提出的两种检测恶意软件检测算法实现。