在Qualcomm Android手机中检索全盘保护加密狗

漏洞发布在Github上




Google已开始在Android 5.0 Lollipop中引入默认的全盘加密(FDE)。最初,在Nexus 6设备上实施加密时,许多用户抱怨在将数据写入驱动器时性能下降,但是从Android 6.0版本开始,似乎可以解决此问题。

即使设备落入执法人员或其他入侵者之手,全盘加密也会保护电话上的所有信息

启用加密后,在写入媒体之前,会使用AES密钥自动对手机上的所有信息进行即时加密。反之亦然,当读取信息时,将使用此密钥自动对其进行解密。

在iOS 9设备上,此密钥是用户密码的派生产品,并且是工厂出厂时连接到智能手机的唯一256位硬件密钥。甚至FBI也无法使用蛮力破解这种级别的加密,这是圣贝纳迪诺(San Bernardino)射击手的智能手机的近期历史所知,因此FBI和Apple 受到了起诉。结果,FBI仍然设法使用未知的0day漏洞破解了手机。从国家元首的话可以理解,黑客不得不支付超过一百万美元来绕开对FBI的保护


iOS中的全磁盘加密

因此,只有使用特定的硬件设备才能进行FDE暴力破解。这极大地使攻击复杂化。在通常情况下,您可以创建一百万个副本并并行化云服务中的蛮力,这使您可以非常快速地找到99%的真实密码。但是在这种情况下,我们必须将自己限制为苹果会增加干扰的唯一设备-两次密码尝试之间的延迟,最大尝试次数的限制等。因此,对于特殊服务而言,找到一种检索硬件UID的方法极其重要,然后蛮力密码成为一项普通的技术任务。

Android 5.0+中的全盘加密与iOS 9中的实现有所不同,有关详细信息,请参见Nikolay Elenkov的博客Android官方文档

在这里,加密密钥也是通常弱用户密码的派生词,也是随机生成的128位主密钥(设备加密密钥-DEK)和随机生成的128位salt 的派生。 DEK生成字段使用精心考虑的方案进行保护,该方案使用用户输入的值-密码/密码/图案(图形键)进行输入。然后,将加密的DEK放入称为crypto footer的特殊加密存储中。必须先克服所有这些加密级别,然后再解密DEK,然后再解密驱动器上记录的所有信息。



与iOS 9一样,Android操作系统将加密方案绑定到特定硬件,以防止对操作系统副本施加暴力。硬件绑定功能由特殊的硬件存储 -KeyMaster 执行,KeyMaster在特殊的可信执行环境(TEE)中运行,该环境完全独立于Android操作系统。 KeyMaster环境中的密钥安全至关重要。只有这样,才能保护全盘加密系统免于在OS副本上的并行流中进行有效的暴力破解。

在Android设备上,隔离的环境永远不会将自己的密钥发布到“不安全的”环境中。相反,KeyMaster模块从不安全的环境中接收“密钥斑点”,解密存储在其中的密钥,然后将其返回。换句话说,加密系统的操作只能直接在硬件设备上进行,而不能在另一台计算机的虚拟环境中进行。

通常,整个过程可以用Nikolai Elenkov给出的示意图来示意性地描述



设备制造商提供的受保护环境可确保KeyMaster环境保护和在专用安全处理器上执行命令。对于高通公司,这是QSEE(高通安全执行环境)。它仅允许单独的称为trustlet的小型应用程序在专用处理器上运行。这些信任密钥之一就是KeyMaster。 Android源代码包含有关访问KeyMaster应用程序的说明。实际上,trustlet仅支持四个指令:

 * Commands supported
 */
enum  keymaster_cmd_t {
    /*
     * List the commands supportedin by the hardware.
     */
    KEYMASTER_GENERATE_KEYPAIR = 0x00000001,
    KEYMASTER_IMPORT_KEYPAIR = 0x00000002,
    KEYMASTER_SIGN_DATA = 0x00000003,
    KEYMASTER_VERIFY_DATA = 0x00000004,
};

KeyMaster的工作原理完全如上所述:它接收密钥blob,计算签名并将其放入缓冲区。

现在,我们已经完全进入了新漏洞利用的运行阶段,该漏洞已于6月30日在公共领域(Github上的存储库)出现。该漏洞利用了最近发现的漏洞CVE-2015-6639CVE-2016-2431

该漏洞的作者,安全专家Gal Beniamini编写了伪造的QSEE应用程序,并使用上述漏洞设法将其加载到安全环境中,从而增加了特权并破坏了QSEE环境的保护,这涉及生成密钥以加密磁盘的过程。

因此,假设的攻击者可以“伪造”加密密钥的硬件组件,并实现其余组件的暴力,从而通过重试次数绕过Android保护。仍然只能通过蛮力选择用户PIN /密码。

顺便说一句,在极少数情况下,用户设置了一个具有高熵的真正复杂的密码进行加密,并且在可接受的时间内无法被暴力破解,因此有一个备份计划。如果确实需要破坏加密,则可以找到完全相同的手机,相同的型号,相同的划痕和保护套-对其进行编程以在受害者输入密码后立即发送密码。该伪造的设备将附加到受害者身上,而不是原始的。为了避免泄露信息,同时消除受害者在第一次尝试中输入错误密码的风险,必须对电话进行编程,使其不接受任何密码作为正确的密码。

当然,这是一个极端的情况。如果没有对蛮力的硬件限制,实际上很容易获得普通的PIN码和密码。

有一个有趣的观点。移动设备上的安全环境不是由高通本身设置的,而是由OEM设置的。他们可以与所在国家/地区的执法机关合作,并满足法院要求。因此,如果俄罗斯制造商实施了这样的密码方案,那么智能手机上的信息将根据俄罗斯法院的要求进行解密。

还有一个有趣的时刻。尽管Gal Benyamini几个月来一直在与高通和Google讨论这些漏洞,但修复它们并非易事-软件升级不足(对于两个漏洞,分别于1月5月发布了针对Android的补丁程序),可能需要进行硬件升级。事实是,如果攻击者收到设备,则从理论上讲它可以回滚软件升级,将设备恢复为易受攻击的版本并进行攻击。

如上所述,漏洞利用代码在Github发布。这是他的工作图。



Gal Benyamini已经编写了一些Python脚本这些脚本可以在触发漏洞利用之后简化暴力破解。在他同事的博客文章中的评论表示希望将脚本移植到功能最强大的hashcat / oclHashcat bruteforce 平台

本杰米尼建议Google与OEM制造商一起开发一种绝对可靠的新硬件软件加密方案,即使从理论上讲也无法破解。

我们希望这样的方案可以在新一代的Android设备上实现。

Source: https://habr.com/ru/post/zh-CN395643/


All Articles