刘彬彬,李永忠,舒 俊
(江苏科技大学 江苏 镇江 212003)
Android平台下的病毒原理分析及其防御技术研究
刘彬彬,李永忠,舒 俊
(江苏科技大学 江苏 镇江 212003)
Android是现在最受欢迎的移动平台操作系统之一。它最大的特点就是源代码开源,因此吸引了很多行业领先企业,包括通信运营商、设备制造商、芯片制造商等各类企业,同时也吸引了大量用户。根据市场研究公司IDC发布的数据,截止2012年第二季度,Android的市场份额高达68.1%。为了使Android用户不受病毒的危害,本文分析了Android平台下的病毒攻击原理,提出了一个基于Android的安全防御系统的解决方案,并进行了实现和测试,可以查杀病毒,自动监控设备。测试结果表明,系统能够有效监测到病毒的入侵并及时采取措施。
Android;病毒原理;入侵检测;主动防御
Android是一个开源的移动平台操作系统,占据了大部分市场份额。
Android的火爆引起了一些不法分子的注意,利用恶意软件(即Android病毒)非法获取用户隐私、间接扣取用户话费获取经济利益等。随着Android的快速发展,针对Android的恶意软件也越来越多。根据网秦发布的2012年上半年全球手机安全报告,2012上半年新增手机恶意软件17676款,而这其中的78%就是针对Android平台的,这个数字在2011年年底还是38%。仅在2012年6月,单月查杀到Android恶意软件5582款,直接感染用户数百万,造成用户大量的直接或间接经济损失、隐私泄露等危害。
Android恶意软件的危害越来越严重,本文通过对Android恶意软件原理的研究与分析,结合Android系统自身特点,提出并实现了一个安全防御解决方案。
Android的架构主要由应用层(Applications)、应用框架层(Application Framework)、Android 系统库和运行时(Libraries、Android Runtime)、Linux 内 核 (Linux Kernel) 构 成 , 如 图 1所示。
图1 Android系统架构图Fig.1 System architecture of Android
应用层主要包括系统自带的和用户安装的应用程序,应用框架层为应用程序提供API,Android系统库为应用框架层提供C/C++库,Android运行时提供JAVA核心库和Dalvik虚拟机,Linux内核是Android的核心,提供底层服务。
通过分析网秦的2012年上半年全球手机安全报告,可以看出,虽然Android平台下病毒的形式多样,但主要攻击方式如下:
1)恶意扣费:这类病毒在用户不知情的情况下,向SP订购付费业务,扣除用户的话费。
2)窃取隐私:这类恶意软件主要是窃听用户通话 ,窃取用户位置信息、通讯录等资料,并在后台上传到服务器,从中获取有利信息或者转卖出去,进而获利。
3)消耗资费:这类病毒主要在后台自动联网,不断下载广告主推广的应用或其他恶意软件,从而获取非法利益。这样直接导致用户的网络流量和设备电量消耗过大。
通过分析病毒源代码,可以发现病毒主要是利用短信、电话、网络等功能,加上一些其他的辅助功能,达到非法目的。
Android用权限管理机制来确定应用程序是否有相应的访问权限。应用程序在安装时要请求所需的权限,只有用户同意授权才能安装。
病毒程序为了能使用短信、电话、网络程序,会在Android Manifset.xml文件中请求相关权限。请求拨打电话的权限为:
android.permission.CALL_PHONE请求发送短信的权限为:
android.permission.SEND_SMS请求接收短信的权限为:
android.permission.RECEIVE_SMS请求联网的权限为:
android.permission.INTERNET
在后台偷偷向SP发送订购付费业务短信,这是病毒最常用的手段,病毒获得发送短信的权限后,利用SmsManager类,在用户不知道的情况下,向SP发送订购付费业务短信:
SmsManager.getDefault ().sendTextMessage (tel,null,message, null, null);
其中tel为短信发送地址,message为短信订购内容。
通常在向SP发送订购业务后,SP会回复一个确认短信给用户,让用户再次确认是否订购该业务。这时,病毒屏蔽SP发来的确认短信,不让用户看到,再次偷偷发送确认短信给SP,然后删除相关短信。这样,就成功订购了业务,扣除了用户的话费,而这一过程,用户毫不知情。
病毒屏蔽短信是利用了Android的四大组件之一BroadcastReceiver,Android收到短信时,会发出一个有序广播,病毒获得接收短信的权限后,声明一个BroadcastReceiver并把优先级设的很高:
BroadcastReceiver receiver;
IntentFilter filter=new IntentFilter();filter.setPriority(priority);
registerReceiver(receiver, filter);
病毒优先收到SP发来的短信后,判断是否是特定SP的号码,如果是,首先终止广播的传播,其他程序就不会收到短信了:
abortBroadcast();
然后再次偷偷向SP发送确认短信,最后删除SP发来的消息和发件箱中偷偷发出的短信。
对于Android手机,通过拨打电话扣费的病毒较少,因为拨号无法做到像偷发短信一样那么好的隐蔽性,不过最近也出现了一些病毒,入侵用户的手机后,自动拨打指定的号码,这种号码通常会收取很高的SP费用。
病毒获得拨打电话的权限后 ,只需要调用一次Intent,即可实现拨打指定电话的功能:
Intent intent=new Intent (Intent.ACTION_CALL, Uri.parse(“tel:”+phone_number));
startActivity(intent);
病毒一般从两个方面利用网络。第一,在后台联网,上传用户的隐私信息;第二,在后台下载其他应用程序或者病毒程序。这两者都将消耗用户大量的网络流量,同时也消耗了很多电量。
无论是上传还是下载,都是使用HTTP,借助于JAVA的输入输出流实现。上传代码类似于:
UploadFile(File file, String up_url);
其中file是上传的文件,up_url是上传服务器地址。下载代码类似于:
DownFile(String url, String path, int thread_num);
其中,url为所下载文件的源地址,path是文件下载后的保存路径,thread_num是下载的线程数。
目前,Android平台的安全防御技术主要从以下几个方面研究:文件监控及访问控制[1-3]、应用程序访问权限[4-6]、防火墙[7]、入侵检 测[8-11]。
这些研究基本都是从系统和内核层加强Android的安全,可是对于绝大多数用户来说,系统是厂商决定的,自己无法改变。本文根据Android平台的病毒原理,研究和实现了一个在应用层保护系统和用户数据的安全系统。
通过监听短信的发送和接收,在后台运行一个Service监测安装的应用程序是否有病毒。
监听收发短信,分别需要请求以下权限:
android.permission.RECEIVE_SMS
android.permission.READ_SMS
在Service中创建一个BroadcastReceiver,用于接收收发短信的广播,为了防止广播被病毒优先接到而终止,可以把这个BroadcastReceiver的优先级设为最大整数。
有短信到达时,BroadcastReceiver会收到带有“android.provider.Telephony.SMS_RECEIVED”消息的广播,通过接受这个广播监听短信的接收。
由于发送短信时没有广播,不能用Broadcast Receiver监听短信的发送,但是可以利用ContentObserver监听短信发件箱的状态,从而实现对发送短信的监听。
在后台运行Service监听外拨电话,监测是否有病毒程序非法拨打电话。
利用BroadcastReceiver在Service中监听电话状态需要的权限:
android.permission.READ_PHONE_STATE
android.permission.MODIFY_PHONE_STATE
android.permission.PROCESS_OUTGOING_CALLS
有电话拨出时,会收到带有“android.intent.action.NEW_OUTGOING_CALL”消息的广播,可以监测是否是病毒行为。
监听网络连接所需权限:
android.permission.INTERNET
设备联网时,会发出带有”android.net.conn.CONNECTIVITY_CHANGE”的广播,通过运行在后台的Service,接收广播,检测是否有病毒联网。
通过监听应用程序的安装,病毒程序安装的时候就可以监测出来,从而在初始阶段就可以杜绝病毒。
所需权限:
android.permission.RECEIVE_BOOT_COMPLETED
程序安装时,会发出带有“android.intent.action.PACKAGE_ADDED”的广播,在后台接收广播,监测是否有病毒安装。
该系统主要根据病毒特征,进行病毒扫描,查杀病毒程序,同时监听短信、电话、网络、程序安装等敏感行为,实时监测系统的安全状态。
系统主要由4个模块构成:杀毒引擎、主动防御、更新病毒库和日志模块,如图2所示。
图2 Android安全防御系统结构图Fig.2 Schematic diagram of the Android security system
杀毒引擎根据程序和文件的一些特征值判断是否病毒。
每一个Android应用程序的包名和签名都是一一对应的,对于Android设备上已安装的应用程序,可以提取包名和签名作为特征值,利用PackageInfo类可以得到:
package_name=PackageInfo.packageName;
signature=PackageInfo.signatures;
对于APK安装包,还可以计算MD5值作为特征值:md5_str=MD5.GetMd5(file_path);其中file_path为APK文件路径。
主动防御是一个后台Service服务,实时监控Android的设备状态,有病毒入侵时,可以及时监测出来,提醒用户处理病毒。
在Service中创建一个BroadcastReceiver的子类DefendReceiver,优先级设为最大整型数,设置监听短信、电话、网络等信息:
registerReceiver(receiver, filter);
创建一个ContentObserver的子类SmsObserver,监听短信发件箱的信息:
getContentResolver ().registerContentObserver (Uri.parse(“content://sms/”), true, observer);
本系统用tomcat部署服务器,为Android客户端提供病毒库升级服务。
利用Android提供的HTTP和JAVA的输入输出流,从服务器上下载最新病毒库,在本地保存。
日志模块用于记录发现病毒的日志,包括病毒名称、路径、发现时间和处理结果。
利用SQLite在本地创建一个数据库,发现病毒时,将病毒信息存入数据库:
insertToLog(log_db, time, appname, apppath, result);
杀毒引擎和主动防御发现病毒后的处理流程如图3所示。
图3 病毒处理流程图Fig.3 Flow chart of the virus processing
Android安全防御系统的实现如图4所示。
系统中使用了Android 2.3.3以上版本的API,所以只能运行在Android 2.3.3以上的设备上。本文分别在Android模拟器和摩托MB525上测试本系统。
图4 Android安全防御系统实现图Fig.4 Implementation diagram of Android security system
测试项:1)扫描杀毒(包括快速扫描和全盘扫描);2)主动防御;3)更新病毒库;4)查看日志。
测试时,对每项功能都进行了验证,测试结果如表1。
表1 测试结果Tab.1 Test result
用Android自带的工具monkey可以进行压力测试。在PC上执行以下命令即可对程序进行1 000次测试:
adb shell monkey-p com.securitysuite.v1-v 1000
测试结果如图5所示。
图5 测试结果Fig.5 Test result
测试共耗时88 670 ms,在1 000次测试中,只有2个按键操作丢失,其他事件的丢失数均为0,表明系统具有较强的稳定性。
根据测试结果,系统在应用层能够有效查杀已安装的病毒程序和病毒文件,并能实时监控,同时,抗压能力较强,能够稳定运行,有效保护了Android用户的隐私和资金安全。
[1]乜聚虎,周学海,余艳玮,等.Android安全加固技术[J].计算机系统应用, 2011,20(10):74-77.
NIE Ju-hu,ZHOU Xue-hai,YU Yan-wei,etal.Android security reinforcement technology[J].Computer Systems&Applications,2011,20(10):74-77.
[2]温敏,艾丽蓉,王志国.Android智能手机系统中文件实时监控的研究与实现[J].科学技术与工程,2009,9(7):1716-1719,1724.
WEN Min,AI Li-rong,WANG Zhi-guo.Analysis and implementation of file real-time monitoring based on the Android smart phone system[J].Science Technology and Engineering,2009,9(7):1716-1719,1724.
[3]王志国,侯银涛,石荣刚.Android智能手机系统的文件实时监控技术[J].计算机安全,2009(12):42-44.
WANG Zhi-guo,HOU Yin-tao,SHI Rong-gang.The file realtime monitoring technology based on the Android smart phone system[J].Computer Security,2009(12):42-44.
[4]Nauman M,Khan S,Zhang X.Apex:extending android permission model and enforcement with user-defined runtime constraints[C].2010:328-332.
[5]吴俊昌,骆培杰,程绍银,等.基于权限分类的Android应用程序的静态分析 [C]//第四届信息安全漏洞分析与风险评估大会,北京,2011:61-71.
[6]沈才樑,唐科萍,俞立峰,等.Android权限提升漏洞攻击的检测[J].电信科学,2012(5):115-119.
SHI Cai-liang,TANG Ke-ping,YU LI-feng,et al.Android privilege escalation vulnerability attacks detection[J].Tele communications Science,2012(5):115-119.
[7]王力生,叶希哲.一种基于Android的防火墙的研究与实现[J].计算机安全,2009(10):36-38.
WANG Li-sheng,YE Xi-zhe.Study and realization of a fire wall based on Android[J].Computer Security,2009(10):36-38.
[8]Shabtai U, Kanonov,Elovici Y,et al.Andromaly:a behavioral malware detection framework for android devices[J].Journal of Intelligent Information Systems,2012:1-30.
[9]Shabtai U,Kanonov Y,Elovici.Detection,Alert and Response to Malicious Behavior in Mobile Devices:Knowledge-Based Approach[C].2009:357-358.
[10]Habtai U,Kanonov Y,Elovici.Intrusion detection for mobile devicesusingtheknowledge-based,temporalabstractionmethod[J].Journal of Systems and Software,2010,83(8):1524-1537.
[11]Shabtai Y,Fledel Y,Elovici,et al.Using the KBTA method for inferring computer and network security alerts from timestamped, raw system metrics[J].Journal in Computer Virology,2010,6(3):239.
Study and analysis of virus defense technology with Android platform
LIU Bin-bin, LI Yong-zhong, SHU Jun
(Jiangsu University of Science and Technology, Zhenjiang 212003, China)
Android is now one of the most popular mobile platform.The greatest characteristic is the source code is open,thus attracted a lot of enterprises which are the leaders in this industry.These enterprises include telecom carries,original equipment manufacturer, chip makers and so on.At the same time, a large number of users are attracted too.According to the data released by IDC, a market-research firm, Android’s market share reaches as high as 68.1%by the second quarter of 2012.In order to make the Android users do not suffer the harm of virus,the principle of virus with Android platform is analyzed,and a solution of virus defense system based-on Android is proposed in this paper.And the solution has been implemented and tested.The system can monitor the device automatically and run a virus scan.The results of the test show that the system can detect the intrusion of viruses and take measures timely.
Android; principle of virus; intrusion detection; active defens
TP311.52
A
1674-6236(2013)04-0040-04
2012-10-18稿件编号201210118
刘彬彬(1986—),女,湖北随州人,硕士。研究方向:通信技术及其应用工程。