安卓 “假ID” 签名漏洞,竟然骗过了支付宝和360

安卓 “假ID” 签名漏洞,竟然骗过了支付宝和360

发表于 2014-08-07 19:29| 18146次阅读| 来源 CSDN| 124 条评论| 作者 火点
安卓 漏洞 android应用 支付宝 移动支付 操作系统
width="22" height="16" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2014-08-07%2F2821107-Android-Fake-ID-Bugs&type=3&count=&appkey=&title=7%E6%9C%8830%E6%97%A5%EF%BC%8CAndroid%E5%8F%88%E7%88%86%E5%87%BA%E6%96%B0%E7%9A%84%E7%AD%BE%E5%90%8D%E6%BC%8F%E6%B4%9E%E2%80%9C%E5%81%87ID%E2%80%9D%EF%BC%8C%E9%99%A4%E4%BA%86%E6%9C%80%E6%96%B0%E7%9A%844.4%E7%89%88%E6%9C%AC%EF%BC%8C%E5%87%A0%E4%B9%8E%E6%89%80%E6%9C%89Android%E8%AE%BE%E5%A4%87%E9%83%BD%E6%9C%89%E6%AD%A4%E6%BC%8F%E6%B4%9E%E3%80%82%E6%9C%AC%E6%96%87%E9%80%9A%E8%BF%87%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90%E6%BC%8F%E6%B4%9E%E7%BB%86%E8%8A%82%EF%BC%8C%E5%8F%91%E7%8E%B0%E7%AB%9F%E7%84%B6%E8%83%BD%E7%9B%97%E7%89%88%E9%80%A0%E6%94%AF%E4%BB%98%E5%AE%9D%EF%BC%8C%E7%BB%95%E5%BC%80360%E6%89%8B%E6%9C%BA%E5%8D%AB%E5%A3%AB%E7%9A%84%E6%A3%80%E6%B5%8B%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1457518873175" frameborder="0" scrolling="no" allowtransparency="true"> 摘要:7月30日,Android又爆出新的签名漏洞“假ID”,除了最新的4.4版本,几乎所有Android设备都有此漏洞。本文通过技术分析漏洞细节,发现竟然能盗版造支付宝,绕开360手机卫士的检测。

申请MDCC2014移动开发者大会免费展位,助力创业梦想!

本届大会以“你就是主角”为主题,为移动开发者打造一场真正的年度盛会。为让更多的移动应用团队有自己专属、固定的展示交流区域,大会主办方特别提供了MDCC应用团队免费展位。无论是成熟的创业团队,还是处于成长期的移动应用、移动游戏、智能硬件开发团队,只要有成型作品,均可免费申请。


7月30日, 新闻又爆出Android新的签名漏洞 “假 ID”。每一个Android应用程序都有自己的数字签名,本质上来说就是一张ID卡。例如Adobe系统在Android系统上有一个特殊的签名,所有Adobe的程序都有基于这一签名的ID。Bluebox公司发现,当一个应用程序闪射一个Adobe ID,Android并不会与Adobe核查这是否是真实的ID。这意味着一个恶意用户可以基于Adobe的签名创造一个恶意软件并植入你的系统。

这个问题并不只是Adobe系统特有,黑客可以创造一个恶意应用程序冒充谷歌钱包,然后获得付款和财务数据。相同的问题也出现在某些设备上的管理软件,这使得黑客可以完全控制整个系统。  “本质上来说,我们发现了一种制造虚假ID的方法,”佛利斯塔尔这样说道。“很多黑客都能够创造假ID卡,但问题是他们创造的是哪一种虚假ID卡?”这一缺陷会影响Android2.1以上系统,尽管最新的系统4.4或者称KitKat已经修复了这一漏洞,因为这个系统与Adobe相关,据Bluebox表示。从2012年至2013年,大约14亿新的设备装有Android操作系统,据市场研究机构Gartner公司表示。Gartner估计今年将有11.7亿个Android设备。

原则上,每个应用的签名时只用一个证书,这个证书最终会保存在APK文件的META-INF/CERT.RSA。如果我们想做一个二次打包的“盗版“应用,可以生成一个证书链,包含两个证书,根证书是该应用的官方证书,从APK中获得,二级证书是伪造证书,真正用于对APK中的所有文件进行自签名,这样就既可以通过安装时的签名验证,也可以在运行时欺骗系统误以为是真的应用,从而被授权。

由此我们联想到国内的安全现状,二次打包猖狂,牵连应用非常多,尤其是知名移动金融应用,如支付宝,各大银行客户端等。同时很多安全软件提供正版签名验证功能,帮助用户鉴别盗版应用,免收欺诈。甚至一些应用自己也会做本地或远程签名验证,如微信。

我们设想安全软件做正版签名时是否也会犯类似的错误?只验证根证书或者只要匹配一个证书成功就可以了。

首先,我们构造如下的证书链。


然后我们利用这个证书链对支付宝做了重签名,真假证书同时打包到APK中。然后使用腾讯手机管家,360手机卫士,豌豆荚进行盗版签名验证检查,测试结果如下:

腾讯手机管家,豌豆荚(洗白白)能检测,360手机卫士无法检测,支付宝也无法检测。


腾讯手机管家检测出盗版支付宝


豌豆荚检测出盗版支付宝


360未检测出盗版支付宝

完整演示视频地址: http://v.youku.com/v_show/id_XNzUyMjUwOTI4.html

最后,我们又做了一个实验,只用一个假证书做成盗版支付宝,结果除了支付宝自身,其他3家都可以检测出来。于是我们断定支付宝没有实现自我签名验证,也就是说如果用户手机上没有装盗版检测的软件,那存在很大的可能性,用户的支付宝账户被盗,财产受损。

移动支付作为越来越普及的生活习惯,我们希望安全界老大360早日解决签名验证的问题,不让恶意软件有可趁之机。同时我们也希望支付宝作为支付行业龙头,这种基本的自我保护是必须做的,不能完全依赖于第三方软件检测,这也是对用户最基本的责任。

如果大家对此类内容感兴趣,我们将在后续出版的《程序员》杂志上对此漏洞进行详细的技术解密。

本文作者为安全兴趣小组“鲶鱼团队”,长期钻研移动互联网安全技术,曾在《程序员》6月刊发表《Hack微信,不一样的安全视角》。

你可能感兴趣的:(android)