阻擊外掛——《龍之谷手遊》安全測試的那點事

做者:sheldon,騰訊遊戲漏洞測試高級工程師
商業轉載請聯繫騰訊WeTest得到受權,非商業轉載請註明出處。 html


1、項目背景

外掛的危害

隨着智能手機的全面普及和市場泛娛樂化,移動遊戲行業發展迅猛,不管是市場收入仍是用戶規模,手遊在遊戲市場上已經佔據了半壁江山。如此火熱的市場吸引了大量外掛、輔助工做室等非法盈利團隊,嚴重影響了遊戲的收益、平衡,縮短遊戲的生命週期,外掛對手遊造成了這些危害:安全

手遊外掛的八大危害服務器

 

爲了不這些損害,騰訊遊戲內部的測試流程已經將「手遊安全測試」設立爲必經環節,騰訊大部分手游上線前都會進行手遊安全測試,《王者榮耀》、《穿越火線:槍戰王者》,《夢幻誅仙》等六星級遊戲更是每個版本都主動尋求手遊漏洞掃描。《龍之谷手遊》一樣也是如此。架構

 

《龍之谷手遊》的加入

《龍之谷》在端遊時代遭受過遊戲外掛「洗禮」,從簡單的遊戲內存修改、變速齒輪到後面越演越烈N倍攻擊掛、無敵掛、穿牆掛,曾經一度被玩家稱做「外掛谷」。《龍之谷手遊》依然延續端遊ACT類的玩法與類型,原汁原味還原端遊經典,在手遊版本發佈前,遊戲測試和運營團隊將遊戲安全性做爲一個重要專項來持續開展。函數

爲了吸收端遊的歷史教訓,避免手游上線後再次出現遊戲外掛,《龍之谷手遊》測試團隊選擇與騰訊WeTest合做,使用手遊安全測試專家模式,對遊戲的客戶端、服務器、以及通訊協議方面的安全質量進行全面檢測和把控。在順利上線後,騰訊WeTest團隊整理了《龍之谷手遊》安全測試過程當中的一些思路和實踐內容,對外分享。工具

 

2、技術難點

手遊的使用場景與傳統APP有着巨大的差別,不一樣的遊戲玩法, 技術實現都不同,所以手遊安全測試團隊須要對每個遊戲,都從零開始研究遊戲內部實現架構。測試

通過分析,《龍之谷手遊》使用Google protobuf組件來實現協議數據通訊,而騰訊WeTest手遊安全測試團隊具有protobuf等主流協議結構的自動接入和解析技術,無需利用proto文件自動提取遊戲協議結構代碼,自動分析遊戲通訊協議明文點,完成通訊協議工具接入。《龍之谷手遊》屬於重度RPG類型,帶有實時PVP玩法,包含多種類型副本、小遊戲玩法、公會、家園、天梯賽、英雄戰場、世界boss等50多個功能系統,如何在短期內完成全量內容的漏洞檢測是當時面臨的最大挑戰。手遊安全測試團隊一方面使用函數風險智能分析系統、盜刷漏洞掃描和拒絕服務攻擊掃描對遊戲進行一輪漏洞自動化檢測,另外一方面根據各功能風險性和優先級對遊戲的戰鬥系統、交易所和戰力成長系統進行深度分析和漏洞挖掘。網站

 

函數風險智能分析流程
 

3、實現方案

測試目標

根據手遊安全測試團隊對騰訊遊戲多年的測試經驗,手遊安全漏洞主要會出如今客戶端、遊戲邏輯和服務器三個層面,爲了總體全面的發現手遊外掛狀況,測試團隊將手遊外掛的風險項細化狀況以下:ui

 

測試前的分析

前文提到不一樣手遊玩法都會使用不一樣的技術實現,所以在《龍之谷手遊》安全測試之初,團隊對遊戲進行了一個詳細的分析與拆解。加密

遊戲實現——拆分遊戲玩法中風險節點

分析過程當中,測試團隊發現《龍之谷手遊》的 「戰鬥系統」和「交易系統」是手遊漏洞產生的高危模塊,下文也將從這兩塊出發,拆分其中的風險節點。

 

戰鬥系統——單機模式與多人聯機模式結合

√ 《龍之谷手遊》核心玩法包括PVP和PVE戰鬥系統以及各類模式的副本單機模式:主線副本屬於單機模式,戰鬥過程徹底在客戶端側實現,測試中可重點經過內存修改和函數修改來挖掘漏洞;

√ 多人聯機模式:巢穴副本、1V1天梯賽、保衛隊長等屬於多人聯機模式,戰鬥過程的實現由客戶端和服務器相互配合來完成。根據實現,優先採用協議測試工具進行漏洞挖掘,在驗證部分風險項時仍然要使用客戶端的內存、函數、變速測試工具。

 

交易系統——遊戲道具流通的核心樞紐

遊戲容許玩家經過交易所進行物品交易流通,安全漏洞的影響面將會被交易系統進一步放大,也是須要優先進行外掛檢測和漏洞挖掘的內容。

對於手遊玩法的具體拆分,可見下圖的安全風險分析示例(部分):

《龍之谷手遊》風險分析片斷


 

安全風險項下鑽分析示例(部分):

《龍之谷手遊》安全風險項下鑽分析
 

 

除上述外掛風險之外,服務器端程序的健壯性也須要經過拒絕服務攻擊掃描進行宕機風險的檢測。

根據對於《龍之谷手遊》的拆分,測試團隊基本確認遊戲核心玩法在於多人聯機的PVP或PVE模式以及其豐富的交易系統,所以團隊也將測試的策略調整爲「協議測試爲主,函數及內存修改測試爲輔「。

 

遊戲引擎——針對引擎與實現尋找突破口

遊戲使用Unity3D引擎開發,該類型遊戲遊戲源代碼通常會使用C#、Lua、C++中的一種或多種。通過分析《龍之谷》客戶端部分代碼邏輯是使用C#腳本語言,不過出於安全性考慮,研發團隊已經將遊戲安裝包中客戶端邏輯代碼文件XxxxxClient.dll進行了加密,因此在逆向分析前要進行該文件的解密操做獲取明文。獲取明文源碼的辦法比較多:

一、逆向解密函數,利用遊戲解密函數解密;

二、在遊戲運行過程當中將XxxxxClient.dll從內存中Dump出來;

三、Hook Mono函數mono_image_open_from_data_with_name()和mono_class_from_name ()也能夠獲取明文源碼。

 

遊戲某版本測試後發現安全問題

遊戲風險分析完成後,漏洞挖掘的工做其實就完成了一大半,以後利用安全測試工具對風險進行逐一驗證便可。在遊戲中發現如下幾種類型的漏洞,均屬於致命級漏洞:

類型一:外掛類漏洞

(1) PVP模式加速移動

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

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

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

 

類型二:盜刷類漏洞

(1) 拍賣可任意複製物品,無限盜刷龍幣

(2) 驅逐家園中的妖精可無限盜刷獎勵

「拍賣所複製物品」漏洞視頻:https://v.qq.com/x/page/o0390uhyk8l.html

 

類型三:宕機類漏洞

(1) 圖鑑分解請求中,構造異常圖鑑ID引起服務器宕機

(2) 圖鑑分解請求中,構造異常圖鑑數量引起服務器宕機

(3) 公會、競技場、圖鑑商店的購買請求中,構造異常的物品數量引起服務器宕機

(4) 紋章洗練請求中,構造異常的洗練次數引起服務器宕機

 

解決方法

外掛類漏洞

  • 變速漏洞實現方式有多種,相應也有多種修復方案。可監控系統時間相關函數是否被篡改來檢測通用變速器類的修改器;針對修改遊戲內部保存角色移動速度變量的內存,也能夠經過內存加密、設置影子變量和服務器座標校驗等方式來解決。

  • 對PVE單機副本外掛類漏洞的處理,可從副本結算請求的內容上作文章。如加入副本挑戰序列號來防止結算重發;加入CRC、md5或一些冗餘信息來防止結算請求被篡改;加入戰鬥過程數據採樣甚至隱形NPC經過服務器安全策略校驗,來防止無敵秒殺全屏攻擊等類型外掛。

盜刷類漏洞

  • 服務器處理購買、結算等物品發放請求時,須要增強對請求中各項信息合法性校驗,另外運營側能夠接入運營經分系統,對各類道具和金錢的產出進行實時監控與告警。

宕機類漏洞

  • 因程序健壯性致使的服務器宕機漏洞被檢測出以後,修復起來比較簡單,針對性作好異常值處理就可以修復。

 

4、最終效果

在項目測試階段,手遊安全測試團隊累積爲《龍之谷手遊》挖掘出了7個致命級漏洞,8個高危級漏洞,5箇中危級漏洞,將潛伏在遊戲中的龍幣盜刷、PVP/PVE外掛、服務器宕機等各種致命級、高危級漏洞提早揭露出來,提早制定修復方案進行修復,並評估和驗收結果與風險。手遊安全漏洞的測試爲《龍之谷手遊》項目組避免了經濟損失,爲遊戲正式開啓不刪檔,爲用戶提供安全、公平、健康的遊戲環境提供了堅實支撐和保障。


關於騰訊WeTest手遊安全測試團隊

騰訊WeTest手遊安全測試團隊從2011年初開始對手遊安全領域進行探索和技術積累,旨在經過提早發現遊戲版本的安全漏洞,預警風險,打造出業界領先的手遊安全測試技術方案,在工具上已經支持全部騰訊在研和運營的手遊項目。團隊經過使用與正式服一樣的遊戲客戶端和服務器,模擬外掛工做室製做外掛的過程,依靠自身的技術積累來提升專業程度,持續保持漏洞的發現率。

目前提供了專家測試服務,但願經過提早發現遊戲版本的安全漏洞,預警風險,幫助提升騰訊遊戲的品牌和口碑。

服務目前已經登錄騰訊雲,歡迎前來使用https://www.qcloud.com/product/sr

手遊安全測試接入流程:https://www.qcloud.com/document/product/574/8807

常見問題:https://www.qcloud.com/document/product/574/8813


親愛的讀者,爲了可以提供更好的網站內容,但願您填寫咱們的問卷,咱們會隨機抽取讀者回饋20Q幣以示感謝!問卷入口https://wj.qq.com/s/1221194/26ad

相關文章
相關標籤/搜索