安全路透社
当前位置:安全路透社 > 网络转载 > 正文

FBI被坑了!破解iPhone 5c的密码其实只要100美元

名噪一时的圣贝纳迪诺枪击案,重点似乎不在枪击案本身,而在于FBI为了能够解锁罪犯的一台iPhone 5c手机,要求苹果制作一个特别版本的iOS系统,并且要求该系统去掉锁屏密码输入的次数限制,这样FBI就能通过密码穷举的方式来破解这台iPhone,取得其中的数据了。

苹果当然不肯这么干,最后这件事情还闹上了美国国会。今年4月份,FBI表示我们不靠苹果,投入130万美元找技术公司,搞定了圣贝纳迪诺枪击案涉案iPhone。当时有不少媒体报道说,FBI所用的是NAND Mirroring也就是闪存镜像技术,FBI负责人则坚决予以了否认,表示闪存镜像技术根本搞不定。

最近剑桥大学一名安全研究人员Sergei Skorobogatov研究出一种NAND镜像技术,完全能够绕过iPhone 5c的密码重试次数限制,更悲剧的是,成本只需要100美元!而且他还进行了相应的技术演示。看来这次FBI是被坑了。

iPhone-5c-pocket.jpg

把NAND闪存先拆下来

所谓的Data mirroring数据镜像,比较多地应用在计算机数据存储冗余策略上,就是将一个位置的数据实时复制到另一个设备上。这样一来,原始位置的数据总是存在备份,比如常规的RAID阵列的某些方案就属于镜像,此类方案是许多企业灾备的重要手法。

很多技术专家都认为,圣贝纳迪诺枪击案中的那台iPhone 5c应该就是用NAND镜像的方式进行破解的,但业内始终都没有真正行之有效的PoC出现。Skorobogatov在这份研究报告中提到的方案实际上操作起来也并不算简单。他在报告中是这么写的:

“通过拆卸焊接在主板上的NAND闪存芯片,物理访问芯片与SoC的连接,并对其专有总线协议进行部分逆向工程。整个过程不需要任何昂贵或者复杂的设备,完全低成本,使用这种硬件镜像方法,就能绕过密码重试次数限制。”

因为iOS系统有个保护机制,用户可以选择在密码多次输入错误后,就自动销毁设备上的数据,这是杜绝攻击者进行暴力破解的方式。如果能够去掉这种限制,那么4位或者6位密码的暴力穷举是可以解决问题的。所以当初FBI才要求苹果能够特制一个iOS解除这种限制。

A5662FE5-BEA4-4C8E-ADB0-D964AD5B9EA5.png

iOS的安全说明手册中有提到(不同的iPhone加密密钥管理可能存在差异),用户自己设定的密码,会和iPhone设备自身的唯一UID key一起,计算出Passcode密钥来解锁“System Keybag”。这里的UID key是硬编码进SoC的,是CPU硬件安全引擎的一部分。也就是说,如果NAND闪存芯片没有与相应的SoC硬件相匹配,要暴力破解出Passcode密钥是不可能的——把NAND芯片直接拆下来进行破解这条路也就不可行。不过另一方面,这也意味着,如果用户修改锁屏密码,那么系统没有必要对用户数据进行全部重新加密,而仅是存储密钥的一小部分。

不过既然要用NAND镜像,那么先把NAND从主板上分离下来还是必须的。好在网上还是可以找到相应资料,连NAND芯片的针脚都有大致描述。但作者在报告中说,查到的这种闪存芯片封装方式,是任何NAND芯片制造商都从来没有对外公开过资料的。也就是说苹果在此所用的协议和命令都可能是独有的,必须用逻辑分析仪来监听NAND芯片和设备的通讯才能搞定。

6EA0E812-708F-4AC7-B658-3F2F55FC47CB.png

而且第一步把NAND芯片从主板上卸下来,又必须保证没有损坏,这其实本身对普通用户而言就是相当有难度的事情。iPhone 5c之上的NAND芯片不仅焊在LGA无引线封装中,而且还用环氧化合物强力胶,加上不破坏周围的组件,拆卸时对加热的高温也有控制要求。

B71BE425-4D26-414F-BB4C-6AB19B83F267.png

NAND芯片拆下来之后,再将相应的针脚用0.3mm的PTFE线将NAND和主板连接起来,如果能实现正常开机就成功了(整个过程本身就会遭遇一堆问题)。为了进行通讯协议和命令的分析,随后需要将NAND连接到一个connector连接器上,再将连接器所在的原型PCB版连接到iPhone 5c的主板上,这里的PCB板内建了缓存。这样逻辑分析仪就能比较稳定地捕获信号,实现对通讯协议的监听。

40B0EC3F-12A5-4CCC-882F-105EF3D084C2.png

从Skorobogatov的分析报告来看,最终还是能够解析iPhone 5c的NAND通讯定制协议的。所有的信号都采用C语言在1MHz的较低通讯速度下重复,这对于理解存储层是有帮助的。8GB存储空间包含2个面,每个包含1064个块(block),擦出操作仅能应用于块;每个块又包含256个页,写入是在页之上进行的;每个块包含16448字节的信息;这些信息又以4096字节数据分成4部分,,另外还有16个字节的索引。索引区域很可能是针对损耗平衡,标记数据的逻辑映射的。

备份NAND闪存数据

接下来才真正涉及到NAND镜像的问题:找个相同类型的闪存芯片(SK海力士8GB的NAND芯片,最好的方法就是从另一台iPhone 5c的主板上拆一个下来,谁说只要100美元的??),将这颗闪存芯片装到需要破解的那台iPhone 5c上。就像前面说的一样,每台iPhone的UID是不一样的,所以装上去之后,肯定是不能正常开机的。不过利用带微芯PIC24EP512GP806微控制器的测试板,可从原有的NAND芯片将所有数据复制到备份芯片之上,耗时大约80分钟。

C24426F8-603A-4A11-B100-B287221E3190.png

随后的过程实际上就比较简(bian)单(tai)了。将原有的NAND芯片接回到iPhone 5c,开机试密码,6次错误后关机。再把NAND芯片卸下,接到测试板上。借由相应的PC端软件(应该是特制的软件),可以检测此时NAND芯片上发生变化的区域,并生成带checksum的文件。随后再将该文件与备份检测进行对比;再将所有发生变化的块(block)都擦除,从备份中将相应页写回。

这个过程实际上也就是恢复原有备份数据。恢复完成以后,再把NAND芯片接回到iPhone 5c上,再开机,再度尝试密码,又有新的机会输入6次。接下来就是反复这个过程了,输入密码的过程也就是进行暴力穷举。

这份报告中提到,4位数的密码大约需要40小时,或者不到2天时间。简单说,每次进行恢复操作后,都能再度尝试进行密码输入操作,也就顺利绕过了iPhone的密码尝试次数限制。但这么做对闪存芯片而言也是种损耗,可能密码还没试对,闪存芯片就差不多挂了。尤其对于6位密码,要求超过16万次重写操作。

shutterstock_248570266-680x400.jpg

这套方法提供了相对完整的思路,而且Skorobogatov也发布了相应的演示视频。我们在此只是简单地谈了谈原理,其中还有很多细节问题是值得探究的,有兴趣的同学还是可以前往阅读Skorobogatov的报告。这份报告中另外也提到了这种方面的一些限制,比如说上面谈到的对闪存频繁写入操作可能造成问题,另外“从取证的角度来看,修改原有NAND存储方式可能不符合预期,因为这可能改变设备中的某些关键信息。”

然而想一想,纯手工进行这样的操作,拆、装的反复过程是否早就已经让人抓狂了?!

* FreeBuf官方报道,作者:欧阳洋葱

未经允许不得转载:安全路透社 » FBI被坑了!破解iPhone 5c的密码其实只要100美元

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册