魔兽世界:一行简单的代码可以让你损失惨重

阅读量170390

|

发布时间 : 2016-07-27 10:29:59

x
译文声明

本文是翻译文章,文章来源:安全客

原文地址:https://blog.gdatasoftware.com/2016/07/28809-world-of-warcraft-one-simple-line-of-code-can-cost-you-dearly

译文仅供参考,具体内容表达以及含义原文为准。

https://p0.ssl.qhimg.com/t01f9c6d4cbbb7c86cd.jpg

几天前,一种新型的金币/物品骗局流传开来。通常在MMORPGs(大型多人网络角色扮演游戏)中的欺骗通过社会工程学技术实现,如攻击者声称其具有游戏内物品(例如坐骑),然后将假冒的物品代码卖给一个潜在的受害者以获取游戏货币。但是,这种最新攻击不仅涉及了社会工程学,还依赖于先前的魔兽世界接口中的非法功能的滥用。


新型攻击

想象一下以下情况:一个游戏角色,以一个受欢迎的协会成员的方式出现,然后接近你的游戏角色,并且承诺分享一些很酷的东西给你,如稀有坐骑(一种动物,可以乘坐和改善你的行进速度)、武器等等。而实际上,很有可能攻击者并没有这些物品,也没有这些物品的有效代码。当然,随后受害者也没有得到任何有效的代码和物品。但是,陷阱是:攻击者可能会成功地说服玩家在聊天窗口中输入一个命令:

/run RemoveExtraSpaces=RunScript

魔兽世界的接口(如操作栏、聊天窗口和其他图形元素等所有2D的接口)和扩展(如改进接口)都是用Lua脚本语言写的。上面这行命令的等号两边,RemoveExtraSpaces还有RunScript都是合法的函数,并且是魔兽世界Lua API的一部分。但是,如果在你的聊天窗口中输入这行代码的话,会改变魔兽世界接口的行为。


这个命令到底做了什么?

/run是一个将下面的文本解释为一个Lua脚本的命令

RemoveExtraSpaces是一个内置函数,用来删除文本中不必要的空格

RunScript是一个将文本作为Lua代码执行的函数(类似于/run命令)


为什么这是一个威胁呢?

玩家接收到的每一条聊天消息都会调用函数RemoveExtraSpaces。上述命令用RunScript函数来替换RemoveExtraSpaces函数, 这在软件开发中称为钩子。一旦覆盖掉原来的函数,那么每一个新的聊天消息都会被解释为Lua代码,并立即执行。场景如下:

不知情的玩家会在自己的聊天窗口中输入给定的命令,因为外国的游戏角色听起来会非常令人信服,如果他说了类似“输入这个代码,神奇的事情将会发生”这样的话。而结果却是相反的,玩家并不会得到一些魔法物品,而是把自己变成了受害者:

https://p0.ssl.qhimg.com/t0150a5661ef2b4b5e8.png

不知情的玩家准备“发送”这行邪恶的代码

https://p3.ssl.qhimg.com/t010b89a8c2ef237d12.png

攻击者给受害者发送一条聊天消息

https://p2.ssl.qhimg.com/t01d95d66f03c1db2e0.png

这条“聊天消息”被解释为Lua代码并执行

如上所示,看起来这种滥用是一个相当无害的例子。但实际上,这意味着攻击者现在可以远程控制受害者的接口。这非常类似于普通的特洛伊木马在电脑上显示的行为——它们冒充一些有用的东西,然后展开它们的恶意行为。在实际情况中,攻击者并不是创建一个包含 “测试”文本的消息框,而是会运行一个不同的脚本,这个我们将在下一节中解释。


暂时的持久性和隐藏的命令

当受害者打开他的接口的后门之后,攻击者会发送如下的聊天信息:

https://p5.ssl.qhimg.com/t018a6604e5cbc32b91.png

攻击者建立了一个新的通信通道

如果之前的命令执行了,对受害者而言,上述消息是看不到的,但是它会立即执行。事实是聊天功能已经不再工作,这看起来可能是可疑的,甚至会让受害者重新启动游戏。我们怀疑攻击者会通过发送如上所示的命令很快地“解决这个问题”,上面的命令建立了一个新的通信通道,然后很可能还可以重新开启受害者的聊天功能。

想要理解这段代码的目的需要知道,魔兽世界的扩展插件有可能通过一个隐藏的通道(本地和远程)进行交流。可以使用“CHAT_MSG_ADDON”事件来建立这个通道。

https://p4.ssl.qhimg.com/t0156d07aa324ef4878.png

解释CHAT_MSG_ADDON事件功能的脚本代码

这段脚本创建了一个框架(第2行;z)可以设置不同的属性。这个脚本用一个特殊的前缀注册了CHAT_MSG_ADDON事件(6 – 25行)。只有知道这个特意选择的前缀的人才能控制受害者的被劫持接口。这相当于一个后门的密码。

每次劫持接口接收到包含设定好的秘密前缀的CHAT_MSG_ADDON事件,它就会默默地执行代码,而受害者是看不见的。

结论:只要攻击者不希望你看到他对你的帐户进行的操作,他就不会告诉你到底发生了什么事!

即使我们谈论的是扩展插件可以通过一个隐藏的通道进行通信,不过攻击者并不需要为了攻击而安装任何插件。这是一个新开发的关于魔兽世界游戏内的攻击。


到底能造成什么伤害呢?

随着攻击者获得了受害者接口的完全访问权限,他可以定位受害者的游戏角色目前在虚拟地图中所处的位置,并在游戏内与他接触。攻击者通常不会有机会知道关于其他玩家这么详细的信息。

在魔兽世界中,玩家之间有可能会进行物品交易。为此,两个角色需要在一定的物理距离内,然后才能进行物品交换。如果攻击者知道了受害者的角色的位置,并且自己的角色与受害者的游戏角色在一定范围内,他就可以远程打开交易窗口,在受害者这边添加物品和/或金币,并点击“接受交易”按钮。他实际上可以肆意抢劫受害者。

我们的场景描述了一个配合技术攻击的社会工程学攻击。攻击者可能会用操纵的客户端向其他玩家(例如协会成员,朋友等等)发送令人信服的聊天信息,从而用简单却又高效的脚本来操纵更多的游戏角色。我们都知道,来自朋友和同事的消息一般都是可信赖的。


我们该如何保护自己?

就像听起来那样简单:不要在你的聊天窗口中输入脚本代码!在向你的聊天窗口中输入任何消息之前要问清楚每一个请求。

在给出的例子中,我们讨论了一个攻击者的游戏人物属于一个受欢迎的协会,他提出他是这个受欢迎协会的成员,但实际上他并不是。他选择了一个著名的协会,并复制了他们的名字,用大写的“L”来替代他们名字中的小写的“l”。你可能已经熟悉这种排版错误钓鱼攻击技术。

此外,从第三方下载插件时要小心:使用可信赖的和受欢迎的网站,并且保持你的插件是最新的。可以想象,有些人可能会将问题代码添加到他们的插件中,从而使用这个附加的代码作为一种额外的攻击工具。类似的问题发生在2014年,当时在一个插件中发现了所谓的“ElvUI后门”。

这个问题本身只能由暴雪来修复。他们必须确保覆盖这样一个特殊函数的行为变得不可能。在本文的创作期间,暴雪于昨天为即将到来的扩展插件“Legion”公布了一个预发布版本。他们对脚本攻击做出了反应, 在输入脚本之后,执行之前,会弹出一个警告消息:

https://p2.ssl.qhimg.com/t010ecc9669a84c4fe3.png

暴雪添加到他们的最新补丁中的警告消息

选择“Yes”会永久禁用这个消息,即使重启也不会再次出现——这个询问不会再次弹出。如果想要重新启动它,你必须手动删除配置中的一行代码,真的只有这一行:

需要删除的代码:SET AllowDangerousScripts "1"

文件:config-cache.wtf

路径:World of WarcraftWTFAccount<ACCOUNTNAME>

本文翻译自安全客 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
mpk_no1
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66