符合学术规范的学术服务

基于机器学习的 Android 恶意软件检测实验

分类:计算机职称论文 时间:2020-12-30

  摘要:针对传统Android恶意软件检测技术准确率不足的问题,该文设计并用实验验证了一种基于机器学习的Android恶意软件检测方法。首先提取Android应用的一些关键静态特征,生成对应的特征向量,然后采用机器学习算法构建并训练模型,最后对待测Android应用软件进行分类检测。实验结果表明,在使用相同数据集的情况下,支持向量机(SVM)算法取得了96.4%的检测率,略高于逻辑回归、朴素贝叶斯、决策树算法。通过实验,不仅使学生对Android应用软件有了更清晰的认识,还提升了学生用机器学习方法分析和解决实际问题的能力。

基于机器学习的 Android 恶意软件检测实验

  关键词:Android应用;恶意软件;机器学习;Weka平台

  近年来,全球智能手机用户数量呈指数级增长,估计到2021年将达到17.7亿部。Android被设计成一个开放、免费和可编程的操作系统,设备和用户数量庞大,应用程序丰富,已成为目前最为流行的移动智能操作系统。然而,Android系统的开放性不仅吸引了合法应用的开发者,也出现了众多的恶意软件[1]。赛门铁克公司提供的互联网安全威胁报告指出,每5个Android应用中就会有1个实际上是恶意软件,这给Android用户带来了严重的风险。

  常用的商业恶意软件检测工具,如“360手机安全卫士”“腾讯手机管家”等,一般采用基于签名的检测方法。基于签名的检测技术源于模式匹配[2-3]的思想,为每种已知恶意代码产生一个唯一的签名特征标记,来创建恶意代码库。基于签名的检测方法相对简单,检测速度快,在恶意代码库比较大的情况下,可以获得较好的检测效果。但是这种方法对于不在恶意代码库中的软件无法检测,且随着恶意代码库越来越大,不仅占用大量的存储空间,还需要大量的人力来更新维护恶意代码库。而且一旦恶意软件对代码进行微小的修改和伪装,基于签名的检测方法就失去了相应的检测能力。

  为了应对不断发展的Android恶意软件攻击,近年来机器学习技术越来越多地应用到Android恶意软件检测领域[4]。在这些系统中,基于不同的特征表示(如权限[5]、API调用[6-8]、系统调用图[9-10]、动态行为[11]等),可以分为基于静态特征[12]、动态特征和静动态特征结合的方法[13]。采用不同的机器学习算法,如支持向量机(SVM)[14]、随机森林和深层神经网络[15],构建模型来检测恶意软件,都取得了不错的效果。

  本文采用基于静态特征检测的思路,对机器学习方法引入到Android恶意软件检测领域进行了实验验证,实验过程如图1所示。首先提取Android应用程序的静态特征,把特征映射到高维向量,然后采用机器学习算法构建并训练模型,训练好的模型可直接部署到用户的Android设备上,最后对待测Android应用软件进行检测。

  1Android应用软件背景知识

  1.1恶意软件行为

  Android平台上,恶意软件往往通过重打包的方式伪装成正常软件引导用户下载安装。通常在后台拨打电话、发送拦截服务短信、推送广告等,使用户在毫不知情的情况下被扣去通信费用。部分恶意软件搜集用户敏感信息,将短信内容、通讯录列表信息、地理位置信息等敏感数据发送到指定服务器;还有部分恶意软件通过非法获取root权限,在未经用户允许的情况下恶意删除用户数据、耗费系统资源、删除系统组件、更改系统外观、加密文件、勒索钱财等,对用户正常使用造成严重的破坏和影响。

  1.2Android应用软件介绍

  应用软件想要在Android设备上运行,必须先进行编译,然后打包成为一个能够被Android系统识别并运行的APK文件。一个APK文件解压后通常包含lib目录、META-INF目录、资源文件(resources)、原生资源文件(assets)、清单文件(AndroidManifest.xml)和Dex文件(*.dex)等。

  清单文件是Android应用的入口文件,每一个Android项目都包含一个清单文件。文件中包含了应用程序中所有申请使用的权限,这些权限在软件安装时会展示给用户授权。比如一个游戏软件可能需要写入存储卡或振动的权限,但通常不应该申请读取通讯录或者短信记录的权限。在这个环节,用户可以根据需要选择接受或拒绝。清单文件中还包含了组成应用程序的每一个组件如活动组件(activities)、服务组件(services)、内容提供器组件(contentproviders)和广播接收器组件(intentreceivers),并使用权限(permissions)和意图过滤器(intent)来确定组件之间以及组件和其他应用之间的交互。

  Dex文件是应用程序的Java源代码经编译后形成的字节码文件,包含源程序中定义和实现的所有类和方法,它通过Dalvik虚拟机解释执行。从Dex文件中可以得到应用程序的各种行为,包括敏感API调用、受限制的API调用、字符串常量信息、访问操作系统敏感资源以及所有与系统相关的功能要求和许可等。

  AAPT(Androidassetpackagingtool)工具是AndroidSDK提供的工具之一,它不但可以编译和打包原始文件,还可以逆向解压APK文件。APK文件的打包与解压流程如图2所示。

  2基于机器学习检测的实验方案

  2.1机器学习项目的步骤

  一个完整的机器学习项目一般流程包括:

  (1)把拟解决的问题抽象成数学问题。首先要明确问题,是分类问题、回归问题或是聚类问题。本文实验要解决的恶意软件检测问题属于典型的二分类问题。

  (2)数据获取及分析。获取的训练数据要有一定的代表性,不然会出现过拟合现象。例如分类问题,不同种类的数据规模不能有几个数量级的差距。根据训练数据的量级、样本的总量、特征的总量,可以估算出内存占用率。内存占用率过高甚至溢出,则需要考虑改进算法或使用特征降维,以及采用分布式系统进行训练。

  (3)数据预处理。据统计,数据预处理要占用整个分析过程50%~80%的时间,好的数据预处理会让建模达到事半功倍的效果。数据预处理阶段通常有4类方法:数据的清洗、集成、变换和规约。

  (4)特征工程。其目的是筛选出显著的特征、排除非显著的特征。特征工程能使模型的性能得到提升,在机器学习中具有非常重要的作用,有时在简单的模型上也能取得不错的效果。特征工程一般包括特征构建、特征提取、特征选择3个部分。期间需要用到卡方检测、信息增益、条件熵、后验概率等与特征有效性分析相关的技术和方法。

  (5)模型选择与调优。根据要解决的具体问题和数据的实际情况来选择模型。综合考虑样本的数量、特征的维度、数据的分布以及要解决的问题属于分类、回归还是聚类,采用交差验证方式,观察测试结果曲线,分析原因,尝试找到最优模型及参数组合。

  (6)模型评估。从模型准确率、精确率、召回率、ROC曲线、均方误差,时间复杂度、空间复杂度、迁移性、稳定性等多个方面进行模型评估。

  2.2特征提取

  本文实验和Drebin项目[12]一致,从清单文件和Dex文件中共提取8类静态特征。

  1)从清单文件中提取的特征。

  硬件特征(hardwarecomponents)。应用程序请求使用手机硬件设备,如相机、蓝牙或GPS设备,则必须在清单文件中声明这些功能。请求访问某些硬件组合通常会反映有害行为。

  请求权限特征(requestedpermissions)。Android平台上的应用和系统、应用和应用之间被权限系统隔离开,当应用想要访问某些数据或准备执行特定操作时,必须申请相应的权限。恶意软件通常会更频繁地请求某类权限,例如申请发送SMS相关的权限。

  应用组件特征(applicationcomponents)。Android系统中存在4种不同类型的应用程序组件:Activities、Services、Providers和Receivers。这些组件的名称可能有助于识别同一个家族演变的恶意软件。例如,DroidKungFu病毒的几种变体共享特定名称的服务组件。

  意图特征(filteredintents)。Android系统进程内和进程间通信主要通过Intent进行。例如startActivity函数给某个Activity组件发送Intent,以启动该组件的一个实例;startService函数给某个Service组件发送Intent以启动这个Service。

  2)从Dex文件中提取的特征。

  受限API特征(restrictedAPI)。指受到权限保护的API,Android权限系统会对关键API的访问进行限制。假如一个应用使用受限API,但没有请求相应的权限,这表明此软件很可能非法获得了root权限。

  使用权限特征(usedpermission)。应用程序申请了某个权限但并不一定真正会使用该权限。只有在代码中调用了受权限保护的API,或访问了受权限保护的数据,才算正在使用了某种权限。

  可疑API特征(suspiciousAPI)。指人为定义的某些访问手机敏感资源,并且经常在恶意软件中出现的API。例如:加解密、发送Http请求、获得设备信息、读写SMS、读写外部存储等相关API。

  网络地址特征(networkaddresses)。某些恶意软件会定期与远程服务器建立网络连接,泄露用户隐私数据等。因此,在反汇编代码中搜索IP地址、资源定位符(uniformresourescocator,URL)、主机名等字符串特征,其中一些地址可能与僵尸网络有关,存在于多个恶意软件样本中。

  2.3特征向量

  节2.2中从清单文件和Dex文件中提取的静态特征均为字符串形式,由于大多数机器学习方法是对数值向量进行操作,因此需要先将提取的特征字符串转换成离散的数值形式。

  特征转换:定义一个大的集合S,集合S包含了提取的8类特征中的所有字符串。通过向每类特征中的所有字符串添加唯一前缀,确保属于不同类别的特征元素不会发生冲突,同时保证属于同一种类别的特征元素的唯一性。

  和集合S对应,本文定义了一个|S|维向量空间,其中的每个维度取值为0或1。对于每一个单独的应用软件x来说,是通过构造一个特征向量来对其进行描述,这样对于从x中提取的特征字符串s,若s出现在S中,特征向量相应的维度设置为1,否则为0。

  2.4模型选择

  本文尝试选用SVM、逻辑回归、朴素贝叶斯、决策树等几种常见的机器学习算法进行模型构建、训练以及分类检测对比实验。

  3实验环境和过程

  3.1实验环境

  硬件环境:interi585008核3.0GHz处理器,8GBDDR4内存,1TB硬盘。

  软件环境:Win1064位操作系统,JDK1.8,Weka3.8(Weka是一款开源的,基于Java环境的机器学习和数据挖掘工具),Python3.7,Scikit-learn机器学习库。

  3.2实验过程

  1)获取数据集。

  实验选用Drebin项目公开的数据集,Drebin收集了2010年8月至2012年10月期间公开的大量App样本,最终数据集中包含123453个良性应用、5560个恶意应用,并提取了8类静态特征。

  2)数据预处理。

  由于Drebin项目中良性应用和恶意应用的比例相差过大,恶意应用只占良性应用不到5%的比例,造成样本类别分布偏差过大,本文使用Scikit-learn库提供的随机方法train_test_split(),抽取良性应用的1/10,即12345个良性应用和全部的5560个恶意应用,组成17905个样本的数据集。

  划分训练集和测试集:随后按照66%和34%的比例划分训练集和测试集,最终的训练集包含10234样本,测试集包含6088样本。

  3)特征工程。

  从训练集10234样本中,共提取100234个特征,组成100235维的特征向量,最后一维为标记位。由于特征向量过于稀疏,会占用大量加载和训练时间。实验中采用Weka平台提供的weka.filters.unsupervised.instance.SparseToNonSparse工具转存为非稀疏特征向量,并存储为arff格式文件。

  特征选择:由于100235维的特征向量过大,存在大量的冗余特征,为了加快模型训练收敛,缩短检测时间,采用Weka平台提供的特征信息增益函数weka.attributeSelection.InfoGainAttributeEval进行特征筛选,最终选择了权重排名前1000的特征组成特征向量。

  4)模型评估。

  本文实验利用Weka平台提供的几种机器学习分类算法进行数据训练与模型测试,分别为线性SVM(weka.classifiers.functions.LibLINEAR)、逻辑回归(weka.classifiers.functions.Logistic)、朴素贝叶斯(weka.classifiers.bayes.NaiveBayes)、决策树(weka.classifiers.trees.J48)。为了保证分类结果的稳定性,实验采用十折交叉验证的方式进行模型训练,最终分类效果如表1所示。表11000维特征时模型分类效果评估表模型评估线性SVM逻辑回归朴素贝叶斯决策树准确率/%96.495.989.396.1ROC曲线面积0.9520.9840.9350.961训练时间/s1.182473.86170测试时间/s0.160.252.80.961从表1可以看出,在使用相同数据集的情况下,选择1000维特征时,线性SVM(带有L2正则化项的损失函数)算法取得了不错的分类效果:分类的整体准确率达到了96.4%,ROC曲线面积为0.952,模型训练时间1.18s,模型测试时间0.16s。

  在不进行特征选择,共100234维特征时,线性SVM算法分类的整体准确率有了进一步的提高,达到了97.6%,ROC曲线面积为0.971,模型训练时间2.89s,不过模型测试时间增加到17.82s。

  从实验结果可以看出,以上4种算法总体上准确率都达到了不错的效果,从而可以说明基于机器学习的Android恶意软件检测方法的有效性。——论文作者:陈镭1,3,杨章静2,黄璞2

  相关期刊推荐:《实验技术与管理》杂志是面向全国各级各类高等学校的综合技术性期刊。1963年创刊,由教育部主管,清华大学主办。月刊,设有:特约专栏、实验室创新、实验室建设与管理、实验技术与方法、计算机技术应用、仪器设备研制与应用、实验教学研究与改革、实验教学示范中心建设、现代教育技术、职业技术教育、资产管理、产品信息等栏目。

全学科期刊推荐 中英文发表指导

* 稍后学术顾问联系您

学术顾问回访> 详细沟通需求> 确定服务项目> 支付服务金> 完成服务内容

SCI期刊

国际英文期刊

核心期刊

国外书号出书

国内纸质出书

2023最新分区查询