一、項(xiàng)目背景

外掛的危害

隨著智能手機(jī)的全面普及和市場泛娛樂化,移動(dòng)游戲行業(yè)發(fā)展迅猛,無論是市場收入還是用戶規(guī)模,手游在游戲市場上已經(jīng)占據(jù)了半壁江山。如此火熱的市場吸引了大量外掛、輔助工作室等非法盈利團(tuán)隊(duì),嚴(yán)重影響了游戲的收益、平衡,縮短游戲的生命周期,外掛對(duì)手游形成了這些危害:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

手游外掛的八大危害

 

為了避免這些損害,騰訊游戲內(nèi)部的測試流程已經(jīng)將“手游安全測試”設(shè)立為必經(jīng)環(huán)節(jié),騰訊大部分手游上線前都會(huì)進(jìn)行手游安全測試,《王者榮耀》、《穿越火線:槍戰(zhàn)王者》,《夢(mèng)幻誅仙》等六星級(jí)游戲更是每一個(gè)版本都主動(dòng)尋求手游漏洞掃描?!洱堉仁钟巍吠瑯右彩侨绱恕?/p>

 

《龍之谷手游》的加入

《龍之谷》在端游時(shí)代遭受過游戲外掛“洗禮”,從簡單的游戲內(nèi)存修改、變速齒輪到后面越演越烈N倍攻擊掛、無敵掛、穿墻掛,曾經(jīng)一度被玩家稱作“外掛谷”?!洱堉仁钟巍芬廊谎永m(xù)端游ACT類的玩法與類型,原汁原味還原端游經(jīng)典,在手游版本發(fā)布前,游戲測試和運(yùn)營團(tuán)隊(duì)將游戲安全性作為一個(gè)重要專項(xiàng)來持續(xù)開展。

為了吸取端游的歷史教訓(xùn),避免手游上線后再次出現(xiàn)游戲外掛,《龍之谷手游》測試團(tuán)隊(duì)選擇與騰訊WeTest合作,使用手游安全測試專家模式,對(duì)游戲的客戶端、服務(wù)器、以及通信協(xié)議方面的安全質(zhì)量進(jìn)行全面檢測和把控。在順利上線后,騰訊WeTest團(tuán)隊(duì)整理了《龍之谷手游》安全測試過程中的一些思路和實(shí)踐內(nèi)容,對(duì)外分享。

 

二、技術(shù)難點(diǎn)

手游的使用場景與傳統(tǒng)APP有著巨大的差異,不同的游戲玩法, 技術(shù)實(shí)現(xiàn)都不一樣,因此手游安全測試團(tuán)隊(duì)需要對(duì)每一個(gè)游戲,都從零開始研究游戲內(nèi)部實(shí)現(xiàn)架構(gòu)。

經(jīng)過分析,《龍之谷手游》使用Google protobuf組件來實(shí)現(xiàn)協(xié)議數(shù)據(jù)通信,而騰訊WeTest手游安全測試團(tuán)隊(duì)具備protobuf等主流協(xié)議結(jié)構(gòu)的自動(dòng)接入和解析技術(shù),無需利用proto文件自動(dòng)提取游戲協(xié)議結(jié)構(gòu)代碼,自動(dòng)分析游戲通信協(xié)議明文點(diǎn),完成通信協(xié)議工具接入。《龍之谷手游》屬于重度RPG類型,帶有實(shí)時(shí)PVP玩法,包含多種類型副本、小游戲玩法、公會(huì)、家園、天梯賽、英雄戰(zhàn)場、世界boss等50多個(gè)功能系統(tǒng),如何在短時(shí)間內(nèi)完成全量內(nèi)容的漏洞檢測是當(dāng)時(shí)面臨的最大挑戰(zhàn)。手游安全測試團(tuán)隊(duì)一方面使用函數(shù)風(fēng)險(xiǎn)智能分析系統(tǒng)、盜刷漏洞掃描和拒絕服務(wù)攻擊掃描對(duì)游戲進(jìn)行一輪漏洞自動(dòng)化檢測,另一方面根據(jù)各功能風(fēng)險(xiǎn)性和優(yōu)先級(jí)對(duì)游戲的戰(zhàn)斗系統(tǒng)、交易所和戰(zhàn)力成長系統(tǒng)進(jìn)行深度分析和漏洞挖掘。

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

 

函數(shù)風(fēng)險(xiǎn)智能分析流程

 

三、實(shí)現(xiàn)方案

測試目標(biāo)

根據(jù)手游安全測試團(tuán)隊(duì)對(duì)騰訊游戲多年的測試經(jīng)驗(yàn),手游安全漏洞主要會(huì)出現(xiàn)在客戶端、游戲邏輯和服務(wù)器三個(gè)層面,為了整體全面的發(fā)現(xiàn)手游外掛情況,測試團(tuán)隊(duì)將手游外掛的風(fēng)險(xiǎn)項(xiàng)細(xì)化情況如下:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn) 

測試前的分析

前文提到不同手游玩法都會(huì)使用不同的技術(shù)實(shí)現(xiàn),因此在《龍之谷手游》安全測試之初,團(tuán)隊(duì)對(duì)游戲進(jìn)行了一個(gè)詳細(xì)的分析與拆解。

游戲?qū)崿F(xiàn)——拆分游戲玩法中風(fēng)險(xiǎn)節(jié)點(diǎn)

分析過程中,測試團(tuán)隊(duì)發(fā)現(xiàn)《龍之谷手游》的 “戰(zhàn)斗系統(tǒng)”和“交易系統(tǒng)”是手游漏洞產(chǎn)生的高危模塊,下文也將從這兩塊出發(fā),拆分其中的風(fēng)險(xiǎn)節(jié)點(diǎn)。

 

戰(zhàn)斗系統(tǒng)——單機(jī)模式與多人聯(lián)機(jī)模式結(jié)合

√ 《龍之谷手游》核心玩法包括PVP和PVE戰(zhàn)斗系統(tǒng)以及各種模式的副本單機(jī)模式:主線副本屬于單機(jī)模式,戰(zhàn)斗過程完全在客戶端側(cè)實(shí)現(xiàn),測試中可重點(diǎn)通過內(nèi)存修改和函數(shù)修改來挖掘漏洞;

√ 多人聯(lián)機(jī)模式:巢穴副本、1V1天梯賽、保衛(wèi)隊(duì)長等屬于多人聯(lián)機(jī)模式,戰(zhàn)斗過程的實(shí)現(xiàn)由客戶端和服務(wù)器相互配合來完成。根據(jù)實(shí)現(xiàn),優(yōu)先采用協(xié)議測試工具進(jìn)行漏洞挖掘,在驗(yàn)證部分風(fēng)險(xiǎn)項(xiàng)時(shí)仍然要使用客戶端的內(nèi)存、函數(shù)、變速測試工具。

 

交易系統(tǒng)——游戲道具流通的核心樞紐

游戲允許玩家通過交易所進(jìn)行物品交易流通,安全漏洞的影響面將會(huì)被交易系統(tǒng)進(jìn)一步放大,也是需要優(yōu)先進(jìn)行外掛檢測和漏洞挖掘的內(nèi)容。

對(duì)于手游玩法的具體拆分,可見下圖的安全風(fēng)險(xiǎn)分析示例(部分):

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

《龍之谷手游》風(fēng)險(xiǎn)分析片段


 

安全風(fēng)險(xiǎn)項(xiàng)下鉆分析示例(部分):

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)《龍之谷手游》安全風(fēng)險(xiǎn)項(xiàng)下鉆分析

 

 

除上述外掛風(fēng)險(xiǎn)以外,服務(wù)器端程序的健壯性也需要通過拒絕服務(wù)攻擊掃描進(jìn)行宕機(jī)風(fēng)險(xiǎn)的檢測。

根據(jù)對(duì)于《龍之谷手游》的拆分,測試團(tuán)隊(duì)基本確認(rèn)游戲核心玩法在于多人聯(lián)機(jī)的PVP或PVE模式以及其豐富的交易系統(tǒng),因此團(tuán)隊(duì)也將測試的策略調(diào)整為“協(xié)議測試為主,函數(shù)及內(nèi)存修改測試為輔“。

 

游戲引擎——針對(duì)引擎與實(shí)現(xiàn)尋找突破口

游戲使用Unity3D引擎開發(fā),該類型游戲游戲源代碼一般會(huì)使用C#、Lua、C++中的一種或多種。經(jīng)過分析《龍之谷》客戶端部分代碼邏輯是使用C#腳本語言,不過出于安全性考慮,研發(fā)團(tuán)隊(duì)已經(jīng)將游戲安裝包中客戶端邏輯代碼文件XxxxxClient.dll進(jìn)行了加密,所以在逆向分析前要進(jìn)行該文件的解密操作獲取明文。獲取明文源碼的辦法比較多:

1、逆向解密函數(shù),利用游戲解密函數(shù)解密;

2、在游戲運(yùn)行過程中將XxxxxClient.dll從內(nèi)存中Dump出來;

3、Hook Mono函數(shù)mono_image_open_from_data_with_name()和mono_class_from_name ()也可以獲取明文源碼。

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

 

游戲某版本測試后發(fā)現(xiàn)安全問題

游戲風(fēng)險(xiǎn)分析完成后,漏洞挖掘的工作其實(shí)就完成了一大半,之后利用安全測試工具對(duì)風(fēng)險(xiǎn)進(jìn)行逐一驗(yàn)證即可。在游戲中發(fā)現(xiàn)以下幾種類型的漏洞,均屬于致命級(jí)漏洞:

類型一:外掛類漏洞

(1) PVP模式加速移動(dòng)

(2) PVE主線副本存在無敵秒殺、全屏攻擊等大量安全漏洞

“PVP天梯加速”漏洞視頻:https://v.qq.com/x/page/h0390e2ias6.html

無敵全屏秒殺”漏洞視頻:https://v.qq.com/x/page/v0390tzwloc.html

 

類型二:盜刷類漏洞

(1) 拍賣可任意復(fù)制物品,無限盜刷龍幣

(2) 驅(qū)逐家園中的妖精可無限盜刷獎(jiǎng)勵(lì)

“拍賣所復(fù)制物品”漏洞視頻:https://v.qq.com/x/page/o0390uhyk8l.html

 

類型三:宕機(jī)類漏洞

(1) 圖鑒分解請(qǐng)求中,構(gòu)造異常圖鑒ID引發(fā)服務(wù)器宕機(jī)

(2) 圖鑒分解請(qǐng)求中,構(gòu)造異常圖鑒數(shù)量引發(fā)服務(wù)器宕機(jī)

(3) 公會(huì)、競技場、圖鑒商店的購買請(qǐng)求中,構(gòu)造異常的物品數(shù)量引發(fā)服務(wù)器宕機(jī)

(4) 紋章洗練請(qǐng)求中,構(gòu)造異常的洗練次數(shù)引發(fā)服務(wù)器宕機(jī)

 

解決方法

外掛類漏洞

  • 變速漏洞實(shí)現(xiàn)方式有多種,相應(yīng)也有多種修復(fù)方案。可監(jiān)控系統(tǒng)時(shí)間相關(guān)函數(shù)是否被篡改來檢測通用變速器類的修改器;針對(duì)修改游戲內(nèi)部保存角色移動(dòng)速度變量的內(nèi)存,也可以通過內(nèi)存加密、設(shè)置影子變量和服務(wù)器坐標(biāo)校驗(yàn)等方式來解決。

  • 對(duì)PVE單機(jī)副本外掛類漏洞的處理,可從副本結(jié)算請(qǐng)求的內(nèi)容上做文章。如加入副本挑戰(zhàn)序列號(hào)來防止結(jié)算重發(fā);加入CRC、md5或一些冗余信息來防止結(jié)算請(qǐng)求被篡改;加入戰(zhàn)斗過程數(shù)據(jù)采樣甚至隱形NPC通過服務(wù)器安全策略校驗(yàn),來防止無敵秒殺全屏攻擊等類型外掛。

盜刷類漏洞

  • 服務(wù)器處理購買、結(jié)算等物品發(fā)放請(qǐng)求時(shí),需要加強(qiáng)對(duì)請(qǐng)求中各項(xiàng)信息合法性校驗(yàn),另外運(yùn)營側(cè)可以接入運(yùn)營經(jīng)分系統(tǒng),對(duì)各種道具和金錢的產(chǎn)出進(jìn)行實(shí)時(shí)監(jiān)控與告警。

宕機(jī)類漏洞

  • 因程序健壯性導(dǎo)致的服務(wù)器宕機(jī)漏洞被檢測出之后,修復(fù)起來比較簡單,針對(duì)性做好異常值處理就能夠修復(fù)。

 

四、最終效果

在項(xiàng)目測試階段,手游安全測試團(tuán)隊(duì)累積為《龍之谷手游》挖掘出了7個(gè)致命級(jí)漏洞,8個(gè)高危級(jí)漏洞,5個(gè)中危級(jí)漏洞,將潛伏在游戲中的龍幣盜刷、PVP/PVE外掛、服務(wù)器宕機(jī)等各類致命級(jí)、高危級(jí)漏洞提前揭露出來,提前制定修復(fù)方案進(jìn)行修復(fù),并評(píng)估和驗(yàn)收結(jié)果與風(fēng)險(xiǎn)。手游安全漏洞的測試為《龍之谷手游》項(xiàng)目組避免了經(jīng)濟(jì)損失,為游戲正式開啟不刪檔,為用戶提供安全、公平、健康的游戲環(huán)境提供了堅(jiān)實(shí)支撐和保障。


關(guān)于騰訊WeTest手游安全測試團(tuán)隊(duì)

騰訊WeTest手游安全測試團(tuán)隊(duì)從2011年初開始對(duì)手游安全領(lǐng)域進(jìn)行探索和技術(shù)積累,旨在通過提前發(fā)現(xiàn)游戲版本的安全漏洞,預(yù)警風(fēng)險(xiǎn),打造出業(yè)界領(lǐng)先的手游安全測試技術(shù)方案,在工具上已經(jīng)支持所有騰訊在研和運(yùn)營的手游項(xiàng)目。團(tuán)隊(duì)通過使用與正式服同樣的游戲客戶端和服務(wù)器,模擬外掛工作室制作外掛的過程,依靠自身的技術(shù)積累來提高專業(yè)程度,持續(xù)保持漏洞的發(fā)現(xiàn)率。

目前提供了專家測試服務(wù),希望通過提前發(fā)現(xiàn)游戲版本的安全漏洞,預(yù)警風(fēng)險(xiǎn),幫助提高騰訊游戲的品牌和口碑。