随着智能手机的普及,Android手机上的应用也越来越广泛,随之而来的问题是Android安全问题越来越严峻。各种恶意应用也层出不穷,严重威胁到用户的信息安全。本文首先介绍了当前的手机安全状况,并对当前的Android恶意应用的检测技术进行了分析。由于Android应用越来越严峻的形势,本文提出了一种基于改进的朴素贝叶斯算法,并应用此算法设计了恶意应用检测系统。本文中的系统应用了逆向分析的方式来产生恶意应用分类器。然后,本文对实验结果进行了分析。 With the popularity of smart phones, Android mobile applications are becoming more widely and the attendant problem about the Android security issues becomes more critical. Malicious applications are endless. It is a serious threat to the user’s information security. This paper describes the current status of mobile security and the current Android malicious application detection techniques are analyzed. As the situation of Android applications becomes more and more serious, an improved Naive Bayes algorithm is proposed. The malicious application detection system is designed by using this algorithm. The system uses a reverse analysis method to produce the malicious application classifier. The experimental results are analyzed.
石汝振
南京邮电大学通信与信息工程学院,江苏 南京
收稿日期:2016年8月19日;录用日期:2016年9月9日;发布日期:2016年9月12日
随着智能手机的普及,Android手机上的应用也越来越广泛,随之而来的问题是Android安全问题越来越严峻。各种恶意应用也层出不穷,严重威胁到用户的信息安全。本文首先介绍了当前的手机安全状况,并对当前的Android恶意应用的检测技术进行了分析。由于Android应用越来越严峻的形势,本文提出了一种基于改进的朴素贝叶斯算法,并应用此算法设计了恶意应用检测系统。本文中的系统应用了逆向分析的方式来产生恶意应用分类器。然后,本文对实验结果进行了分析。
关键词 :Android,朴素贝叶斯,逆向分析,分类器
根据360发布的《2015年中国手机安全状况报告》 [
2015全年,360互联网安全中心累计截获Android平台新增恶意程序样本1874.0万个。分别是2013年,2014年的27.9倍、5.7倍。平均每天截获新增恶意程序样本也高达51,342个。
2015全年,360互联网安全中心累计监测到Android用户感染恶意程序3.7亿人次,分别是2013年、2014年的3.8倍和1.1倍;平均每天感染量达到了100.6万人次。
在所有手机恶意程序中,资费消耗类恶意程序的感染量仍然保持最多,占比高达73.6%;其次为恶意扣费(21.5%)和隐私窃取(4.1%)。
恶意应用的开发者们不断的开发着新的恶意代码,新的木马病毒样本不断被发现。从恶意扣费、窃取隐私、隐式安装恶意软件、窃取网银密码等到远程控制操作用户的手机。Android智能手机不仅仅给用户带来了方便也导致了Android安全问题越来越严重。Android手机上恶意应用的检测越来越被人们所重视。
机器学习算法可应用于Android平台上恶意代码检测,例如朴素贝叶斯算法(Native Bayes NB算法)。但朴素贝叶斯算法存在着较高误判率的缺陷 [
Android恶意代码的检测一般分为静态检测和动态检测,在此基础上一般采用特征值检测技术和基于启发式的检测技术这两种方式 [
特征值检测是目前大多数反病毒产品普遍使用的检测技术。该技术的主要工作原理是根据特定的规则对目标文件进行扫描,并提取出特征值,与病毒库中已有的特征按照某种匹配算法进行完全匹配或者计算出相似度,若得到完全匹配或者相似度超过规定的阈值,则表示检测为病毒文件 [
启发式的检测技术包含动态和静态启发检测,静态启发是指对Android apk文件进行反编译生成smile代码和java代码,通过对文件外部静态信息分类,模拟跟踪代码执行流程来判断是否为恶意软件 [
朴素贝叶斯算法是目前公认的最简单而且有效的概率分类方法 [
朴素贝叶斯方法是基于最小错误概率规则,尽量降低分类犯错误的概率。朴素贝叶斯方法通过在程序中的恶意代码的特征信息来计算程序中包含恶意代码的可能性。当判断某段代码是否是恶意代码的时候,利用提取出的特征集合A。定义B代表所有类别的一个随机取值,B代表的是恶意样本或者普通代码,进行机器学习的目的就是计算P(B|A)来判断B是恶意代码还是普通代码。由贝叶斯公式可得,
由于贝叶斯公式的条件是特征集合A中的各个特征值相互独立,如果软件样本包含多种属性A1,A2,A3…An
从中选取最大概率作为其分类。
在恶意代码的实际分类中,由于只有两类即是否是恶意代码,所以相应的会出现两种分类错误:1)将恶意代码判断成正常代码;2) 将正常代码判断成恶意代码;如果是将恶意代码判断成为正常代码,就会带来严重的后果,使用户信息丢失等等。在传统方法中一般当P(B0|A)>P(B1|A)时就判定是否是恶意代码,但是这种方法并不精确存在很高的误判率和漏判率所以直接应用时分类偏差会比较大。
为了更准确的识别恶意代码,减少误判,设当
非恶意代码的θ倍时,将其判定为恶意代码。当θ越大,其为恶意代码的可能性就越大。由上述公式可以表示为,
也就是当P(B1|A) > h时可以判定此应用为恶意Android应用。
通过对训练样本进行分析,得到样本的特征值集合,流程图如图1所示,首先收集Android的恶意软件的样本集,对样本集进行逆向分析,在分析出的信息中提取出分类器需要的信息特征,将这些特征作为分类器的样本输入,经过改进的朴素贝叶斯算法处理之后得到Android恶意软件的检测分类器 [
当测试是否是恶意应用时,需要先对测试的样本进行逆向分析,提取出特征信息,送入分类器进行检测。流程图如图2所示。
图1. 恶意代码检测分类器的生成
图2. 分类器样本的检测
APK文件的反编译可以使用dex2jar把classes.dex文件反编译为java代码,反编译成功后的代码可以通过jd-gui进行阅读 [
通过网络收集到的软件样本600个,其中有恶意应用300个,合法应用300个。得出基于朴素贝叶斯算法的实验结果如表1所示。
由表1得知,应用朴素贝叶斯算法时,300个恶意应用中仍然有35.5个被判定为合法应用,300个合法应用中有37.7个被判定为恶意应用。实验数据说明了朴素贝叶斯算法存在着一定的缺陷。
由公式2.3和2.4可得h的范围是0~10,所以需要大量的实验来得到h值的大小。从中选取了部分h值实验结果如表2所示。可得当0 < h < 0.35时分类器的判断正确概率接近100%。
系统判定为合法应用 | 系统判定为恶意应用 | 总数 | |
---|---|---|---|
实际为合法应用 | 262.3 | 37.7 | 300 |
实际为恶意应用 | 35.5 | 265.5 | 300 |
总数 | 297.8 | 302.2 | 600 |
表1. 基于朴素贝叶斯算法的实验
系统判定为合法应用 | 系统判定为恶意应用 | 数量 | H值 | |
---|---|---|---|---|
实际为合法应用 | 258.2 | 41.8 | 300 | 0.55 |
实际为恶意应用 | 40.1 | 259.9 | 300 | 0.55 |
实际为合法应用 | 265.5 | 35.5 | 300 | 0.5 |
实际为恶意应用 | 37.7 | 262.3 | 300 | 0.5 |
实际为合法应用 | 265.8 | 34.2 | 300 | 0.40 |
实际为恶意应用 | 10.4 | 289.6 | 300 | 0.40 |
实际为合法应用 | 272 | 28 | 300 | 0.35 |
实际为恶意应用 | 0 | 300 | 300 | 0.35 |
实际为合法应用 | 287 | 13 | 300 | 0.27 |
实际为恶意应用 | 0 | 300 | 300 | 0.27 |
表2. 基于改进朴素贝叶斯算法的实验
本文对现有的恶意应用的检测技术进行了分析,在一种朴素贝叶斯算法的基础上提出了一种改进型的朴素贝叶斯算法,并设计了一个检测系统对该改进算法的优势进行了检测。提高了恶意应用的检测概率,但是也存在着将合法应用判定为恶意应用的误差,这是算法需要进一步改进的地方。
石汝振. 基于改进朴素贝叶斯算法Android恶意应用的检测研究Detection of Malicious Application Based on Improved Naive Bayesian Algorithm Android[J]. 安防技术, 2016, 04(03): 39-44. http://dx.doi.org/10.12677/JSST.2016.43006