程序丨如何维护游戏安全?腾讯MTP资深专家为你解惑
日前,腾讯MTP移动游戏安全分享沙龙在深圳举办,腾讯游戏安全中心资深专家腾讯互动娱乐手游安全技术负责人王岳、手游安全产品负责人李长江、运营管理组组长王嘉寅、手游安全运营分析组组长韩萌,为大家分析常见的手游安全风险,并分享最先进的安全对抗技术与运营经验,帮助开发者、运营者更好地维护游戏安全。下面是分享会上的精彩问答,一起来学习一下吧!
Q:我们知道,外挂是靠漏洞来实现的,漏洞可能出现在客户端、游戏逻辑、服务端,对这三个层面腾讯是着重哪部分来分析的?
腾讯MTP:腾讯游戏从立项到上线前,有一个研发管理体系,游戏上线前或者发布新版本前,我们有专门的分析组进行安全评审,根据不同的游戏类型,评估潜在的风险。此外他们也会从攻击方的角度挖掘漏洞。传统的漏洞挖掘现在基本都是自动化实现的,但是游戏会比较特别,游戏每一款都不一样,需要投入大量的人力在上面,我们针对客户端漏洞、以及协议上的漏洞都会进行挖掘,私有协议的部分我们基本都覆盖了,但比如游戏中有一个网站或者活动页面,可能存在漏洞,这属于外部安全的范畴,这一部分是由腾讯的另一个团队去负责,除了外部安全之外的部分都由我们负责。
等游戏真正上线后,他自己已经达到了现实的安全水平,这个过程我们团队也会尽量的去发现可能有哪些点会被利用实现外挂的功能,但游戏,特别是本身安全性比较差的游戏,可以认为外挂实现的方式是无限的,想完全通过提前挖掘漏洞杜绝外挂是不现实的,因此除了对客户端漏洞的挖掘,服务端更多的还是聚焦在监控、对样本的分析、对数据的分析上。为了能够尽可能早的发现问题,关键是要建设完善的数据监控能力,使得外挂发生时能够及时的发现。
Q:一般是哪些代码注入比较多呢?
腾讯MTP:客户端代码注入方法太多了,无论是各种脚本语言或者其他语言,最后都会变成机器码执行。所以虽然游戏是用C#或者其他语言写的,但是别人也许实际上在引擎上改,比如透视这种功能,完全不需要动游戏规则,可能只把引擎的渲染部分改一下,或者是甚至把Open GL的实现改一下就好了。实现一个透视,可能有一百种方法,很多时候我们会根据样本实际实现的方式,做一些定制化的打击,不可能把一百种方法的检测都做了,性能开销游戏也无法接受。此外我们的方案是有动态能力的,一旦作弊方式流行起来,我们不需要升级或者做大的变更的情况下,也可以对其有感知并进行打击。
Q:像CF、吃鸡这类的逻辑主要在客户端的FPS游戏,在开发过程中有没有哪些手段可以提高游戏安全?
腾讯MTP:腾讯游戏是有安全评审环节的,我们在评审时会给游戏开发侧很多建议,比如哪些数据特别敏感,我们要求他们即使不能做实时的校验,也要提交很多数据去服务器做复盘。虽然我们安全也有动态获取数据的能力,但这相对开发过程中做成本就要高很多了。我们会在一开始让开发侧注意到很多问题,避免一些风险。但游戏不能保证做到绝对的避免风险,所以游戏上线后还是需要我们做一些相应的安全防护。
Q:对打金工作室大量使用外挂的问题是如何应对的?
腾讯MTP:从外挂角度打击是一种手段,但直接对抗外挂难度高,并不是最佳策略,而除了外挂角度,其实工作室的对抗更多的是通过数据分析的方法来进行的。
首先,工作室和单个玩家外挂最大的区别是什么?是工作室的群体性,那群体性怎么去发现?其实可能最简单是用IP、IP段,手游端可能用一些设备信息等,此外,依托于腾讯的社交网络,我们还可以从关系链的角度来发现哪部分人属于工作室。
其次,工作室不管是否采用外挂,总是要收益的,收益后要去卖,就需要交易。在交易链的地方,就可以通过聚集思路来发现工作室。
此外,手游不同于端游,手游信息传播非常快,所以黑产经常要宣传自己的资源,我们可以从中顺藤摸瓜找到工作室的团体。
通过多种方法,历经多年的积累,从现在来看,我们是可以实现对工作室的完全覆盖的,会平衡整个游戏里良性玩家对工作室的感受和影响,以及工作室对游戏本身经济系统、收入各方面利益的影响,做一个综合的处理。
Q:如今吃鸡手游及端游盛行,各种自瞄、透视、极速外挂盛行,请问是否有事前预防的手段将外挂玩家杜绝在客户端登录之前呢?
腾讯MTP:做游戏的人会有一个理想的想法,作弊的人百分百能被拦截能被处罚,其实这是做不到的。但总体来说,我们已经做了相当全面的安全对抗措施,比如技术方面,包括驱动、壳等方案。驱动里面包括普通驱动,还包括一个基于虚拟化技术的沙盒。我们有自己专用的壳,还有自己的TVMP方案,是一个把代码变成脚本语言去解析执行的东西,可以对游戏最敏感的逻辑进行处理。我们这一部分是没有商业化的,所以外界不能拿来研究,可以长久的保证我们的效果。这是端游的方案,手游上是类似的,只是手游上因为权限问题会有所受限。
但所谓事前防御的方案都是门槛方案,哪怕是马奇诺防线,其实别人绕过去就好了。 客户端的防御方案永远是在增加成本,让坏人的成本无限趋近于他的获益,最终他会觉得不划算而放弃。所以防御是我们的最底层、最基础的部分,我们上面还有很多需要强运营的方案。
此外,对外挂作者的控制上,我们动用了严厉的刑事手段;在对外挂的传播上,我们对第三方平台进行了严格的监控;再对玩家的教育上,我们通过宣传、信用度等产品做了很多引导;信用度还可以适度地用为用户筛选,将有问题的玩家挡在外面。
Q:市面上绝大部分的移动游戏都不能进行货币买卖、道具交易,是为了尽量避免PC网游众多的盗号问题吗?
腾讯MTP:做游戏的往往考虑安全问题比较少,游戏策划或者开发更多地聚焦在游戏怎么能提高品质,怎么让玩家喜欢玩,最终怎么赚钱,他们并不会考虑账号方面的压力。特别是在腾讯,因为有我们,游戏侧不需要考虑安全。所以在移动端游戏不像在PC端那样,系统那么开放,交易那么多,还是游戏基于它本身的设计考虑,不是因为担心账号方面的问题。
其实在移动端账号比在PC端安全得多,起码现在基本上没有盗号木马这类的问题,盗号基本上是通过社工方式,或者通过代练、钓鱼等方式。
此外,现在大型MMO游戏交易也很多,包括未来的DF手游,在交易上跟端游也没什么太大差别。
Q:针对国内和海外越南等地区的iOS代充现象,有什么好的解决方案?
腾讯MTP:针对iOS支付中的问题,不管是海外还是国内,目前有效的方法都不是很多。因为iOS确实比较封闭,也很强势。但还是可以基于数据尽可能地做一些监控和控制的。
通过数据的监控可以了解到哪些玩家存在问题,问题的规模怎样,主要作弊方式是什么,这属于事后部分,除此外也可以进行事前控制,比如说我们预期一个账号未来会退款,或者他本身就是恶意代充的,然后让他无法充值,也是一种可行的办法。以代充为例,毕竟代充存在一些异常数据,比如设备的更换,设备可疑,或本身就是非法商家,这样的情况是有机会在玩家充值的入口做一些限制,甚至直接禁止充值的。
这里简单补充一下小额代刷的问题,小额代刷其实是很普遍的问题,不仅涉及到苹果,也涉及到运营商。这个问题目前核心的部分其实并没有解决,但我们可以通过监控知道哪些账号在做这种事情,掌握到规模,找到了数据,一旦我们自己的游戏在这方面数据升高,我们就和游戏项目组,以及负责支付平台的一些团队,一起来商定是不是我们小额的档要暂时性的取消,或者对其次数做限制。目前这方面的问题已经控制到很低,对游戏的影响几乎很少。这来源于一方面我们要有能力做数据的监控,另一方面要保持持续性的覆盖,对问题长期监控或打击。
涉及到海外的话,iOS充值问题现在并没有覆盖,但安全最核心的一些对抗上,比如说外挂非法信息这些,不管是从系统还是从技术上,海外都已经覆盖了。这也是经过了一段时间的积累的成果。
Q:《穿越火线》和《英雄联盟》防作弊安全模式是否是不一样?如果一样,为啥《穿越火线》的辅助为啥会那么多?
腾讯MTP:这个问题玩家方面也经常问到,确实主观来看,我们会感受到《英雄联盟》里的外挂比较少,所以大家会怀疑是不是《英雄联盟》的安全系统比《穿越火线》好? 答案肯定是“不是”,这是比较普遍的一个误区。首先明确一点,游戏里外挂的多少并不是取于游戏用的安全系统怎么样,某些游戏外挂多更大部分原因是游戏本身的玩法、底层的实现机制,使其有更多漏洞,或更多可以被外挂黑产利用的风险点。
具体地说到《穿越火线》和《英雄联盟》的安全系统,他们到底有没有差别,那一定是有的。事实上,可以说在《穿越火线》上用到的安全系统比英雄联盟的强度更强,就是因为《穿越火线》更不安全。 像《穿越火线》这样的FPS游戏,为了保证射击的打击感体验,以及移动操作的快速相应,游戏将大量的逻辑放在了客户端,这就给了外挂作者利用的空间。而相反,《英雄联盟》作为一款Moba游戏,一局游戏最多10人,英雄的技能释放有限,实时计算要求不高,因此大部分逻辑是放在服务端的,相应的可被外挂作者修改的空间就小很多。
同样的也可以看得到为什么现在大火的吃鸡游戏外挂如此严重。一个很重要的原因就是他也是FPS游戏,此外,它有更复杂的逻辑,包括游戏里的视野、攀爬的动作、载具、各类武器等等,因此比早期的CF等传统FPS游戏风险点甚至更多。
Q:Unity游戏,引用了一些c#的dll,如果dll被恶意替换,就可以随意更改游戏逻辑,请问怎么处理这种情况?
腾讯MTP:事实上游戏在接入我们的安全方案后,dll文件是被处理过的,外挂作者用编译工具,无论是公用的,还是一些像IDA这种的底层工具,是无法直接对dll文件进行编译的。当然如果他对Unity很熟悉,Unity里边有一个mono,mono负责解析dll文件,它从底层是能拿出来的,但那部分拿出来之后里面字符串全都是乱码。
可以想象,如果这个dll文件没有进行处理,外挂作者就像拿到了源码一样,比如他想实现锁血,他想一下掉血的代码可能会用什么英文描述,搜一下就可以修改,无敌、透视都可以通过修改dll文件实现。所以我们处理过后,绝对是极大提高了外挂实现难度。当然,不是说完全不可以改数据,因为有很多外挂不是基于逆向,比如是基于内存数据收集的,但直接修改dll这条路是基本行不通了。
Q:棋牌类游戏如何规避双簧问题?为什么要干涉匹配的过程?
腾讯MTP:我们认为的黑产,绝对不是指某些个例。黑产的人力成本很大,它跟外挂不一样,外挂作者开发出一个东西就能直接实现单点收益,黑产如果没有量的积累,收益是很低的,所以说黑产实际上是批量操作的。
因为很多棋牌游戏是随机匹配玩家的,对于黑产而言,这就是一个海量的匹配问题,他有大量的账号,然后大量的账号去匹配,匹配到一起了,才能进行双簧操作。所以,我们可以通过双簧玩家匹配隔离使这些黑产账号无法匹配到一起,也可以通过随机头像、随机昵称让他不知道自己是不是真的匹配到一起了,通过这些方式提高黑产的成本,从而规避双簧问题。
Q:两个水平不同的用户,使用同一个游戏帐号是否会被检测到?比如我之前玩逆战游戏,水平一般,如果我把账号借给朋友玩,他水平要比我高,产生了KDA忽然升高的效果,会判定我作弊吗?
腾讯MTP:首先我们对于这些行为数据的对抗上是有非常多维度的数据的,你说的KDA跳变的这种行为只是我们其中的一个因素。像你说这种情况,你的号被朋友玩了几天,对于我们来说,其实这就是两个完全不同的KDA,是两套完全不同的操作习惯,所以说我们的方案是有能力去识别出这是两个不同用户的操作的。
今日推荐
一键添加
加小编微信,享双重福利
1.加入GAD程序猿交流群,获取行业干货;
2.领取60G腾讯内部分享等独家程序资料。