关键词:
安卓恶意软件
字节码图
函数调用图
图卷积神经网络
特征融合
摘要:
安卓操作系统作为一种基于Linux内核的开源移动端操作系统,有着丰富的应用软件市场并占据了70%以上的智能手机市场份额。然而,其开源和流行度较高的特点也使得其成为97%的恶意软件的攻击目标。数量激增的安卓恶意软件给庞大的安卓用户群体带来了资费消耗、隐私泄露、远程控制等威胁。针对安卓恶意软件检测的研究有利于安卓设备生态圈健全发展,对移动安全意义重大。安卓恶意软件检测研究按照研究对象可以分为恶意软件识别和恶意家族识别两大类。前者的主要任务是识别安卓软件是否存在安全问题,避免恶意软件给用户带来威胁;后者在前者的基础上将恶意软件划分至相应的家族中,有利于减轻安全研究者的工作量、加速恶意软件分析研究。按照研究方法可以分为静态分析和动态分析两大类。静态分析基于逆向工程构建的静态特征进行恶意软件检测,动态分析则基于运行安卓软件产生的日志进行检测。静态分析方法无需运行软件,检测速度快、成本较低,因此得到了广泛应用。目前,大部分安卓恶意软件检测方法使用了机器学习算法,其关键在于特征的构建与选择。事实上,基于区分度良好的特征,不同分类器均可取得良好的检测效果。因此,本文聚焦恶意软件识别和恶意家族识别问题,重点研究静态特征的提取算法,并设计相应的检测方法。本文的研究内容与主要贡献简述如下:(1)调研分析并总结了现有的基于静态特征的安卓恶意软件检测算法研究中存在的不足:基于权限等基础特征进行分类的方法往往准确率低、误报率高;而过于复杂的特征则需要基于个人安全开发经验进行特征构建,具有一定的局限性。此外,尚未见到针对恶意软件识别、恶意家族识别均有效且无需过多专家经验的特征提取算法。(2)针对上述不足,本文提出了将字节码图特征、函数调用图特征进行自适应稠密双线性融合的静态特征提取算法。该算法分为以下四个步骤:安卓APK文件预处理、字节码图特征提取、函数调用图特征提取以及特征融合。字节码图特征提取阶段,本文改进Efficient Net并提出使用空间金字塔池化层替代Efficient Net的自适应池化层,达到了提取缩放后的字节码图多尺度纹理特征的目的。函数调用图特征提取阶段,本文创新性地提出使用Word2vec算法为函数调用图中每个函数结点赋予了稠密且具有语义信息的特征向量,达到了有效提取函数调用图结构与语义特征的目的。特征融合阶段,本文将字节码图特征、函数调用图特征进行融合,实现两种特征的互补。并针对两种特征设置了可学习优化的不同权重,这使得融合特征提取算法在面对不同的检测任务时,自动优化训练过程中两种特征的权重,提高检测准确率。(3)本文在三种具有代表性的数据集上进行了充分的实验,验证了本文提出的特征提取算法的有效性与优越性。在Fal Droid恶意家族识别公开数据集上的分类准确率达到了96.2197%;在自建的DADR恶意软件识别数据集上的分类准确率达到了91.1075%;在CICMal Droid2020部分样本构成的五分类数据集上分类准确率达到了95.7333%。对比实验表明,本文提出的融合特征与字节码图特征、函数调用图特征以及经典的权限等基础特征相比,可以有效提升恶意软件检测准确率;本文提出的自适应稠密双线性融合较传统拼接融合更加有效;选择字节码图特征、函数调用图特征融合的方案比选择权限等基础特征、函数调用图特征融合的方案更佳。