本文原发表在IDF实验室博客,作者为Archer,地址:
http://blog.idf.cn/2013/10/privacy_on_android/
经IDF实验室同意转载至此。
-----
IPHONE/IPAD的IOS的隐私保护,曾经让我这种玩Android的穷人急红了眼。
1、总线控制型的第三方工具
在2011年,Android的隐私保护只有PDroid。PDROID可以给每个程序分别设置MAC、手机号、机器码。PDROID工作原理和IOS相似,在驱动链(chain)上加个节点(node)控制所有程序的请求,同时提供个GUI前端进行具体设置。它可以控制Android v2.x上的。
IMEI(可伪造)、
IMSI(可伪造)、
SIM卡序列号(可伪造)、
手机号码(可伪造)、
来去电号码、
SIM卡信息、
当前蜂窝网络信息、
GPS定位信息 (可伪造)、
基站定位(可伪造)、
系统自带浏览器的历史、
书签、
联系人、
通话记录、
系统日志、
日历 、
当前账户列表、
当前账户的授权码、
短信彩信……
Pdroid在谷歌商场有提供了
官方介绍,并且给出了
xda的官方链接。
相比之下,好像所有的隐私保护工具都弱暴了。
对一般的安粉来说,Root不是大问题;问题是PDroid必须使用不加密的framework(说明硬件和结构的文件)。HTC /Moto等等知名厂商都有bootloader lock和framework encryption。如果不加密这些文件,不仅终端安全就暴露在暴徒手下,关键是hacker可以直接给手机解锁、解除各种SP绑定了(喔 RMB USD UKP … 各种钱财啊),重写android系统(是开源的)也都不是问题了。厂商不加密Framework才怪!
这种局限 丝毫不影响Pdroid的跨时代地位。Pdroid的作者后来放弃了这个项目,后来XDA的大师们继续为它做更新,并且推出了新的项目OpenPDroid。
是的,我手头的设备都加密了framework.apk(同目录下存在framework.odex就是加密特征)。我望洋兴叹很久、很久、很久……
2、APK为核心的阶段
后来,APK的自动化重打包技术成熟。逐渐出现了删除程序API(例如删除访问GPS功能)、修改API返回值的各种工具。
例如直接禁用接口功能的APK权限修改器。不过,禁用/删除接口有可能会造成程序不能正常使用。举例说,很多程序启动的时候就要访问硬件ID,停用这个功能之后,修改后的APK会直接挂。
强制某些接口的返回值为固定值(NULL等)的工具同期问世。例如洗大师,但是它必须将APK上传到服务器修改、并且必须保留修改程序才能使用修改后的APK。不知道是不是多数用户可以接受呢?俺是不用了。
顺便推荐一下著名的LBE。实际上LBE问世很早,但是出于资源和性能的考虑,我没有使用过LBE。近来,LBE没有以前那样受欢迎。
要在这里说明的是LBE用的技术比较复杂,应该不只修改APK、加入调试这么简单。本文只是把它放在这里,分类可能不准确。
此外也有LBE Privacy Guard (不需要root,2012年问世)。应该是标准的APK修改工具。
其实还有Permission denied,下线了。
Privacy Blocker 停止更新了……
3、谷歌重视的官方关注
Android是谷歌与Apple竞争的平台。谷歌当然会重视隐私安全。
谷歌随后在Android 4.1推出了APP OPS (程序,对不起啦)功能,并且可以在设置面板里直接限制程序访问隐私的权限。这个功能在AOSP版本的Android里直接可以看到,但是官方仅在4.3里实现了前端
GUI-App Ops Starter。
我们看到了App Ops类似于iOS6~7的隐私保护,它控制了下列功能:
位置
读/写联系人*
读/写通话记录*
收/发短信*
拨打电话
发送通知(已经在4.1实现)
在(包括其它应用程序的Activity之上的)顶层绘制
修改系统设置(指开启蓝牙,GPS,Wlan等项目,具体包括哪些API不清楚)
震动
拍照(使用摄像头)*
录音*
读/写剪贴板*
读/写日历*
android的实现方法比较体贴!Framework大家都加密,可是隐私必须保护,所以(据说)Android在app_process, 即Java程序的launcher上实现了参数传递的功能。即是说,app_process可以从配置文件里读取参数,选择性的屏蔽部分API的功能(应该是返回Null)。
App Ops的Activity已经在AOSP代码库(2013-8月份)的一次Commit里被注释掉了,也就是说在可见的未来里,App Ops应该不会出现。所以……呢
4、粉丝们的后现代主义时代
我不想多说什么官方不官方的,因为粉丝早比我疯狂。
最让我着迷的恐怕是
XPosed.XPosed(要Root)修改了App_process并且在dalvik添加了个层(我认为还是节点),可以说它hook了几乎整个系统。Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。
当前,Per APP Setting(为每个应用设置单独的dpi或修改权限)、Cydia、XPrivacy(防止隐私泄露)、对原生Launcher替换图标等应用或功能均基于此框架。
XPosed的App settings模块可以直接禁用程序的API接口,而不必修改APK文件。不过XPosed最大招牌还是XPrivacy 模块,阻止程序访问隐私信息。值得一题的是,XPrivacy的伪造信息的功能。美中不足就是,它不能针对每个程序伪造不同的信息。对于免费软件来说,不要要求太多了。
XPosed Appsettings 可以把每个API都给你列出来,让你禁用。与Xprivacy 配合,Xposed可以控制近百个项目,甚至可以指定应用程序只能看到你选定的联系人.这种功力让人不寒而栗。
XPosed 实际上实现了前文说的所有技术,是名不虚传的强中之强。另外,我的电池是1200mA的,并没感觉Xposed 多费电。
上面的程序都是Hacker的作品。Hacker保护了自己的权益,也将之推广、造福大众,这是黑客文化的精髓之一。
今天就写到这里吧。预祝各位刷机愉快!
(全文完)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)