Forristal解释说,通过拆卸,修改和重新组装应用程序,他们改变了其开发人员签名。 新签名未获得使用Google Maps的许可,因此被拒绝。 他们的新任务; 更改代码而不更改签名。
Forristal详细介绍了Android验证已签名应用程序时发生的一系列事件。 每一层都会验证前一层,首先要验证代码模型是否未被篡改,最后是整个软件包的数字签名。 他尝试在每个阶段都对系统进行攻击,大多数情况下没有运气。
“ APK,JAR和ZIP格式基本相同,” Forristal指出。 “ JAR和APK仅具有其他组件。” 他的最终成功涉及利用ZIP格式。 当他插入与现有有效文件同名的“邪恶”文件时,验证程序在有效文件上签字,但“邪恶”文件启动了。
为什么? 因为Android在验证程序和实际安装程序中使用不同的ZIP文件管理代码。 Forristal解释说:“ ZIP文件解析的差异是此错误的根源。” “实际上,Android代码库中有 八个 单独的ZIP文件解析实现。”
走出沙盒
“我永远使用了这个技巧,” Forristal说。 “现在,让它变得很棒。” 与iOS一样,Android在其自己的沙箱中运行每个应用程序,因此一个应用程序无法访问属于另一个应用程序的资源。 他解释说:“进入沙箱的唯一方法是由同一个开发人员签名。” “这就是使更新成为可能的原因。”
他继续说:“整个系统都支持相同的概念。” “系统沙箱会强制执行所有其他沙箱。它控制您的所有设置。它不是root用户,但拥有您所有的数据,应用程序,密码和设置-还剩下什么?系统功能强大。” 访问系统沙箱的应用通常由平台制造商签名。 他总结说:“我只需要获得一个平台签名的应用程序,然后做一点小技巧,就应该可以进行系统级访问。这比FourSquare地图要酷。”
事实证明,第三方VPN需要进行平台签名,作为奖励,它们已经请求访问系统沙箱。 Forristal显示了他用来将“邪恶”代码插入第三方VPN的三个简单命令,开玩笑说“über黑客工具”。 结果? 具有完整系统级访问权限的木马。
容易剥削
Forristal解释说,高级安全技术专家Saurik(Jay Freeman)将这一概念提升到了一个新的高度。 他的Cydia Impactor工具可在OSX和Windows上运行,并自动进行漏洞利用。 “连接设备,” Forristal说,“它找出合适的应用程序,对其进行构建,添加适当的技巧以获取root用户访问权限并进行交付。我本来会发布一些俗气的概念验证应用程序,但这真是太棒了。 ”
Forristal指出,设备的处理器类型无关紧要。 该攻击不受ASLR(地址系统布局随机化)或DEP(数据执行保护)的影响。 他制作了一个可以在四代Android上运行的版本,唯一需要的真正技能是Java知识。 “我为Black Hat提交了此文件,因为它易于理解和利用,” Forristal说。
更多万能钥匙
Forristal记录了其他最近发现的错误,这些错误可以被视为“主密钥”。 当浏览名为Authenticated Attributes的功能的代码时,Bluebox研究人员发现一行被注释掉并标记为“ TODO”。 由于缺少代码,无论您对文件进行什么更改,都将通过验证。 Forristal指出,没有多少文件使用此功能。 “如果找到一个,则可以复制并粘贴证书文件并采用开发者的身份。如果您使用身份验证属性对应用程序进行了签名,那么您就已经放弃了身份。” 由于此错误在Bluebox报告之前已得到修复,因此他们不承担任何责任。
一位中国研究人员报告的“隐藏木马”攻击原来只是利用Android的多个ZIP文件解析器的几种可能方式之一。 这些攻击利用了以下事实:一个解析器用户使用带符号的整数,而另一个使用无符号的整数。
“甚至不打算替换一个文件,” Forristal热情地说道。 “您可以使用此技巧来馈送完全不同的ZIP文件。一个经过验证,另一个可以运行。此空间中的几个技巧和花絮可能显示出这种方法的更多功能。”
尽管使用这种技术的恶意软件已经广为人知,但不可能将此处所述的特洛伊木马文件下载到Google Play中。 如果您始终且仅安装经过官方审查的应用程序,则 可能 会很安全。 不过,为了安全起见,请务必立即安装所有可用的Android更新。