对于那些刚刚加入我们的人来说,上周传出了苹果T2安全处理器在最近的Mac上越狱的消息。如果你还没有读过它,你可以在这里了解这个故事,然后在家里用最新版本的checkkra1n亲自体验一下。到目前为止,我们已经声明,您必须将计算机放入DFU,然后才能运行checkkra1n来越狱T2,这仍然是正确的,但是今天我们将介绍一个更换目标Mac的EFI的演示,并发布T2调试界面的详细信息。
与应用程序开发者不同的是,为了构建自己的产品,苹果必须对核心操作系统进行调试。这就是固件、内核和调试器本身的构建和调试方式。从iPod最早的时候起,苹果就已经为构建他们的产品建造了专门的调试探测器。这些设备是从苹果总部及其工厂泄露出来的,传统上都有与猴子相关的名字,如“孔”、“坎兹”和“黑猩猩”。它们的工作方式是允许通过JTAG和UART访问CPU的特殊调试引脚(对于ARM设备称为串行线调试或SWD)以及其他芯片。JTAG是一种功能强大的协议,允许直接访问设备的组件,访问通常提供绕过大多数安全措施的能力。苹果甚至在一次Blackhat演讲中谈到了他们的调试能力,描述了有效的安全措施。苹果甚至在零售点部署了不同版本的平板电脑,以便维修iPad和Mac电脑。
另一位硬件黑客和安全研究员拉姆丁·阿明(Ramtin Amin)去年确实致力于创造一种有效的Kanzi电缆的克隆。这与axi0mX的checkm8漏洞相结合,使得iPhone 5s-X能够进行调试。
其中一个有趣的问题是,Mac如何与英特尔(Intel)CPU(MacOS)和用于DFU的T2(Bridge OS)共享USB端口。这些基本上是机箱内的独立计算机,共享相同的针脚。苹果供应商泄露的MacBook原理图(用部件号和“原理图”快速搜索),以及对USB-C固件更新有效负载的分析显示,每个端口上都有一个组件,负责为MacBook或连接的设备充电,既负责多路复用(允许端口共享),也负责终止USB供电(USB-PD)。进一步分析显示,此端口在以下设备之间共享:
Thunderbolt控制器,允许MacOS将端口用作Thunderbolt、USB3或DisplayPort。
Intel CPU用于调试EFI和MacOS内核的调试引脚。
与上述与iPhone相关的文档一样,Mac的调试通道只有在通过T2启用时才可用。*在checkm8漏洞之前,这需要苹果公司专门签名的有效载荷,这意味着苹果公司有一个万能钥匙来调试任何设备,包括生产机器。*多亏了checkm8,任何T2都可以降级,并且可以启用调试功能。不幸的是,英特尔将大量有关迅雷控制器和协议的信息置于保密协议之下,这意味着多年来没有对其进行适当的研究,导致了一系列漏洞。
考虑到Mac上的USB-C端口有很多功能,有必要向多路复用器指明您还想连接Mac内的哪个设备。USB-C端口规范提供了用于此目的的针脚(CC1/CC2)以及检测电缆方向的功能,从而允许电缆方向是可逆的。在CC引脚的顶部运行另一种低速协议,称为USB-PD或USB Power Delivery。它主要用于协商充电器(源)和设备(接收器)之间的电源要求。USB-PD还允许在所谓的“供应商定义的消息”或VDM中使用任意信息包。
VDM允许Apple触发操作并指定USB-C连接的目标。“我们发现USB-PD有效负载会导致T2重新启动并使T2保持在DFU状态。将这两个操作放在一起,我们可以使T2重新启动,准备通过checkkra1n越狱,而不需要任何用户交互。虽然我们还没有测试苹果序列号阅读器,但我们怀疑它的工作方式类似,可以可靠地从T2的DFU读取设备ECID和序列号。*Mac还可以与其他设备进行USB-PD通话,例如当iPad Pro在DFU模式下连接时。*苹果需要记录其产品中使用的整套VDM消息,以便消费者了解安全风险。我们发出的一组命令是未经验证的,即使它们是未经验证的,它们也是未经记录的,因此未经审查。*苹果本可以通过要求在这些VDM期间进行一些物理证明(如同时按住电源按钮)来防止这种情况。
考虑到所有这些信息,我们可以将其串在一起以反映真实世界的攻击。*通过创建一个大约有电源充电器大小的专用设备,我们可以将T2置于DFU模式,运行checkkra1n,更换EFI,并上传一个按键记录器来捕获所有键。*即使MacOS没有更改,这也是可能的(启动时的徽标是有效的,但不需要这样做)。这是因为在Mac笔记本电脑中,键盘直接连接到T2并传递到MacOS。
PlugNPwn是直接从电缆连接到DFU端口进入DFU的入口(如果它没有显示,则可能是您的广告块:https://youtu.be/LRoTr0HQP1U)。
在下一个视频中,我们将使用checkkra1n修改英特尔处理器的MacEFI有效负载(同样,广告块可能会导致它不显示https://youtu.be/uDSPlpEP-T0)。
为了促进对USB-PD安全主题的进一步研究,并允许家庭用户进行类似的实验,我们很高兴地宣布预购我们的USB-PD Screamer。它允许计算机直接对目标设备使用USB-PD。有关更多信息,请单击此处: