魔兽世界中招:一条命令行就能劫持你的游戏!

最近出现了一种涉及社工技术的新型游戏攻击骗局,攻击者利用了魔兽世界(World of Warcraft,WoW)游戏插件中一个隐藏的功能。

新型攻击

想象一下这种场景:游戏中一个貌似某知名公会的角色成员,接近你在游戏中的角色,和你套近乎,并声称要和你分享一些很酷的东西,如稀有坐骑、武器等。但最终结果可能是,骗子根本没有这些东西和兑换码,当然,你也会落得两手空空。

陷阱

攻击者说服玩家在聊天窗口中输入一条命令行:

/run RemoveExtraSpaces=RunScript

WoW的客户端界面(动作切换条,聊天窗口,其它图形化的2D模式元素)和插件(图像增强工具)都是用Lua脚本语言编写的。以上命令行中涉及的RemoveExtraSpacesRunScript都是WoW Lua API的合法函数,这条命令行一旦被执行,WoW界面的操作将被改变,被攻击者劫持。

这条命令实际上是干啥的?

/run 是解释执行Lua脚本命令

为什么这会是个威胁?

当游戏玩家接收到一个新的聊天信息之后,函数RemoveExtraSpaces就会被调用,而上面所提到的那条命令功能是用RunScript函数代替RemoveExtraSpaces函数,这种替换动作,就类似于软件开发中的钩子程序。

结果就是,玩家收到的聊天信息将被当做 Lua 代码命令执行,这就是所谓的“界面劫持”。

骗子攻击者会说这段代码是某个绝版坐骑的兑换码,一些大意的玩家在被“说服”、“蛊惑“甚至是引诱下运行上述命令行之后,就陷入了骗局当中。

攻击者此时就可以远程控制玩家的聊天界面,通过让玩家迷惑的Lua代码执行界面,隐藏执行其恶意操作,效果就像利用远程木马控制受害者电脑一样。以下就是我们的Test测试实例,但是真实骗局中,执行代码是会比Test更具危害性的命令。

图:执行命令行

图:攻击者向受害玩家发送消息

图:聊天消息通过Lua编程语言解释执行

短暂持久性和隐藏代码

受害者玩家执行上述命令行后,聊天系统不管用了,别人发来的信息都会变为Lua代码报错界面显示,但只要玩家重启游戏,前述的劫持功能就会失效。

所以,骗子攻击者接着发送下面这段代码命令给玩家,实现远程重启玩家聊天程序,让其恢复正常聊天功能。之后,攻击者再以隐蔽方式继续执行“更具危害性的代码”。

图:攻击者远程发送代码重启受害者聊天程序

功能说明

以上命令行和代码能实现的原因,就是因为WOW插件”CHAT_MSG_ADDON“事件功能内置了一种隐藏通信接口(或插件通信接口),该通信接口可以在本地和远程使用。攻击者利用该接口发送给受害者的信息,不会在聊天窗口显示,只会在其后台执行。

更具危害性的代码

以下就是攻击者实现完全控制受害者玩家游戏界面的完整代码样例。脚本第2行创建了一个可设置不同属性的frame,脚本通过向事件功能CHAT_MSG_ADDON注册了一个特定的命名空间前缀 (第6行和第25行)。

图:实现完全劫持受害者玩家游戏界面的代码样例

就这样,攻击者可以把所有代码发送到对方的聊天客户端里,由于利用了CHAT_MSG_ADDON隐藏通信功能,代码命令默认在后台执行,不会显示。最终实现无声无息完全劫持玩家游戏界面。

影响

由于WOW中可以彼此进行物品交易,如果攻击者实现完全控制受害者玩家的游戏界面之后,就可以查看并靠近对方在虚拟地图中的准确位置,通过远程启动和控制对方的交易窗口,输入交易物品或金额,点击”接受交易“,真正实现对玩家的“抢劫”。

攻击者控制了受害者玩家之后,向其它熟悉玩家发送具有说服力的恶意信息,可以实现控制更多游戏角色。看吧,就是这么简单而有效的脚本,就可能让你在游戏中一无所有。

暴雪发布在线修正版本

近期,暴雪游戏运营商针对该Bug推出了一个修正版本,新版本在命令行中输入以 /run 或其他字段开头的脚本命令,会弹出一个询问对话框,提示玩家正在使用自定义脚本,可能会导致游戏金币损失,是否继续执行。

图:修正版本的聊天窗口命令执行情况

如何保护自己

1、删除以下文件代码段:

删除字段:SET AllowDangerousScripts "1"

2、不要在聊天窗口中运行脚本命令,尤其是以 /run 开头的脚本命令;

3、看清与你交流或交易的游戏角色名称,小心被钓鱼攻击;

4、下载第三方插件时请小心,2014年时WoW就曾出现过“ElvUI Backdoor”事件,请尽量使用暴雪自带插件。

视频:模拟场景

模拟引诱受害者玩家执行劫持命令后的效果:http://v.youku.com/v_show/id_XMTY2NTU1NTkwMA==.html

劫持代码

wowhijackcode (提取码:e7f0)代码仅供研究,请勿非法使用。

*本文译者:clouds,编译来源:Gdata,本文禁止转载

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2016-08-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

不只是Web:十大令人振奋的Node.js项目

除了在Web服务器领域大展拳脚之外,Node.js同样也在无处不在的JavaScript应用程序创建当中散发出耀眼的光芒。 ? Node.js:不只是网站 就在...

5385
来自专栏JAVA高级架构

大型分布式电商系统架构是如何从0开始演进的?

2313
来自专栏*坤的Blog

提高效率

1872
来自专栏java思维导图

大型分布式网站架构技术总结

#0 系列目录# 大型分布式网站架构 大型分布式网站架构技术总结 本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进...

3624
来自专栏携程技术中心

干货 | 高吞吐消息网关的探索与思考

作者简介 刘惊惊,唯品会业务架构部高级架构师。主要负责用户线,营销线的业务架构,也参与库存系统的重构改造。 一、背景介绍 唯品会是一家立足于“全球精选,正品特卖...

3354
来自专栏数据之美

网站数据统计分析之二:前端日志采集是与非

在上一篇《网站数据统计分析之一:日志收集原理及其实现》中,咱们详细的介绍了整个日志采集的原理与流程。但是不是这样在真实的业务环境中就万事大吉了呢?事实往往并非如...

4967
来自专栏smartguys

(一):C++分布式实时应用框架----整体介绍

版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律追究的权利!

8015
来自专栏FreeBuf

经验分享 | 企业如何做好安全基线配置

一、为什么要做基线配置管理 一个组织在不同的时期部署了不同的业务系统,承载业务系统的是不同的操作系统和支持系统。业务系统在运行期间,基本上很少做操作系统的升级或...

5075
来自专栏猿人谷

一个项目的简单开发流程——需求、数据库、编码

关于一个项目的简单开发流程   前言:从11月8号开始到11月12号我们小组使用html+easyUI+ashx+异步,开发了一个简易的网 站,也就是简单的门户...

2725
来自专栏CSDN技术头条

Uber是如何通过Mesos和Cassandra实现跨多个数据中心每秒100万的写入速度的?

每隔三十秒就会有位置数据返回,包括来自于司机和乘客应用的各类数据,需要实时使用的实时数据非常之多,那么Uber是如何存储这些位置数据的呢? Uber的解决方案非...

2209

扫码关注云+社区

领取腾讯云代金券