先放一张图
更新中…
0x00 Apple T2 芯片
首先什么是苹果T2芯片呢苹果官网给出的是:Apple T2 安全芯片是 Apple 设计的第二代定制化 Mac 芯片。通过对其他 Mac 电脑中的几款控制器进行重新设计与整合,例如系统管理控制器、图像信号处理器、音频控制器和 SSD 控制器,T2 芯片为 Mac 带来了多项新功能。
例如,T2 芯片让安全性又上新台阶,它所包含的安全隔区协处理器可保护触控 ID 数据,并为新的加密储存和安全启动功能奠定了基础。此外,T2 芯片的图像信号处理器与 FaceTime 高清摄像头配合,进一步提升色调映射和曝光控制,还能基于面部识别技术进行自动曝光并自动调节白平衡。
总结起来就是说是一个值得信赖的安全芯片。T2保护基本功能,例如安全启动,激活锁,Touch ID,加密数据存储,安全启动,图像信号技术等。
Apple T2安全芯片如何工作?Apple T2芯片可以控制MacOS的启动过程。它可以确保用户安装Apple认可的驱动器。只要在Mac计算机上按下电源按钮,它就会开始工作,一直持续到您看到MacOS桌面为止。换句话说,其主要功能之一就是验证Apple是否已签署您的操作系统和引导程序。
T2还负责硬盘驱动器上的所有加密数据。在以前的Mac版本中,此功能由CPU执行,从而使其负担沉重。通过将这些功能转移到T2芯片上,Apple大大改善了新Mac的性能。T2为CPU提供了更多资源。该芯片可确保MacBook Air和MacBook Pro中提供的Touch ID功能。这些设备中的指纹扫描仪为用户提供了快速登录选项,并批准了管理员级别的请求。Apple T2芯片有助于安全地存储指纹数据。
它还处理来自不同应用程序的验证请求。T2芯片可确保没有应用程序可以通过Touch ID或Face访问您的指纹信息。当请求验证时,Apple T2安全芯片将指纹与安全区协处理器中保护的数据进行比较,并通知结果。
0x01 具备Apple T2的设备
1 |
2020 年推出的 iMac |
可以在“系统信息”里面查看自己的Mac是否配备了T2芯片
- 在按住 Option 键的同时,选取苹果 () 菜单 >“系统信息”。
对应的Mac的EMC编号如下
1 |
iMac Pro: |
以下模型容易受到攻击
iBridge产品编号 | 板号 | board minor | 说明(产品编号) | checkm8 / blackbird确认 |
---|---|---|---|---|
iBridge2,1 | J137AP | 0x0A | 苹果T2 iMacPro1,1(j137) | 是 |
iBridge2,3 | J680AP | 0x0B | 苹果T2 MacBookPro15,1(j680) | 是 |
iBridge2,4 | J132AP | 0x0C | 苹果T2 MacBookPro15,2(j132) | 是 |
iBridge2,5 | J174AP | 0x0E | 苹果T2 Macmini8,1(j174) | 是 |
iBridge2,6 | J160AP | 0x0F | 苹果T2 MacPro7,1(j160) | 是 |
iBridge2,7 | J780AP | 0x07 | 苹果T2 MacBookPro15,3(j780) | 是 |
iBridge2,8 | J140kAP | 0x17 | 苹果T2 MacBookAir8,1(j140k) | 是 |
iBridge2,10 | J213AP | 0x18 | 苹果T2 MacBookPro15,4(j213) | 是 |
iBridge2,11 | J230AP | 0x1F | ? | ? |
iBridge2,12 | J140aAP | 0x37 | 苹果T2 MacBookAir8,2(j140a) | 是 |
iBridge2,13 | J214AP | 0x1E | ? | ? |
iBridge2,14 | J152fAP | 0x3A | 苹果T2 MacBookPro16,1(j152f) | 是 |
iBridge2,15 | J230kAP | 0x3F | 苹果T2 MacBookAir9,1(j223k) | 是 |
iBridge2,16 | J214kAP | 0x3E | ? | ? |
iBridge2,19 | J185AP | 0x22 | ? | ? |
iBridge2,20 | J185fAP | 0x23 | ? | ? |
iBridge2,21 | J223AP | 0x3B | ? | ? |
iBridge2,22 | J215AP | 0x38 | ? | ? |
0x02 T2芯片的MacOS安全启动过程
1 |
1. 即使Mac设备已关闭,T2芯片也已完全启动并保持开启状态。 |
0x03 越狱步骤
1 |
1.一台带有T2芯片的Mac |
1.从官方网站下载最新版本的Checkra1n T2越狱工具。
https://checkra.in/releases/
2.将Mac置于DFU模式。
如何进入MacOS DFU模式](https://checkm8.info/blog/dfu-mode-mac)
如何置于DFU模式:
1 |
1.需要两台电脑 |
检查设备是否已经进入DFU模式
1 |
ioregg -p IOUSB |
3.使用CLI,Checkra1n的命令行版本
Checkra1n GUI版本0.11.0不支持T2越狱。
如果用Checkra1n工具连接带有T2的Mac,会报以下错误
1 |
Sorry, your device is not supported. |
在Finder中打开Checkra1n应用程序,然后右键单击它以查看“显示包装内容”菜单
现在转到文件夹Contents => MacOS
。可以看到Checkra1n二进制文件。打开终端应用程序,然后将二进制文件拖放到"Terminal."
或者,如果将Checkra1n应用程序放入“应用程序”文件夹,则可以在以下命令中键入以下命令 "Terminal:"
1 |
/Applications/checkra1n.app/Contents/MacOS/checkra1n |
4.通过-c来启动命令行版本
同时开启 -v 来检查越狱日志
1 |
/Applications/checkra1n.app/Contents/MacOS/checkra1n -c -v |
如果报错
1 |
Timed out waiting for bootstrap upload (error code: -20) |
在这种情况下,请重新启动Checkra1n CLI工具,直到看到引导程序成功安装的消息:
1 |
: Bootstrap already installed, done |
可能需要重试几次才能完成。
5.通过SSH进入越狱的Apple T2芯片
成功越狱之后打开一个新的终端窗口,然后输入以下命令:
1 |
iproxy 2222 44 |
不要关闭此窗口并再打开一个终端窗口(Command + T)
。输入此命令:
1 |
ssh root@localhost -p 2222 |
密码是: alpine
0x04 具体原理
核心问题:
T2安全芯片上的SepOS微型操作系统是包含基于IOS A10的处理器,据说A12的芯片似乎解决了这个问题,但是未确认
在Twitter和Reddit上提到由于T2芯片和iPhone及其底层硬件之间共享某些硬件和软件功能。通过结合最初越狱iphone的checkm8 + blackbird两个漏洞便可以越狱T2安全芯片的Mac和Macbook设备
根据 比利时安全公司ironPeak的帖子,越狱T2安全芯片涉及通过USB-C连接到Mac / MacBook,并 在Mac的启动过程中运行Checkra1n越狱软件的0.11.0版本 。
根据ironPeak的说法,这之所以奏效,是因为“ Apple在向客户提供的T2安全芯片中打开调试界面,允许任何人无需身份验证即可进入设备固件更新(DFU)模式。”
使用这种方法,可以创建一条USB-C电缆,该电缆可以在启动时自动利用您的macOS设备。
这使攻击者可以在T2芯片上获得root用户访问权限,并修改和控制目标设备上运行的所有内容,甚至可以恢复加密的数据。
1.Checkm8
一句话描述漏洞:对USB请求处理不当造成的UAF漏洞。手里有一个iphone5s,所以决定研究一下checkm8这个漏洞。
在分析这个漏洞之前,先对checkm8有一个感性直观的认识,我们首先动动手,做俩实验:分别是使用checkra1n越狱,以及使用ipwndfu提取固化在处理器芯片中的固件代码(SecureROM)。不过在动手之前,先阅读以下写给科技爱好者的文章和广大网友对这个漏洞的讨论:
- 苹果现史诗级漏洞:iPhone可永久越狱,库克却束手无策!
- 有问有答:为什么说这次苹果A系列处理器中的BootROM漏洞是史诗级的?
- 如何看待苹果 A5-A11 芯片的「史诗级越狱漏洞」Checkm8?影响有多大?
使用checkra1n,基本就是傻瓜操作。不过与普通越狱不同的是,在使用这个工具越狱后,并不需要安装cydia,即可在爱思助手直接开始ssh通道。ssh通道这个功能是将手机的22端口通过usb映射到电脑主机的端口,第一次用可能会迷糊。默认的用户名密码是:root:alpine
,如果不熟悉越狱和ssh流程,可以参考如下文章:
另外发现ssh虽然开启,也可以由外部连入本机的22端口,但是并不能本机自己连自己,即并不能在手机上安装一个ssh客户端软件来访问自己的shell,这里苹果做了限制,绕过方式是修改ssh服务端口并重启,参考如下:
使用ipwndfu完成dump固件。但是其并不是对任何iPhone都支持,在readme中可见支持说明:
1 |
current SoC support: s5l8947x, s5l8950x, s5l8955x, s5l8960x, t8002, t8004, t8010, t8011, t8015 |
这些SoC版本对应的苹果设备型号可以参考:https://www.theiphonewiki.com/,可见iPhone5s是s5l8960刚好可以,然后我们将手机置于DFU模式,方法参考
iPhone 进恢复模式和 DFU 模式有什么区别?,iPhone 5s 进入DFU 模式的方法:
1、打开iTune
2、按住苹果顶部的power键3秒;
3、不要松开power键同时按住home键10秒;
4、松开power键继续按住home键,一直到iTunes会自动检测到出于恢复模式的iPhone后再松开
安装libusb
1 |
brew install libusb |
然后在ipwndfu目录./ipwndfu -p
完成后门的植入,如下:
1 |
╰─$ ./ipwndfu -p 127 ↵ |
成功之后即可在电脑的【关于本机】-> 【系统报告】的USB设备详细信息中看到手机的USB序列号已经被更改:
然后dump固件:
1 |
╰─$ sudo ./ipwndfu --dump-rom |
可以与
这里下载的固件进行比对,经测试,固件是一致的。
- iPhone史诗级漏洞checkm8攻击原理浅析
- Technical analysis of the checkm8 exploit
- iPhone BootROM 漏洞说明及威胁评估
- The One Weird Trick SecureROM Hates
iBoot源码泄露事件
这是一切的开始。
让我们来看一条2018年2月8日的新闻:史上最大源码泄露事件:iOS 关键源代码被匿名公布在 GitHub 上,再来看看当时的中国网民怎么说:
可见大部分网民还是吃瓜,因为不懂不了解,也就无法明白这份代码对于理解并破解iPhone的重要性。可以这么说,此次iboot源码的泄露是黑客发现checkm8这个漏洞的起点。但是苹果当时的回应是:iOS 9源代码被泄露 苹果:该源代码已过时 不必担忧。我们事后诸葛亮的来看这个事,可以说是大型打脸现场了,因为泄露的代码至今仍然没有过时。当年苹果公司说他们不在乎,泄露的都是过时的老代码,没有价值,可是他们当时是怎么做的呢?GitHub泄露苹果iBoot源代码?苹果:全网删,谢谢。真的都是江湖人,江湖事呀。那这份泄露的代码在哪呢?虽然在github找到不到了,不过,互联网是有记忆的,网民是万能的:
- iBoot源代码(含.git目录),来自Github
- 最近泄露的Apple iBoot/BootROM/Baseband源代码
- iBoot IOS 9.3 Leaked
- Twitter user leaks iOS 9 BootROM and iBoot source code online
- https://web.archive.org/web/20180208003452/https://github.com/ZioShiba/iBoot
这份泄露的代码主要是iBoot,相当于PC的BIOS层面的代码,不是做底层的程序员一般是看不明白。不过我们大概也猜到了,这些代码主要负责的就是iPhone的启动过程。启动,你会想到什么呢?
iPhone的操作模式
刚才的两个小实验中,我们将iPhone经过按键的操作进入了DFU模式,其实iPhone还有一种模式叫恢复模式,这些称之为iPhone的操作模式:
其实我们在其他设备上也有类似的操作,比如Android的recovery、fastboot、9008,PC的BIOS配置,Windows的安全模式,Mac的恢复模式等。这些操作都可以理解为进入了一个小系统,这些小系统可能为主系统的运行提供一些必要的支持,也可能作为备用系统以防主系统遭遇不测。我们一般通过在开机过程中按照顺序或者时间的要求按下一些按键,进入这些小系统。换句话说我们没有成功启动主系统,而启动了小系统,对,就是启动。那么这里每一个小系统都有着对应的代码实体,iPhone的DFU和恢复模式的代码实体又在哪呢?是不是iBoot呢?带着这个疑问让我们来看一下,苹果公司泄露的代码能不能回答这个问题。
泄露源码分析
打开泄露的源码,大致浏览了一下目录:
1 |
╰─$ tree -N -L 2 |
原来泄露的不只有iBoot,还有SecureROM!其实认真看苹果源码泄露事件的国外报道:Breakthrough: iBoot And SecureROM Source Code Has Leaked, Could Lead To Permanent Bootrom iPhone Jailbreak,他们是明确说了iBoot和SecureROM(也就是BootROM)的代码都泄露了,只不过是国内的媒体都只说了iBoot。接下来就是优秀源码阅读时间,不过无论是iBoot还是SecureROM,都是那种天地初开之时的底层代码。对于陌生的代码,可以从代码的运行顺序,目录结构,编译方法,文档说明,对比同类代码,以及他人的分析文章等方面综合理解。
0x05 调试
JTAG相关
- iBoot
- SEPROM dump
- https://threader.app/thread/1177856941139337216
- https://twitter.com/nyan_satan/status/1090989650280398849
- YouTube: iPhone 7平台用checkm8漏洞以及Bonobo JTAG电缆和OpenOCD + GDB进行调试
0x06 参考
https://checkm8.info/blog/jailbreak-mac-apple-t2-chip
https://xuanxuanblingbling.github.io/ios/2020/07/10/checkm8/
https://ironpeak.be/blog/crouching-t2-hidden-danger/
FROM :ol4three.com | Author:ol4three
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论