62d8169e23d093f3505e5e1a3655a249 緩衝區溢位是老哏到不行的攻擊方式,不過在PSP的破解工作上屢屢建功。有些利用這種漏洞進行的攻擊,能夠取得使用者模式權限,讓玩家執行部分自製軟體,而更進一步的攻擊甚至可用來將系統降級。

前情提要:

家用主機秘辛1:任天堂紅白機導致的破解風潮

家用主機秘辛2:紅白機的防拷晶片歷史

家用主機秘辛3:正版比盜版問題更多,破解萬惡10NES晶片

家用主機秘辛4:進入光碟時代,PS的保護機制

家用主機秘辛5:數秒內抽換光碟, PS 盜版片也能騙過驗證機制

家用主機秘辛6:最暢銷主機 PS2 的大後門,用壞軌光碟 Swap Magic 破解

家用主機秘辛7:PS2安裝假OS,從記憶卡開機

家用主機秘辛8:PS2連DVD播放功能都暗藏玄機

家用主機秘辛09:大門忘記上鎖的PSP

灌爆緩衝區

緩衝區溢位(buffer overflow)攻擊的概念,是強制寫入大於緩衝區容量的資料,讓資料超出緩衝區邊界,如此一來便有一部分的資料會掉到緩衝外部,而不是在它應該存在的地方。

讓我們看個簡單的例子,假設我們2個程式,程式A有12byte,且排在前頭,程式B有10byte,排在程式A後面,所以記憶體中的狀況應該會長成這樣:

[][][][][][][][][][]||[][][][][][][][][][][][]

程式B分配空間||程式A分配空間([]為1byte)

程式B原本只應寫入10byte資料,但是透過特殊手段,讓系統在未經檢察的情況下,強行寫入14byte的資料,記憶體狀況就會變成這樣:

[x][x][x][x][x][x][x][x][x][x]||[x][x][x][x][][][][][][][][]

這樣一來,程式B的資料就被寫入到程式A被分配到的空間中。根據程式A原本的資料不同,被程式B覆寫過後,可能會讓整個程式故障、當機,也有可能不受影響,如果我們有辦法讓程式A故障,意味著我們可以改變原先的工作流程,並有可能順藤摸瓜,讓我們執行自己所編寫的程式碼。


▲在正常情況下,各程式的資料會存放在各自記憶體空間中。


▲緩衝區溢位就是讓程式的資料存放到另一個程式所屬的記憶體空間。

攻破核心以利降級

下方附圖是個非常熱門遊戲的例子,該例採用Grand Theft Auto Liberty City Stories遊戲中的漏洞,使用緩衝區溢位攻擊讓駭客可以執行自己編寫而未經簽署的程式碼,搭配從1.XX版韌體中找到的核心模式漏洞,就可以將韌體從2.00版降級到1.50版(正常情況下無法降級)。由於當時2.00版尚未破解,而1.50版已經破解,所以降級的價值很高,後續在PSP破解的黑暗時期,這類破解手法被封鎖無法發揮功用,導致了駭客社群轉進Half Byte Loader的專案(在使用者模式下讓玩家執行部分自製軟體)。

在Grand Theft Auto Liberty City Stories的漏洞被發現後,官方很快地推出包含韌體升級檔的修正版遊戲,來補救這個漏洞,但是根據Wololo的分析,遊戲本身並沒有經過任何修改,漏洞還是原封不動地存在,而是透過新版韌體封鎖漏洞,並限制遊戲只能在新版韌體中執行。在當時要找到無修正的片子不是件容易的事(這樣翻譯會不會有點超過XD),大部分的片子都是以很誇張的價格在網路上流通,很多人只是想靠這片遊戲賺錢,真的是a**holes(原文,反正是髒話的意思)。


▲剛好譯者也有Grand Theft Auto Liberty City Stories這片遊戲,不過沒有拿出來拋售。


▲透過緩衝區溢位攻擊取得相關權限後,就可以執行自製程式。

 下集預告:破解之神Dark_Alex登場

原文刊載於http://wololo.net/2014/01/18/10-days-of-hacking-day-4-the-psp-part-1

感謝原文作者Acid_Snake同意轉載

Original article by Acid_Snake. Translate by konamigood.

延伸閱讀:

【模擬器改造】掌機性能大提升:PlayStation Portable篇

挑戰 Apple TV,Sony 發表 PS Vita TV 提供影音串流服務,還能用電視玩 PS Vita、PSP 遊戲

PSP 退休後,刷機做3種進階利用,實測給你看

使用 Facebook 留言

發表回應

謹慎發言,尊重彼此。按此展開留言規則