« PlayStation 3 硬件架构 (index)

PlayStation 3 硬件架构

Chapter 9: 反盗版和自制游戏


目录

  1. 安全基础概述
  2. 击败
    1. 绕过管理程序
    2. PS越狱
    3. 荣誉奖
    4. 加密技术的陨落
  3. 定制固件(CFW)时代
    1. 索尼的强烈回应
    2. 自制软件的复兴
    3. 索尼的部分回应

您刚刚阅读的所有内容都必须受到某种保护,以防止"未经授权"的访问。 如果你想了解索尼是如何做到这一点的,那你就大开眼界了。

安全基础概述

游戏机的许多部分已经提供了无需在软件中手动实现的安全功能:

除此之外,索尼还在软件中实施了以下保护措施:

击败

你已经看到了这款游戏机的能力有多强,难道你还指望黑客们会满足于OtherOS的有限功能吗? 我猜索尼也没有,该公司竭力保护某些领域,却让其他领域半封闭,黑客们稍后就会证明这一点。

请记住,PS3黑客社区非常活跃,每年都有许多工具和文档问世。 因此,我将重点介绍为大量内容和自制软件开发铺平道路的几个里程碑,但你可以在PS3History上找到更多信息。

绕过管理程序

2010年,在黑客界沉寂了三年之后,社区出现了转机。 George Hotz是一位因解锁第一代iPhone机型(又称"2G"),使其可以在任何网络下使用(最初只能在Cingular/AT&T网络下使用)而闻名的黑客,他成功地读写了内存中的保护区,而没有被虚拟机管理程序阻止。 随后,他在自己的博客中发布了漏洞利用方法和简短摘要。

该漏洞需要两种材料:一个在OtherOS下运行的Linux(用于执行任意但有限的代码);一个连接到XDR总线(连接主RAM)的外部glitcher。 长话短说,管理程序使用存储在主RAM中的哈希表来编目内存地址及其权限级别,因此用户程序无法访问受保护的内存空间。 这种攻击通过破坏哈希表的完整性来实现写入,然后利用这种权限修改条目,使当前程序可以访问内存中的每一个角落。

总之,Hotz发现,在Linux/OtherOS下,程序可以向管理程序请求许多指向同一物理地址的内存块,但如果程序在XDR总线受到外部干扰(由于glitcher发送电脉冲)的情况下取消分配这些内存块,取消分配过程就会半途而废。 因此,管理程序的哈希表(位于RAM中)仍然包含一个已分配地址的条目,但同时它认为该空间已被释放。 Hotz的漏洞会继续请求更多的区块,这样管理程序就会用更多的条目扩展它的表,这个过程一直持续到哈希表中的一个条目与本应取消分配的区块的内存位置重叠为止。 由于哈希表保留了允许用户访问该地址的旧条目,因此管理程序最终允许用户修改哈希表条目! 因此,该漏洞利用修改条目来扩展对所有内存空间的访问权限。

虽然这个漏洞需要在OtherOS下运行的Linux环境,但它为进一步的逆向工程和研究项目迈出了一大步,因为黑客们现在可以研究系统中原本无法访问的关键区域了。 值得一提的是,在同一时间,索尼发布了删除OtherOS的3.21版软件更新。 你本以为这会阻止黑客继续他们的工作,但这只是给了他们更多加速工作的理由。

PS越狱

2010年晚些时候,一个名为"PS越狱"的组织宣布(随后发布)了一种独特的解决方案,无需篡改游戏机硬件,即可直接从游戏机的原生shell(XMB,在GameOS下)运行自制软件。 这一切都让索尼大失所望,他们很快就会采取法律手段阻止该产品的销售。

"PS 越狱"由一个USB加密狗组成,在游戏机打开之前将其插入前端的USB端口。 然后,用户必须按下电源按钮,不久后再按下弹出按钮。 如果指令执行成功,用户就会看到正常的XMB界面,但增加了一个"安装PKG"选项和几个自制应用程序,用于将蓝光游戏转储到硬盘,然后加载它们。

在幕后,这个加密狗执行着大量工作,可分为两组:

  1. USB漏洞:一旦游戏机打开,加密狗就会欺骗系统,让它以为自己连接到了一个6端口USB集线器,然后执行一连串复杂的USB命令,直到达到堆溢出并升级到PS3的内核(lv2)访问权限,接着它就会执行有效载荷。
  2. 有效载荷:这是另一个复杂的软件包,它对原始shell进行了修补,以启用仅在调试单元上可用的隐藏功能(即"安装PKG"条目)、禁用签名验证(加载任意模块/软件包)以及将蓝光命令重定向到硬盘驱动器(用于从硬盘驱动器加载游戏)。 这个程序能从内核层面改变这么多,让人不禁要问,管理程序到底有什么用?
    • 作为补充,M4j0r后来告诉我:"有趣的是,它甚至没有利用索尼的代码,lv2的这一部分是由罗技编写的,而该漏洞的开发者可能有机会获得源代码(由于2008年的黑客攻击)"。 。

随后,其他社区对该产品进行了逆向工程,不久之后,开源仿制产品(如 PS Groove)出现,取消了许多限制(例如,用户现在可以在漏洞利用完成后拔下设备)。 有些分支甚至被部署在德州仪器的计算器上。 无论如何,索尼很快就通过软件更新3.42删除了这一金矿,尽管自制软件的大门已经打开。

荣誉奖

在介绍PS3自制软件领域的大奖之前,让我先向大家介绍几种同期开发的方法:

加密技术的陨落

就像PSP的传奇一样,最初的漏洞需要耗费大量精力,而且很容易被索尼打上补丁,从而导致了一场不利的猫捉老鼠游戏。 然而,与PSP的情况一样,迟早会有发现打破该系统的基本安全:信任链。

2011年,George Hotz与fail0verflow团队一起公布了另一项突破,即索尼用于签署metldr执行的二进制文件的私有加密密钥。 在启动阶段加载的二进制文件使用ECDSA密钥签名。 作为一种非对称加密系统,这意味着拥有私钥的任何人(索尼,以及现在的_其他人_)都可以加密和签署二进制文件,因此,在metldr看来,这些二进制文件是"真实的"。 由于metldr是加载lv1(管理程序)之前的第三个启动阶段,这意味着黑客可以定制或开发他们自己的管理程序、内核及其下的任何东西。 此外,市场上的每台PlayStation 3都会认为定制的二进制文件是真实的。 总而言之,这是一个完全通过软件完成的潘多拉式漏洞。

这个密钥的发现本应在计算上是不可行的,但由于索尼在实现ECDSA算法时出现了被认为是"失误"的地方,它才得以实现。 长话短说,ECDSA算法的数学公式使用了一个随机值,而索尼在分发的所有更新文件中从未改变过这个随机值,这就把这个数字变成了一个常数,从而使其他变量的求解变得更加容易,这就是最终发生的事情。

下文将介绍这一发现的影响。

定制固件(CFW)时代

破解metldr意味着每个人都能为PS3创建"官方"系统,这导致大量GameOS"版本"涌现,不同社区制作了各种定制版本。 这些系统是对索尼官方固件文件(索尼以更新形式发布)的修改,并使用索尼泄露的密钥重新打包,因此可以在任何地方安装。 其结果被称为定制固件(CFW),并成为黑客入侵游戏机的事实方法,直到索尼采取强硬措施。

Image
打开"VSH菜单 "的我的CFW。 这个变体(名为"Rebug")还能让我把游戏机变成调试站(注意右下角的IP地址,你需要在调试器上输入它才能连接到运行中的进程),并摆弄我自己的自制软件。

在此期间,网络上出现了许多名称各异的CFW(如"Rebug"、"Ferrox"等),其中包含一些自定义功能,如:

还有我最喜欢的一种:带来testkit的调试功能,让任何零售游戏机都能成为调试站。 这可以通过安装具有调试功能的CFW来实现,也可以通过改变闪存中控制台特定数据,将零售游戏机(称为"CEX")转换为调试模式(称为"DEX")的 CFW 来实现。

索尼的强烈回应

与PSP发明CFW之后发生的事件类似,索尼也通过两次安全更新进行了报复:

软件方面,索尼发布了两个系统更新,增强了安全系统:

硬件方面,不仅后续的PS3型号(晚期的CECH-25xxx、CECH-3xxx和CECH-4xxx)预装了高于3.55的系统版本,而且它们还包含一个不同的bootldr/lv0ldr变体(称为lv0ldr.1),不仅能解密和加载lv0,还能获取一个名为lv0.2的新系统文件。 后者包含有关lv0的元数据,以确保lv0没有被篡改。 lv0.2使用新密钥签名(也不会被之前的ECDSA发现),从而防止黑客控制启动链。

时至今日,这些机型仍无法运行CFW,因此被昵称为_unhackables_。 不过,它们可以运行"混合固件"(HFW),我们稍后会详细讨论。

随着时间的推移,兼容CFW的游戏机越来越少。 因此,没有更新到3.55以上版本的PS3成了某种_遗物_。 与此同时,替代品的需求激增,如固件降级器(在旧机型上恢复到系统版本3.55)和ODE(在新机型上玩盗版游戏)。

自制软件的复兴

在错过安装CFW窗口的用户经历了漫长的等待期之后,2017年末,一个黑客团队发布了PS3Xploit,这是一个漏洞利用和实用程序集合,让用户无需昂贵的固件降级器(以及操作降级器的技能)就能在旧机型上安装CFW。

PS3Xploit的主要有效载荷完全通过软件复制硬件降级器的工作(修补CoreOS文件),其工作原理如下:

  1. 起点是基于WebKit的XMB互联网浏览器。 PS3Xploit使用JavaScript在系统用户空间(JavaScript环境之外)内执行任意代码。 要启动这个程序,用户只需打开XMB的本地网络浏览器,输入指向PS3Xploit主机的URL,然后让它开始工作。
  2. 内核提供的系统调用可以用来覆盖闪存中的操作系统文件。 此外,可视化Shell(XMB)及其插件还在内存中存储了使用这些调用的例程。
  3. 由于管理程序的"不执行"保护,PS3Xploit无法直接触发这些系统调用,从而无法在用户区加载新代码。 不过,它可以通过"借用"可视化Shell的例程来覆盖闪存。
  4. 因此,PS3Xploit会修改Webkit的执行堆栈,将执行重定向到可视化Shell的例程。 这种类型的技术(破坏堆栈以偏离内存中其他代码的执行)被称为面向返回编程(Return Oriented Programming,ROP),在信息安全领域非常流行。 缓解这种情况的一种方法是实施地址空间布局随机化(Address space layout randomisation,ASLR),这样就很难猜测例程(称为_小工具_)的位置,但正如你所猜测的那样,索尼的管理程序缺乏ASLR。
  5. 最后,这些系统调用是通过PS3Xploit的参数触发的,因此它们会用打了补丁的文件替换CoreOS文件(操作系统的第一部分,存储在闪存中)。
  6. 游戏机现在可以安装非官方软件更新,用户现在可以_利用这个机会_安装定制固件。 不过,它还不能降级系统版本,但一旦安装了最新的CFW,用户就可以安装进一步的实用程序来降级系统,并根据需要安装装备更好的CFW。

如你所见,这份_天赐的礼物_让定制固件再次成为关注的焦点,硬件降级器和ODE也随之过时。 另一方面,对于那些无论如何都无法安装CFW的设备(unhackables),该团队后来提供了PS3Hen,这是一个不同的漏洞利用程序包,重点是启用CFW功能的子集(包括执行自制软件的能力)。 这个软件包会将自己安装为XMB中的一个条目,用户必须在每次打开游戏机时运行它,才能重新启用自制应用程序的执行功能。

索尼的部分回应

幸运的是,索尼只采取了一小步来阻止PS3Xploit(也许是因为这一事件发生在PS3的后继机PlayStation 4上市多年之后)。 他们发布了一些系统更新,但并没有修复这个漏洞链,只是删除了Webkit中用于引导漏洞链的例程。 作为回应,黑客们发布了稍加修改的软件更新,恢复了这种入口(而且不知何故,它们不需要重新签名)。 这些定制更新被称为混合固件(HFW),在本文撰写之时,它们已成为在unhackable机子上启用自制软件的事实选项。

至此,反盗版/自制软件的传奇故事告一段落。 依我之见,我不认为索尼有兴趣在这款游戏机上投入更多精力。 因此,我不指望在这一领域再有更多什么猫捉老鼠的游戏了。


Previous: 8. 游戏

Next: 10. 这就是全部了,伙计们。


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

主页 · 文章 · 支持 · 关于作者 · 关于此网站