logo资料库

论文研究-一种基于深度学习的Android恶意应用检测方法 .pdf

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
中国科技论文在线 一种基于深度学习的 Android 恶意应用检 http://www.paper.edu.cn 测方法 王天奇1,陈平阳2,何能强3,张华1** (1. 北京邮电大学网络与交换技术国家重点实验室,北京 100876; 2. 福建互联网应急中心,福州 350005; 3. 国家计算机网络应急技术处理协调中心,北京 100029) 摘要:目前针对 Android 恶意应用检测方法主要有基于规则的传统检测方法与基于机器学习 的统计学习检测方法,前者检测方法没有学习能力,面对新出现的恶意样本需要不断的扩充 规则库才能够对其进行检测;后者虽然具有一定的学习能力但是需要人工提取特征,一旦提 取的不好会导致模型较差的检测正确率。本文创新性的提出了基于深度学习的 Android 恶意 应用检测方法,将 5000 个正常应用与 1200 个恶意应用的原始的特征通过深度 AutoEncoder 模型降维并提取有效特征,将自动提取的特征输入到逻辑回归分类模型中训练分类检测模 型。通过增加恶意应用样本的权重比例来解决训练样本中正常应用数量远多于恶意应用样本 数量的问题。实验结果表明本方法比传统机器学习恶意应用检测方法具有较好的检测效果, 模型的召回率达到了 93%。 关键词: Android 系统;恶意应用检测;静态分析;深度学习 中图分类号:TP309 A Android Malicious Application Detection Method Based on Deep Learning Wang Tianqi1, Chen Pingyang2, He Nengqiang3, Zhang Hua1 (1. State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876; 2. Fujian Internet Emergency Center, Fuzhou 350005; 3. National Computer Network Emergency Technology Coordination Center, Beijing 100029) Abstract: At present for the Android malicious application detection methods mainly include traditional detection method based on rules and statistics analyse method based on machine learning, the detection method do not have the ability to learn, the only way to detect new malicious sample is increasing the number of malicious application samples; although the latter has a certain learning ability but it need extract feature manually, once the extraction is bad it will cause the bad correct detection rate. This paper puts forward the detector malware application way base on deep learning. The detection method based on 5000 normal applications and 1200 malicious applications, the original characteristics put into AutoEncoder model, that can reduce feature dimension, then inputing the feature into the logic classification model to train the regression classification model. By increasing the weight ratio of malicious application samples, to slove the number of normal applications is far more than the number of malicious applications problem.The experimental results show that this method has better detection effect than the traditional machine learning malicious application detection method, and the recall rate of the model is 93%. Keywords: android system; malicious application detection; static analysis; deep learning 0 引言 Android 操作系统近几年越来越流行,目前已经成为了在应用市场占据主导地位的智能 作者简介:王天奇(1993-),男,主要研究方向:移动互联网安全、机器学习 通信联系人:张华(1978-),女,副教授、博导,主要研究方向:密码协议、物联网、移动互联网安全. E-mail: zhanghua_288@bupt.edu.cn - 1 - 5 10 15 20 25 30 35 40 45
中国科技论文在线 http://www.paper.edu.cn 手机操作系统。而然由于 Android 系统的开源性与流行性使其成为了攻击者的首要攻击目 标,恶意 Android 应用的数量急剧的增长[1],严重的影响着人们的信息财产安全。Android 恶意应用的检测也就成为了重要的研究内容与研究方向。 目前 Android 恶意应用的检测方法主要有基于签名的检测方法与基于机器学习的检测 方法[2]。大多数的 Android 安全检测软件检测恶意应用时都是基于签名的检测方法,著名的 Android 安全检测工具 Androguard 就是使用基于签名的检测方法。然而该方法只能检测在签 名库内的恶意应用,当签名库内的恶意应用出现重新打包、代码混淆等变化时,基于签名的 检测方法是无法检测出该恶意应用的[2]。 由于机器学习技术可以学习样本的特征信息[3],近几年机器学习技术逐渐的用来学习检 测 Andoird 恶意应用并取得了一定的效果,基于机器学习的方法虽然可以学习到恶意样本的 特征,对于恶意应用的变体具有一定的检测能力,但是由于传统浅层机器学习模型的学习能 力有限,只是能够检测出少部分变体应用,大部分的变体应用还是无法正确的检测[4]。 本文针对上述方法中的局限性,提出一种基于深度学习的 Android 恶意应用检测方法。 首先,对 Android Apk 反编译得到 Java 源代码,然后提取源代码中的包、类、函数三个不 同粒度级别的训练特征,将提取到的特征通过 One-hot 编码来为每个 Apk 构造特征向量。其 次,训练基于深度学习的 AutoEncoder 模型对特征向量进行降维与特征提取。最后,使用通 过 AutoEncoder 模型降维后的特征向量训练逻辑回归模型来对 Android 恶意应用分类检测。 本文的创新点与贡献如下: (1)创新性的在 Android 恶意应用检测问题上引入深度学习对原始特征进行抽象提取,使 50 55 60 65 用检测模型具有较高的检测能力。 (2)从 Apk 源代码的包,类,函数三个不同的粒度级别提取特征。从而使特征能够充分的 刻画 Apk 行为,为模型具有较高的检测正确率奠定了基础。 (3)针对训练样本中的正常应用较多,恶意应用较少的非均衡分类情况,在训练逻辑回 归模型时增大恶意应用的权重,来提高模型的泛化能力。 1 方法概述 70 本文中提出了基于深度学习方法对 Android 恶意应用分类检测的模型,模型从大量的训 练样本中通过深度学习方法学习应用的行为模式,从而对未知的应用样本进行有效的判别。 模型的训练过程如图 1 所示,主要分为四个阶段:特征提取,深度学习降维,模型的训练, 模型的测试。 正常 Apk 特征提取 深度学习模型 训练分类模型 未知的 Apk 恶意 Apk 原始特征 提取好的特征 75 Fig.1 Training process of model 图 1 模型的训练过程 - 2 - 恶意应用分类 器 预测出的类别
80 中国科技论文在线 http://www.paper.edu.cn 在特征提取阶段本文从 Apk 源码中的包,类,函数三个不同的粒度级别提取特征,通 过 One-hot 编码方式将特征编码为特征向量来标示 Apk。在深度学习降维阶段将原始的 2000 维稀疏的特征向量通过 AutoEncoder 模型降到 128 维,使降维后的特征向量具有充分的表达 能力。在模型的训练阶段,由于正常的样本数远多于恶意样本数导致了非均衡分类问题,训 练逻辑回归模型时调整正常样本与恶意样本的权重比例,分别按照 1:1、1:2、1:3、1:4、1:5、 1:6 不同的比重训练模型;在模型的测试阶段单独的划分模型的测试集合,计算模型的召回 率,F1 值来评估模型的性能。 85 2 特征提取 本节中重点介绍特征提取的方法,目前 Android 恶意应用的静态分析检测已经比较成熟 [5],本模型的特征提取基于 Android 静态分析方法,即从源代码级别提取特征。首先提取 Apk 中的 classes.dex 文件,然后使用 dex2jar 将 dex 文件转变为 class 文件,再使用 jad 工具 将 class 文件转化为 java 源代码, 最后扫描源代码提取包、类、函数级别的特征。接下来描 述不同粒度级别的特征提取。 2.1 包级别的特征提取 大多数的 Android 应用包含第三方的包,市场上 71%的 App 含有广告包,而且这些包 经常会执行一些可疑的行为,所以将源码中的包信息作为分类的特征是十分必要的。反编译 得到 Apk 的源码,在 每个 java 文件中的 import 语句后面跟着的就是导入的包信息。例如 android.telephony, android.content,其中的 telephone 与 content 就是包信息,即可将其提取出 来构成恶意检测的特征信息。作为粗粒度级别的特征信息。 One-hot 编码成特征向量,即 f_package = [1,0,0,0,1,1,0,1,1,0,0,1], 向量中元素的值为 1 代 选择 Android 官方标准的 500 个包作为基准,对于每个具体的 Apk 中的包信息通过 90 95 表该位置对应的包出现在了该 Apk 中;元素的值为 0 代表该位置对应的包没有出现在 Apk 中。 100 2.2 类级别的特征提取 除了包级别的特征外,作为比包级别的特征更加细粒度级别的特征 Android 源码中的类 信息也是体现 Android 行为的重要信息。例如 NetworkInfo、SmsManager 等类中包含了很多 敏感操作行为,在 Android 源码中包级别信息后面紧跟的就是类级别的信息,逐行遍历 Java 文件即可完成对类级别的特征的提取。 One-hot 编码成特征向量,即 f_class = [1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,1],向量中元素的值为 1 选择 Android 官方标准的 500 个类作为基准,对于每个具体的 Apk 中的类信息通过 105 代表该位置对应类的信息出现在了该 Apk 中;元素的值为 0 代表该位置对应的类没有出现 在 Apk 中。 110 2.3 函数级别的特征提取 作为比类级别更加细粒度的特征,函数级别的特征直接的反映了 Apk 行为的信息,Apk 中任何的行为信息都与具体的函数相对应。例如函数 sendTextMessage、getDeviceId 分别代 表发送短信行为与获取设备号行为。 选择 Android 官方标准的 1000 个函数作为基准,对于每个具体的 Apk 信息通过 - 3 -
115 中国科技论文在线 One-hot 编码成特征向量,即 f_function=[0,1,0,1,1,1,1,0,0,1,0,1,0,1]向量中元素的值为 1 代 体 Apk 的特征信息,即f_inal = [f_package,f_class,f_function]。最终的特征向量的维度为 表该位置对应函数的信息出现在了该 Apk 中;元素的值为 0 代表该位置对应的函数没有出 现在 Apk 中。 至此就得到了三个不同粒度级别的特征信息,将三个特征信息融合来得到最终标识具 http://www.paper.edu.cn 120 2000 维。然而大多数应用中包含的特征信息量不超过 500 个,所以这 2000 维的特征向量比 较稀疏,存在大量的非零元素。直接将这么稀疏的向量输送到模型中训练会比较耗时,而且 125 130 135 140 存在太多的冗余信息使模型没有很好的分类效果。需要下文中的深度学习模块来对特征进行 降维、去除噪声等操作。 3 深度学习降维 深度学习(Deep Learning)是机器学习中一种基于对数据进行表征学习的方法,利用非监 督或者半监督的特征学习和分层的特征提取高效的算法来代替手动的提取特征[6],由于其高 效的特征提取方法,目前被广泛的应用在了自然语言处理,计算机视觉,语音识别中,并取 得了不错的效果。然而深度学习目前在 Android 恶意应用检测上的应用还非常少,本文创新 性的将深度学习技术应用到 Android 恶意应用检测上来,通过基于深度学习的 AutoEncoder 模型对特征提取在此基础上再训练分类检测模型。 3.1 AutoEncoder 模型介绍 AutoEncoder 模型是深度学习中降维效果比较好的模型,经常用于数据的编码表示,特 征的降维等场景[7]。作为一种无监督学习的降维算法,其训练目标是输出等于输入,并通过 反向传播算法来训练整个网络。基本的三层网络的结构图如图 2 所示。 x1 x2 x3 x4 h1 h2 y1 y2 y3 y4 图 2 AutoEncoder 基本模型 Fig. 2 The base model of AutoEncoder AutoEncoder 尝试学习一个 h(x)=y 的函数。也就是说 AutoEncoder 尝试逼近一个恒 等函数,使得输出接近于输入。对于中间的隐藏层加一些限制,就等得到特征的压缩表示, 也就达到了降维的效果。例如,如果输入数据为 100 维,隐藏层为 50 个,那么就需要从这 50 维的数据中重构出 100 维的输出,使这个输出接近于 100 维的输入。因此这个隐藏层的 50 维的数据就必然会包含着输入数据的一些相关性。所以 AutoEncoder 就是为了学习到输 入数据的相关性表示的一种方法。使用 AutoEncoder 模型时就将中间隐藏层的输出作为特征 降维后的结果。 - 4 -
中国科技论文在线 3.2 本文使用的 AutoEncoder 模型 145 http://www.paper.edu.cn 本文所用到的模型是基于 AutoEncoder 的深度网络模型,是具有两个隐藏层的模型。在 训练时采用逐层训练的思想,即在训练好第一个隐藏层的基础上,将第一个隐藏层作为输入 来训练第二个隐藏层,最后将第二个隐藏层的输出作为模型最终的降维输出。训练好的模型 如图 3 所示。 150 x1 x2 x3 x4 x5 h1 h2 h3 图 3 本文的深度网络模型 Fig. 3 Depth network model o1 o2 模型中的多个隐藏层可以看做是对原始输入的特征信息不同程度上的抽象。本模型的原 始输入是包含包,类,函数信息的 2000 维的向量,在第一个隐藏层压缩到 1000 维此时输出层 维度也是 2000 维,训练好后去掉输出层使用隐藏层作为当前输出;第二个隐藏层压缩到 500 维,使用第一个隐藏层输出作为输入,此时输出的 500 维作为模型最终的输出。压缩到 500 维的特征向量与原输入中的 2000 维的稀疏的特征向量相比,更加有效的表达了输入的特征, 去掉了一些冗余特征的干扰。使用压缩后的 500 维的特征向量训练模型大大加快了模型的训 练时间与预测时间,使短时间内训练出高效的模型成为可能。 4 分类模型的训练 现在需要训练二分类模型来对 Apk 是否是恶意应用进行分类检测。由于前期通过基于 深度学习的 AutoEncoder 模型进行降维后,对于 Apk 的特征信息有了比较好的提取,所以分 类模型选择比较简单的逻辑回归即可得到很好的分类效果,又能提高模型的训练时间与预测 时间。 4.1 逻辑回归模型介绍 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效, 在实际中应用非常广泛[8]。也是一种广义线性回归(generalized linear model),因此与多重 线性回归分析有很多相同之处。它们的模型形式基本上相同,都具有w∗x+b ,其中w,b是 待求参数,其区别在于他们的因变量不同,多重线性回归直接将w∗x+b作为因变量,即 y=w∗x+b,而 logistic 回归通过函数表达式(1)[8]: L(x)= (1) 将w∗x+b作为输入变量输入到公式(1)中,即p=L(w∗x+b),从而得到一个隐状态p,p的 取值在 0 到 1 之间,然后根据p与1−p的大小决定因变量x所属的类别。在二分类问题中当 p>1−p则判别为第一类;当p≤1−p时则判别为第二类,这样就通过逻辑回归模型实现了 - 5 - 155 160 165 170 175
中国科技论文在线 两个类别之间的分类。 4.2 逻辑回归分类模型的训练 http://www.paper.edu.cn 逻辑回归模型建立在之前的深度 AutoEncoder 模型的基础之上,将 AutoEncoder 模型输 出的 500 维的特征向量作为输入,来训练模型来对 Apk 是否是恶意进行分类检测。每个参 与训练的 Apk 样本通过特征提取模块转换成 2000 维的特征向量,再通过 AutoEncoder 模型 降到 500 维作为逻辑回归的输入向量来训练逻辑回归的分类模型。 逻辑回归的训练采用最大似然估计的方法训练模型参数即训练模型参数使得训练样本 出现的概率最大,以此作为训练目标按照似然函数的导数方向不断的迭代更新参数的取值 [9],直到模型收敛,此时的逻辑回归模型可以用来对未知的 Apk 进行分类检测。逻辑回归分 类模型的训练过程如下图 4 所示。 循环执行指定的次数 选择一批样 本 输入到损失 函数中求导 正常应用 恶意应用 图 4 逻辑回归的训练过程 Fig. 4 The process of training logist model 按照导数的 值来更新训 练参数 输出训练好的模型 逻辑回归 分类模型 本文中的逻辑回归分类模型的训练通过 5000 个正样本来自百度,360 手机应用市场与 1200 个负样本来自北卡罗来纳州大学的 Android 恶意应用基因工程计划[10],按照梯度下降 的方法迭代训练 1000 次使其收敛。接下来的章节中会单独划分测试集来对模型的性能进行 测试。 5 恶意应用检测模型的评估 180 185 190 目前为止一个未知的 Apk 经过特征提取模块,深度学习降维模块,逻辑回归模块已经 195 可以给出该 Apk 所属的类别。检测的流程图如下 Fig5 所示: 未知类别 的Apk 深度 AutoEncoder 降维 逻辑回归模型 该Apk所属的类 别 图 5 恶意应用分类检测流程图 Fig. 5 Flowchart of malicious application classification detection 200 参与训练的 Apk 样本中正常的样本数量有 5000 个恶意应用的数量有 1000,参与测试模 型的正常应用有 1000 个恶意应用有 200 个。由于恶意样本的数量有限,远少于正常样本, 是典型的非均衡分类问题。要解决此类问题需要在逻辑回归模型中增大恶意样本的权重比 - 6 -
中国科技论文在线 http://www.paper.edu.cn 例,正常应用与恶意应用的权重比例按照 1:1,1:2,1:3,1:4,1:5 不断的调整权重比例来训 练分类模型,并对不同的权重比例训练出的模型的检测效果进行评估。 5.1 机器学习模型的评估标准 205 机器学习模型中常用的评估指标有正确率,精确率,召回率,F1 值。对应到本文中的 Android 恶意应用检测问题,假设恶意应用为正例正常应用为负例。则各个评价指标的具体 解释如表 1 所示: Tab. 1 Concept interpretation of machine learning evaluation index 表 1 机器学习评价指标概念解释 评价指标 概念解释 正确率 预测对的样本数与样本总数的比值 精确率 预测对的正类样本数与模型预测出的正类数的比值 召回率 预测对的正类样本数与真正的正类数量的比值 F1 值 精确率与召回率之间的调和平均数 210 215 220 225 单一的精确率高并不能说明模型具有很强的召回率,F1 值是综合评判模型性能的指标。 在这种恶意检测的机器学习模型中,除了 F1 值外,召回率也是非常重要的评价指标,即我 们希望我们模型的预测对的恶意应用数量尽量的接近真正的恶意应用数量。所以最终选择 F1 值与召回率作为模型的评价指标。 5.2 Android 恶意应用检测模型的具体评估 单独的划分测试集来对本文中的检测模型进行评估,测试集中包括 1000 个正常 Apk,200 个恶意 Apk。为了与本文中提出的基于深度 Autoencoder 的逻辑回归模型做比较,引入没有 使用 Autoencoder 降维的特征训练出的逻辑回归模型,SVM 模型,朴素贝叶斯模型。 Mod1: 使用深度 AutoEncoder 模型降维的逻辑回归分类模型。 Mod2: 没有使用深度 AutoEncoder 模型降维的逻辑回归分类模型。 Mod3: SVM 模型。 Mod4: 朴素贝叶斯模型。 在 5000 个正常 Apk,1000 个恶意 Apk 的训练样本中分别按照正常应用与恶意应用的权 重 比 例 为 1:1,1:2,1:3,1:4,1:5,1:6 来 训 练 以 上 4 个 模 型 , 不 同 的 权 重 比 例 标 示 为 weight1,weight2,weight3,weight4,weight5,weight6。每个模型的评估指标选择 F1 值,召回率, 恶意的 Apk 作为正例,正常的 Apk 作为反例。 不同模型在不同训练样本权重比例下的召回率如图 6 所示: - 7 -
中国科技论文在线 http://www.paper.edu.cn 图 6 不同模型的召回率折线图 Fig. 6 The broken line graph of different models' recall 230 图中横坐标代表正常应用与恶意应用的 6 组不同的权重比例,纵坐标代表模型的召回 率,观察 Fig6 可知正常应用与恶意应用的权重比例为 1:4 时 4 个模型的召回率均取得了最 大值,分别为 0.93、0.87、0.87、0.82,且不论权重比例如何变化,Mod1(本文提出的恶意 应用检测模型)的召回率要好于其他三个模型的召回率。 不同模型在不同样本权重比例下的 F1 值如图 7 所示 235 240 Fig. 7 F1 value broken line graphs of different models 图 7 不同模型的 F1 值折线图 Fig7 中横坐标代表正常应用与恶意应用的 6 组不同的权重比例,纵坐标代表模型的 F1 值当正常应用与恶意应用的权重比例为 1:4 时 4 个模型的 F1 值均取得了最大值,分别为 0.643、0.609、0.62、0.528。此时 Mod1 的 F1 值要好于其他模型的 F1 值。 从召回率与 F1 值可以看出,在 5000 个正常应用与 1000 个恶意应用组成的训练集合上 基于深度 AutoEncoder 的逻辑回归检测模型对恶意应用的检测效果要好于其他检测模型。在 训练时调整正常应用与恶意应用的权重比例也解决了正常应用与恶意应用两个类别数量不 均衡的分类问题,当正常应用与恶意应用的权重比例为 1:4 时模型得到了最好的检测效果。 - 8 -
分享到:
收藏