從XcodeGhost漏洞事件看手游安全測試

本文轉(zhuǎn)載自:騰訊WeTest專欄--《從XcodeGhost漏洞事件看手游安全測試》

安全領域有一個詞出現(xiàn)頻率很高,XcodeGhost,這種病毒不僅會在應用運行時竊取用戶信息,甚至還會模擬收費或帳號彈窗來竊取你的iCloud及iTunes密碼。受影響應用數(shù)超過76款,涉及用戶多達1個億。

那么XcodeGhost究竟是什么?

簡單的說,就是在iOS開發(fā)工具中加入一段惡意代碼,導致凡是使用這個工具開發(fā)的APP都會被感染,而安裝被感染APP的手機則會淪為黑客的“玩具”。

在用戶心目中“堅不可摧”的蘋果生態(tài)系統(tǒng)這一次遭遇了“信任危機”,人們開始發(fā)現(xiàn)蘋果的安全防御機制比想象的更加脆弱。

“信任危機”是企業(yè)危機中最嚴重的之一?!靶湃挝C”讓企業(yè)無論做什么都會讓用戶產(chǎn)生懷疑,讓企業(yè)的一切舉措都將事倍功半。

從XcodeGhost漏洞事件來看手游領域,手游的安全問題是引發(fā)“信任危機”的重要導火索,作為安全領域的老鳥,在手游一片紅海的當下,想談談手游安全的重要性,同時想給大家分享一些實用的手游安全測試方法。

一、為什么安全測試這么重要?

來看看幾種常見的安全問題:

1.游戲盜號,利用安全漏洞對游戲內(nèi)賬號做批量盜取,對玩家的直接損傷不用提,盜號的資金流入市場影響的是整個游戲市場平衡。

2.外掛,從端游到頁游,太多游戲是因為外掛問題被玩家拋棄,直接影響著玩家體驗。

3.客戶端二次打包,這個帶來的風險比前幾個都大,而且后患無窮??赡苁侵苯颖话惭b了購買插件,開發(fā)者的利潤流向了黑客的口袋,更恐怖的是向玩家投放釣魚病毒,直接獲取玩家的銀行賬號等個人資產(chǎn)信息。

除了這些問題外,還有非常多的安全問題。這些問題都將直接、間接影響游戲游戲的收入、留存,給開發(fā)者造成重大損失。所以,如何預防安全問題迫在眉睫,安全測試應運而生。簡單概括安全測試是泛指能夠影響游戲平衡性,并且對游戲有破壞性和惡意影響的問題。包括幾大安全領域:

包括網(wǎng)絡帳號、網(wǎng)絡充值的問題涉及到了網(wǎng)絡安全的領域;

客戶端的安全,反破解、反調(diào)試等屬于軟件安全的領域;

游戲外掛的檢測與防御,就比較類似于殺毒軟件的檢測做法;

游戲內(nèi)邏輯漏洞的檢測,又更傾向于軟件測試領域的內(nèi)容;

還有游戲內(nèi)的欺騙、釣魚等方面。

二、該如何做安全測試?

其實游戲的本質(zhì),是客戶端與服務器端的數(shù)據(jù)通信。安全測試的過程也主要是圍繞數(shù)據(jù)來進行。手游安全測試,其實也是手游安全攻擊的過程。在攻擊的過程中,讓其存在的安全問題自動顯現(xiàn)出來。通過對數(shù)據(jù)的修改,讓服務器端承認修改后的異常數(shù)據(jù),就是安全測試所需要發(fā)現(xiàn)的問題。首先,開始手游安全測試前,需要對游戲的分類有大概了解。

(一)游戲的分類

在PC端游盛行的時代,網(wǎng)絡游戲根據(jù)交互實現(xiàn)的不同就已經(jīng)分為了兩種類型。封包邏輯強校驗的游戲,例如MMORPG等類型游戲,這類是主流。還有一類游戲,由于需要考慮到游戲的實時操作體驗,使用的是UDP協(xié)議交互。這類游戲使用了弱校驗的封包邏輯。

而到了手游時代,除了上述兩個原因,還需要考慮手機不同于PC端的獨特情況。因此,弱校驗類型的游戲也變得更多。

針對強校驗類型的游戲,一般情況只需要測試器游戲協(xié)議封包邏輯。因為,這種類型的游戲,在本地的所有關鍵數(shù)據(jù)都不參與運算,均是在服務器端進行的運算。

(二)常用手游安全測試方法

了解了游戲分類,下面從游戲邏輯內(nèi)容的角度,說明常規(guī)的一些測試方法。

1.協(xié)議測試

例如天天富翁和全民小鎮(zhèn)等手機游戲,就是屬于強校驗的手游。玩家在天天富翁游戲內(nèi)的每個基本操作,都有與服務器端通信處理。例如投擲骰子。

針對這些類型的游戲,并沒有太多可以本地修改的內(nèi)容。因為本地修改的內(nèi)容,都會通過每個封包去與服務器端交互。

因此,只需要對游戲內(nèi)的每個封包進行安全測試,那么這個游戲的安全問題,就比較有保證。封包測試時,可以從兩個角度進行測試。

A、針對每個封包的字段內(nèi)容,進行邊界測試;

B、每個封包也可以在不同的場景下,嘗試進行狀態(tài)測試。

可以根據(jù)游戲的內(nèi)容,對測試內(nèi)容交互封包進行羅列,循序漸進,完成測試。

天天富翁的強制拍賣問題

(在天天富翁的前期版本,可以通過修改發(fā)送封包實現(xiàn)強制拍賣對方地標建筑的問題。該BUG為通過修改封包實現(xiàn)。)

2.?內(nèi)存數(shù)據(jù)修改

而針對弱校驗類型的游戲,其在本地有部分的計算替代了服務器端的計算邏輯。目前,更多的做法是在游戲結(jié)束時,將計算操作的數(shù)據(jù)保留發(fā)送向服務器端。由服務器端確認計算邏輯的有效性。

例如天天酷跑內(nèi)角色在游戲內(nèi)的跳躍等動作。

這種類型的游戲,測試重點則放在了內(nèi)存數(shù)據(jù)修改和代碼修改上。因為計算的數(shù)據(jù)存放在本地,雖然服務器端最終有校驗處理,但不能夠完全的保證校驗處理的全面性。

常用的安卓內(nèi)存修改器

對于手游來說,內(nèi)存數(shù)據(jù)修改測試也是目前門檻最低的測試方法。但是測試的覆蓋度,相對協(xié)議測試來說,沒法準備的保證。但是可以根據(jù)單局游戲結(jié)束時,客戶端向服務器端發(fā)送的封包、以及游戲界面上的顯示數(shù)據(jù)等來確認可能可以修改的數(shù)據(jù)內(nèi)容。

3.代碼修改測試

繼續(xù)弱校驗類游戲,當通過修改內(nèi)存數(shù)據(jù)不能實現(xiàn)部分測試功能時,亦可通過修改代碼實現(xiàn)。如下圖。

針對于2dx類型的游戲,可以通過IDA分析so中的函數(shù)名稱,定位關鍵函數(shù),修改實現(xiàn)安全測試的功能。

而針對與unity類型的游戲,其主要邏輯代碼均存放與C#的dll中??梢酝ㄟ^反編譯獲取源碼后,修改IL代碼實現(xiàn)測試功能。

4.變速測試

針對于有些游戲,可以通過調(diào)整游戲的運行速度來實現(xiàn)測試功能。

希望的測試結(jié)果是,首先,游戲本身的防護可以阻止加速插件的加載;其次,如果可以加速效果,那么希望加速后可以不影響到游戲的功能和平衡性。

如果使用加速后,可以降低游戲難度,或者增加游戲得分,那這就屬于安全的問題。

(三)Wetest手游安全測試

Wetest手游安全測試,主要側(cè)重于Apk層面的權(quán)限、策略風險等問題。其主要功能包含有:

敏感權(quán)限檢測、本地數(shù)據(jù)安全、網(wǎng)絡數(shù)據(jù)安全、應用的C#源代碼上的邏輯錯誤語法錯誤等問題。

目前市面上的其他保護,更多的是安全加固,提供保護方案。而Wetest的安全測試則側(cè)重于安全掃描的功能,能夠自動的發(fā)現(xiàn)一些Apk層面的問題,并且無需上傳工程源代碼。

三、結(jié)語

游戲安全領域的攻防向來是道高一尺魔高一丈,攻防雙方都處于不斷的演變和進化過程中,因此游戲安全防護需要長期持續(xù)的研究與投入,是場持久戰(zhàn)。

個人認為,手游的安全問題,不是就單靠技術(shù)就能完全解決的問題。技術(shù)手段只是提高了門檻,并沒有從根本上解決手游的安全問題。

這是需要從多方面多管齊下,例如技術(shù)防護提高門檻,用戶反饋提供渠道信息,法律角度增強威懾。需要提供從多個維度來保護才能達到比較理想的效果。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容