Android“FakeID”签名漏洞分析和利用

本文分析了Android系统的'FakeID'签名漏洞,该漏洞影响2.1及以上版本,允许攻击者伪造数字签名,模拟合法应用如Adobe Flash,获取用户敏感信息。Google已在4.4版本修复此问题,但仍有大量设备受影响。文章讨论了Android签名机制,指出在验证证书链时存在的问题,并展示了如何构造证书链欺骗系统。此外,文中揭示了该漏洞如何被利用来绕过安全软件,如360手机卫士的检测,呼吁开发者重视签名验证并增强应用安全性。
摘要由CSDN通过智能技术生成

转自CSDN《程序员杂志》         作者:火点,三金

7月30号,新闻又爆出Bluebox安全研究团队发布的安卓新的签名漏洞 “假 ID”,除了最新的4.4版本,几乎所有安卓设备都有此漏洞,本文通过技术分析漏洞细节,发现竟然能制作盗版支付宝,绕开360手机卫士的病毒查杀和支付保镖检测。

  • 爆出漏洞

7月30号,Bluebox安全研究团队又对外纰漏新的签名漏洞,这是自去年轰动一时的master key漏洞后又一爆点。号称这一漏洞会影响安卓2.1以上系统所有设备,尽管最新的安卓系统4.4或者称KitKat已经修复了这一漏洞,但是仍然有10几亿的安卓设备受到影响。每一个安卓应用程序都有自己的数字签名,本质上来说就是一张ID卡,该漏洞通过伪造假的ID,能模拟Adobe flash插件,注入到浏览器,获得用户在浏览器输入的隐私信息,或者冒充谷歌钱包,然后获得付款和财务数据。

在今年的Blackhat大会上,Bluebox成员Jeff也有一个关于漏洞细节以及如何利用的精彩演讲,有兴趣的读者可以看看相关文档和视频。

  •  签名那点事儿

Google在4.4上已经打上patch修补了这个签名漏洞,虽然只有短短10几行代码,但是背后的技术原理却极其复杂,请跟我一起来深入剖析,解开安卓签名技术的神秘面纱。

如果你之前对于数字签名不太了解的话,建议先了解PKI,PKCS,RSA,X509等等这些概念。

简单的说,PKI(Public Key Infrastructure)是一套利用公钥加密技术的规范,包括PKCS(Public Key Cryptography Standards)公钥密码系列,X509数字证书系列等等。RSA则是应用最广的公钥加密算法。

X509证书标准用到了公钥加密,引入CA (CertificateAuthority)发证书,作为可信第三方。然而,Google在设计应用签名的时候做了简化,去掉了CA,每个应用变成了自签名,也就是说应用自己生成证书,然后对自己的应用签名,发布出去,在安装应用的时候,系统只是通过安装包证书来验证安装包的完整性,却无法鉴别证书的真假。这个设计留下了巨大的安全设计缺陷,从此安卓的世界里盗版泛滥,广告,病毒,木马可以轻松的通过二次打包嵌入到原本干净的应用中,这个生态圈将永无宁日。

有人会问,这么简单的设计缺陷,Google那帮精英难道不知道吗?当然知道!那为神马要这么做呢?原因很简单,开源,免费。如果引入CA,CA肯定会通过给应用开发者发签名证书收费,除非Google愿意自己搭建免费CA,况且即便是Google搭建了,由于安卓系统可以定制,下游的手机厂商也不一定会买单,不想被Google控制束缚,而且应用市场也不是Google Play这一家,普及起来就更困难了,Google想想还是算了。

回到技术细节,来看看安卓应用签名的实现原理吧。安卓应用APK签名和以前jar签名是一个原理,签名信息会放在META-INF目录下,以RSA签名为例,会生成3个文件。

1    MANIFEST.MF :标准清单文件,记录压缩包的基本信息,其中跟签名相关会记录压缩包中每个文件的hash值,用Base64转码保存如下,称为一个attribute。

Name:res/drawable-xhdpi/ic_launcher.png

SHA1-Digest: h5qMn5HNV9J4T42+TizyymqBqko=<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值