,
(1. 广东交通职业技术学院信息管理中心, 广东广州510650; 2. 广东警官学院网络信息中心, 广东广州510230)
随着互联网的发展,智能化终端设备已经在生活与工作中越来越常见,其中,安卓(Android)系统以其开放性占有市场最高的份额,取得了巨大成功,但是,其开放性也导致了恶意应用的泛滥,对用户的信息安全造成了巨大的威胁[1]。本文中采用3种机器学习方法(支持向量机(SVM)、神经网络和朴素贝叶斯[2])进行Android系统恶意应用的分类检测。
进程注入技术也可以称为动态注入技术,是代码注入技术的一种,通过修改寄存器、内存值等实现进程代码注入。在Android系统中实现进程注入的一般过程如图1所示。
图1 Android系统进程注入基本过程
在本文中, 目标程序在指定的进程中被即时装载, 使用的进程注入是使so文件注入到目标进程中, 而且进程注入技术通常是需要和HOOK技术相结合, 以达到控制目标进程, 实现自定义行为的目的[3]。
Android系统进程间通信主要采用Binder机制,该机制的通信模式采用客户机/服务器(C/S)架构,包含客户机(client)、服务器(server)、服务管理器(server manager)和跨进程通信(binder)这4个部分的组件。跨进程通信机制的进程间通信基本过程见图2。
图中的客户机、服务器和服务管理器之间交互都是虚线表示,原因是它们之间不是直接交互的,而是都是通过与跨进程通信驱动进行交互的[4]。
Android系统恶意应用变种迅速,家族种类繁多,确实给检测工作带来了很大的困难,虽然网络上出现了各类恶意应用,但在安装方式、功能触发和恶意负载方面都具有以下典型特征:
图2 Android系统进程间通信机制框架
2)恶意应用安装后通过以下2种方式触发启动执行,诱导用户点击运行、监听系统事件。
3)恶意负载包括特权提升、远程控制、话费吸取、隐私窃取和自我保护。
现有恶意软件行为提取通常有进程内部通信(Binder IPC)和虚拟机自省(VMI)等方式。在本文中采用的是进程内部通信注入方法进行恶意软件特征值提取,进程通过调用ioctl()函数实现进程间通信[5]。
查阅最新的Android系统官方文档, 目前定义了可以申请的应用权限有137项, 参考已有的研究中对于权限的分类和敏感权限的界定, 整理出需要重点关注的敏感权限[2-3]。 表1中展示了部分敏感权限。
敏感权限和敏感应用接口(API)存在一定的映射关系,从敏感权限寻找敏感API的思路出发,再结合已有的 Android系统应用行为研究,可以进一步确定需要拦截的行为[6]。
通常敏感行为可大致分为2种,即单一组合和行为组合。通过总结文献报道[2-3],本文中自定义了需要拦截的一系列行为组合,它们的共同特征都是需要获取用户隐私信息。本方案最终定义需要记录的敏感行为和敏感行为组合共计17项,作为特征值来构造特征向量,如表2所示。
表1 Android系统部分敏感权限列表
表2 需要记录的敏感行为
特征值寻优一直是热点关注的问题, 主要内容是从一个样本存在的许多特征属性中选取其中的一部分对回归结果和分类结果等影响最大的特征值。 当前国内该方法的研究并不多, 而国际上对它的研究主要以下几种: 1)基于相互关系度量的算法(fast correlation based filter, FCBF); 2)冗余度算法(mRMR algorithm); 3)费希尔算法(Fisher score algorithm,FS); 4)T检验算法(T-test algorithm); 5)可靠性算法(ReliefF algorithm,RF)[7]。
教师导入:时间就是生命。心脏骤停,大脑长时间缺血缺氧,脑细胞会出现不可逆地损伤。4 min内,抢救成功率约50%;4~6 min,抢救成功率约10%;6~10 min,成功率仅为4%,超过10 min,抢救成功率几乎为0。而绝大多数救护车都无法在患者突发急情后的4~6 min内赶到现场。那么,现场的人该怎么办?
在本文中,经过对原始数据的整理和特征值提取后的数据集共有300个样本,17个特征属性,并按照从a到q逐渐递增,形成序号为a—q的17种特征值组合。
根据国际上通用最优特征值选取算法的研究,最后选择了Fisher score算法对300×17型特征值矩阵进行排序见表3。结果表明,排名第1的是第10个特征值,分数为5.35,而得分小于1的特征值视为2个蓝牙操作,一个为发送文本,排名靠前的特征值当中大部分与Internet有关,也间接证明了在获得权限后进行联网操作对系统安全最为重要。
表3 最优特征值排序
在收集的300个样本数据中,良性应用和恶意应用各占150个,良性应用源自第三方应用市场中热度最高的应用,恶意应用则在库中抽取。
以下采用3种不同的分类算法(支持向量机、神经网络和朴素贝叶斯)对恶意应用进行分类检测。
支持向量机是由Vapnik等于1955年提出的一种机器学习方法。由于本文中的样本数据集呈非线性,不属于线性可分的范围,需要将低维度样本点通过核函数映射的方式转入到高维度空间中,生成多个不同的最优分类超平面,进行多维度平面的分类,因此本文中采用的是网格搜索法的支持向量机[8],同时添加了5折式交叉检验。
在前期对特征值最优选进行选取之后,将形成17个新的特征值样本组,且每个组合都是依次递增的。将17个特征值按照打分排序的结果分别组成了a—q共17组样本数据集,应用网格搜索支持向量机对该17组样本数据集进行分类,并且构造识错数矩阵。
表4中列出了采用支持向量机算法对a组样本数据集的分类实验结果。从表中数据可以看出,a组样本集进行了5次交叉验证,平均分类准确率为64.75%。
表4 采用支持向量机算法的a组样本集分类实验结果
本文中采用反向传递(BP)神经网络进行恶意软件分类检测。BP神经网络根据误差调整各层的连接权值,再用调整后的连接权值重新计算输出误差,直到输出的误差达到要求或者迭代次数溢出设定值[9]。
针对17组样本数据集,根据神经网络分类经验,选取1/2以上样本作为神经元训练分类算法,剩下的数据为测试样本,表5中给出了采用BP神经网络算法对a组样本集的恶意应用分类检测结果。结果显示,5次交叉验证的平均分类准确率为62.14%。
表5 采用神经网络算法的a组样本集分类实验结果
朴素贝叶斯(又称为信度网络)是一种基于概率推理的概率网络,是为解决不定性和不完整性问题而提出的。表6中给出了采用朴素贝叶斯算法对a组样本集的恶意应用分类检测结果。结果显示,5次交叉验证的平均分类准确率为61.37%。
表6 采用朴素贝叶斯算法的a组样本集分类实验结果
应用以上3种分类算法,按照从a—q(17种特征值组合)的顺序进行实验,每次实验共进行5次交叉验证,取平均值,实验结果列于表7中。根据实验结果分析讨论如下。
表7 3种分类算法对17种特征值组合的分类结果
1)针对本文中的300个样本的17种特征值组合组成的样本数据集,得到分类准确率最高的是支持向量机分类算法,准确率为82.78%,最低的是朴素贝叶斯分类算法,准确率为71.43%。
2)针对17个特征值组合,经过权重更新计算,发现排序后影响最大和相关性最高的特征值是第10组。
3)2个对支持向量机分类算法和BP神经网络分类算法影响最大的特征值是得分第3、7位的特征值,而对朴素贝叶斯分类算法有影响的是得分第7位的特征值,得分排在第3位的特征值对它没影响。
4)将最优排序后的17个特征值组成17组样本数据集后,发现支持向量机的最佳样本组为第o组,BP神经网络的最佳样本组为第o组,朴素贝叶斯的最佳样本组为第p组。
从3种分类算法随着样本最优特征值组合变化的分类准确率可以看出, 支持向量机、 BP神经网络、 朴素贝叶斯3种分类算法针对的17组样本进行训练和测试的分类结果中, 三者从第g组开始就处于一个比较平稳的状态, 而且支持向量机的分类准确率要高于其他2种分类算法。
本文中分别采用支持向量机、神经网络和朴素贝叶斯3种不同的机器学习方法对Android系统恶意应用进行分类检测,并从检测率、误报率和分类精度3个方面对分类结果进行评价。可以看出,支持向量机方法在Android恶意应用的分类检测上具有一定的优势。在今后的研究工作中,将进一步改进各类机器学习算法,以更好地应用到Android系统恶意应用的分类检测中去。