基于支持向量机的Androdi恶意软件静态检测技术的研究

2016-05-14 03:06苗发彪王晴
网络空间安全 2016年5期
关键词:支持向量机

苗发彪 王晴

[摘要]随着Android系统的流行与普及,Android软件的种类和数目激增,但是其中存在着不少窃取用户隐私、恶意扣费的软件。因此,Android恶意软件的检测技术一直是人们关注和研究的热点。论文在介绍支持向量机以及Android恶意软件检测后,将二者有效地结合,构建由权限、监听的系统事件、敏感API以及权限率组成的特征向量,并且建立了基于支持向量机的Android恶意软件静态检测模型。最后,论文通过模型的测试验证了该方法的有效性。

[关键词]Android;恶意软件;支持向量机;静态检测

1 引言

Android恶意软件由于直接危害人们的日常生活,所以一直是工业界和学术界的研究热点。Android恶意软件的检测技术大致分为动态检测技术和静态检测技术。动态检测技术将软件运行在一个模拟的封闭环境,通过共享库注入和hook技术获取软件运行时调用的函数,从而进行行为分析。其正确率高,但是检测过程相对复杂,消耗资源较多,而且在自动化测试软件时很难激活所有的软件的行为。静态检测技术是在不运行软件的前提下,对给定软件所申请的权限以及反编译得到的Dalvik字节码的语法和语义进行分析。其正确率同样较高,速度快,自动化程度高。但是静态检测技术对未知软件进行检测时准确率较低,即恶意软件特征的普适性较差。

2 Android恶意软件检测与支持向量机

Android恶意软件本质是一个分类问题,而机器学习来解决分类问题是当前社会的热点。用机器学习来实现Android恶意软件的检测,需要将Android软件抽象为一个特征向量,选取合适的算法和训练数据建立模型,进而对未知的软件进行恶意检测。这样,Android恶意软件检测的正确率很大程度上取决于训练数据的数量、算法的合适度与参数、以及特征向量的构建。在众多的机器学习算法中,支持向量机可以较好地实现高维数据分析,满足恶意软件特征向量维度较高的特性。

支持向量机(support Vector Machine,SVM)是源于统计学习理论,常用于回归分析和统计分类,已经成功运用于很多生产与实验环境中。其思想就是根据样本的分布寻找最佳分类器。在众多可以将样本分开的分类器中,只有一个分类器与每个类别中最近的样本的距离最大,称之为最大间隔超平面。

3 模型的框架与样本收集及预处理

3.1 模型的框架

该模型的框架如图1所示。

3,2 样本收集及预处理

本文实验中正常软件的样本来源为安卓市场和机锋市场,恶意软件的来源为http://virusshare.com/。该网站是国外的一个专门用于研究的病毒样本库,正常软件和恶意软件的比例为1:1,均是1068个。然后使用apktool.jar反编译所有的APK,正常软件和恶意软件各选取700个作为研究对象进行统计分析,构成训练集。正常软件和恶意软件各自剩余的368个APK构成测试集。

4 特征向量的确定

4.1 权限

Android权限机制是指当一个应用需要访问某些文件、数据和资源时,必须要在相应的文件中申请,遵循“最小特权”原则。Android恶意软件也不例外,比如恶意软件要在用户未知的情况下秘密的发送消息,它必须申请权限SEND SMS,因此分析一个软件的权限是恶意软件检测过程中的重要组成部分。

但是,权限的提取如果仅仅侧重于发送短信、读写操作等权限,不能很好的反应Android恶意软件的特征,例如,正常软件中同样也存在着发送短信和读写操作的权限。因此,本文统计了700个正常软件和700个恶意软件中申请的所有权限,计算某个权限在700恶意软件中出现的次数和在700个正常软件中出现的次数的比值,由高到低列出大于1的权限,共提取WRITE、UPDATE DEVICE STATS等9个权限。

4.2 监听的系统事件

Android广播机制是指每当系统事件发生时会产生广播,通过定义广播接受者即可接受广播进而采取相应的活动。Android恶意软件的触发常常是监听系统事件,如系统开机BOOT COMPLETED。

同理,监听的系统事件如果仅仅侧重于开关机、电池状态改变等事件,不能很好地反应Android恶意软件的特征,因此本文统计了700个正常软件和700恶意软件中所有监听的系统事件,计算某个监听的系统事件在700恶意软件中出现的次数和在700个正常软件中出现的次数的比值。由高到低列出大于1的监听的系统事件,共提取DATA SMS RECEIVED、AIRPLANE MODE等5个监听的系统事件。此外,监听电池状态改变事件在恶意软件中出现6次,而在正常软件中从未出现,因此本文将BATTERY CHANGED ACTION也作为特征向量的组成部分。

4.3 敏感API

对于给定的一个APK。利用相关工具如apktool可以得到其反编译的smali文件。每个smali文件都由若干条语句组成。通过分析smali文件,可以清楚的知道该APK定义的类、函数,进而分析其代码的逻辑搞清楚Android软件的行为。敏感API的提取可以从smali文件中获取。本文从短信操作、系统信息、联系人操作这三个用户十分关心的方面人手,在反编译的APK文件中,对侵害用户隐私的API进行搜索提取,共提取sendTextMessage()、getSubscriberId()等12个敏感API。

4.4 权限率

本文指的权限率定义如下:pr=pn/ss,其中pr为定义的权限率,pn为该APK申请的权限数目,ss为该APK经过反编译后smali文件夹的大小(单位为MB)。权限率的提出是基于这样的假设,恶意软件存在权限滥用的机制,而且从一定程度上来看,一个正常的软件申请的权限越多,相应的功能也就越多,反编译后smali文件夹也就越大。因此。整体来说。恶意软件的权限率要比正常软件的权限率大,所有一个软件的权限率也可以成为一个恶意软件的检测特征。

5 模型的建立与检验

本文在确定特征向量的格式后,对700个正常软件和700个恶意软件的反编译后的文件进行搜索,存在上述特征的,该维度即为1,不存在的即为0,再计算每个APK的权限率,将每个APK抽取出一个28维度的特征向量,共计1400个特征向量。使用Java语言和libsvm.jar库建立模型,对剩下的736个样本采用同样的方法组成测试集,进行模型验证,得到模型检测的正确率为86%,具有一定的有效性。

6 结束语

本文介绍了支持向量机原理和Android系统的若干机制,构造由权限、监听的系统事件、敏感API以及权限率组成的特征向量,建立了基于支持向量机的恶意软件静态检测模型,并进行测试验证了其有效性,为Android恶意软件的检测提供了一种解决方案。

猜你喜欢
支持向量机
基于改进支持向量机的船舶纵摇预报模型
基于SVM的烟草销售量预测
动态场景中的视觉目标识别方法分析
论提高装备故障预测准确度的方法途径
基于熵技术的公共事业费最优组合预测
基于支持向量机的金融数据分析研究