摘要:在手机终端应用软件和移动业务呈现出多样化发展的同时,针对手机短信进行后台监听与窃取的恶意软件也大量出现,已经对手机信息安全构成了严重的威胁。从Android系统的Broadcast运行机制入手,设计一个具有捕获第三方恶意软件劫取短信行为的监测软件,全程对广播进行监听和行为捕获,终止短信被劫取、转发等恶意行为的发生。在经过测试试验后效果良好,可以有效地解决短信被泄露的问题。
关键词:广播; 监听; 注册; 调用
中图分类号: TP311
文献标志码:A
文章编号: 2095-2163(2016)06-0059-03
0引言
随着智能手机的普及与风靡,人们通过安装手机软件就可以随意点选由智能手机提供的网上购物、手机支付、手机银行等电子时代e服务。但是就在人们日趋理想、便捷地畅享智能手机带来的各项服务便利的同时,许多捆绑有恶意行为的Android系统应用软件,也已通过各种免费下载平台自动入侵并安装至用户的手机终端。这一类的应用软件可以在Android系统的后台静默运行,任意劫取和转发用户的手机短信内容,从而严重侵犯了手机用户的个人隐私。目前,Android开发技术正呈现方兴未艾的活力态势,这一类的恶意软件也正在朝着多样化、复杂化以及日渐隐蔽化的方向发展,这就使得智能手机终端信息安全問题则日趋显著突出,并亟待有效解决。本文即针对这一课题内容展开研究论述。
[BT4]1系统设计原则和目标
[BT5]1.1设计原则
本系统是基于当前较为流行的手机操作系统Android平台构建推进预期设计与研发的,针对手机中恶意软件可能操纵生成的短信劫取、转发等行为进行监听和拦截。在设计中,系统将按照可靠性、实用性、可实现性和二次开发性这4个方面作为原则出发点来支持确保后续方案的技术品级与领域价值。具体地,系统可靠性要求在系统中实时监测短信广播,监听恶意软件劫取和转发短信的行为,并终止这些危险行为的发生;系统实用性要求系统操作过程简单、运行稳定和监听过程准确;系统可实现性要求对于开发技术要求和软件目标功能要求具有可实现性;二次开发性要求设计要采用模块化,模块功能要逐步细化,并能够降低各个模块的耦合性,从而提高系统的二次开发扩展性。
[BT5]1.2设计目标
系统设计目标是在分析Android系统如何发送和接收短信的运行过程、运行原理的基础上,通过判断哪些应用程序具有拦截、劫取短信的动作行为,监控并终止这些恶意行为,为手机终端用户提供相对安全的使用环境,保护用户的个人信息安全。
[BT4]2Android系统短信监听机制
[BT5]2.1系统广播机制
Android系统中短信的接收与回应是通过Broadcast Receiver组件来定制完成的\[1\],Broadcast框架模型如图1所示。Android中的广播可以由系统或是其它程序根据当前运行的行为来调控生成,因此这些广播不是以时间为驱动的,也就是将具有明显的异步性。为了能够及时响应某个广播,在程序设计中大多数会采用2种方式。一种方式是让监听程序长期驻留后台内存中,随时监听广播的发生,但是这种设计的弊端在于长期占用后台内存资源,对系统的资源造成了浪费。另一种方式是对要接收的广播类型在程序中进行注册,只要在Android中产生了注册的广播类型,监听程序就可以马上捕获。这种方式的突出优点长处就在于即使程序不是运行状态,也可以捕获注册的广播类型,从而能够高度可观地节省下系统的资源。
2.2广播的注册方式
Broadcast Receiver就是指广播的注册方式,重点组成主要包括2种,分别是:静态注册与动态注册方式。在此,针对这2种方式分别给出如下的性能分析阐释与概述。
1)静态注册方式。是把接收广播者的特征注册到程序的配置文件中提供声明,当对应广播发生的时候,系统会按照一定的顺序到程序的配置文件中去查找和确定该广播的接收者。静态注册方式的广播接收者存储在程序的配置文件中,因此只要程序不被卸载或是删除,注册就保持一直有效。静态注册方式对预知类型的广播有着非常快速的响应,但是对于程序自定义产生的广播类型监听效率却不高[2]。
2)动态注册方式。是通过在程序运行过程中调用Register Receiver和UnRegister Receiver的方法来完成注册的。动态注册方式的优势是可以随时根据程序的需求来响应、指定格式广播,即时性较强,同时动态注册方式的操作设定也较为灵活。动态注册方式的缺点是注册过程相比静态注册方式的设置过程要更为复杂,同时注册后监听过程的生存期与静态注册方式相比也较为短暂。
[BT5]2.3监听发送短信过程
研究可知,在Android系统中对Intent不会进行广播,因此对于发送短信的行为监听就将存在现实困难。根据Android平台的系统规定,只有在后台运行或操作的行为Intent才能够进行广播,发送短信是用户的主动行为,并不属于广播Intent的范围,因而不会产生系统广播消息,此时采用传统的注册Broadcast Receiver监听收发短信则不再具备技术发生基础[3]。为了能够实现对收发短信的监控,本系统在设计过程中是通过调用onChange函数,来实时监听Content observer对象的变换,进而观察存储短信的数据表状态来确定是否发送短信。
[BT5]2.4监听接收短信过程
监听接收短信过程就是对Android系统自带的收件箱,可将接收到短信之前的所有短信广播接收者进行跟踪监听,并判断有哪些程序具有劫取和转发短信的行为。监听程序可以将侦测到的表现有恶意行为的软件构建形成完整记录,并可以终止其运行。在设计中,监听程序可以通过调用onReceive函数生成有序广播来发送广播消息。
[BT4]3系统的实现
[BT5]3.1功能实现
监听系统的主要实现功能可综述如下:
1)Service组件将程序隐蔽在后台运行,绑定系统开机消息并能够开机启动。
2)Service可以扫描和监听具有劫取短信恶意行为的进程,并终止恶意进程的运行。
3)检测各个应用程序的系统权限,有效遏制恶意程序对短信广播的接收。
4)对手机短信收发过程进行不间断监听,全程监听用户收发短信过程。
5)监听并记录Android系统中应用软件获取的危险权限。
6)对短信数据库中短信表进行监控,及时发现非法读取短信内容的进程,并终止该进程的执行。
7)产生恶意劫取和转发短信行为后,及时警告用户并终止恶意行为的继续发生。
[BT5]3.2主要功能模块实现
[HT5”SS][ST5”BZ][WT5”BZ]3.2.1短信监听模块
短信监听模块主要用于实现系统对目标手机发送和接收短信动作的不间断监听,本系统采用了Service组件来提供功能效果设计支持。由于Service组件没有交互界面,因而全部在系统后台运行实现。这也于无形中增强了系统的隐蔽性和抗干扰性。
相对于权限设定而言,可在程序设置文件AndroidMainfest.xml中對接收短信广播进行注册。为了能够拥有更高的优先权获取广播,研究可将android:priority的值设置为“1000”。权限设置代码为:
public void onReceive(Context context,Intent intent)
{
Object[]object=(Object[]) intent.getExtras().get(“object”);
Intenti=new Intent(context,SMSHandle.class);
i.putExra(“sms”,object);
context.startService(i);
}
3.2.2监听应用程序是否具有转发短信行为
Android系统中发送短信方式通常有3种。第1种是直接将要发送的数据与Intent绑定在一起,然后将Intent进行广播,这样就可以正常调用系统本身自带的短信程序来发送短信[4]。第2种方式是调用Android系统已有的短信程序来展开发送;隐蔽性最强的是第3种,该种短信发送是通过调用系统底层的短信发送接口来具体实现,对第3种方式设定监控,是本系统研发中的功能组成重点。具体实现代码如下:
public void onclick(View v){
String num=((EditText)findViewById(R.id.num)).getText().toString().Trim();
String sms=((EditText)findViewById(R.id.sms)).getText().toString().Trim();
SmsManagermessages=SmsManager.getDefault();
if(sms.1ength() >=100) {
ArrayList
messages.sendMultipartTextMessage(num, null,msgs,null,null);
}
Else {
Messages.sendTextMessage(num,null,sms,null,null):
}
}
3.2.3监听应用程序读取短信数据库内容
通过对Content Observer对象的监听,捕获并记录访问Content Observer对象的程序列表,为分析和判断应用程序是否劫取短信内容提供依据。注册短信变化主要代码如下:
SmsContent content = new SmsContent(new Handler());
this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"),true, content);
捕获应用程序通过Content Observer对象访问短信内容主要实现代码:
Bundle bundle = intent.getExtras();
Object msgs[] = (Object[]) bundle.get("msg");
SmsMessage smsmsgs [] = new smsmsgs [msgs.length];
smsmsgs[n] = smsmsgs.createFromPdu((byte[JP2][[KG-*5]][JP]) messages[n]);
sender =smsmsgs [n].getOriginatingAddress();
content =smsmsgs [n].getMessageBody();
[BT4]4系统测试
[BT5]4.1监听接收短信功能测试
在程序界面中单击“启动服务”按钮启动监听程序。通过向手机发送短信,测试本系统在后台监听接收短信功能是否可以达到设计要求。测试结果如图2、3所示。
[BT5]4.2发现恶意进程劫取短信功能测试
监听Android自带短信程序以外的具有劫取和转发短信行为的其它应用程序,并及时预警、记录、终止恶意程序执行。测试结果如图4所示。
经过测试实验后可知,本系统能够实现在后台不间断地监听收发短信过程,并能准确、及时地捕获具有劫取和转发短信行为的恶意软件,同时还能为用户提供下一步操作指示,测试结果表明设计符合预期标准,可以满足实用需求。[FL)]
[PS刘环2.EPS;S*2;X*2,BP#]
[HT5”SS][ST5”BZ][WT5”BZ][FL(2K2]
[BT4]5結束语
以Broadcast组件收发短信的基本运行原理为基础、采用动态注册广播监听器、获取系统级短信监听高级权限,分析应用程序是否具有劫取和转发短信的行为动作为设计思想,实现了对Android系统手机用户的短信保护,有效阻止了手机用户短信内容的泄露,系统设计完成并经过测试后,达到、并取得了预期的功能和效果。
[LL][HS1*2][HT5H]参考文献:[HT]
[WTBZ][ST6BZ][HT6SS][1] [ZK(#〗
[HJ*2]
朱明. Android环境下隐私保护的设计与实现[D]. 南京:南京理工大学, 2014.
[2] 韦强生. Android软件安全与逆向分析[M]. 北京:人民邮电出版社, 2013.
[3] 李寅,范明钰,王光卫. 基于反编译的Android平台恶意代码静态分析[J]. 计算机系统应用, 2012,21(11):187-189.
[4] 高岳,胡爱群. 基于权限分析的 Android 隐私数据泄露动态检测方法[J]. 信息网络安全, 2014(2):27-31.[ZK)]
[FL)]
[WT6HZ][HT6H][ST6HZ][JZ]图2启动与关闭服务界面图3短信内容监听界面图4报警界面
[JZ]Fig. 2Startup and shutdown service interfaceFig. 3 SMS content monitor interfaceFig. 4 Alarm interface