[PS3 ] C3 研討會

看板Modchip (改機)作者 (Savannah)時間14年前 (2010/12/30 13:16), 編輯推噓29(29013)
留言42則, 30人參與, 最新討論串1/3 (看更多)
Part 1: http://www.youtube.com/watch?v=HEFMAP0mTvY
◆引言 426無斷轉載生兒子沒屁眼! Wii 已經上市三年,期間總共有九次韌體更新。總銷售數量有七千三百萬台, 總共有三千萬台的開機程式(bootloader)有漏洞。使用HBC 玩家的數量大概有 一百萬人。 老任的軟體非常脆弱,就算不破解,也有可能一不小心就當機或是變磚。這也 是Wii 這麼快就被破解的原因之一。老任在這段期間嘗試防堵破解,但都徒勞 無功。 426無斷轉載生兒子沒屁眼! XBOX360 從發售到今天只有兩次讓玩家有執行自製程式的機會,一次是《金剛 》遊戲的漏洞,另一次是除錯埠(JTAG)的破解。 PS3 因為厚機一開始支援安裝 Linux,因此$QNY跟破解陣營有了一段關係不錯 的蜜月期。但不能執行3D加速的限制最後還是讓雙方撕破臉,2007年底被發現 OtherOS 的RSX 漏洞,$QNY選擇直接閹掉OtherOS 後雙方正式宣戰。$QNY聲稱 薄機不再支援Linux 是為了降低主機的成本,但時至今日我們知道$QNY根本就 在放狗屁,因為 Linux明明就可以在薄機上面正常執行。 我們可以證明$QNY的措施是沒有意義的,他們根本不能阻止大家在主機上面執 行Linux 。 (秀投影片展示各個主機的破解難易度,顏色越深越難破解,破解的下場全都 是:盜版, PS3被破解後會不會落如同樣的下場呢?) ◆PS3 主機架構。 $QNY看上IBM 的Cell處理器後決定採用作為 PS3的主機 CPU,實際上就是一顆 64位元的PowerPC 處理器而已。$QNY跟 IBM設計了一個孤立的 SPU架構,絕大 部分對於 CPU資源的存取都必須透過 SPU,使用者能夠直接存取的部分非常有 限。由此可見$QNY在我們看不見的部分藏了不少東西。 主機的架構有三層: 426無斷轉載生兒子沒屁眼! Lv1/HyperVisor ←→ SPU Lv2/Game OS ←→ SPU Problem State/Games 只有第一層跟第二層有辦法直接和 SPU溝通。 (PS3開機程序) ◆各家主機的安全架構 1.都有一次寫入的BootROM 2.Wii 跟 360使用了一次寫入的記憶體儲存金鑰 3.都使用公私鑰加密簽證機制 4.除了 Wii以外都用了連鎖認證機制,Wii 只在安裝韌體時使用,所以很容易 破解 426無斷轉載生兒子沒屁眼! 5.除了XBOX以外,其他主機都每台都有獨特的金鑰 6.除了Wii 以外,其他主機都有執行檔簽證機制 7.Wii 跟 PS3有獨立的安全輔助晶片 8.只有 Wii使用了儲存媒介簽證加密,遊戲光碟是加密的 9.Wii 跟 PS3有將主機內記憶體利用主機獨特金鑰加密 10.Wii 還有自身簽證的安全架構 Part 2: http://www.youtube.com/watch?v=qFuTCEtK6l8
11. 360使用了主機記憶體加密的機制 12. 360跟 PS3都有Lv1 的防護機制HyperVisor 13. PS3有使者、核心模式,算是一種砂盒防護機制,Wii 跟 360都是在核心模 式執行程式 14.只有 360有防止降級的電子保險絲機制(eFUSE ),保險絲的狀態是加密、 解密的資訊之一,因此就算用晶片燒錄器強行寫入低版本的韌體也無法正常 解密執行。保險絲的位置在 CPU裡面,理論上無法還原。 但很顯然的, PS3的主機內記憶體加密機制已經可以繞過了,所以暫時不會對 破解造成太大的妨礙。同時由於硬碟的內容都是用同一把金鑰加密,而使用者 可以上傳一些測試文件到硬碟,然後將硬碟拆出,分析變動的地方,以此資訊 作為樣本進行暴力破解。 426無斷轉載生兒子沒屁眼! ◆OtherOS (演講者很靠北地送了個獎盃給$QNY:拔掉OtherOS 就可以引起大家的注意) 我們知道薄機拿掉OtherOS 絕對不是因為$QNY技術有問題,也可以排除行銷方 面的問題,因為不會有人因為主機可以執行 Linux而拒絕購買。拿掉這個功能 只會激怒大家,讓大家群起而攻之。結果George Hotz (Geohot)開了第一槍, 把錯誤的記憶限制資訊寫入記憶體,然後騙過主機取得更大的記憶體權限。 ◆Geohot漏洞 426無斷轉載生兒子沒屁眼! Lv1/HyperVisor也是存在主機記憶體中,因此執行OtherOS 時, Linux跟HV其 實都是使用同一塊主記憶體,只是HV有分配權限,當Linux 核心需要更多記憶 體時,會向HV要求,然後HV給出,並在HTAB上紀錄,讓Linux 可以存取; Li- nux要釋放記憶體時,也是跟HV通知要釋放,然後HV清除在HTAB上的紀錄。一 切都如此美好~。 426無斷轉載生兒子沒屁眼! 但Geohot耍了一些小手段,利用外部訊號欺騙HV剛剛宣告的記憶體又釋出了, 但實際上核心還是有存取權限。然後Geohot繼續用這種方式欺騙HV,盡量將主 機的記憶體佔滿,運氣好的話剛好某些記憶體的分頁表就會跑進剛剛欺騙的範 圍內,結果Linux 核心就可以讀到原本不該讀的資料,甚至也可以把HV整個讀 進來。 426無斷轉載生兒子沒屁眼! 有HV的資料就可以侵入HV模式。 ($QNY得到第二座的獎盃:你們家的HyperVisor攤在陽光下了!) 雖然聽起來很厲害,理論上可以這樣搞,但沒有人知道把HV讀出來以後要做什 麼。結果這一槍反而激怒$QNY,發火把所有厚機的OtherOS 功能拔掉了,最後 也衍生出違反《歐盟消費者保護法》的爭議。 麻煩的是通常只有駭客們會使用OtherOS 功能,一般只玩遊戲的玩家根本不會 理會那個功能的有無,於是$QNY這一搞惹毛了所有乖乖使用OtherOS 的駭客, 他們決定要把$QNY從他們身上平白奪走的功能搶回來。 ($QNY得到第三座獎盃:你惹到不該惹的人了!) $QNY顯然太過大意,之後從內部流出了PSJB,一下子也讓大家複製出來。PSJB 如大家所知,是一個讓人在Lv2/GameOS裡面執行沒簽證程式的手段。 ◆PSJB漏洞 426無斷轉載生兒子沒屁眼! $QNY韌體系統在辨識 USB裝置時的程式有漏洞。所有的 USB裝置都有一個描述 子(discriptor),裡面存有一個字串,描述這個裝置的名稱,例如隨身碟的描 述子是磁碟標籤這樣。主機讀取描述子時,首先會讀取一開始的 8個byte,接 著讀取描述子的長度。 利用模擬方式,一口氣在 USB插槽上連接六個裝置,主機讀到第四個裝置的描 述子時,第四個裝置回答主機說描述子長度為 0,於是主機就沒有宣告任何記 憶體空間來儲存描述子字串。主機程式沒考慮到這種狀況,於是乎主機會嘗試 去處理不存在的字串,結果不小心就處理到讀第二個裝置描述子時存下來的東 西,而這個字串恰巧能夠騙過主機,於是主機能夠成功將記憶體初始化。 讀第二個裝置存下的字串結尾是04 21 B4 2F ,結果讓主機誤認說這個裝置的 描述子長度有0x2FB4,一讀暫存器自然就爆掉了。主機繼續讀取第三個裝置的 組態描述子(configuration discriptor),結果讓第三個裝置的資訊蓋掉程式 的指標,指向第一個裝置儲存酬載的地方,於是主機就執行到我們要讓他執行 的程式了。 426無斷轉載生兒子沒屁眼! ($QNY得到第四座獎盃:得到在Lv2 裡面執行程式的權限了!) 進一步分析之後我們發現HV根本不知道PSJB到底搞了什麼鬼,HV也不會去阻止 使用者利用PSJB執行未簽證的程式。所以這個HV到底在幹麼?走到這裡,我們 並沒有去破解Lv1/HV,也沒去破解SPE ,所以得出的結論就是……。 ($QNY得到第五座獎盃:盜版參上!!) 天底下哪有這種只攻破Lv2 就可以執行盜版的好康事?有的原因就是因為$QNY 的防禦機制根本起不了作用。所以我們可以將遊戲備份到硬碟裡面,然後將光 碟機的位址換成硬碟的位址,因為Lv1 不會去檢查遊戲的完整性。SPE 也不理 。所以你要把遊戲備份到哪裡都無所謂。 到此,已經可以繞過HV了。 426無斷轉載生兒子沒屁眼! $QNY發覺事情大條之後,開始嘗試阻止,於是發佈新版韌體3.42、3.50,好吧 !山不轉路轉,就降級。 ◆降級 進入主機的方式其實不難,因為只是個簡單的對稱性加密HMAC而已,拿到金鑰 後就不是問題了。進入F/S Mode之後可以執行存在USB 隨身碟上而且簽證過的 程式,偏偏$QNY內控有問題,於是又流出能夠略過版本查驗的韌體更新程式。 所以說……。 426無斷轉載生兒子沒屁眼! (第六座獎盃:越來越多的盜版) ◆AsbestOS 由於GameOS跟OtherOS 其實差異不大,只差在硬體存取權限而已。AsbestOS把 GameOS趕出了記憶體,換成自己,於是我們就能在薄機上執行Linux 的原因就 來這裡。我們可以將 Linux設成遠端模式,然後透過電腦下指令來執行程式。 我們並未滿足現狀,要用 USB破解工具才能執行自製程式很不方便,我們希望 找出一個一勞永逸的方法,讓主機一開機就進入 Linux。為此我們就需要分析 執行檔的結構。 ◆執行檔SELF 有蠻複雜的加密方式,因此不是那麼容易就能破解的。 http://www.youtube.com/watch?v=84WI-jSgNMQ
Part 3: ◆預言 $QNY的算盤是:沒人看得到我們的程式碼 ……除非能攻破PPE 能在GameOS裡面把程式解密!?這樣就不用破解安全輔助處理器了。 那加密金鑰咧? 426無斷轉載生兒子沒屁眼! 於是我們可以讓主機自動幫我們把程式解碼,而完全不用管到底是怎麼辦到的 。所以…… (第七座獎盃:障眼法騙不了人的!) 因此 PS3的安全輔助處理器沒用了 426無斷轉載生兒子沒屁眼! ◆連鎖認證 這個東西是個兩面刃,如果不被攻破,那就牢不可破,但萬一被攻破,就以透 過相互的認證機制全部拿下。只更新一部分程式是沒用的,因為還是可以透過 認證換回舊版的,所以要防就要整個砍掉重練。 ◆破解開機程式 426無斷轉載生兒子沒屁眼! 我們能夠存取的範圍不多,但反正要執行程式,系統都會先把程式複製到執行 程式的區域,所以還是利用緩衝區溢位的老招,寫入大量的資料,把程式一口 氣蓋進去lv2ldr的位置。運起好的話就能把整個開機程式連根拔起。於是…… (第八座獎盃:得到AES 金鑰啦!) 簡單說,$QNY的機制是「一步錯,滿盤輸」,只要有一小個在孤立載入器的漏 洞被發現,整個連鎖認證的機制就毀了,而且這個漏洞會波及所有已經販售的 主機。我們可以藉此攔截開機程序,換成執行我們的程式,這樣開機時就可以 直接進入 Linux了。 426無斷轉載生兒子沒屁眼! (第九座獎盃:連鎖認證機制破滅) 雖然說是「破滅」,但並非「神話」…… ◆執行檔 簽證的問題怎麼辦? 要描述橢圓曲線有五個參數 p a b G N Q = 公鑰 e = 資料的雜湊值 426無斷轉載生兒子沒屁眼! R,S = 簽證指紋 當然最直接的就是直接找出用來加密的私鑰,但理論上是有困難的。這牽涉到 橢圓曲線的加密方式,相當複雜,而且牢不可破。第一個方程式沒人解得出來 ,第二條比較簡單,但是有個亂數 m在裡面,也是有點麻煩。 R = (mG)_x ... (1) S = (e + kR)/m ... (2) 426無斷轉載生兒子沒屁眼! 照理來說, m應該是個亂數,就像我們丟骰子一樣。但是,我也不知道為什麼 $QNY的骰子每次都會丟出相同的點數。因此當某兩個簽證指紋的 m相同時,就 代表 R也相同,於是可以透過簡單的加減乘除推出 m,然後是 k。 R = (mG)_x R = (mG)_x S1 = (e1 + kR)/m S2 = (e2 + kR)/m 所以把S1減去S2,可以得到 426無斷轉載生兒子沒屁眼! S1 - S2 = (e1 - e2)/m → m = (e1 - e2)/(S1 - S2) k = (mS1 - e1)/R = (e1S2 - e2S1) / [R(S1 - S2)] ◆Elliptic Curve Digital Signature Algorithm, ECDSA 橢圓曲線數位簽證演 算法 我們用了 ECDSA演算法來保護我們的 HBC不被攻擊,程式碼大概是長這樣。你 看這裡,我們也用了亂數產生器。照理來說亂數產生器應該是有點複雜的,但 你知道$QNY的亂數產生器長什麼樣嗎? int getRandomNumber() { return 4; //隨便丟骰子得到的結果 //骰子的結果當然是隨機的啦啾咪~ } 426無斷轉載生兒子沒屁眼! 於是可以得到 k, k就是私鑰,有了私鑰我們就可以高高興興的把程式拿來簽 證囉~! (第十座獎盃:私鑰也到手啦~) 這個私鑰是$QNY在 PS3平台上最最重要的一樣資訊,有了這個以後,什麼 Lv2 、 Lv1防禦都沒用,那是防人翻牆侵入的,我手上有大門的鑰匙又何必翻牆? 更正一下,暫時還沒拿到Lv1 的金鑰 ,這部份還需要一些時間。 好了,所以公私鑰的加密機制也崩壞了。只剩下最後一關:BootROM ,但是這 個東西實在談不上是什麼高科技的玩意兒,我們沒花多少時間就讓他發生溢位 錯誤了。 426無斷轉載生兒子沒屁眼! (第十一座獎盃:溢位錯誤的白金獎盃) 所以,謝謝啦,$QNY! http://fail0verflow.com ◆提問時間 426無斷轉載生兒子沒屁眼! 原本我們想在這裡直接展示我們的成果的,但是不知道為何暫時沒辦法正常運 作,兩年前也是一樣,不知道為何在關鍵時刻東西都會壞掉,我們會想辦法修 好,然後明天,明天我們會另外安排個時間來作展示。(Lightning Talk) 我們準備了兩隻麥克風,請到兩邊排隊,如果你不好意思在公開提問題的話, 你也可以私下到講台前來。 Q1:你們知道PSJB的來源嗎? 426無斷轉載生兒子沒屁眼! A1:一無所知,但可以猜。只是有幾分證據只能講幾分話。 Q1:所以是從$QNY內部流出的? A1:呵呵呵……。總之現在有很多晶片都可以模擬PSJB。但我們的破解方式不 一樣,而且目前的戰場有點髒,所以我們需要一些時間清理戰場,大概下 個月左右我們就可以把我們的成果整理成破解工具放出來。 Q2:既然已經有私鑰了,為何不能弄出個藍光軟體的酬載程式? A2:我們目前還沒有拿到用來簽證遊戲的私鑰,而且那跟appldr有關,而且 $QNY已經換了好幾次私鑰……。 426無斷轉載生兒子沒屁眼! 更正一下,我搞錯了,是的,我們目前已經可以把遊戲簽證,但那不是我 們的目的。 還有問題嗎?沒有的話,離場的出口在右邊,離開時請帶走所有的垃圾,謝謝 ! 426無斷轉載生兒子沒屁眼! ※ 編輯: cassine 來自: 140.112.18.73 (12/30 13:52)

12/30 13:21, , 1F
什麼 施工中嗎...
12/30 13:21, 1F

12/30 13:25, , 2F
waiting
12/30 13:25, 2F

12/30 13:28, , 3F
C4比較好用
12/30 13:28, 3F

12/30 13:39, , 4F
C4 (遞
12/30 13:39, 4F
****** 剛剛打到一半斷線, 120大學的網路就是這樣ˋ(′_‵||)ˊ 所以這篇是斷線後載入暫存檔的,有些人的推文可能因此消失。另外這篇要轉錄 的話請先知會本人取得許可。

12/30 15:52, , 5F
感謝翻譯!
12/30 15:52, 5F

12/30 16:51, , 6F
等等..上一次編輯的網址是112耶.....
12/30 16:51, 6F

12/30 16:51, , 7F
不是中間隔了2小時就到台中了吧....
12/30 16:51, 7F

12/30 17:11, , 8F
PS3 全面破解 熱烈上映中!
12/30 17:11, 8F

12/30 17:41, , 9F
亂數產生器那個我笑了XDDDDDD
12/30 17:41, 9F

12/30 18:45, , 10F
意思是每次亂數都回傳4嗎?
12/30 18:45, 10F

12/30 18:48, , 11F
推翻譯
12/30 18:48, 11F

12/30 19:09, , 12F
可以借轉到個人版嗎
12/30 19:09, 12F

12/30 19:09, , 13F
謝謝
12/30 19:09, 13F

12/30 19:54, , 14F
看不懂 不過翻的很有趣XD
12/30 19:54, 14F

12/30 19:58, , 15F
有點看不懂,不過未來金手指有望出嗎?聽說日本已有?
12/30 19:58, 15F

12/30 20:12, , 16F
看不懂 不過覺得很酷
12/30 20:12, 16F

12/30 20:18, , 17F
惹到不該惹的人了 只能說自作孽
12/30 20:18, 17F

12/30 22:09, , 18F
為什麼大家都只想要在PS3上用Linux 沒想用windows呢?
12/30 22:09, 18F

12/30 22:19, , 19F
windows太肥了 LINUX可依使用者需求來修改功能
12/30 22:19, 19F

12/30 22:27, , 20F
用Linux跑QEMU之類的虛擬機 接者應該就可灌Windows了
12/30 22:27, 20F

12/30 22:28, , 21F
理論上可行 不過應該只能拿來供著 效能一定慘不忍睹
12/30 22:28, 21F

12/30 22:33, , 22F
PS3 要跌價了
12/30 22:33, 22F

12/30 22:41, , 23F
簡單說,就是微軟沒出給PS3跑的Linux版本
12/30 22:41, 23F

12/30 23:18, , 24F
那個亂數產生器的意思是不管骰子怎麼丟都會回傳4的結果嗎???
12/30 23:18, 24F

12/30 23:49, , 25F
差不多是那個意思
12/30 23:49, 25F

12/30 23:57, , 26F
用力的推!!! 這篇太棒了!!
12/30 23:57, 26F

12/31 00:07, , 27F
PS3怎麼會跌價? $ONY會願意降價格嗎?
12/31 00:07, 27F

12/31 00:21, , 28F
忘了推,感謝翻譯
12/31 00:21, 28F

12/31 00:21, , 29F
該小組的原意是讓ps3執行linux,並非讓它執行不正copy的
12/31 00:21, 29F

12/31 00:21, , 30F
遊戲
12/31 00:21, 30F

12/31 00:22, , 31F
ps3應該會因為暢銷漲價才對
12/31 00:22, 31F

12/31 01:13, , 32F
426無斷轉載生兒子沒屁眼!
12/31 01:13, 32F

12/31 02:08, , 33F
謝謝 原PO 翻譯文的分享! ^^
12/31 02:08, 33F

12/31 11:05, , 34F
doreamon909: 沒看到 PS3 用的是 PPC 處理器嗎?
12/31 11:05, 34F

12/31 12:20, , 35F
這篇太有意思啦 不愧是高手雲集的會場 所以真的不要亂惹人
12/31 12:20, 35F
※ 編輯: cassine 來自: 140.120.31.133 (12/31 17:04)

12/31 17:21, , 36F
12/31 17:21, 36F

01/01 03:13, , 37F
沒想到微軟不用dallas chip,但是用了沒見識過的eFUSE
01/01 03:13, 37F

01/01 03:15, , 38F
return 4那邊我想並不是RD偷懶,而是就算依賴時間換表
01/01 03:15, 38F

01/01 03:15, , 39F
也是一樣可以硬是把時間給鎖死,這樣的random意義不大
01/01 03:15, 39F

01/01 03:18, , 40F
USB傳回descriptor的bug就有點扯,竟然出包在這種地方
01/01 03:18, 40F

01/02 22:29, , 41F
我也只能給推了
01/02 22:29, 41F

01/03 17:49, , 42F
推一下!!
01/03 17:49, 42F
文章代碼(AID): #1D71MQHe (Modchip)
討論串 (同標題文章)
文章代碼(AID): #1D71MQHe (Modchip)