c******n 发帖数: 4965 | 1 【 以下文字转载自 TVGame 讨论区 】
发信人: creation (努力自由泳50m/45sec !), 信区: TVGame
标 题: 为什么 hack的xbox 会被ban?
发信站: BBS 未名空间站 (Sun Nov 27 00:16:19 2011, 美东)
微软live不就是check 你的firmware signature?
我看了一下, 破解就是把dvd的check 去掉了, 不能把跟 live 通讯的部分也改了么
? |
S*A 发帖数: 7142 | 2 先声明,我没有 xbox 也不知到 xbox 是如何做到的。
就是理论上的讨论,我可以想象这样的系统是如何做的。
用 Trusted computing 比较基本的设计就可以了。
简单不是很科学的说,在机器启动的时候 CPU 内部有支持,
可以对执行过的代码生成校验签名一样的东西。如果你改了启动
代码, CPU 执行过的指令不一样,那个校验签名就不一样了。
那个校验签名是 CPU 和外部专门芯片的功能,里面有微软的
public key。验证签名的生成和 public key 都是不能用 CPU
直接访问到的。
然后每次上 live 的时候服务器端会生成一个 session key。
每次上 live 都 不一样。签名的时候会用到这个 session key
作为一个参量。防止你绕开芯片自己伪装签名传回去。
因为这个签名不是在 CPU 上执行的,不能被修改 CPU 调试修改。
这样你改过启动代码的话那个 bootloader 的校验就不一样。
你没有微软的 priviate key 不能签出修改前的验证码。
就是比较标准的 Trusted computing 的架构。
【在 c******n 的大作中提到】 : 【 以下文字转载自 TVGame 讨论区 】 : 发信人: creation (努力自由泳50m/45sec !), 信区: TVGame : 标 题: 为什么 hack的xbox 会被ban? : 发信站: BBS 未名空间站 (Sun Nov 27 00:16:19 2011, 美东) : 微软live不就是check 你的firmware signature? : 我看了一下, 破解就是把dvd的check 去掉了, 不能把跟 live 通讯的部分也改了么 : ?
|
c******n 发帖数: 4965 | 3 but that assumes MS knows "what code is expected to be executed",
so that it can verify the signature, otherwise if there is not a single
expected piece of executed code, I could just throw in any code and pick up
the pub key and generate the sig, it would still be a valid sig.
if there is " ONE single expected piece of code", then I could throw in the
original BIOS contents. but of course MS could put in a lot of obfuscation
so it's not a simple matter of handing over the BIOS content verbatim to the
pub key signature generation.
it could do something like gen_sig(pub_key, BIOS, timestamp/ip/session_key)
, yes, then it would require some insider knowledge into how the 3rd part
is used in the sig generation.
【在 S*A 的大作中提到】 : 先声明,我没有 xbox 也不知到 xbox 是如何做到的。 : 就是理论上的讨论,我可以想象这样的系统是如何做的。 : 用 Trusted computing 比较基本的设计就可以了。 : 简单不是很科学的说,在机器启动的时候 CPU 内部有支持, : 可以对执行过的代码生成校验签名一样的东西。如果你改了启动 : 代码, CPU 执行过的指令不一样,那个校验签名就不一样了。 : 那个校验签名是 CPU 和外部专门芯片的功能,里面有微软的 : public key。验证签名的生成和 public key 都是不能用 CPU : 直接访问到的。 : 然后每次上 live 的时候服务器端会生成一个 session key。
|
c******n 发帖数: 4965 | 4 I guess it has to call the hardware signature generation through some
syscall,
is it possible to hijack these syscalls like in strace? given that xbox
cpu is just x86, this is likely
【在 S*A 的大作中提到】 : 先声明,我没有 xbox 也不知到 xbox 是如何做到的。 : 就是理论上的讨论,我可以想象这样的系统是如何做的。 : 用 Trusted computing 比较基本的设计就可以了。 : 简单不是很科学的说,在机器启动的时候 CPU 内部有支持, : 可以对执行过的代码生成校验签名一样的东西。如果你改了启动 : 代码, CPU 执行过的指令不一样,那个校验签名就不一样了。 : 那个校验签名是 CPU 和外部专门芯片的功能,里面有微软的 : public key。验证签名的生成和 public key 都是不能用 CPU : 直接访问到的。 : 然后每次上 live 的时候服务器端会生成一个 session key。
|
c******n 发帖数: 4965 | 5 "Soft modification is known to be safe for Xbox Live if the user enables
multibooting with the Microsoft dashboard and an original game disc is used.
"
http://en.wikipedia.org/wiki/Xbox
【在 c******n 的大作中提到】 : I guess it has to call the hardware signature generation through some : syscall, : is it possible to hijack these syscalls like in strace? given that xbox : cpu is just x86, this is likely
|
S*A 发帖数: 7142 | 6 没有用的。
不是通过 system call, 是有 trusted computing chip 的
驱动。就算你能直接修改驱动,也没哟用的。你说的是 secruity
through obscurity。这个 truested computing 是有真正
的 security module 的。就好像你有你机器的全部特权,
但是在你机器上没法伪造出 Linus 的 pgp 签名来,算法完全
公开的,你可以修改 pgp 的代码,但是没有 Linus 的私人密钥
就是没法伪造。同样,这里面有些密钥是藏在硬件 chip 里面,
你不打开 chip 没法读出来的。
这里有两部分,一个是执行过代码的校验,简单的说就是BIOS
的 image。这个校验是不能被 CPU 直接访问的,只能通过
TC chip 生成签名来验证。 TC chip 生成签名的过程也是 CPU
不能访问的,CPU 只能看到结果。
TC chip 你可以看成一个黑盒子,里面引导过什么 OS 是不能
被 CPU 启动以后直接看到,也不能被 CPU reset 的,是由 CPU
跑过什么代码生成的。而且 TC chip 本身有住够多的密钥 CPU
看不到,也没法模仿。所以你改了引导代码以后人家就可以检测
出来。
你说的 TC 那么容易破解思路早就在人家研究的范围以内的了。
【在 c******n 的大作中提到】 : I guess it has to call the hardware signature generation through some : syscall, : is it possible to hijack these syscalls like in strace? given that xbox : cpu is just x86, this is likely
|
S*A 发帖数: 7142 | 7 对于啊,说白了就是你不能改引导的代码。
这就是个 circle of trust。
引导那部分是攻不进去的,然后 MS 给发布的游戏签名。
如果这些游戏没有漏洞你也没戏。有漏洞你可以改 bootloader,
但是人家 online 可以检查出来。
used.
【在 c******n 的大作中提到】 : "Soft modification is known to be safe for Xbox Live if the user enables : multibooting with the Microsoft dashboard and an original game disc is used. : " : http://en.wikipedia.org/wiki/Xbox
|
c******n 发帖数: 4965 | 8 if you read Bunnie Huang's paper that covers his reverse-engineering
investigation, the original Xbox security is based on a symmetric key
encryption of boot loader, and then boot loader encrypts the kernel.
the encryption of boot loader was done by a very small boot block, which is
stored in a chip. but the block has to be transported to CPU to be executed.
while the block is transported onto CPU through bus, the author monitored
the bus through hardware and got the block (including key).
【在 S*A 的大作中提到】 : 没有用的。 : 不是通过 system call, 是有 trusted computing chip 的 : 驱动。就算你能直接修改驱动,也没哟用的。你说的是 secruity : through obscurity。这个 truested computing 是有真正 : 的 security module 的。就好像你有你机器的全部特权, : 但是在你机器上没法伪造出 Linus 的 pgp 签名来,算法完全 : 公开的,你可以修改 pgp 的代码,但是没有 Linus 的私人密钥 : 就是没法伪造。同样,这里面有些密钥是藏在硬件 chip 里面, : 你不打开 chip 没法读出来的。 : 这里有两部分,一个是执行过代码的校验,简单的说就是BIOS
|
m********5 发帖数: 17667 | 9 其实只要存在硬件上别人就可以搞到手
以前卫星电视竞争就出现过,某老贼找以色列人用探针直接测芯片,于是破了,大卖盗
版点卡,整垮了对手。
【在 S*A 的大作中提到】 : 没有用的。 : 不是通过 system call, 是有 trusted computing chip 的 : 驱动。就算你能直接修改驱动,也没哟用的。你说的是 secruity : through obscurity。这个 truested computing 是有真正 : 的 security module 的。就好像你有你机器的全部特权, : 但是在你机器上没法伪造出 Linus 的 pgp 签名来,算法完全 : 公开的,你可以修改 pgp 的代码,但是没有 Linus 的私人密钥 : 就是没法伪造。同样,这里面有些密钥是藏在硬件 chip 里面, : 你不打开 chip 没法读出来的。 : 这里有两部分,一个是执行过代码的校验,简单的说就是BIOS
|
S*A 发帖数: 7142 | 10 no hardware security == no security.
The early TC chips did not integrate with CPU very well.
On better hardware you will not able to sniff the private key in
the CPU bus.
The bottom lines is, the trusted computing if implement correctly,
can't by pass by software only mods.
is
executed.
【在 c******n 的大作中提到】 : if you read Bunnie Huang's paper that covers his reverse-engineering : investigation, the original Xbox security is based on a symmetric key : encryption of boot loader, and then boot loader encrypts the kernel. : the encryption of boot loader was done by a very small boot block, which is : stored in a chip. but the block has to be transported to CPU to be executed. : while the block is transported onto CPU through bus, the author monitored : the bus through hardware and got the block (including key).
|