吴 勇,李永忠
(江苏科技大学 计算机学院,江苏 镇江 212003)
Android作为市场占有率最大的移动操作平台,由于其开源特性,正频繁遭受不法分子的恶意攻击。2017年5月11日,360发布的《2017年中国手机安全风险报告》指出,2017年第一季度,360互联网安全中心共截获Android平台新增恶意程序样本222.8万个,平均每天截获新增手机恶意程序样本近2.5万个。木马因其良好的隐藏性﹑欺骗性和破坏性,已成为攻击Android平台的主要手段,而由木马造成的危害也越来越严重。因此,研究Android平台下的木马检测技术意义重大。
目前,特征码检测是最成熟﹑最有效的木马检测技术。本文充分利用其误报率低的优点,同时为规避其无法防范未知恶意软件的缺点,结合权限检测,设计了一个基于Android平台的木马检测系统,实现了木马检测功能。
Android系统采用分层架构,由高到低分为4层,依次是应用程序层(Applications)﹑应用程序框架层(Application Framework)﹑系统运行库层(Libraries)和Linux内核层(Linux Kernel),如图1所示。
图1 Android系统架构
应用程序层包含了核心应用程序,手机上的应用程序都属于这一层,如系统自带的联系人程序﹑短信程序等。应用程序框架层主要提供构建应用程序时用到的各种API。Android自带的一些核心应用就是使用这些API完成的,如视图(Views)﹑活动管理器(Activity Manager)等。系统运行库层包含系统库和Android运行环境,主要是通过C/C++库来为Android系统提供主要的特性支持。Linux内核层为Android设备的各种硬件提供了底层的驱动,如显示驱动﹑音频驱动﹑蓝牙驱动和电源管理驱动等[1]。
木马是一个基于远程控制的程序,由客户端和服务端两部分组成。客户端部署在互联网侧,服务端以手机应用的形式植入到手机终端。木马的攻击方法是通过客户端向服务端发送控制命令,服务端接收到控制命令后,在目标手机终端上执行相应的恶意行为[2]。现如今,Android平台下,木马可以窃取并上传用户隐私信息﹑控制后台录音﹑摄像等,基本架构如图2所示。
图2 Android木马架构
木马主要通过网络﹑短信﹑彩信的方式传播。它们伪装成移动客户端应用程序,诱导用户访问并下载安装[3]。手机资源站﹑软件捆绑是木马传播的主要途径。一些手机资源网站缺乏对恶意程序的监管鉴别机制,导致下载时更易感染木马。而软件捆绑则是不法分子通过植入恶意代码或恶意广告插件捆绑知名软件进行二次打包,造成用户大规模感染。随着手机网上支付的盛行,二维码也逐渐成为木马传播的新途径,并占据较大比例。各大电子市场作为用户下载APP的主力市场,更是木马传播的主要风险渠道。腾讯发布的《2017年第一季度手机木马渠道来源比例》,如图3所示。
图3 2017年第一季度手机木马渠道来源比例
木马在Android平台下运行时通过各种技术隐藏自身,使得设备终端不断受其控制,给用户的生活和经济造成了严重危害。目前,它的主要恶意行为如下。
(1)资费消耗:以广告推销﹑自动拨号等手段,增加用户的额外资费来牟取暴利。这类恶意行为较隐秘,难以被用户发现,可以长期潜伏在手机中,不断造成话费﹑流量的损失。
(2)隐私窃取:窃取用户的短信﹑通话﹑地理位置﹑账号密码等一系列隐私信息,并将信息发送到远端服务器[4]。
(3)流氓行为:诱导用户下载安装恶意软件或将恶意程序打包到正常应用中,而用户无法将其删除和卸载,影响手机的正常使用。
(4)恶意扣费:伪装成游戏﹑播放器等诱使用户下载安装,一旦安装,通过对外发送短信或联网订购,在用户不知情或虚假描述下,直接订购SP付费业务,给用户造成经济损失。
目前,针对Android平台木马检测的主流技术有特征码检测法﹑启发式检测法﹑行为检测法和完整性检测法。下面将对每种检测技术进行分析。
特征码检测法是一种简单有效的木马检测技术。它首先收集大量已知木马样本,然后从中提取若干唯一﹑典型的字节作为某种木马及其变种的特征码,从而构建特征库对木马进行查杀[5]。若扫描文件的特征值与特征库中的特征码匹配,则判定目标程序是木马程序,并指出是何种木马。该技术必须不断更新特征库,获悉未知木马提高查杀率。
启发式检测法是将木马分析过程中获得的一些统计的﹑静态的启发知识,运用到特征码检测上的一种反木马检测技术。它是一种先验的程序行为预测方法,通过对程序文件进行反汇编,再对程序指令序列进行分析,从而判断程序是否具有恶意的行为意图[6]。该技术在扫描系统的基础上,要能够辨别程序指令序列,实现过程相对复杂。
行为检测法是通过监控程序在系统中的运行,根据其行为判断是否具有恶意企图的检测技术。当木马程序植入手机后,使用行为检测工具实时监控该程序操作,并将其与安全行为策略作比较。当某些行为与安全策略相悖时,则终止该程序的执行,并给用户以提示。该技术适用于已被木马感染的系统,但误报率较高。
完整性检测法是根据木马入侵时会将恶意代码植入文件的这一特性来判断木马入侵的检测技术。植入是木马发挥作用的前提。它一般依附或寄生在其他正常的程序或文件中,导致正常的程序或文件发生诸如大小增加﹑更新日期被修改等变化。该技术通过记录系统正常文件相关属性信息,计算正常文件内容的校验和。当每次打开该文件前,根据文件当前内容算出校验和,并与正常值作对比。若二者不一致,则判断文件被感染[7]。但是,文件内容的改变也有可能是因为软件更新﹑运行参数变动等,因此该技术存在误报。
综上,四种检测技术原理各异,又各具优缺点。特征码检测法技术成熟,使用最广泛,检测最准确,误报率最低,但需要频繁更新特征库,无法检测未知木马。启发式检测法在一定程度上能检测未知木马,但存在误报,对系统性能要求较高。行为检测法能防范未知木马的攻击,但存在误报,可能系统实际已被感染。完整性检测法能发现未知木马,但误报率较高,需要手机空间存储量大。
目前,移动终端的网络传输速率不够理想。由于环境变化会对其稳定性造成影响,而特征码检测法对网络传输的需求较少,技术成熟有效,误报率低,故本文选择特征码检测法作为木马检测系统的核心。为了解决该技术对未知木马漏检的情况,本文结合权限检测技术,对应用程序的权限进行检测,并与敏感权限进行比较,从而鉴别应用的安全性,增强木马检测效率。
该系统主要分为5个模块:文件扫描模块﹑特征码匹配模块﹑权限扫描模块﹑敏感权限匹配模块和结果显示模块。系统整体架构如图4所示。
图4 系统整体架构
Android应用程序主要由Java语言编写,编译后会生成APK文件。APK文件是zip格式的压缩包。文件扫描模块首先遍历系统中的文件,判断其是否是压缩形式。如果是,进行解压缩操作,然后对扫描的APK文件提取特征值,并传递给特征码匹配模块。该模块工作流程图如图5所示。
图5 文件扫描模块工作流程
该模块将扫描文件的特征码与特征库中的特征码进行匹配。若匹配成功,则判定该扫描文件为可疑木马文件,并输出其路径和名称信息;否则,输出未发现可疑木马程序。该模块工作流程图如图6所示。
图6 特征码匹配模块工作流程
正常情况下,Android系统中的应用程序无法对系统以及其他应用资源进行访问。如果应用程序在系统运行时需要对一个有权限保护的功能进行访问,那么必须在Android Manifest.xml中使用
XML文件中的
Android权限管理机制对应用程序可以执行的操作在权限方面进行了严格控制。根据访问资源﹑系统API的不同,Android系统共封装了145个权限[9]。该模块对封装的所有权限中涉及用户隐私﹑资费耗损等敏感权限进行统计,形成敏感权限库。然后,将扫描文件的权限集与之对比,当应用包含敏感权限时,判定为具有威胁性的木马程序。
综上,权限检测的工作流程图如图7所示。
图7 权限检测工作流程
Android木马检测系统的实现,如图8所示。
图8 Android木马检测系统实现
为评估本文设计的Android木马检测系统的工作效率,特将其与著名的Android恶意软件静态分析工具Androguard进行实验对比。实验从国内各大安全论坛上收集了200个木马样本,其中涉及吸费﹑隐私﹑恶意广告等恶意行为。实验结果如表1所示。
表1 本系统与Androguard对比
由表1可以看出,本文设计的Android木马检测系统的检测率明显优于Androguard。Androguard采用特征码扫描技术只能对已知木马程序进行检测,而本文结合权限检测,能对未知木马检测能力有一定补充,达到了设计的预期目标。同时,不断优化权限预警模型,实现更加准确有效检测,将是下一步的研究重点。
本文使用特征码检测与权限检测相结合的方案,设计并实现了Android平台下的木马检测系统。经实验对比分析可控制,该系统能弥补特征码扫描法对未知木马漏检的缺陷,一定程度上提高了木马检测效率。但是,权限预警机制还不够完善,下一步需要改进敏感权限的划分方式,以期实现更好的检测效果。
[1] 郭霖.第一行代码——Android[M].第2版.北京:人民邮电出版社,2016.
GUO Lin.The First Line of Code-Android[M].Second Edition.Beijing:People's Posts and Telecommunications Press,2016.
[2] 董蕾,黄淑华,尹浩然等.基于Android平台的手机木马关键技术分析[J].技术研究,2012(11):63-65.
DONG Lei,HUANG Shu-hua,YIN Hao-ran,et al.The Key Technical Analysis of Mobile Trojan Horse Based on Android Platform[J].Technology Research,2012(11):63-65.
[3] 康志博.基于Android平台的木马机理与检测技术研究[D].北京:北京邮电大学,2014.
KANG Zhi-bo.Research on Trojan Mechanism and Detection Technology Based on Android Platform[D].Beijing:Beijing University of Posts and Telecommunications,2014.
[4] 曹欢欢,李永忠.Android平台下的安全检测软件的设计与实现[J].电子设计工程,2015(12):141-144.
CAO Huan-huan,LI Yong-zhong.The Design and Implementation of Security Detection Software Under Android Platform[J].Electronic Design Engineering,2015(12):141-144.
[5] 夏彬,邱峰.基于Android的木马检测引擎的研究与实现[J].电信科学,2016(10):36-41.
XIA Bin,QIU Feng.Research and Realization of the Trojan Detection Engine Based on Android[J].Telecommunications Science,2016(10):36-41.
[6] 莫宇祥,俞建銮,王磊等.基于角色的Android手机平台木马检测系统[J].现代计算机,2011(12):51-55.
MO Yu-xiang,YU Jian-luan,WANG Lei,et al.The Trojan Detection System of Android Mobile Platform Based on Role[J].Modern Computer,2011(12):51-55.
[7] 佟得天.基于行为分析的Android手机木马检测技术研究[D].广州:中山大学,2012.
TONG De-tian.Study on Android Mobile Phone Trojan Detection Based on Behavior Analysis[D].Sun Yat-sen University,2012.
[8] 孟康,周小兵,韩强.基于Android签名及敏感权限分组的安全检测系统[J].云南民族大学学报:自然科学版,2015,24(05):418-421.
MENG Kang,ZHOU Xiao-bing,HAN Qiang.A Safety Detection System Based on Android Signature and Sensitive Grouping Permissions[J].Journal of Yunnan Nationalities University(Natural Science Edition),2015,24(05):418-421.
[9] 祝小兰,王俊峰,杜垚等.基于敏感权限及其函数调用图的Android恶意代码检测[J].四川大学学报:自然科学版,2016,53(03):526-533.
ZHU Xiao-lan,WANG Jun-feng,DU Yao,et al.Detecting Android Malware Based on Sensitive Permissions and Function-call Graphs[J].Journal of Sichuan University(Natural Science Edition),2016,53(03):526-533.