热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

腾讯手游如何提早揭露游戏外挂风险?

目前腾讯SR手游安全测试限期开放免费专家预约!点击链接:http:wetest.qq.comproductsr立即预约!作者:sheldon,腾讯高级安全工程师商业转载请联系腾讯W

目前腾讯SR手游安全测试限期开放免费专家预约!点击链接:http://wetest.qq.com/product/sr立即预约!

作者:sheldon,腾讯高级安全工程师
商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。

WeTest导读

随着大量外挂、辅助、工作室等非法盈利团队借由移动游戏产业迅猛发展的东风趁虚而入,对游戏开发商和玩家来说都造成了不小的伤害,安全问题成为手游发展不容忽视的前提。本文告诉你如何从技术的角度来提前曝光这些安全问题和外挂风险。

安全无小事—安全测试开展思路

随着智能手机的全面普及和市场泛娱乐化,移动游戏行业发展迅猛,无论是市场收入还是用户规模,手游在游戏市场上已经占据了半壁江山。如此火热的市场吸引了大量外挂、辅助、工作室等非法盈利团队,严重影响了游戏的收益、平衡,缩短游戏的生命周期,下面我们来看看外挂对手游有哪些危害。
图片描述

安全无小事,如何从技术的角度来提前曝光这些安全问题和外挂风险呢?腾讯SR(SecurityRadar,安全雷达,腾讯手游安全测试的专项技术方案)手游安全测试团队从2011年初开始对手游安全这个领域进行探索和技术积累,旨在通过提前发现游戏版本的安全漏洞,预警风险,帮助提高腾讯游戏的品牌和口碑。

安全测试,与项目发布同行

为了帮助项目在发布前发现并修复安全问题,在游戏版本转功能测试的阶段SR手游安全专项测试就介入。
图片描述

SR手游安全测试经过若干轮的效率优化,已经将一轮安全测试的时间压缩至3天,可以输出《SR手游安全测试报告》。项目修复漏洞后,仍由SR专项团队进行安全漏洞的回归检查,并确保项目按版本计划进行发布。

提早揭露安全漏洞,可以帮助项目在开发阶段进行安全对抗和策略加固,避免在项目运营时,与外挂对抗的被动局面。同时,也从根本上降低了外挂带来的玩家流失和运营损失。

图片描述

专家测试
根据手游安全测试的需求,主要涉及到手游项目中的测试范围及测试内容的规定。提供专家手游安全测试服务,会有腾讯内部的手游安全测试专家进行测试、问题沟通跟进、处理优化检查等等。
1. 测试设计,根据相应游戏的内容进行测试设计,找出游戏中的获利点,结合SR安全检查项,可以对游戏的内容进行完整覆盖
2. 专家互评,对风险检查点进行查漏补缺,保证完整覆盖
3. 测试执行,依据风险检查点,使用SR工具执行测试检查,主要进行函数修改、协议修改、内存修改、变速、脚本修改、静态漏洞扫描
4. 提交漏洞,测试专家按照SR漏洞模板提交漏洞,依据《漏洞评级标准》进行漏洞定级和内容的审核
5. 安全报告,由安全专家根据发现的问题和游戏整体对安全性进行评估并输出安全测试报告
6. 漏洞回归,漏洞修复后,从新提交修复版本进行回归,SR评估漏洞修复情况并反馈结论

自动化测试
1. 宕机漏洞扫描服务,通过智能分析协议来填充模糊测试case,发送到服务器,测试服务器的可靠性、健壮性
2. 协议/函数风险扫描,通过AI算法学习安全风险模型,读取游戏函数、协议数据后进行智能分析,具备2小时输出安全测试报告的能力

SR安全测试技术方案

根据以上的规划思路,SR团队聚焦在漏洞挖掘的能力和效率提升上进行手游安全测试技术创新。整个技术方案最大的难点在于,手游与传统的APP差异很大,不同游戏的玩法、技术实现都不一样,我们如何研发一套普适的方案,来满足不同游戏的安全测试需求。经过几年的研发与优化,SR团队终于做到了,兼容了数百款腾讯自研、代理游戏,打造了业界领先的手游安全测试技术方案。

SR独创的安全测试技术

-——业界独创的动态修改手游客户端程序的安全测试技术、基于对象的手游内存安全测试技术
-——多种领先的自动化风险扫描技术
—— 拥有多项国家级技术专利

图片描述


SR手游安全测试团队将审核的内容分为静态安全漏洞和动态安全漏洞。不同类型的问题测试思路和分析手段会有不同,对测试工具和测试方法也会有差别。

图片描述


静态漏洞扫描
主要通过静态扫描的方式,对游戏apk中配置档、资源文件、脚本文件、manifest.xml、so文件,通过自动扫描的方式来进行检查项的确认。(目前此块内容已集成到SR手游安全测试方案中,覆盖了120+条安全检查项和信息安全测试项)

动态风险分析
动态安全测试涉及的内容广泛,主要是根据游戏特定的内容和玩法,针对性地分析安全风险点,通过协议、函数、内存、脚本等技术,多维度检查游戏服务器对相应的风险点是否有完善的校验或反外挂策略。

图片描述

根据对漏洞类型的提炼,SR手游安全测试团队总结了根据游戏中的获利点而生成的风险点,然后在不同的游戏中,结合具体玩法,又推导出相应的获益方式。通常根据风险点分析的方式,可以完整覆盖到游戏中涉及到安全的部分,结合检查点,就生成了可以在实际操作中执行的用例,形成闭环。

图片描述

手游安全测试对于技术的要求也是非常高的,需要专业的技术人员进行逆向分析和工具支持,否则上述的测试点很有可能是纸上谈兵,但毫不夸大地说SR手游安全测试已经拥有了这些技术积累。根据对测试检查点的分析,我们需要的安全测试工具包括:函数修改、内存修改、变速修改、协议修改、脚本修改。

SR手游安全测试深度解密

在SR工具最新的版本上已经集成了所有安全测试的辅助功能。下面从技术实现和工具效果上来展示各大功能的情况。

1、双端协议修改
图片描述


SR工具通过直接注入游戏的组包函数,自动解析协议结构,免去了需要依赖测试人员分析二进制数据进行协议破解。在没有协议结构文件时也能自动解析协议结构。手机和web端都可以进行协议数据展示,在手机上可以实施地显示协议发包的效果,在web上可以动态一键修改相应字段,互补不足。

SR协议双端工具web效果展示


从目前支持和接入的游戏来看,SR工具已经对目前腾讯在研和运营的游戏达到了100%的支持,从协议类型上支持和引擎类型来看,也基本覆盖了当前所有的游戏类型:
SR协议工具已支持的手游类型/协议情况

2、函数动态修改

函数动态修改原理


对于单局类玩法的手游,函数动态修改具备最强的漏洞能力。但是早期的测试方法效率非常低下,需要每个函数单独编写hook函数、定义函数指针变量、申请独立hook资源、重新编译代码。同时,使用门槛很高,只有专业的安全专项测试人员才能操作。SR函数动态修改通过动态通用hook技术,不需要测试人员再进行hook函数编码。

函数动态web效果展示


方案效果:
—— 函数动态修改方案共覆盖安全检查风险项81项
—— 安全审核单个版本时间由15天减少到3天
—— 函数修改测试成本降低70%

3、内存对象修改
图片描述

业界首创手游内存修改技术,为测试人员直接展示出游戏中对象列表、对象属性名称、属性值等信息,并且可以对象为单位进行搜索,以革新方式告别传统手游内存测试工具搜索“内存数值”方式定位目标内存地址的低效方案,实现该项测试成本降低70%。
—— 内存对象 一目了然
获取内存中所有对象、对象名、地址、属性值
—— 对象数据 动态更新
动态更新内存对象
—— 动态修改 实时生效
直接修改对象属性,游戏内即时生效

4、协议字段模糊测试:
拒绝服务攻击即攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。玩家的异常操作、黑客异常发包、批量发包等都可能导致服务器宕机,影响游戏的正常运营,玩家不能正常游戏。早期的协议测试中有设计异常发包case,检查是否会导致服务器宕机。但是这种方式测试效率很低,覆盖的异常点非常少。SR结合外网模糊测试工具和长期协议测试积累的宕机case,研发了这套系统。
SR字段模糊测试的case覆盖的协议用例类型包括:
图片描述

通过对于字段类型的分析后,自动填充相关的字段的异常类型值,来组包发送给服务器,进行服务器的模糊测试。解决了传统协议测试执行效率低、定位问题慢、覆盖分支少的问题。

测试流程如下:
图片描述

模糊测试执行过程中不需要测试人员过多参与,就可以发现大量的安全问题。支持设备并发执行,智能分配测试机执行任务,执行任务的效率之高。发现问题后可以智能定位协议与字段,帮助开发人员快速定位问题。扫描覆盖检查规则31项,包括数值溢出、sql注入、格式字符串、缓冲区溢出,已经完全覆盖协议模糊测试的类型,且数据还在不断增加中。

自动化效果:
—— 通过自动化扫描发现服务器宕机问题83例
—— 检查所有协议字段的异常值填充,平均每款游戏执行协议异常用例120000+条,填补手工测试无法完成的空缺
—— 单个游戏1小时内可测试用例10000条以上,效率提升巨大
—— 扫描覆盖检查规则31项,包括空指针、数值溢出、sql注入、格式字符串、缓冲区溢出等测试项

5、函数风险扫描技术:
函数风险扫描技术原理图


对大量安全漏洞进行风险定义、特征定义与分类,引入模式识别技术,建立手游安全风险分析模型,自动分析出游戏高危风险函数,有效帮助测试人员省掉最为耗时的风险分析环节,实现单个手游版本漏洞测试时长从3个工作日降低到1个工作日。

SR手游安全测试支持项目情况:

图片描述

SR手游安全测试方案在工具上已经支持所有腾讯在研和运营的手游项目,依靠自身的技术积累来提高专业程度,持续保持漏洞的发现率。目前在SR手游安全测试团队过审的项目漏洞发现率为100%,得到了越来越多的项目认可。通过对腾讯高星级手游的安全测试发现2213个安全漏洞,且整体的数据呈上升的趋势。各大手游厂商在关注运营留存,收入的同时,这些数据同样值得思考!!

图片描述

通过数据统计我们发现,高危的漏洞反而在手游安全测试的过程中更容易被发现,带来的风险也是更致命的。在腾讯内部,通过SR手游安全测试的推动,这些安全问题也在项目组得到了修复,为腾讯游戏创造了一个公平竞技,安全运营的游戏生态环境。现在SR手游安全测试正式入驻腾讯WeTest,正式将安全测试能力开放对外,有需要的厂商可以联系腾讯WeTest预约服务(wetest.qq.com)。

和大家分享部分案例,案例中的所有问题都已得到了解决。

【案例1】
PVE模式中,动态修改游戏进程中多处代码逻辑,实现“无敌+全屏秒杀外挂”
图片描述

【案例2】
韩信 [无情冲锋]技能超远距离释放,利用漏洞进行全图范围内的突进功能。
[无情冲锋]属于子弹型技能,即释放时需要指定一个突进的方向。将技能类型强制修改为指定施法坐标的类型,指定技能落点位置坐标,就能够获得全图突进效果。
图片描述

【案例3】
篡改攻击对象list与伤害逻辑,造成全屏秒杀效果
图片描述

【案例4】
篡改使用物品协议请求中消耗数量,实现无限开箱子刷装备
图片描述

安全漏洞说明:以上安全漏洞在正式环境中都已修复,或加入了反外挂机制。本文以白帽渗透测试的角度,介绍在游戏版本发布前的测试阶段,通过“黑盒测试”的方式逐步分析游戏业务逻辑中的风险点,主动挖掘潜在安全漏洞,最大程度避免最终发布版本中的游戏外挂风险。

SR手游安全测试提供的服务

【专家安全测试】
无漏洞不收费,只需要提供apk包,可在约定时间内拿到一份安全评估报告
【安全测试工具】(即将开放)
开放腾讯安全测试专业工具,降低企业手游安全测试技术门槛


腾讯SR手游安全测试团队经过对手游安全领域多年的探索和技术积累, 打造出了业界领先的手游安全测试技术方案——SR手游安全测试方案,在工具上已经支持所有腾讯在研和运营的手游项目,依靠自身的技术积累来提高专业程度,持续保持漏洞的发现率。目前提供了专家测试和自动化测试,希望通过提前发现游戏版本的安全漏洞,预警风险,帮助提高腾讯游戏的品牌和口碑。

目前腾讯SR手游安全测试限期开放免费专家预约!点击链接:http://wetest.qq.com/product/sr立即预约!


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • 本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。 ... [详细]
author-avatar
日韩潮衣一手临终批发
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有