作者:李毅

最近一段时间,很多国外知名手机取证软件纷纷增加了对Checkra1n的支持。比如Elcomsoft的iOS Forensic Toolkit、Belkasoft的Belkasoft Evidence Center、Magnet的Magnet Acquire、MSAB的XRY和Cellebrite的UFED InField。那么什么是Checkra1n,它是怎么工作的,它可以带给取证什么帮助,它的能力和范围等等,是本文要讨论的。

0x01 什么是Checkra1

说到Checkra1n,首先要提到的是Checkm8漏洞,Checkra1n就是基于Checkm8漏洞开发的。

Checkm8是安全研究人员@axi0mX在9月27日发现的苹果手机“史诗级漏洞”。之所以说这个漏洞是史诗级的,因为上次发现类似漏洞已经是差不多10年前在iPhone4上发现的那个漏洞。这个漏洞位于苹果手机的Bootrom代码中,是硬件设计的漏洞。Bootrom是固化在 iPhone 只读区域中的一段代码,该区域中的代码是启动链及启动信任链的起点,主要负责加载后续的启动链,该区域中的代码无法通过系统更新来更新。iOS 设备在启动载入初始代码时,Bootrom是无法写入只能读取的,有了“checkm8”这个漏洞后,可以绕过iPhone的信任机制,加载定制的启动代码。Bootrom的漏洞由于是存在于硬件只读固件内,除非用户更换手机的硬件,否则随便Apple怎么对系统进行升级都无法修补该漏洞,因此所有影响的设备将一直可以被利用,无视上面运行的iOS版本。

Checkm8的漏洞受影响的设备包括iPhone4S、iPhone5、iPhone5C、 iPhone 5S、 iPhone 6、 iPhone SE、 iPhone 6S、 iPhone 7和7 Plus、 iPhone 8、8 Plus 和 iPhone X,以及大多数基于类似 SoC 的 iPad以及Apple TV HD (ATV4)和Apple TV 4K,和Apple Watch的系列1、2和3等。在受影响的设备上,该漏洞可以被用来进行越狱操作。Checkra1n就是基于Checkm8开发的越狱工具, 不过该越狱工具目前未对iPhone4S、iPhone5、iPhone5C进行适配。不同于传统的越狱工具,Checkra1n对手机的越狱不是永久的(即Checkra1n是非完美越狱),也就是说越狱完成后,一旦设备进行了重启,系统就恢复到原来的iOS,这时候就需要重新运行Checkra1n来对设备进行越狱操作。

0x02 Checkra1n与取证有什么关系

首先是越狱与取证的关系。针对iOS系统取证,常见的一个挑战是如何获得跟更多的数据,通过逻辑提取或者iTunes备份获得的数据只能获取到一部分数据,那些重要的数据(往往也是重要的证据)无法获得。这时候这个设备如果可以越狱,就可以提取系统的逻辑镜像,获取最大的数据。因此通过Checkra1n进行越狱可以帮助我们尽可能多的获取系统数据。

Checkra1n是非完美越狱,从检材完备性来说,非完美越狱比完美越狱更适合取证场景,因为这样对检材的影响最小。

不同于一些越狱工具,比如Chimera,需要设备开机解锁进入桌面,这就需要操作的时候需要知道手机的解锁密码。而Checkra1n是基于Bootrom的漏洞开发的越狱工具,因此不需要设备开机解锁就可以对设备进行越狱操作。这点也是后文说到的可以在BFU状态提取数据的原因。

0x03 怎么进行Checkra1n取证

如何安装Checkra1n

Checkra1n的官方网站是https://checkra.in。目前公开发行的Checkra1n只有macOS版本,Windows和Linux版本一直在开发中。目前据我们推测迟迟不能开发出Windows版本的原因是因为涉及的底层驱动导致不能利用该漏洞, 根据我们的研究要支持Windows需要做不少额外的工作。因此,首先你需要准备一台可以运行macOS Catalina(10.15)的macOS设备。然后去官方网站下载Checkra1n安装程序包,目前最高版本是0.9.7,我们建议你同时下载0.9.7和0.9.5(具体原因后面说)。如果一定想要在Windows环境下运行Checkra1n,可以尝试用Ra1nstorm Helper来创建虚拟环境来运行Checkra1n。

有两种方法用来安装Checkra1n越狱:

方法一

安装 checkra1n 与过去几年的越狱有很大的不同,无需签名以及安装一个 IPA 文件到设备上。你所要做的就是启动 checkra1n 工具,连接设备(建议使用 USB-A 连接 Lightning 电缆,有消息称 USB-C 连接 Lightning 不能正常工作) ,然后按照说明操作。方法一是设备处于正常模式时,Checkra1n会首先将其置于恢复模式(自动) ,然后需要手动将其置于 DFU 模式。老实说,这一步非常痛苦,特别是iPhone7以后的设备,没有home键了,常常要试验多次才能进入DFU模式; 最后,经过一些尝试和错误,它确实起作用了。关于各个型号进入DFU模式请参考下面的链接或者自行百度: ↓↓↓

• https://help.ifixit.com/article/108-dfu-restore

• https://www.theiphonewiki.com/wiki/DFU_Mode

一旦 checkra1n 程序识别出设备处于 DFU 模式,就会自动进行越狱并重新启动 iPhone。这时候就可以进行下一步的数据提取了。

方法二(推荐

还有第二种方式可以使用,这种方式不需要进入恢复模式,而且更重要的是它可以作用于不知道锁屏密码的iPhone(比如检材手机)。这种方法是纯粹命令行的操作,只需要把手机切换到DFU模式,打开终端,运行以下命令(注意第二个命令中的结尾破折号作为参数):

cd /Applications/checkra1n.app/Contents/

MacOS/./checkra1n-gui -

注意:这个是Checkra1n 0.9.5,0.9.6和0.9.7需要运行“./checkra1n"(没有后面的破折号)

然后使手机进入DFU模式,Checkra1n命令行程序会自动安装越狱,然后就可以提取数据了。

顺便说一下:目前Checkra1n还不是很稳定,即使手机处于DFU模式下,同一部手机不同时候运行Checkra1n 图形界面或者命令行版本,结果大相径庭。实际操作中,如果失败,需要反复多次尝试。而且测试中发现,需要同时尝试多个Checkra1n版本,特别是0.9.5版本对USB限制模式已经激活的设备的支持比后两个版本还要好。

获取数据

一旦完成Checkra1n越狱安装,现在就可以进行文件系统提取。Checkra1n在越狱后的设备上安装了一个sshd服务,端口号是44。

(见下图Checkra1n官方网站截图↓↓↓ )

要访问这个sshd服务,需要用iproxy来通过usb线访问。

sudo iproxy 22 44

然后就可以通过ssh登录localhost,如图

ssh服务开启以后就可以通过sshpass来调用"tar -cf - /"命令来将iPhone上的文件打包输出到tar文件。

sshpass -p alpine ssh root@localhost "tar -cf -" />xyz.tar

这里需要注意的是这个sshd服务不管手机是否解锁,都能以root身份登录进去。因此也就都能够以root身份提取文件。但是不同情况下提取的数据有所不同。

这里就要说到BFU和AFU模式的差异了。

0x04 BFU与AFU模式

BFU是Before First Unlock(首次解锁前)的首字母缩写。BFU指的是已经关机的苹果手机或者重启以后没有解锁进过手机桌面的苹果手机。与之相对的是AFU是After First Unlock(首次解锁后)的首字母缩写。AFU指的是开机以后已经用屏幕密码解过锁的苹果手机。

BFU与AFU模式的最大差异就是手机本次启动以后是否解过锁。在苹果的世界里,iPhone 的内容直到用户输入他们的屏幕锁密码之前是安全加密的。屏幕锁屏密码被用来生成加密密钥,这个密钥被用来解锁iPhone的文件系统.换句话说,iPhone 内部几乎所有的东西都保持加密状态,直到手机启动后用户用自己的密码解锁。

根据Apple官方的《2019年秋季平台安全指南》的“加密和数据保护”章节的“数据保护类”一节所说:

在 iOS 设备或者iPadOS设备上创建新文件时,创建它的应用会为其分配一个类。每个类使用不同的策略来确定数据何时可被访问。

一共有四个级别的保护策略:

1. 全面保护(NSFileProtectionComplete):这个级别在设备锁定时是加密的。因此BFU状态下是加密的

2. 未打开文件的保护(NSFileProtectionCompleteUnlessOpen):这个级别在文件被打开时才可以访问。BFU状态下,显然文件还没有被打开,所以也是加密的

3. 首次用户认证前保护(NSFileProtectionCompleteUntilFirstUserAuthentication):这个级别在第一次解锁进桌面前也就是BFU状态下是加密的。注意:**这个级别是所有第三方应用数据默认的保护策略**

4. 无保护(NSFileProtectionNone):此类文件仅受UID保护。

以上1-3类的数据都必须在首次解锁进入桌面才能访问,否则都是加密的。因此在BFU模式虽然可以以root身份获取一些文件,但是大部分有价值的数据都无法访问。目前我们知道在 BFU 模式下(未知的设备密码) ,你可以得到已安装的应用程序列表、一些 Wallet 数据、 Wi-Fi 连接列表、大量媒体文件、通知(这些可能包含一些聊天消息和其他有用的数据)、日志。还有很多定位信息,以及一些社交软件(比如微博、支付宝、陌陌等)的账号信息和少量联系人信息。

另外在BFU模式下,可以提取部分Keychain信息。Keychain的数据也有不同的保护级别,只有具有 kSecAttrAccessibleAlways 和 kSecAttributeAccessibleAlwaysThisDeviceOnly 属性的记录才可以被提取。

至于AFU模式,就是我们传统的iPhone全盘逻辑镜像,这种情况下可以提取到几乎所有的数据。

下图是我们对一台iPhone 7在不使用密码解锁的情况下,进行Checkra1n越狱,在BFU模式提取的tar文件(16.2 GB,17,401,067,520 字节)的解析结果(文件数381,275,总记录数480,176)

作为对照,我们对该手机使用Checkra1n越狱后,然后使用密码解锁,在AFU模式下再提取了一个tar文件(19.0 GB,20,408,494,080 字节),进行解析,结果如下图(文件数416,089,总记录数562,249)

对比两种情况,可以看到BFU提取到的有价值的信息非常之少,虽然看到文件大小和数量差距并不大,这主要是因为BFU中包括了操作系统和大量的第三方应用程序。当然在无计可施的情况下,还是通过Checkra1n越狱再进行BFU提取,至少可以获得一些证据和线索。

0x05 结论

Checkra1n越狱跟之前大部分越狱软件类似,可以用来对iPhone5S到iPhoneX的手机取证,在可以解锁手机的情况下,可以提权获取大部分的数据。

不同于之前的越狱软件,在不知道解锁密码的情况下,也可以对目标手机进行越狱,进而提取一小部分部分文件数据和Keychain数据,但是不可能提取到全盘数据。目前Checkra1n取证有以下几个障碍:

1. 目前Checkra1n没有稳定的Windows版本,需要额外准备一台运行Mac操作系统的设备。

2. Checkra1n比较不稳定,最好同时使用多个版本尝试,特别是0.9.5版本。

3. BFU模式下,做的“全盘”逻辑镜像比AFU模式做的全盘逻辑镜像少不少内容,应该最多只能说“部分”逻辑镜像吧(我们使用的测试手机数据量不大,所以差别没有那么明显,网上看到国外有iPhoneX测试,BFU提取了45G的数据,但是AFU可以提到150G数据)。

4. BFU模式仅能提取少量有价值的信息,在没有其他手段的情况下,可以作为有效的补充。

声明:本文来自盘古石取证,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。