Pages

Monday, 22 February 2016

网友曝光Android版支付宝存在隐私问题 动态下载so代码偷偷打开摄像头和录音

网友曝光Android版支付宝存在隐私问题,需要联系人、短信、还有摄像头甚至连录音的权限也要,我觉得,有闲功夫折腾隐私,不如直接换iPhone,一些喜欢在Android上耍流氓的家伙,到了iOS平台立马就老实多了。

记录:登陆支付宝1分钟内
读取本机识别码6次
读取联系人2次
调用摄像头1次
启动录音1次
读取位置信息7次
读取短信1次
看动漫去一会再打开看看.

xPrivacy 看到的支付宝偷拍过程很高端:开启相机预览,设置相机预览回调,然后从相机预览的画面里面拿一帧,这样不会调用 takePhoto ,在部分强制开启拍照声音的手机上,也不会出现声音,因为是在预览缓冲中拿的图像。
逆了一下支付宝,支付宝会在启动的时候从服务器上动态下载代码(一个.so)文件,加载之后,还会在这个 so 文件的资源区段解压出一个 dex 文件,用 classloader 加载并执行,整个支付宝很大一部分都是动态加载的。。。应该先找证据再发推的。。服务器上一撤证据就gg了.
这样想想 ,支付宝强行做社交,合法的获取拍照录音权限,获取用户的社交关系网,还有之前检测到 xposed 让卸载,也是不难理解了.
支付宝的混淆实在是太好了,完全找不到强有力的证据,只能从硬件使用情况,一些 remote config file 和网络流量来判断:支付宝安卓版每隔X分钟(服务器指定)会在后台开启摄像头拍照,录音X秒,然后上传到服务器上,同时也会有通讯录,通话记录,附近基站和 WI-FI 等信息.
后台使用麦克风和摄像头是大家有目共睹的,现在关键是没有支付宝拍到的照片作为证据。xposed hook 不起作用,zfb 从 xposed 里面反射了一个类,也看不懂具体做了啥,还有奇怪的内存操作,某个位等于多少则怎么样。。。。
在阿里的公关发现这篇推文并云端关掉这个功能之前,应该不会有。因为只需要装任何一个 privacy 软件打开 log 就能发现。
支付宝会在启动的时候从服务器上动态加载执行一个 so 文件,加载之后,还会在这个 so 文件的资源区段解压出一个 dex 文件,用 classloader 加载并执行,整个支付宝很大一部分都是动态加载的,在这件事已经被发出来之后再去抓证据,已经没有太大的意义了, 抓到的[可能]只有正常的行为。
(9.0咔嚓声只有很少机型会触发,而且我找的版本好像和半夜打开支付宝被咔嚓吓一跳的版本[好像]也不一样。。。之前这段先删掉了。。)
startPreview 会开启摄像头,就是你拍照之前的相机的那个预览画面。
setPreviewDisplay 是设置预览的 view,他可以设置成一个1×1像素的区域,也可以搞个透明的悬浮窗?(未测试),也可以瞬间拍完了就隐藏。
setPreviewCallback 参考文档-http://developer.android.com/reference/android/hardware/Camera.html,
Installs a callback to be invoked for every preview frame in addition to displaying them on the screen. The callback will be repeatedly called for as long as preview is active. This method can be called at any time, even while preview is live. Any other preview callbacks are overridden.
也就是说,他不需要调用 takePicture() 函数,也就不会在那些必须带有拍照声音的手机上出现声音。
通过读取拍照预览画面的缓冲拿到 bitmap ,这个 bitmap 就是摄像头正在捕获的内容.