Android系统恶意程序检测技术研究

  • 投稿Hunt
  • 更新时间2015-09-11
  • 阅读量879次
  • 评分4
  • 42
  • 0

南秦博1,慕德俊1,侯艳艳2

(1.西北工业大学自动化学院,陕西西安710072;2.空军工程大学航空航天工程学院,陕西西安710038)

摘要:随着Android系统的不断发展,人们对该平台的安全问题也更为关注。针对Android恶意应用程序存在的安全隐患,提出一种基于事件的恶意程序检测技术。系统采用C/S结构,通过手机客户端获取目标分析程序的系统调用序列,提交服务器端分析处理,分析服务器预先运行大量的已知恶意程序和良性程序作为训练样本,利用支持向量机学习算法对调用序列流进行聚类分类学习,检测出与样本类似特征的恶意程序。实验测试表明,该技术对恶意程序检出率高,误报率低,为Android恶意程序检测系统的设计提供有价值的参考

教育期刊网 http://www.jyqkw.com
关键词 :Android;安全问题;恶意程序检测;支持向量机

中图分类号:TN929.5 文献标识码:A 文章编号:1004-373X(2015)12-0047-04

收稿日期:2014-12-28

基金项目:教育部博士点基金(20126102110036)

0 引言

Android是Google于2007年11月发布的基于Linux内核的开源手机操作系统。它包括操作系统、用户界面和应用程序(移动电话工作所需的全部软件),而且不存在任何以往阻碍移动产业创新的专有权障碍[1]。目前,Android已经经历了数个版本的更新,市面上采用该系统的移动设备数量也在飞速增长,它已经是一个强大而成熟的系统,从最初的智能手机领域逐渐进入教育、医疗、汽车、军事等重要领域。

随着Android系统的广泛应用,安全问题的重要性呈现逐步上升趋势,已成为制约其发展的重要因素。从2010 年8 月发现的首个Android 木马程序“Trojan-SMS.Android – OS.FakePlayer”,到后来的“Geinimi”、“X 卧底”病毒木马等恶意程序的流行,更加剧了人们的担忧。因此,要让用户放心地使用Android系统,就必须全面分析并着手解决Android 系统所面临的各种安全问题。本文提出一种分析Android程序运行触发事件的系统调用序列流,并采用支持向量机学习算法对调用序列流进行分类的恶意程序检测方法,可以有效解决此类安全问题。

1 Android 系统安全模型

1.1 Android系统架构

Android系统采用分层架构,共分为4层,从高层到低层分别是应用程序层(Applications)、应用程序框架层(Application Framework)、系统运行库层(Libraries &Android Runtime)和Linux 内核层(Linux kernel),An-droid系统架构如图1所示。

1.2 Android系统安全机制

Android 系统拥有多种安全机制,除继承Linux 系统的安全机制之外,同时还有针对性地增加了多重安全设计,Android 系统架构不同层上相关安全机制如表1所示。

2 Android 系统安全隐患分析

虽然Android系统已经拥有众多良好的安全机制,但也存在着一些安全隐患。目前主要存在以下3个方面的安全隐患:

(1)基于硬件的安全隐患。Android系统运行于硬件设备之上,由于硬件的通用性和拥有系统最高权限,且在使用中难以升级和维护,硬件缺陷存在的安全隐患危害很大。另外,移动设备中的SD 卡和SIM 卡均能脱离移动设备而单独使用,也存在隐私泄露的风险。

(2)基于Linux内核的安全隐患。移动设备往往会禁用一些内核选项用以提高系统有限资源的利用,其中也包括一些安全配置选项,Linux每年都有近百个漏洞被CVE收录,黑客利用这些内核漏洞,获得系统最高权限,造成用户隐私信息泄露。目前,可以通过系统定制SEAndroid(Security-Enhanced Android)对所有的文件、目录类资源的访问进行控制,强制性地限制信息的共享和流动,减轻Linux内核的安全隐患[2]。

(3)基于应用程序的安全隐患。应用程序包括An-droid系统自带和用户自行安装的应用程序。由于用户自行安装应用程序来源多样,在安装时,用户无法辨识恶意程序和正常程序,而往往选择信任该程序,忽略相关的安全提示,授予其所申明的所有权限,从而大大弱化Android系统核心安全机制——权限控制。恶意程序非法获得特权,利用Linux内核漏洞提升权限,造成隐私信息泄露,非法链接网络消耗资源,被恶意扣费等众多威胁到用户安全的隐患。

3 基于恶意程序检测的安全技术研究

恶意程序是目前Android 系统最大的安全威胁[3]。对恶意程序的检测比较常用技术有代码语义分析法和特征码分析法。这两种常用的检测方法被各大反病毒软件厂商广泛使用,他们通过不断更新恶意程序特征数据库来提高检出率,但都需要消耗大量的系统资源来进行运算,而移动设备资源和硬件处理能力有限,手机使用时在一定程度上会影响用户体验。本文通过对Android系统安全模型和安全隐患的深入分析和研究,以低资源消耗为目标,利用Android系统后台监听技术特点,获取目标程序的系统调用序列与特定触发事件时调用序列进行比较分析,研究基于事件的恶意程序检测方法。

3.1 系统设计

程序的动作最终都以系统调用的形式实现,使用的系统调用反映了程序的行为特征,可以作为判断程序是否恶意的依据。基于事件的恶意程序检测方法使用Android系统内核提供的接口,获取目标分析程序的系统调用序列,获取系统调用流,使用系统调用流作为恶意行为匹配的数据。

为减轻Android系统资源的消耗,采用C/S结构,客户端只进行系统监测、程序运行信息捕获,将复杂的分析工作交由服务器端处理,让分析服务器进行恶意程序检测判断。该检测方法的系统运行框架如图2所示。

在服务器端维护一个恶意程序调用序列信息存储库。恶意行为的实现会使用大量的系统调用,良性程序也会包含一部分系统调用,两种程序的系统调用最终会形成一个完整的调用序列。但由于实现目的的不同,恶意程序和良性程序在系统调用序列上会有不同的特征表现。在服务器端,分析服务器预先运行大量的已知恶意程序和良性程序,收集必要的调用序列作为训练样本,利用机器学习算法对这些调用序列进行聚类分类学习,导入APK程序信息存储库,供系统对客户端目标程序进行快速判别。

3.2 数据采集

Android 系统有200 多种系统调用事件,检测方法需要确定哪些事件可能是恶意行为造成的,在此定义触发事件列表,记录的构成包括:事件编号,可疑事件名称,可疑事件的系统调用模糊序列等,如表2所示。再通过实验对其进行不断的校验和修正。

程序运行将产生大量的系统调用,系统调用以流的形式输出,通过对系统调用流与可疑事件序列进行快速模糊对比,寻找可疑的事件。

3.3 数据分析

分析服务器要对恶意程序的系统调用流进行判断,必须预先运行大量的已知恶意程序和良性程序,收集其调用序列作为训练样本,利用机器学习算法对这些调用序列进行聚类分类学习。

支持向量机(Support Vector Machines,SVM)是由Vapnik于1995年在统计学习理论基础上提出的一种新的机器学习方法[4]。它以VC维理论和结构风险最小化原则为基础,其算法是一个凸二次优化问题,能够保证找到的极值解就是全局最优解,在解决非线性及高维模式识别问题中表现出了许多特有的优势,非常适用于解决小样本问题等。

由于支持向量机具有非常强的分类能力,因此利用支持向量机来作为分类器,进行恶意程序和良性程序的识别。基于支持向量机的恶意程序识别的一般流程如图3所示。

(1)特征的选择及提取

特征选择和提取是支持向量机模式识别系统的必要环节,如果所选取的特征能够比较全面反映类的本质特征,那么分类器就比较容易设计;否则,分类器设计的难度就增加。

构建基于支持向量机的恶意程序识别模型,首先需要确定训练样本。特征提取对于恶意程序的识别效果有着重要的影响,因此这是一个难点和关键问题。本文将程序运行时产生的系统调用流作为检测的原始信号,使用前文数据采集中触发事件对应的模糊序列作为特征信号,对程序运行的特征进行提取。

(2)SVM模式识别

SVM 模式识别就是根据特征信号、信息存储库中的标准模式和某种判别准则,由提前训练好的支持向量机模型(支持向量机分类器)自动识别,确定是否存在恶意程序。

SVM的最优分类函数为:

3.4 测试分析

已有研究者收集了1 260 个程序样本[5],从其中选取40个样本作为恶意程序,从Android市场下载60个良性程序,将这100 个程序作为分析服务器的训练样本,选取SVM 的核函数为RBF 核函数,其宽度参数为2.3,规则化参数为800,有相似系统调用流的程序将会聚成一类,100个训练样本恶意程序和良性程序的分类结果如图4所示。实验另外选取20个恶意程序和30个良性程序在MOTO ME525 手机上安装进行测试,分析服务器对程序的系统调用流与前面100 个训练样本的分类结果进行比对判别。经过测试:20个恶意程序,其中有19 个判别正确,1 个判别错误;30 个良性程序,其中有29个判别正确,1个被错判为恶意程序。

从实验结果来看,提取程序的系统调用流,使用SVM 对系统调用流进行聚类学习,对于解决小样本的恶意程序识别具有特别好的识别效果,误判问题可以通过大量样本学习来改善,该检测方法对恶意程序具有良好的检测能力。

4 结语

本文通过对Android系统安全模型和安全隐患的深入研究分析,提出了基于事件的恶意程序检测方法,通过实验验证,该检测方法对未知恶意程序具有良好的检测能力。本文所采用C/S结构设计,虽然减轻了Android客户端的系统资源消耗,但检测必须在服务器端进行,易受网络速度限制,用户等待检测时间较长,随着Android平台硬件性能的大幅提升,在以后的检测系统设计中,可将恶意程序检测功能模块运行在客户端,适应各种类型用户需求。

作者介绍:南秦博(1981—),男,陕西乾县人,硕士。研究方向为网络与信息安全。

慕德俊,教授,博士生导师。研究方向为控制理论、网络与信息安全。

侯艳艳,讲师。研究方向为控制理论。

教育期刊网 http://www.jyqkw.com
参考文献

[1] Anon. What Is Android- [EB/OL]. [2012-03-20]. http:// www.cnblogs.com/activi.

[2] SHABTAI Asaf,FLEDEL Yuval,ELOVICI Yuval. Securing android-powered mobile devices using SELinux [J]. IEEE Secu-rity & Privacy,2010,8(3):36-44.

[3] ENCK William, ONGTANG MacHigar, MCDANIEL Patrick Understanding android security [J]. IEEE Security & Privacy,2009,7(1):50-57.

[4] VAPNIK V. N. Statistical learning theory [M]. New York:John Wiley,1998.

[5] ZHOU Ya-jin,JIANG Xu-xian. Dissecting Android malware:characterization and evolution [C]// Proceedings of IEEE Sympo-sium on Security and Privacy. Washington DC:IEEE Comput-er Society,2012:95-109.

[6] SHABTAI Asaf, FLEDEL Yuval, KANONOV Uri, et al.Googleandroid:A comprehensive security assessment [J]. IEEE Security & Privacy,2010,8(2):35-44.

[7] 廖明华,郑力明.Android 安全机制分析与解决方案初探[J].科学技术与工程,2011(26):6350-6355.

[8] [美] DARCEY Lauren,CONDER Shane.Android 应用开发入门经典[M].袁国忠,译.2版.北京:人民邮电出版社,2012.