Android短信木马的模拟与监测研究

2017-10-13 13:56李旭东
网络安全技术与应用 2017年6期
关键词:管理器监听木马

◆李旭东



Android短信木马的模拟与监测研究

◆李旭东

(中国联通山东省分公司网络与信息安全部 山东 250002)

本文在阐述了Android系统架构的基础上,基于Android SDK模拟实现了短信监听木马原型,为了为用户提供有效的防护手段,又进一步针对外发短信等的实时监测提出了其具体实现,最后针对进一步研发的关键点进行了讨论。

Android;木马模拟与监测

0 引言

360互联网安全中心最新发布的《2016年中国互联网报告》中称:在截获盗取个人信息的手机恶意程序样本中,67.4%的样本会窃取短信信息,34.8%的样本会窃取手机银行信息,10.0%的样本会窃取手机联系人信息,3.7%的样本会窃取手机通话记录[1]。网络上有研究表明,2017年2月中国国内的手机操作系统份额比例,Android暴涨至86.4%[2]。由于Android系一开放的系统,因此大量的窃取和拦截短信的木马程序产生于安装有Android操作系统的手机上。因此深入研究Android短信木马的实现,掌握核心技术,有针对性的研发出相应的短信收发监测系统是一项紧要的工作。本文首先阐述了Android系统架构,并在此基础上描述了基于Android SDK实现短信木马的技术,针对短信发送提出了短信实时监测的开发,最后作者针对后续的研发方向进行了讨论。

1 Android系统架构

Android系统架构可分为四层:操作系统层、各种库和Android运行环境、应用程序框架层、应用系统。具体如下图所示。

图1 Android操作系统组件结构图

内核层提供内存管理、进程调度设备驱动和文件系统,所有的设备资源如显示、相机、Wifi、蓝牙、音频、键盘、Flash内存等通过内核层进行访问[3],内核层以Linux2.6操作系统为基础改造[4]。

各种库和运行环境层相当于中间件,本层的内容大多是用C/C++实现的,包括了C库、多媒体库、SGL、SSL、OpenGL ES、界面管理工具、SQLite、WebKit、FreeType。Android运行环境主要是指Dalvik(虚拟机)技术。Dalvik不同于Java虚拟机,主要区别在于Java VM是基于栈的虚拟机,而Dalvik根据硬件实现进行了优化,是基于寄存器的,更适合于移动设备。

在应用程序框架层,Android为应用程序和开发都提供了各种功能的强大API,提供了程序中所需要的各种控件。

顶层应用程序主要是用户界面,本层通常使用Java编写,经过编译后生成一个APK包,然后在手机安装后使用。

2 基于Android SDK实现短信监听木马

基于短信监听木马模拟程序的研发,可以探索短信监听木马的实现机制,从而提出有针对性的反制措施,另外,也可以为下一步实施监听系统的研发提供可控的模拟测试样本。

一个Android应用通常由5个部分组成:Activity(活动)、Broadcast Intent Reveiver(广播意图接收者)、Service(服务)、Content Provider(内容提供者)、Intent and Intent Filter(意图和意图过滤器)。本文对短信的监听需要用到Activity、Broadcast Intent Reveiver和Intent。程序中通常一个Activity对应一个单独的界面,一般情况一下实时短信监听的恶意木马是不会在操作中提供界面的,而Broadcast是不需要提供界面的。我们这里只是为了模拟短信监听木马,为了演示和操作方便,因此提供了Activity。

首先需要在AndroidManifest注册相应的短信权限。

然后重写MainActivity中的init()。

mSMSBroadcastReceiver=new SMSBroadcastReceiver();

mSMSBroadcastReceiver.setOnReceivedMessageListener(new MessageListener(){}

可以实时监听到所接收到的短信。

对监听到的接收的短信内容可通过后台发送到指定的手机或邮箱中,以后台发送给指定手机为例如下:

SmsManager sms=SmsManager.getDefault();

Intent sentIntent=newIntent(SENT_SMS_ACTION);

PendingIntent sentPI=PendingIntent.getBroadcast(this,0,sentIntent,0);

sms.sendTextMessage(phoneNumber,null,message,sentPI,deliverPI);

用一测试手机向安装有模拟程序手机发送测试短信,接收和显示的短信如图2所示:

图2 短信系统和木马模拟程序监听的短信信息

3 手机外发信息的监测

针对短信监听木马,需要对手机外发的短信内容进行全面监测,可以及时发现和提醒用户是否有恶意程序在对监听到的短信通过短信等外发到某一指定手机上。以外发短信监测为例:

首先在AndroidManifest注册相应的权限。

然后注册相应的组件。

重写BroadcastReceiver类中的onReceive()

Object [] pdus= (Object[]) intent.getExtras().get("pdus");

for(Object pdu:pdus){

SmsMessage smsMessage=SmsMessage.createFromPdu((byte[]) pdu);

String sender=smsMessage.getDisplayOriginatingAddress();

String content=smsMessage.getMessageBody();

long date=smsMessage.getTimestampMillis();

}

基于Android SDK中的BoxManager监测器开发的短信外发监测短信信息如图3所示:

图3 手机外发短信信息监测

4 进一步研发短信木马监测的关键点

在短信监测系统的研发过程中,我们发现Android原生的SDK方法中,没法监测到哪个APP发送的短信,因此虽然我们能够监测到手机通过SMS Manager外发的短信信息,但并不能够挖掘出是哪个应用发出的短信,因此进一步的分析工作如:对比手机中注册的合法权限用户,找到外发的后台恶意程序,就无法开展。针对这一问题,我们初步研究了实现方法,初步的思路是通过JNI层,采用hook系统关键API的方式,去监听哪些程序调用了发送短信或者其他敏感API,然后结合特征码或白名单等方式去判断是否提示用户或者直接放行。

目前在这一方面的研发有参考价值的是360公司于2104年12月份申请的发明专利:《移动终端及其设备管理器权限的拦截方法》,“本发明实施例提供了一种移动终端及其设备管理器权限的拦截方法,所述方法包括监听到设备管理器权限的获取请求后,拦截所述请求,并确定出发送所述请求的程序;确定出所述程序与安全识别库所记载的恶意程序相匹配后,提示用户有恶意程序尝试获取设备管理器权限;在接收到用户输入的禁止指令后,清除所述请求[5]。”

5 总结

随着智能手机的发展和应用,如何保护我们的手机信息的安全,对手机应用信息流的实时监测是一个重要的发展方向,本文在模拟短信监听木马的基础上,研发了短信等的外发监测程序,但对这一工作的研究才刚刚起步,还需要一些关键技术的突破才能达到比较完善的效果。对本文内容感兴趣的研发人员,也可以联系作者,让我们共同推进手机的安全防护工作。

[1]2016年中国互联网安全报告.http://zt.360.cn.

[2]2017年2月手机市场份额.http://www.ithome.com/h tml/iphone/304298.htm.

[3]卿斯汉.Android安全研究进展.软件学报,2016.

[4]刘云,朱桂英.Android系统安全和反编译实战.清化大学出版社,2015.

[5]移动终端及其设备管理器权限的拦截方法发明专利.http://www.google.com.

猜你喜欢
管理器监听木马
小木马
骑木马
英国风真无线监听耳机新贵 Cambridge Audio(剑桥)Melomania Touch
启动Windows11任务管理器的几种方法
应急状态启动磁盘管理器
千元监听风格Hi-Fi箱新选择 Summer audio A-401
小木马
Windows文件缓冲处理技术概述
旋转木马
网络监听的防范措施