本文轉貼自PTT 改機板文章

 


 作者  cassine (Savannah)                                       看板  Modchip
 標題  Re: [PS3 ] PS Jailbreak 原理分析
 時間  Fri Aug 27 20:48:30 2010
───────────────────────────────────────


http://www.gamefreax.de/psjailbreak-reverse-engineered.html


Wir haben das PSJailbreak Dongle doch nochmal aus der Versenkung
geholt um es genauer uter die Lupe zu nehmen. Wir erklren Euch hier
in Krze die wichtigsten Schritte des internen Ablaufs vom
PSJailbreak.


我們對PSJB做了一些研究,現在我們可以大略描述一下PSJB的運作原理。


Wir knnen besttigen, dass es sich bei dem PSJailbreak nicht um
einen Clone von Sony's "Jig" Modul handelt. PSJailbrak ist ein
ehrlich selbstentwickelter Exploit. Der Chip ist kein PIC18F444
sondern ein ATMega mit Software USB. Das bedeutet, der Chip ist intern
in der Lage USB zu emulieren. PSJailbreak emuliert hauptschlich
einen 6Port USB Hub, an den in einem bestimmten Ablauf verschiedene
USB Gerte angeschlossen und wieder abgeklemmt werden. Eines dieser
Gerte trgt die ID von Sony's "Jig" Modul, das bedeutet, dass
bei der Entwicklung des PSJailbreaks das "Jig" Modul eine gewisse
Rolle gespielt hat.


首先,PSJB並非$ONY內部 JIG模組的複製版,PSJB所使用的是一個已知的漏洞。
那顆晶片只是 PIC18F444而已,內部有燒錄特殊程式碼讓PSJB可以模擬一個 6埠
的 USB集線器,然後模擬有些裝置連接到這個假的集線器上,其中一個裝置的ID
就是$ONY的 JIG模組。換言之 JIG在PSJB的開發上扮演了某種角色。


Aber fangen wir vorne an: Beim Einschalten der PS3 wird in der USB
Emulation ein Gert angeklemmt, welches einen viel zu groen
Configuration Descriptor hat. Dieser Descriptor berschriebt den
Stack mit einem enthaltenen PowerPC Code, welcher ausgefhrt wird.
Nun werden verschiedene USB Gerte in der Emulation angeschlossen.
Ein Gert verfgt ber einen 0xAD groen Descriptor, der Teil des
Exploits ist und statische Daten enthlt. Wenige Zeit spter (wir
bewegen uns hier im Milisekundenbereich) wird das Jig Modul
angeschlossen, und es werden verschlsselte Daten an das Jig Modul 
bertragen. Eine (im Milisekundenbereich) Ewigkeit spter antwortet
das Jig Modul mit 64Byte statischen Daten, smtliche USB Devices
werden disconnected, ein neues USB Device wird connected und die PS3
startet im neuen Gewand.


這樣說好了:當 PS3開機的時候, USB模擬器也會隨之啟動,而這個模擬器卻包
含了一個過大的控制描述子(Configuration Descriptor),而這個過大的描述子
剛好可以讓裡面包含的 PowerPC程式指令蓋進主機的特定堆疊中(譯註:非常類
似緩衝區溢位攻擊的原理),然後非法的程式指令就被執行了。


開機時一堆 USB元件又連了上主機,其中一個元件的描述子大小竟然有0xAD這麼
大( 173個字元),這就是漏洞的一部分而且資料是固定的。一段非常短的時間
後(千分之幾秒),假的 JIG模組也連了上去,主機會將一段加密的資料送到假
的 JIG模組,然後又過了千分之幾秒,PSJB的模擬 JIG模組將預先準備好的64位
元組之料回傳,完成後所有的 USB裝置離線,接著又有新的裝置連線,此時 PS3
就能夠執行自製程式了。


******


如果是緩衝區溢位的話,那要看出問題的程式片段是寫在什麼地方。如果是沒辦
法靠更新韌體來反制的話,就只能夠藉由硬體修掉這個問題再用封掉主機連接
 PSN功能的方式來壓制。


但如果這個洞也可以被用來將零售版主機韌體更新 debug版韌體的話或是駭客們
改造過的官方相容版本韌體,那$ONY要反制就有一定的難度了。

NATA 發表在 痞客邦 PIXNET 留言(0) 人氣()