梦幻成仙,诛灭外挂——《梦幻诛仙手游》的阻击外挂之旅
随着智能手机的全面普及和市场泛娱乐化,移动游戏行业发展迅猛,无论是市场收入还是用户规模,手游在游戏市场上已经占据了半壁江山。如此火热的市场吸引了大量外挂、辅助工作室等非法盈利团队,严重影响了游戏的收益、平衡,缩短游戏的生命周期,外挂对手游形成了这些危害:
手游外挂的八大危害
为了避免这些损害,腾讯游戏内部的测试流程已经将“手游安全测试”设立为必经环节,腾讯大部分手游上线前都会进行手游安全测试,《王者荣耀》、《穿越火线:枪战王者》等六星级游戏更是每一个版本都主动寻求手游漏洞扫描。《梦幻诛仙手游》同样也是如此。
《梦幻诛仙手游》的加入
《梦幻诛仙手游》是由祖龙(天津)科技有限公司研发的一款3D角色、2D场景的回合制手游,该作由腾讯游戏运营,于2016年12月13日正式公测。
为了提前暴露游戏中潜在的安全风险,最大程度降低上线后外挂打击成本,《梦幻诛仙手游》测试团队选择与腾讯WeTest合作,使用手游安全测试专家模式,对游戏的客户端、服务器、以及通信协议方面的安全质量进行全面检测和把控,WeTest手游安全团队针对游戏核心玩法和游戏中高价值产出点重点进行漏洞挖掘。在顺利上线后,腾讯WeTest团队整理了《梦幻诛仙手游》安全测试过程中的一些思路和实践内容,对外分享。
一、技术难点
《梦幻诛仙手游》属于重度MMORPG类型,游戏功能系统包含战力成长相关系统、交易系统、宠物系统、门派、上古战场、世界BOSS、跨服战、家园系统,各种类型副本以及运营活动等超过50个功能系统,如何在短时间内全面地完成全量内容的安全漏洞挖掘是当时面临的最大挑战。手游安全测试团队一方面使用函数风险智能分析系统、盗刷漏洞扫描和拒绝服务攻击扫描对游戏进行一轮漏洞自动化检测,另一方面根据各功能风险性和优先级对游戏的战斗系统、交易所和战力成长系统进行深度分析和漏洞挖掘。
二、实现方案
1.测试目标
根据手游安全测试团队对腾讯游戏多年的测试经验,手游安全漏洞主要会出现在客户端、游戏逻辑和服务器三个层面,为了整体全面的发现手游外挂情况,测试团队将手游外挂的风险项细化情况如下:
2.测试前分析
前文提到不同手游玩法都会使用不同的技术实现,因此在《梦幻诛仙手游》安全测试之初,WeTest安全团队对游戏进行了一个详细的分析与拆解。
《梦幻诛仙手游》核心玩法包括回合制的PVP与多人PVE,经过对战斗过程中服务器与客户端间通信协议的分析,总结游戏特点为战斗实时性要求很弱,客户端的每次操作均有协议上报,属于服务器强校验游戏。鉴于以上特性,WeTest手游安全测试团队确定主要采用协议安全的测试方法为主,函数修改与内存修改测试方法为辅。
以《梦幻诛仙手游》某个版本为例,根据该版本的新增内容,WeTest手游安全测试团队相应的把测试重点聚焦在:
1、经济系统,商会、商城、摆摊、交易行、背包出售。
2、战斗力相关,角色属性,技能、装备、法宝、羽翼、宠物、仙侣等。
3、进行0、负值,数据溢出攻击,并发等漏洞挖掘方式。
3.测试中发现问题
根据测试前分析确定测试重点后,漏洞挖掘的工作其实就完成了一大半,之后利用安全测试工具对风险进行逐一验证即可。在游戏中发现以下几种类型的漏洞,均属于致命级漏洞:
经济系统——致命级安全风险
各个交易系统服务器都对协议中各个字段都有校验,道具购买数量做了0,负值判断,并且服务器对购买个数有上限限制,不同物品限制个数不同。由于购买逻辑,不同物品服务器处理逻辑不一致,导致积分兑换中通过购买可堆叠物品时未做个数限制,导致数据溢出引发服务器耗尽内存宕机。
【示例】
漏洞描述:积分商城使用竞技场积分购买藏宝图,修改协议中字段数量为一个很大的值,导致服务器内存耗尽,游戏无法登录游戏内无法进行任何操作。
修改购买数量为一个很大的值,导致服务器宕机
影响面分析:修改商城购买数量,导致服务器宕机,全服玩家无法游戏。
角色属性系统——致命级安全风险
角色属性加点对各个正常逻辑字段均有校验,唯独对加点数值未做负值判断和溢出处理,导致修改次要属性为负值可以获取更多点数分配到主要属性,由于未做数据溢出保护,临界负值相加出现数据溢出,导致结果为超大正值,从而引发刷任意属性值。
【示例】
漏洞描述:梦幻诛仙有多种职业,每个职业有多种属性,根据职业的不同属性加点时配置不同的属性。服务器未做加点属性的负值做判断,可以通过发送负值任意将降低其他属性从而增强该职业的主要属性。 物攻职业削减法术属性以增强其他属性。
通过录制加点协议将某属性修改为负值,将增加的属性点分配到其他属性
影响面分析:任意修改角色属性,严重破坏游戏玩法。
宠物系统——致命级安全风险
宠物属性加点同角色属性加点,对各个正常逻辑字段均有校验,唯独对加点数值未做负值判断和溢出处理,导致修改次要属性为负值可以获取更多点数分配到主要属性,由于未做数据溢出保护,临界负值相加出现数据溢出,导致结果为超大正值,从而引发刷任意属性值。
【示例】
漏洞描述:宠物加点协议发送一键异常值后导致宠物战力猛增,宠物直接战斗无敌。通过录制宠物加点协议,然后修改value字段的值为 2147483647,导致宠物战力值异常增大。
通过修改数值导致宠物战斗力异常增大
影响面分析:使用战力异常的宠物参加战斗可以横扫副本,严重影响游戏平衡,导致玩家可以大量获取收益。
“宠物战力异常”视频:
https://v.qq.com/x/page/s0518jk8gpb.html
三、解决方法
如何修复盗刷类漏洞?
ü 游戏研发初期,规范游戏通信协议定义,对协议结构中字段数和字段类型进行安全性检查
ü 服务器处理购买、结算等物品发放请求时,需要加强对请求中各项信息合法性校验,另外运营侧可以接入运营经分系统,对各种道具和金钱的产出进行实时监控与告警。
如何修复宕机类漏洞?
ü 因程序健壮性导致的服务器宕机漏洞被检测出之后,修复起来比较简单,针对性做好异常值处理就能够修复。
四、最终效果
在项目测试阶段,手游安全测试团队累积为《梦幻诛仙手游》挖掘出了20个致命级漏洞,19个高危级漏洞,28个中危级漏洞,将游戏中潜在的盗号、物品盗刷、伪造身份、服务器宕机等各类致命级、高危级漏洞提前揭露出来,提前制定修复方案进行修复,并评估和验收结果与风险。
WeTest手游安全测试为《梦幻诛仙手游》线上运营提供安全保驾护航,项目上线后未发生安全方面的运营故障,为用户提供安全、公平、健康的游戏环境提供了坚实技术支撑和安全保障。
关于腾讯WeTest手游安全测试团队
腾讯WeTest手游安全测试团队从2011年初开始对手游安全领域进行探索和技术积累,旨在通过提前发现游戏版本的安全漏洞,预警风险,打造出业界领先的手游安全测试技术方案,在工具上已经支持所有腾讯在研和运营的手游项目。团队通过使用与正式服同样的游戏客户端和服务器,模拟外挂工作室制作外挂的过程,依靠自身的技术积累来提高专业程度,持续保持漏洞的发现率。
目前提供了专家测试服务,希望通过提前发现游戏版本的安全漏洞,预警风险,帮助提高腾讯游戏的品牌和口碑。
目前功能已正式对外开放!如需接入请联系企业QQ:800024531。或者点击链接:http://wetest.qq.com/product/sr?from=content_kanxueforum 申请预约!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)