APP下载

基于卷积神经网络恶意安卓应用行为模式挖掘

2020-12-18张鑫羌卫中吴月明邹德清金海

网络与信息安全学报 2020年6期
关键词:调用敏感度安卓

张鑫,羌卫中,吴月明,邹德清,金海

基于卷积神经网络恶意安卓应用行为模式挖掘

张鑫,羌卫中,吴月明,邹德清,金海

(华中科技大学网络空间安全学院,湖北 武汉 430074)

现有的安卓恶意应用检测方法所提取的特征冗余且抽象,无法在高级语义上反映恶意应用的行为模式。针对这一问题,提出一种可解释性检测方法,通过社交网络检测算法聚类可疑系统调用组合,将其映射为单通道图像,用卷积神经网络进行分类,并利用卷积层梯度权重类激活映射可视化方法发现最可疑的系统调用组合,从而挖掘理解恶意应用行为。实验结果表明,所提方法在高效检测的基础上,能够正确发现恶意应用的行为模式。

安卓;快速检测;卷积神经网络;社交网络分析

1 引言

谷歌最新发布的安卓生态安全报告[1]显示,截至2019年10月,安卓设备中感染潜在有害应用程序(PHA,potentially harmful applications)的比例居高不下,至少1 470万台安卓设备面临用户数据泄露风险。新型恶意应用层出不穷,为了抵御恶意应用,谷歌应用商店每天扫描和验证的应用程序多达500亿次。

迄今,多种安卓恶意应用检测系统被提出。具有自主学习能力的方法,如基于签名、敏感权限的机器学习检测方法和基于字节码、操作码的深度学习检测方法,单纯提取抽象字节特征,这些方法很容易被基于Jacobian的攻击以及混淆技术所躲避[2],所以这些系统的鲁棒性较差。进而,基于图匹配(控制流图和调用图)的检测系统被提出,但图的相似性度量是NP难题,随着移动应用的体积增长,图相似性计算会产生难以接受的性能开销。更重要的是,为了尽可能地提高检测精度,先前的工作往往过量寻求特征,数万维乃至数十万维的冗余特征底层抽象,无法在高级语义上反映恶意应用的行为,所以,无法对研究和发掘理解恶意特征行为模式提供支持。

调用图类似于社交网络,恶意行为相关的敏感API之间具有密集的连接,但与良性API间连接稀疏。因此,本文首先利用自启发式社交网络检测快速分割调用图,并根据社区敏感度定位敏感社区;然后将社区映射为规则图像,并保留恶意应用原始高级语义;最后设计并训练对应图像尺寸的卷积神经网络(CNN,convolutional neural network)模型,在高效率检测恶意应用的同时,利用卷积层梯度权重类激活映射[3](Grad-CAM,gradient-weighted class activation mapping)的可视化方法得到API调用图像的热力图,从而找出当前应用最可疑的API调用组合,为恶意应用特征行为模式领域的研究提供高级素材。

本文的贡献如下。

1) 提出了一种新颖的安卓恶意应用检测系统,利用社交网络检测和统计规律快速分析API调用图提取特征,输入卷积神经网络进行快速分类,在保证鲁棒性的同时有效提升了系统检测效率。

2) 保留了恶意应用的原始高级语义,利用已训练模型,通过卷积层梯度权重可视化来挖掘恶意应用最可疑的API调用组合,为研究恶意应用特征行为模式提供参考。

3) 使用13 365个良性应用和13 514个恶意应用对原型系统进行了全面评估。实验结果表明,系统平均可以在23 s内以高达93%的准确率完成应用检测,并找到恶意应用中最可疑的API调用组合。

2 相关工作

很多安卓恶意应用检测的方法被提出。大多数方法基于机器学习寻找尽可能多的特征向量来提升检测准确率。Drebin[4]使用多种静态分析,从应用程序中提取尽可能多的特征,并将它们嵌入联合特征向量中以对安卓应用程序进行分类。但该方法容易通过混淆技术躲避。因此,基于图的方法被提出。DroidSIFT[5]提取加权上下文API依赖关系图,以解决恶意应用变种问题。Apposcopy[6]利用静态分析提取应用程序的数据流和控制流属性来识别其恶意软件家族。但是DroidSIFT[5]和Apposcopy[6]运行时开销巨大,分别花费175.8 s和275 s来分析应用程序。MaMaDroid[7]利用从调用图获得的抽象函数调用序列来构建行为模型,并使用其提取频率特征以进行分类,但由于其庞大的功能集和调用图的提取,它在分类检测时需要大量的内存[7]。

少数基于深度学习的方法被提出。文献[8]将二进制应用程序转换为灰度图像,依据图像上纹理布局的区别来区分不同的恶意应用家族。文献[9]进一步提取特征,将字节码映射为三通道的RGB图像,然后利用卷积神经网络模型进行分类。

但以上方法所提取特征向量,无论是权限属性、数据流属性、调用序列频率还是字节码图像,都是大量难以理解的底层抽象信息,无法帮助研究人员直观上获取恶意应用的高级特征语义信息。与先前的工作不同,本文保留高级语义信息,直接将敏感API调用的组合映射为特征图像,使已训练模型能够提供恶意应用的可疑API调用信息,并利用社交网络检测算法来处理调用图,有效避免了混淆攻击并大幅度降低了处理开销,提升了检测效率。

3 系统模型

3.1 系统总览

本文提出了一个新颖系统,利用卷积神经网络对未知安卓应用进行检测分类,进而依托训练的模型,运用卷积层梯度权重类激活映射可视化算法来理解恶意应用的恶意行为模式。

3.2 提取调用图

APK文件是由classes.dex文件中的Dalvik代码和资源文件打包而成的。本文利用工具Apktool[10]将Dalvik代码反汇编为可读的smail中间代码,并通过扫描所有.smail文件中的invoke语句来解析API之间的调用关系,然后利用SuSi[11]系统报告所总结的敏感API列表对API进行标记。且这类系统敏感API无法被混淆,而用户自定义的函数名通常被混淆为低熵字符串等。该列表共包含25 156个敏感API,分为两种敏感类型,即Source和Sink。其中,Source类是来获取敏感信息的,有17类别共17 372个;Sink类是来接收敏感信息的,有19类别共7 784个。API被解析为格式{<包名: 返回值方法名(方法参数)>,方法类型,方法权限,方法类别}。

其中,包名和方法名构成一个API的实体,唯一标识一个API。方法类型分为Source、Sink和Normal。方法权限即该敏感API申请的安卓权限。方法类别为API所属不同敏感类别,按照API的功能划分为26类。上述格式的每个API作为一个节点,API间的调用关系作为有向边,构成了对应APK的API调用图。

3.3 社交网络检测

Figure 1 System overview

为了尽可能地贴近真实情况,本文从谷歌应用商店中随机抓取了样本,并在2012—2018年间每个年份选取良性和恶意样本各120个(共计1 920个)用于社交网络检测的统计分析。

上述数据集经过社交网络划分后,个别社区中包含的敏感节点数目异常多。排查发现,在异常社区中绝大部分节点连接到一个非敏感API节点{,Normal}。它是java运行时异常处理API。大部分自定义的方法中包含异常处理。这种“超级节点”的存在,把原本不存在关系的敏感节点联系在一起,破坏了社区划分的结构。所以,在构建调用图时,需要过滤掉该节点再进行社区检测。

笔者期望APK对应的特征图像的每一行排列一个社区,以便于卷积神经网络识别。但目前社区中包含的敏感节点数仍较多且分布离散。本文对每个社区再使用Louvian[12]算法进行一次划分。如表1和图2所示,二次社区划分之后的小社区中敏感节点数目集中在2~5。

表1 社区中敏感节点分布比例

图2 社区中敏感节点数目分布统计

Figure 2 Distribution statistics of the number of sensitive nodes in the community

根据上述分布结果,可以确定图像的宽度。本文选取图像宽度为4。这么做是基于这样的考虑,宽度选得过窄,过小的卷积核不能有效地提取模式信息;宽度选得过大,图像中需要填充的空白节点就会增多,从而导致图像的尺寸变大,卷积神经网络模型中参数增多,训练和检测分类时的开销都增大。

3.4 构建规则图像

3.4.1 敏感度计算

本文按照敏感度由大到小将社区中敏感节点排列为规则图像。敏感度是一个统计值,借鉴了词频-逆文本频率[13](TF-IDF,term frequency- inverse document frequency)的概念。TF-IDF旨在反映一个术语对语料库中某个文档的重要程度。

衡量一个API的敏感度,即该API出现所代表的发生恶意行为的可能性大小。基于这样的观察:敏感API,如connect(),虽然经常出现在恶意行为模式中,但良性应用也多用它来进行网络连接。所以它的恶意敏感程度并没有很高。参考TF-IDF,直观上,一个API的敏感度应该与其在恶意数据集中出现的频率正相关,而与其在良性数据集中出现的频率负相关[14]。

本文针对目标数据集进行敏感度计算,根据敏感度的定义计算出的敏感度分布如图3所示。从图中可以看出,75%敏感API的敏感度为零,即大部分敏感API并没有在恶意应用数据集中出现,而能够体现恶意行为的是剩余的6 415个敏感API,其中,5 597个敏感API的敏感度低于0.2,其余具有较强恶意程度区分度的敏感API仅为818个,约占总数的3%。

Figure 3 Sensitivity distribution of sensitive API

3.4.2 确定图像高度

如图4所示,本文按照社区敏感度从大到小递减依次由上到下排列社区,同样地,大社区中划分的小社区也按照敏感度由上到下排序。而一个小社区中的敏感节点则按照敏感度由大到小递减依次从左到右排列到图像中。为了把整个图像像素更紧凑地排列,本文采用如下算法:大社区内的小社区并非严格由上到下排列,如果排列当前小社区后本行剩余的空白像素能够容纳下一个小社区,就在当前行排列下一个小社区;否则,另起一行。同时,为了保存大社区间的界限,大社区间强制换行隔开。这样,相当于将数目较小的小社区(通常是包含1到2个节点的)填充到大社区空隙中,既有效且紧凑地排列了像素,又保持了不同社区的界限。

图4 图像构建方式

Figure 4 Image construction method

图5 高度分布统计

Figure 5 Image height distribution statistics

表2 图像长度效果对比

最后介绍特征图像中实际排列的像素点。本文将敏感API按类别进行编号并将编号归一化后作为单通道的单通道像素。敏感的API总体可以分为两类(Source和Sink)。Source和Sink各有17 372个和7 784个。Source类API从1开始递增到17 372依次编号,而Sink类API从-1开始递减到-7 784依次编号。相同类别(如网络和位置相关)的API会被连续编号。空白像素用0表示。为了获得更好的分类效果,需要归一化处理。本文把编号除以类别总数来将像素归一化到-1~1。例如,编号为20的API{com.android.internal. telephony.sip.SipPhone: java.lang.String getLine1 AlphaTag()>, Source, UNIQUE_ IDENTIFIER,}属于Source类,则其实际对应的像素为20/17372= 1.15128×10-3。总体来说,特征图像包含了API调用组合模式、区域敏感度分布、不同的敏感API种类等信息。

3.5 卷积神经网络设计

3.6 卷积层可视化分析

卷积层梯度权重类激活映射[3]可视化是一种可以让已训练的CNN模型指出图像中作为分类依据中的区域的方法。该技术的思路是将CNN模型最后输出归为类别C的特征卷积层,采用反卷积(deconvolution)和导向反向传播(guided-backpropagation)的方法倒推出图像上每个像素点的对最后分类结果C权重。这样就可以用热力图的形式直观地解释模型究竟是通过哪些像素点判定图像的类别为C的。

表3 卷积网络模型

将全部的特征图对类别C的权重值进行加权和计算并过滤掉负值后,得到类别C的热力值。

表4 数据集总览

4 评估实验

4.1 实验设置

本文通过约2 000行Python代码实现了原型系统,利用Apktool[10]进行APK文件的反汇编,选用图论与复杂网络建模工具Networkx进行调用图的构建,选用python-igraph工具包中Louvain[12]算法包进行社区检测,在深度学习框架Pytorch上搭建了神经网络网络,修改了卷积可视化工具Pytorch-Grad-CAM来实现卷积层梯度权重可视化。实验软件系统为Ubuntu 16.04,硬件CPU为 Intel Xeon CPU E7-4820,频率2.0 GHz,内存为256 GB,显卡为Tesla P100-PCIE显存16 GB。

为了评估系统,本文采用Android恶意软件检测系统malscan-android的数据集,从中选取了2012年—2018年7年间的13 365个良性应用和13 514个恶意应用,如表4所示。本文用4个指标评估模型分类性能,分别为精确度(P,precision)、召回率(R,recall)、F-分数(F1)和准确率(A,accuracy)。

4.2 实验结果

本文设置了4个实验来验证系统的效果,第1个实验验证模型有效性,在整体数据集上达到了93%的精确度和召回率。第2个实验验证系统的抗演化能力,即抵御恶意应用变种的鲁棒性。第3个实验验证与机器学习检测方法相比,本文系统在性能开销上的优势。第4个实验分析验证卷积层权重可视化来挖掘恶意软件行为模式的正确性。

实验1 有效性

本实验将数据集分为80%的训练集和20%的验证集,在验证集上验证模型的有效性。为了模型能够尽快收敛,实验设置的初始学习率为0.004,批处理大小为32。

表5 有效性

实验2 鲁棒性

本实验用2015年的数据集进行了训练,并依次在2016年、2017年和2018年的数据集进行测试,结果如表6所示。实验结果中精确度一直较高,说明模型对学习到的已有的恶意行为模式能正确识别。召回率下降比较明显,说明系统的漏报率较高,主要原因是不同年份的恶意应用的恶意模式不相同。总体上,F1分数并非逐年下降,如图6所示,表明本系统具有相当的鲁棒性,系统的表现依赖于新的未知恶意行为模式在整体数据集中的占比。

表6 鲁棒性

图6 鲁棒性

Figure 6 Robustness

实验3 运行性能

本实验在2018年的所有恶意样本上统计了方法中各个阶段所需要的平均时间,如表7所示。与要提取大量特征的传统机器学习方法MaMaDroid[7]和Drebin[4]相比,本文方法在检测效率上表现较好。在平均情况下,反汇编阶段消耗了较多时间,其次是调用图和特征图像构建。如图7所示,随着样本的规模变大,调用图和特征图像的构建开销显著增大,主要是社交检测和社区内部多次排序的时间消耗增大。由于最终提取的特征图像的尺寸固定,分类和可视化的时间开销稳定在2 s和1 s左右。

表7 运行时间

实验4 可视化分析

本实验对2018年的全部恶意样本生成了热力图,并输出其特征敏感API调用组合。本文挑选重点样本说明可视化效果。以SHA256值为C0D52E768A891B5650CDE6810B6B13B2645FAFC61D7C4A70B64F06A98C70751B的样本为例,VirusTotal[24]中21个引擎报告其为广告恶意软件,该样本包含365个敏感API,特征图像的有效像素行数为116行,剩余684行填充0。图8左侧为该样本的热力图。根据热力图的颜色可知,神经网络判别该样本为恶意应用的主要依据是特征图像上1至31行和63至74行的敏感API。该热力图116行以下都为暗黑色,说明神经网络辨别了填充的无效信息。热力图的头部往往颜色较为明亮,说明神经网络判定的主要依据是头部排列的敏感度较高的API。该样本中滑动窗口内热力值达到最高的区域为1至4行。但这并非绝对,有些样本的热力值最高的区域出现在中上部,说明卷积神经网络是依据某些特定的API组合而不是单单依赖于敏感度最高的API进行检测识别。

图7 不同大小的样本运行时间

Figure 7 Running time of samples of different sizes

该样本中滑动窗口找到的最可疑的API组合的调用关系如图8中右下侧所示,蓝色节点是用户自定义的普通函数,红色节点为Source类敏感节点,橘黄色节点为Sink类敏感节点。直观上可以定位该部分恶意代码主要位于com.iflytek.cloud.thirdparty包中ai、al、aj、w等源文件中。这些源文件经过了混淆处理。ai中定义的b函数收集了地区信息,而且b函数通过调用al中定义的a函数间接调用al中定义的b函数来收集android.telephony等敏感信息以及w中定义的a函数来收集位置敏感信息。从调用图中还能够明确看出恶意应用是通过数据结构HashMap来进行敏感信息的收集和传递。总的来说,这14个API组合的主要功能是获取位置和运营商网络等设备信息。这些信息最终会被加密传输到远端服务器,从而便于黑色产业广告商针对性地进行流量推送,这是一般广告恶意应用的最常见特征行为。

图8 样本可视化分析

Figure 8 Visual analysis of samples

5 结束语

本文提出了一种新颖的安卓恶意应用检测系统,利用社交网络检测和统计规律快速分析API调用图提取特征,输入卷积神经网络以高达93%的准确率进行快速分类。本文系统保留了恶意应用的原始高级语义,利用已训练模型,通过卷积层梯度权重可视化算法来挖掘恶意应用最可疑的API调用组合,为研究恶意应用特征行为模式提供参考。

本文设计的系统虽然可以利用卷积层可视化来解释应用程序的恶意调用模式,但目前粒度还不够细致,恶意信息的挖掘还不够深入准确,如何解决该问题将是下一步的研究工作。

[1] Google android security 2018 report[EB].

[2] RASTOGI V, CHEN Y, JIANG X. Catch me if you can: evaluating android anti-malware against transformation attacks[J]. IEEE Transactions on Information Forensics and Security, 2013, 9(1): 99-108.

[3] SELVARAJU R R, COGSWELL M, DAS A, et al. Grad-cam: visual explanations from deep networks via gradient-based localization[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 618-626.

[4] ARP D, SPREITZENBARTH M, HUBNER M, et al. Drebin: effective and explainable detection of android malware in your pocket[C]//NDSS. 2014 23-26.

[5] ZHANG M, DUAN Y, YIN H, et al. Semantics-aware android malware classification using weighted contextual api dependency graphs[C]//Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security. 2014: 1105-1116.

[6] FENG Y, ANAND S, DILLIG I, et al. Apposcopy: semantics-based detection of android malware through static analysis[C]//Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering. 2014: 576-587.

[7] MARICONTI E, ONWUZURIKE L, ANDRIOTIS P, et al. Mamadroid: detecting android malware by building markov chains of behavioral models[J]. arXiv preprint arXiv:1612.04433, 2016.

[8] NATARAJ L, KARTHIKEYAN S, JACOB G, et al. Malware images: visualization and automatic classification[C]//Proceedings of the 8th International Symposium on Visualization for Cyber Security. 2011: 4.

[9] HSIEN-DE HUANG T T, KAO H Y. R2-D2: color-inspired convolutional neural network (CNN)-based android malware detections[C]//2018 IEEE International Conference on Big Data (Big Data). 2018: 2633-2642.

[10] [EB/OL]. https://ibotpeaches.github.io/Apktool.

[11] RASTHOFER S, ARZT S, BODDEN E. A machine-learning approach for classifying and categorizing android sources and sinks[C]//NDSS. 2014: 1125.

[12] BLONDEL V D, GUILLAUME J L, LAMBIOTTE R, et al. Fast unfolding of communities in large networks[J]. Journal of Statistical Mechanics: Theory and Experiment, 2008(10): 10008.

[13] WU H C, LUK R W P, WONG K F, et al. Interpreting TF-IDF term weights as making relevance decisions[J]. ACM Transactions on Information Systems (TOIS), 2008, 26(3): 13.

[14] FAN M, LIU J, WANG W, et al. Dapasa: detecting android piggybacked apps through sensitive subgraph analysis[J]. IEEE Transactions on Information Forensics and Security, 2017, 12(8): 1772-1785.

[15] KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.

[16] SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.

[17] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 770-778.

Mining behavior pattern of mobile malware with convolutional neural network

ZHANG Xin, QIANG Weizhong, WU Yueming, ZOU Deqing, JIN Hai

School of Cyber Science & Engineering, Huazhong University of Science and Technology, Wuhan 430074, China

The features extracted by existing malicious Android application detection methods are redundant and too abstract to reflect the behavior patterns of malicious applications in high-level semantics. In order to solve this problem, an interpretable detection method was proposed. Suspicious system call combinations clustering by social network analysis was converted to a single channel image. Convolution neural network was applied to classify Android application. The model trained was used to find the most suspicious system call combinations by convolution layer gradient weight classification activation mapping algorithm, thus mining and understanding malicious application behavior. The experimental results show that the method can correctly discover the behavior patterns of malicious applications on the basis of efficient detection.

Android, rapid detection, convolutional neural network, social network analysis

TP393

A

2020−01−05;

2020−06−20

羌卫中,wzqiang@hust.edu.cn

国家自然科学基金(61772221);国家重点研发计划(2017YFB0802205)

10.11959/j.issn.2096−109x.2020073

张鑫(1993− ),男,河南汝州人,华中科技大学硕士生,主要研究方向为恶意软件检测。

羌卫中(1977− ),男,江苏南通人,博士,华中科技大学教授、博士生导师,主要研究方向为系统安全及软件安全。

吴月明(1993− ),男,湖北洪湖人,华中科技大学博士生,主要研究方向为恶意软件检测、漏洞检测。

邹德清(1975− ),男,湖南湘潭人,博士,华中科技大学教授、博士生导师,主要研究方向为软件安全。

金海(1966− ),男,上海人,博士,华中科技大学教授、博士生导师,主要研究方向为分布式计算。

论文引用格式:张鑫, 羌卫中, 吴月明, 等. 基于卷积神经网络恶意安卓应用行为模式挖掘[J]. 网络与信息安全学报, 2020, 6(6): 35-44.

ZHANG X, QIANG W Z, WU Y M, et al. Mining behavior pattern of mobile malware with convolutional neural network[J]. Chinese Journal of Network and Information Security, 2020, 6(6): 35-44.

s: TheNational Natural Science Foundation of China (61772221), The National Key Research & Development (R&D) Plan of China (2017YFB0802205)

猜你喜欢

调用敏感度安卓
iPhone不卡的秘密曝光:安卓也能享受
假体周围感染联合诊断方法的初步探讨*
一种基于属性的两级敏感度计算模型
核电项目物项调用管理的应用研究
文物表情包
安卓系统或成智能汽车标配
系统虚拟化环境下客户机系统调用信息捕获与分析①
下尿路感染患者菌群分布及对磷霉素氨丁三醇散敏感度分析
安卓机器人
利用RFC技术实现SAP系统接口通信