前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FBI被坑了!破解iPhone 5c的密码其实只要100美元

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

作者头像
FB客服
发布2018-02-09 10:30:35
1.3K0
发布2018-02-09 10:30:35
举报
文章被收录于专栏:FreeBuf

名噪一时的圣贝纳迪诺枪击案,重点似乎不在枪击案本身,而在于FBI为了能够解锁罪犯的一台iPhone 5c手机,要求苹果制作一个特别版本的iOS系统,并且要求该系统去掉锁屏密码输入的次数限制,这样FBI就能通过密码穷举的方式来破解这台iPhone,取得其中的数据了。 苹果当然不肯这么干,最后这件事情还闹上了美国国会。今年4月份,FBI表示我们不靠苹果,投入130万美元找技术公司,搞定了圣贝纳迪诺枪击案涉案iPhone。当时有不少媒体报道说,FBI所用的是NAND Mirroring也就是闪存镜像技术,FBI负责人则坚决予以了否认,表示闪存镜像技术根本搞不定。

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

把NAND闪存先拆下来

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

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

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

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

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

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

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

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

从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分钟。

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

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

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

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

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

* FreeBuf官方报道,作者:欧阳洋葱,转载请注明来自FreeBuf.COM

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 把NAND闪存先拆下来
  • 备份NAND闪存数据
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档