DDoS,Redis漏洞,勒索病毒……TapTap小团队们的求生故事

报道 1年前 (2023-04-24)

本文经授权转载自微信公众号 游戏新知(ID:youxixinzhi)

作者 | 夜风

声明 | 本文不含商业合作

DDoS,Redis漏洞,勒索病毒……TapTap小团队们的求生故事

「没想到我们这么小的游戏也能被盯上。」

做游戏难,身兼数职的小团队开发者们更是如此。他们可能熬过了无数个通宵debug的夜晚,可能撑过了发不出工资的疫情时期,甚至可能幸运地等来了版号,游戏眼看就能带来回报了。他们可能怎么也不会想到,自己数年的努力,会因为遭遇黑客攻击而功亏一篑。

在TapTap平台,这正是许多小团队正在或曾经遭遇的困境。

游戏新知根据各游戏官方账号发布的信息做了个粗略的统计,从2022年1月至今,TapTap上已有至少28起遭黑客攻击的案例,包括集换式卡牌游戏《百分之一》、广州因陀罗的《环形战争》、放置挂机游戏《转生成为魔物》;其中2023年1月至今仍有7起,前段时间人气颇高的模拟经营游戏《解忧小村落》也在受害者之列。而这些有一定知名度的游戏只是一小部分受害者,更多的则是名不见经传的小团队。就算在近半个月内,相似的案件仍在发生。

DDoS,Redis漏洞,勒索病毒……TapTap小团队们的求生故事

一旦遭受攻击,损失就无法避免。最严重的要数一年多以前,手游《弈剑行》在上线的第一天就遭遇黑客攻击,不得不退回了全部的玩家充值,并临时关服,改为单机版本。

对于精力、财力、技术手段都有限的小团队来说,这种无妄之灾就算没有对游戏造成致命的打击,也会成为一场难以释怀的噩梦。

有点心累的单机游戏团队

「我还有一个最后的兜底的解决方案,就是纯单机模式了。」

事情已经过去了半年,《游戏Q》团队的小q提起那段经历时,仍透露出深深的疲惫。

《游戏Q》是一款已经在TapTap上线4年有余的游戏了,由小q自己开发,他的一名伙伴协助搭建了服务器。几年里本来一切正常,小q也一直按照自己的步调一点点地给游戏调整迭代。

然而去年10月的一天,游戏服务器突然过载,两个人仔细排查后发现,他们的服务器已经被外部渗透,挖矿程序正大肆挤占服务器资源,导致玩家无法正常使用联网功能。更糟的是,对方已经不知什么时候拿到了最高权限,无论是云服务平台的安全模块还是更改服务器密码,都已经无法解决问题了。

简单来说,他们的服务器被人「偷了家」,黑客则正在家里为非作歹。谁能想到一个已经上线4年的角落里的小游戏还能遇到这种事?

DDoS,Redis漏洞,勒索病毒……TapTap小团队们的求生故事
图片来自游戏官方公告

他们分析了相关数据,发现对方来自海外IP,通过端口扫描发现了他们服务器的Redis漏洞,从数据库攻入,拿到系统权限后潜伏了很久,最后才开始利用服务器进行区块链相关操作。反复尝试之后,团队无力回天,只能放弃原来的服务器。

他们第一时间发布了紧急通告,告知玩家将暂时关闭服务器。好在说明情况后,多数玩家都表示理解,也有不少玩家在评论区为团队加油。

在备份了数据库之后,他们在云服务器平台上将原来的服务器彻底重置。由于固定IP已经暴露,二人痛定思痛,重新商讨了一整套服务器部署策略。游戏新知在此贴出小q提供的全部流程,从这串繁杂的操作中,可以感受到这个两人小团队的艰辛。

* 新客户端通过https的域名请求服务器,并且服务器结构由原先的单一服务器调整为:主服务器、多个逻辑服务器。逻辑服务器是处在完全内网下,不对外访问,通过和主服务器之间局域网链接,实际是由主服务器和用户之间沟通。* 所有公开接口使用https的域名,可以通过域名平台防护一定程度的DDos攻击,此外最坏的情况可能是入口服务器被渗透,这个时候只需要域名重新映射到一台备用服务器机组就行了。* 服务器远程链接方式改为pem密钥验证,另外默认情况下服务器除了游戏端口外,其他端口全部关闭,不对外开放,一定程度上可以抵挡大部分端口扫描导致的渗透攻击。* 原有技术架构调整,由于服务器层面变动,技术层面需要改为分布式且逻辑层之间有灵活低耦合。现在可以做到类似《英雄联盟》那样,需要维护时可以只维护某一个模式,新增模式如果玩家很多也可以动态增加服务器机组,灵活性远高于此前的服务器策略。* 客户端与服务器通信的数据也顺便做了安全升级,所有数据带有数据正确性校验、特殊数据加密等,其中包含了一些md5校验、RSA、DES等技术。

在部署新策略之后的一周里,服务器还受到了少量攻击,好在都被防护住了。实际上,《游戏Q》本身就是一款单机玩法的游戏,只是为了丰富体验,增加了一些联机功能。因此游戏受到的损失尚在可控范围内,还算幸运。

「我还有一个最后的兜底的解决方案,就是纯单机模式了。」小q说,「服务器还是对个人开发者负担太大了,维护起来精力有限。」

事情至此告一段落。相比技术经验,心理上的疲惫感要更加让他难以忘怀。

他们一开始就没有过多的精力去做服务器,因此只关注了游戏服务器的逻辑和功能的完整性,没有专门重视网络安全、服务器安全等问题,没想到这点疏忽竟成了不法分子眼中的破绽。「这次的经历给我的感受就是太累了,给玩家带来的体验是有提升,但是在线模式从商业角度付出过大,我支持不了那么多,也没精力去维护以及和那些网络鬣狗玩安全攻防游戏。」他说。

现在的小q,看待游戏制作的观点变得「现实」多了:「做游戏是一件综合的事情。我的总结就是,个人开发者可以搞一些简单的联网,如果不是特别专业或者有先天资源的,就好好先搞好游戏本身吧,单机也可以做得很有趣的,赚钱了、做大了再考虑这些。」

现在,小q一边为《游戏Q》持续推出一些皮肤、新玩法等简单更新,一边已经开始埋头制作他的第三款游戏——他的第一款游戏是在参加GGJ全球48小时极限开发大赛时的参赛作品,《游戏Q》已经是第二款了。这第三款游戏仍然是单机玩法,他目前还不打算添加联机功能。

「我主要还是做游戏本身的开发,不是专门做服务器的,所以这方面帮助有限。如果能有所帮助的话我还是很开心的。」小q的这句话让游戏新知印象深刻。在新游戏的开发过程中,他也经常在平台分享自己的设计手稿,还曾干脆开源一部分底层框架。这个淋过雨的独立游戏创作者,如今仍在自己力所能及的范围为别人撑起一把雨伞。

只是,如果大家本来就不用淋雨就好了。

措手不及吃了小亏的团队

《游戏K》遭受的损失要大得多。

他们被黑客盯上是在今年2月,当时游戏正处于一次外部测试期间。在一天半夜里,游戏突然受到了勒索病毒的「广撒网」式攻击,不幸中招,服务器瘫痪。团队发现这件事时,已经是第二天早上了。

他们赶紧核对数据备份和相关服务器的情况,发现玩家数据服务器和远程登录服务器都受到了入侵。黑客已经劫持了大量的玩家数据和部分开发数据,只有支付赎金才会归还。

这个一共十几个人的小团队下定决心不会妥协。在初步确定状况之后,他们花了一天多的时间尝试重修系统,然后整理并还原数据。直到具体情况及损失最终确定下来,一共花了3到5天。

最后,他们损失了2到7天不等的玩家数据,重新开服时不得不将数据回退2-3天——也就是说,玩家不止在维护期间无法进入游戏,在遭到攻击前的2-3天里游玩的结果也全都无法保留,而恰巧在这几天里刚刚注册的玩家更是连账号也整个不存在了。另外,受到攻击的多个服务器都需要整个重装。由于丢失了一部分开发数据代码,游戏的版本更新进度也受到了不小的影响。唯一的好消息可能就是,多数玩家都对团队不妥协的态度表达了支持。

团队没有专门去计算此事带来的玩家流失。根据小k自己的主观估算,流失的玩家可能有一到三成。「当然这种说法很可能不准确,」他补充道,「因为我们说的玩家反馈或者玩家数据,绝大多数是所谓的『沉默的数据』。用户的离开他是不会说的,他会支持你跟勒索病毒对抗,但是他也会因为你数据的丢失而离开。」

好在《游戏K》当时处于bug测试的阶段,尚不涉及留存、付费等问题,不至于让这次测试数据整个作废。「如果是在测这些数据的情况下,遭到了这些攻击,你的付费和留存就必然测不出来了,因为你这不是一个正常的生产环境。」

「在测试阶段出这样的问题,总比在正式上线的时候出要好一点,也算是给我们敲响警钟。」尽管谈及此事时,小k仍不免觉得愤慨,但能感觉到他的心态还算平和。

《游戏K》或许也算是不幸中的万幸了。可想而知,如果是一个进行留存和付费测试的游戏、甚至是一个刚刚正式上线的游戏遭遇了这样的黑客攻击,后果可能是不可挽回的。

「还是要做好数据备份。」谈及这次事件带来的经验教训时,小k反复强调着这句话。

团队在事后认真做了复盘。他们因为只是一次小测试,就没做数据防护、端口关闭这类基本的安全防护措施。这次之后他们深刻地认识到,这些防护措施是必不可少的,至少应该通过关闭访问端口、限制访问IP、隐藏真实IP等方式,尽量减少可能受到攻击的途径。

不过黑客的攻击手段未知,再万全的防护措施也仍有风险。小k认为,他们最大的问题是疏于做数据备份。

「我们这次测试的服务器是两三天一次数据快照,所以数据丢失之后再回退,问题就比较严重。而且有的数据并不在同一个服务器,或者说不在一起存着,有的数据就没有做快照,就导致回退很多。」

他建议,游戏正式上线时最好做到一个小时一次数据快照,并且几个小时内的数据都要做好本地保存,这样万一遇到什么意外状况,可以把损失降到最小。这个数据快照的保存成本并不高,大概在一天几毛钱至几块钱不等,按快照个数和保存的时间收费。尽管这对于一些小团队来说也是一笔额外的负担,但经过此事,小k认为这属于必要的支出,「等于买个保险」。

「没办法,我们这种小团队能做的也就这些了。就是提前通过一些技术手段,用比较低的成本去进行第一道防护,然后做好预案,尽量降低损失。……老玩家都知道我们团队比较佛,也就不太在意留存什么的那些数据,我们更在意玩家数据和开发进度会不会丢失。」

在闲聊时,小k向游戏新知打听最近是否还有团队在遭遇黑客攻击。得到肯定的答复后,这个「比较佛」的游戏人也终于忍不住叹息起来,开玩笑地说了句:「独立游戏死路一条。」我竟一时不知该如何安慰他。

如今已经过去两个月,《游戏K》也早已回到正常的开发节奏上。但这起飞来横祸,仍会在每一个受害的独立创作者心中,留下一道隐隐作痛的伤疤。

一个各方面还算幸运的团队

和前两个例子不同,《游戏J》遇到的是个「大家伙」。

一周前,也是在早上起床之后,开发者小j和他的伙伴才得知了游戏服务器被攻击的消息。摆在这个两人小团队眼前的是已经超负荷运转的服务器、大量玩家无法登录游戏的控诉,以及一段嚣张的勒索信息。两个人核查情况、寻找对策、稳固服务器环境,一直闷头忙到了下午三点多。

DDoS,Redis漏洞,勒索病毒……TapTap小团队们的求生故事

「我们收费不贵的」「比高防费用省了许多」「阿里你们花不了那钱的」「拖越晚我们收越高」「等你们首发会更惨的,我们会用更大的流量来针对你们的所有区服」……简短的交涉之间,这些不法分子透露出的对小团队困境的了解,可以说是一针见血了。

「游戏只要上了TapTap热门榜就会被这群人盯上。」小j这样告诉游戏新知。

《游戏J》当时处于一次测试期间,幸运地登上了热门榜,正是自然流量最大的时候。然而就在此时,由于服务器被攻击,团队不得不花了大半天的时间去处理。结果这个难得的曝光窗口期带来的新玩家,比原本预计的数量少了一半多。

然而问题还不只是玩家流失这一点。在遭受DDoS攻击之后,游戏无法登录,大量刚刚被吸引而来的玩家不明就里,很容易直接删掉游戏,甚至给出1星差评。「上了热门榜的话每一天都有7000-1W5左右的玩家会下载你的游戏,因为服务器登录不了短时间至少会有十几个1星差评,这些差评会让游戏评分下降0.1-0.2个点。 」小j说。

「然后又由于玩家下载数量的减少、游戏评分的下降,你的排行榜名次又会下降……就是一个恶性连锁反应。 」说到此处,他无奈又气愤。

结果就是,登上热门榜的这个扩大知名度的大好机会,被活活掐断了。独立游戏的小团队往往没有成本去买量,只能靠来自平台的自然流量获取新玩家。因此对于他们来说,这种打击几乎是致命的,无异于在游戏开发者的心头剜了一刀。

ACCN,这个黑客组织也算是臭名昭著,前文提到的《弈剑行》及其他许多独立游戏,都是他们的受害者,有人说这个组织来自台湾省。大家唯一可以确定的是,他们往往会盯上TapTap热门榜单上的独立游戏、小团队游戏,在游戏正处于曝光窗口期时,对服务器发动DDoS攻击,以此向团队勒索赎金。

百度百科给出的解释是这样的:「DDoS是Distributed Denial of Service的缩写,即分布式阻断服务,黑客利用DDoS攻击器控制多台机器同时攻击来达到『妨碍正常使用者使用服务』的目的。」简单来说,就是通过控制大量傀儡机器向服务器灌入流量,挤占服务器资源,使得正常的玩家无法登录游戏。由于这些傀儡机器往往是被劫持的真实账户,一般的防御手段很难识别出这种攻击。

想要在维持正常服务的前提下防御DDoS攻击,最好的手段是启用高防服务器,不过价格一般相当昂贵,小团队很难负担得起。以业界应用比较普遍的阿里云高防为例,服务价格在2万-4.6万一个月不等,腾讯云高防也是差不多的价格。

DDoS,Redis漏洞,勒索病毒……TapTap小团队们的求生故事
图片截取自阿里云官网

对于很多独立游戏开发者来说,如果选用这样的高防,他们的游戏很可能连这部分高昂的成本都赚不回来。而黑客组织正是吃准了这一点,趁机对小团队进行要挟。

而如果团队因此选择了妥协,事情也不会一笔勾销。有团队在知乎上分享,他们选择了向黑客缴纳赎金,结果一年之后游戏再次遭到攻击和勒索。

DDoS,Redis漏洞,勒索病毒……TapTap小团队们的求生故事

小j也提到了类似的观点:「因为我们是联网的游戏,除了高防确实没有更好的办法。这种黑客的攻击一般都是来自海外,我们也没有办法去让法律制裁他们,所以最好的方案就是上高防,但是对于小工作室来说,难的就是没钱上这个高防。」

好在《游戏J》的后续处理都还算顺利。他们很快找到了服务器的服务商,得到了1天免费应急防护的服务,从申请到开通服务不超过两个小时。游戏也因此在最开始受到攻击最严重的时候,得以缓解燃眉之急。

有了这24小时的喘息之机,团队也终于能够和游戏的运营方进一步商讨。幸运的是,运营方愿意全权负责游戏今后的高防服务,彻底消除了后顾之忧。

「如果是我们自己肯定也用不起这个。选择好的合作运营方也是很重要的。」小j感叹道。

上了高防之后,黑客那边就再没了动静。小j分析道:「他们攻击也是有成本的,如果要继续攻击的话他们花费也更大。我觉得和这群人联系,建议尽量不要说太多,更不要激怒他们。要不他们盯着你来弄的话,要解决就要花更多钱了。」

结果,黑客的攻击虽然对游戏获量造成了不小的影响,好在及时控制住了,损失没有进一步扩大。在遭受DDoS攻击的众多游戏里,《游戏J》已经算是一个幸运儿了。

这次测试的成果最终还算符合预期,这对于小j是最大的好消息。他认为,在测试期间把各种坑都踩一踩,也可以在游戏正式上线时有意识地避免掉这些坑。现在,团队已经在根据测试中发现的各种问题,包括安全防护漏洞、游戏内bug、玩家反馈的不合理细节等等,对游戏进行进一步的调整。一切都慢慢回到了正轨。

希望如果有小团队不幸又遭遇了这类黑客攻击,也能拥有像小j团队一样的幸运。

相关组织起作用了吗?

希望其他小团队也能拥有这样的幸运——这种想法的产生是正常的吗?没有资源的小团队,就注定应该提心吊胆地开发自己的游戏吗?小团队能做的,就只有祈祷流弹不要落到自己头上吗?

在讨论该如何保护自己的游戏不受黑客攻击时,小k说出了他的看法:

「这个问题不应该由开发者去思考。」

他认为,独立开发者势单力薄,必然无法通过自己的力量去抵抗这些专业网络流氓。因此,平台才更应该发挥作用,为开发者提供更好的环境,这也算是平台竞争力的体现。

事实上平台也不是完全视而不见。2021年5月,由TapTap牵头,心动、巨人、莉莉丝、米哈游、鹰角共6家游戏企业共同发起成立了「反网络黑灰产联盟」,旨在积极应对和处置网络黑灰产问题,包括黑客恶意攻击、外挂制作销售、恶意注册账号买卖、电信网络诈骗、非法获取用户个人信息等行为。像前文提到的有组织地针对独立开发者进行DDoS攻击的案例,还被当做典型案例分享。

然而这一组织的关注度似乎并不高。在联盟的官方公众号上,官方发布的真正靠联盟的力量得到了解决的事件只有一起。这是发生在2022年的一起DDoS攻击案例。通过描述可以得知,官方也并未能够从源头解决问题,而仅仅是「切断了不法活动的中间环节」——封停了黑客用于联络受害者的QQ账号。

DDoS,Redis漏洞,勒索病毒……TapTap小团队们的求生故事

当被问及为何没有向TapTap平台寻求帮助时,小k讲了这样一个比喻:「比如说我走在路上摔了一跤,碰破了皮,这个时候他再来跟我说我应该穿一些护膝什么的。那对我而言,可能不如等我痊愈以后再次上路的时候来跟我说,可能意义会更大一点。」

「我们受到攻击之前,好歹是有做一些数据备份的,所以影响没那么大。但是有的开发团队可能连备份的习惯也没有,他万一遇到这个问题可能真的就是灭顶之灾,测了五六个月的数据全没了,确实会痛心疾首。」

对于《游戏K》这种数据被劫持的情况来说,在已经遭受攻击之后再提供帮助,能得到的效果已经非常小了。毕竟追踪不法分子的难度非常大,数据也已经无法找回。因此小k认为,在安全防护意识的问题上,授人以鱼不如授人以渔,提前向开发者提供安全防护的指导和防御服务,可能比事发之后再提供帮助要更有效。

至于DDoS攻击的问题,平台是该成立专门团队随时待命,还是该与高防服务器的服务商谈判、争取更多小团队也能接受的方案,或者至少积极向开发者提供安全防护知识和技术上的指导,都要留待相关各方继续探讨。在游戏行业普遍不乐观的现在,要推进这一针对独立开发者的议题可能仍然需要时间。

从独立开发者的角度而言,目前能做的事就是增强安全意识,提前在自己能够接受的范围内做好防范措施,准备好各种预案。在被不法分子盯上之前,这些准备能在关键时刻成为游戏的第一道防线,万一遇到突发情况也能争取缓冲的时间,甚至减少损失。结语

现在游戏行业不景气。在这样的环境中艰难求生的独立开发者,很多都想不到自己还要面临这些额外的风险。黑客攻击事件频发,正在消耗小团队和独立游戏开发者的精力与热情。毕竟他们最开始,只是想做个好玩的游戏而已。

也正因如此,开发者们才要尽量吸取前人的经验教训,建立安全意识,才能更好地保护自己的作品。而平台方就算暂时无法开展更大的动作,也可以考虑多对开发者予以帮助和配合,尽量防患于未然。

自由的创造力,不该被这种事扼杀。

注:文中游戏名称及相关人员均为化名。