Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光

$
0
0

Last Winner(类 Fomo3D)游戏大火,导致以太坊异常拥堵,Gas 费用暴涨。大量以太币资金入场。北京时间 2018 年 8 月 10 日凌晨 1:38,加州时间 9 日上午 10:38,安比(SECBIT)实验室收到合作伙伴美国硅谷 AnChain.ai 公司消息,基于 AI 的态势感知系统发出预警信息,发现部分游戏合约出现大量交易并且存在异常的资金流动情况。

安比(SECBIT)实验室的小伙伴赶紧根据最新线索,对相关合约和交易进行观察、跟踪、分析。安比(SECBIT)实验室由中国科学技术大学博士郭宇创建,从密码学、代码语义、形式化验证、博弈论、编译器等多种理论角度切入,在智能合约安全技术上开展全方位深入研究。AnChain.ai 由辛辛那提大学计算机博士方春生 Victor Fang 创建,方博士是硅谷上市网络安全公司 FireEye 史上第一位首席数据科学家,负责 AI 产品研发。AnChain.ai 专注安全威胁情报、区块链态势感知,凭借 AI 技术助力区块链生态安全。下文敏感地址只保留前 4 位。片尾有 三个彩蛋 ,智能合约爱好者请不要错过。


Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光
悄然上线:莫名火爆的 Last Winner

Last Winner 是一款基于以太坊智能合约的 DApp 游戏,于 8 月 6 日上线,这款游戏一经推出,就“异常”火爆。

这款游戏合约地址为 0xDd9fd6b6F8f7ea932997992bbE67EabB3e316f3C。据 Etherscan 显示,短短六天时间内,该游戏合约就已产生 27 万余笔交易。甚至前段时间以太坊网络大拥堵也与 Last Winner 游戏密切相关。8 月 8 日 和 9 日,在 Last Winner 和 Fomo3D 超大规模交易量的共同作用下,以太坊未确认交易数量创年内新高,平均 Gas 费用一度飙升至正常 10 倍以上。


Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光

该游戏第一轮奖池金额为 1.6 万多个以太币,而玩家总投资额更超过 10 万以太币,资金量巨大。目前游戏第一轮已结束,第二轮奖金池已迅速累积至 7000 多以太币。

疯狂的现象级游戏背后 暗流涌动 。

疑团重重:前期大量参与者的资金来历不明 据知名媒体「区块律动」报道,Last Winner 由名为「蚁群传播」的 资金盘传销组织 推广运营,有着数量众多的会员和极强的推广拉下线能力 [1]。而据另一款火爆游戏 Fomo3D 开发团队称,Last Winner 是仿 Fomo3D 游戏,其背后运营团队准备了 20 万 ETH 来进行自动刷量交易。因此,Last Winner 游戏火爆的背后,可能是一场精心布局的传销游戏,初期利用机器人发起批量交易,伪造活跃假象,吸引新韭菜入场。

Last Winner 游戏合约存在大量非正常交易,并且伴随着大量合约的创建与自毁,与正常人类调用行为特征偏离很大,这引起了我们的高度警惕。

疯狂推广:只面向国人,合约源码却未公开

在各大论坛、媒体、以及微信群中,都可以见到 Last Winner 游戏的推广文章,而这些文章有着类似的描述,并且都附上 推广邀请码 。但 Last Winner 英文相关资料非常少。


Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光

显然,这是一款针对中国人的游戏,有着诱人的推广( 拉下线 )奖励,因此在网络上广为传播。并且,这款游戏有适配安卓和 iPhone 手机的 App,简化了使用操作,降低了参与门槛。

但是,十分可疑的是,作为一款基于智能合约的区块链游戏,Last Winner 居然没有公开合约源代码!这是一个非常危险的信号。为何这样一个游戏能这么火爆,吸引 这么多人 参加?

我们直觉上感到这款游戏到处透露着诡异的气息。

安全性存疑:实则是 Fomo3D 山寨版

Last Winner 官方宣传语写道:

Last Winner(LW)是首款完全去中心化的类 Fomo3D 游戏 DApp,完全基于以太坊智能合约原生开发。只要下载安装 App 就可参与游戏。

类 Fomo3D 游戏,且未公开源代码,这不得不让人产生怀疑。要知道,短短时间内原创开发一个好玩又 安全 的 DApp 游戏难度非常大。

安比(SECBIT)实验室迅速使用内部工具逆向分析了 Last Winner 的合约代码(字节码)。果不其然,这款游戏合约代码函数名称与 Fomo3D 高度相似,疑似直接拷贝(抄袭)了 Fomo3D 的源码,但却又新增了 10 余个可疑 未知函数 。

尽管 Fomo3D 在 Etherscan 公开了源代码,但这并不代表它开源给任何人随意使用。

安比(SECBIT)实验室之前报道过:在 Fomo3D 爆红之后,各类山寨版 Fomo3D 层出不穷。之前这些山寨版游戏往往复制 Fomo3D 官网和合约源码,并可疑地在一些地方进行修改。而 Last Winner 在此基础上更进一步,推出移动客户端,并疯狂推广,却不公开智能合约源代码。

智能合约游戏或 DApp 的亮点之一就是公开透明。Last Winner 游戏则完全违背了这一点,动机十分可疑,参与该类游戏的风险极高!

当时严峻的形势是:一方面有多个地址疑似疯狂发起攻击交易,另一方面项目方游戏合约未公开源码,高度可疑却吸引了巨量资金。我们感觉到态势十分紧急,于是迅速开展分工合作。AnChain.ai 中美团队日夜交替分析和监控异常交易,收集证据,定位攻击来源与攻击规模。

安比(SECBIT)实验室的小伙伴们则兵分两路,分别开展对 不透明游戏合约 和 黑客攻击手法 的逆向分析。

前情回顾:类 Fomo3D 游戏空投机制存漏洞

Fomo3D 游戏参与形式是用以太币购买游戏道具,除了最后一个购买的人可以获得巨额大奖外,平时参与者还有机会获得“空投”奖励。

这里有主奖池和副奖池的概念,最终的巨额大奖和 空投奖励 分别从从主奖池和副奖池中获取。

所有进入游戏的以太币,有 1% 数量会进到副奖池。每一次购买道具都会有概率获得空投。空投的概率从 0% 开始,每增加一笔不小于 0.1 ETH 销售订单,空投概率会增加 0.1%。同时空投奖金额与购买金额也挂钩,如果购买 0.1 ~ 1 ETH,就有概率赢得 25% 副奖池奖金,购买更多则比例越大。

一进入游戏界面,就会看到 鲜明提示 ,通知当前中奖概率和奖池金额。这一设计,原本是想增加游戏趣味性,并起到吸引资金入场、延长游戏时间的作用。但实际情况却并非如此。

通过观察 LastWinner 游戏合约以及部分地址的异常交易行为,我们心中有了 初步答案 。

让我们把时间退回到 20 多天前, 早在 7 月 24 日 ,安比(SECBIT)实验室和派盾(PeckShield)科技分别同时预警:Fomo3D 游戏的智能合约存在随机数漏洞可被利用,Fomo3D 及所有抄袭源码的山寨合约均存在该安全漏洞 [2]。原本设计上随机性较大的空投游戏可通过 特殊手段操纵 ,大大提高中奖概率。

经安比(SECBIT)实验室字节码智能扫描工具逆向分析,Last Winner 游戏空投奖励代码与 Fomo3D 基本一致,相似度达 91%,可能存在同样漏洞。随着游戏火爆进行,机敏的黑客肯定也闻风而动。

不能说的秘密:黑客制造秘密武器攫取高额收益

在区块链态势感知系统所展现出来的数据面前,我们不由地倒吸一口凉气。

图中的这些可疑地址,如同“病毒”一般紧紧缠绕在 Last Winner 合约四周,肆意吞噬着 Last Winner 内的资金。

我们观察到,图中紧靠 Last Winner 的这些地址,有着 类似的行为模式 。

如:

1.不停地往某合约地址上发起交易,同时附带 0.1 个以太币 2.不少交易状态为失败 3.成功的交易又会涉及大量“内部交易” 4.“内部交易”调用逻辑十分复杂,并伴随大量合约的创建和自毁

安比(SECBIT)实验室迅速得出初步结论:这些不明合约就是黑客用来攻击 Last Winner 的秘密武器,黑客正是通过这些合约,持续吸走 Last Winner 游戏内的以太币。

案发现场:大量类似交易,超高回报率

上面态势感知图中, 占地面积最大 的嫌疑地址引起了我们的注意:0xae58,于是从这个地址展开了追踪。

8 月 9 号当天,0xae58 地址内以太币余额就以超过 300 个,而当时他正在大量往地址 0×5483 上发起交易,每笔交易转账金额都是 0.1 Ether。显然,黑客正通过 0×5483 智能合约向 LW 发起攻击。


Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光
让我们观察下面这条状态显示为成功的交易。表面上看是 0xae58 向攻击合约 0×5483 转了 0.1 Ether,实际却涉及了一大堆地址间的相互转账,最终随着 0x7c77 合约 自毁 ,0.189 个 Ether 转移回 0xae58 的账户中。
Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光

这十分神奇,攻击者投入 0.1 个以太币,最终收获 0.189 个, 瞬间回报率高达 89% ,简直暴利。

我们很快发现,除了 0xae58 地址外,还有 四个地址 也持续不断地向 0×5483 合约发起类似交易,持续获得高额回报。

而失败的交易,仅消耗 27712 燃料(Gas), 成本损耗十分低 。

研究目标立刻锁定为攻击合约 0×5483。由于无法获得源码,安比(SECBIT)实验室立刻使用内部工具展开逆向分析。

暴利:数据面前我们再次震惊

8 月 13 日,当我们沉浸在研究黑客的攻击合约各种细节优化和精巧设计之时,黑客攻击数据全景分析新鲜出炉。

其中,攻击获利最大的是以 0x820d 地址为首的团队。他们累计获利超过 5000 个以太币。AnChain.ai 团队和安比(SECBIT)实验室将该黑客团伙精确定位,并将其命名为 BAPT-LW20 (Blockchain APT Last Winner)。

BAPT-LW20 团队在短短 6 天时间内,共发送将近 5 万笔交易,从中攫取 5194 个 Ether,获利价值将近 1200 万人民币。

由下图每小时发起的 攻击交易数量趋势图 (下图),我们可以看出攻击的高峰期发生在 8 月 8 日 ~ 10 日 ,每小时平均攫取将近 100 以太币,将近 22 万人民币。这正好也是 LW 游戏最火爆的时间段。随着游戏进入后期,入场资金急剧下降,收益降低,黑客也不得不也降低了攻击频率。

再看看 黑客每小时攫取以太币数量趋势图 (下图)。惨淡的漫漫熊市里,黑客却在狂赚以太币。


Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光

下图是“Last Winner 中黑客的交易量占比和攫取 ETH 占比”,可见黑客发送的交易量只占总交易量的 9.877%,但是去攫取了Last Winner奖金池中49%的奖金。黑客的娴熟攻击技能,为他们带来了普通玩家难以企及的好运,而普通玩家在这场游戏里面几乎很难获得空投奖励。


Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光
火线追凶:BAPT-LW20 团队攻击 LW 始末

安比(SECBIT)实验室尝试追踪复原 BAPT-LW20 团队攻击时间线。

下图是 BAPT-LW20 团队某账户余额变动情况。


Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光

0x820d 是 BAPT-LW20 团队所有攻击合约的部署者,也是攻击的实施者之一,可认为是 BAPT-LW20 团队的队长。0x820d 地址最早活跃于 7 月 20 日 ,账户中的初始以太币均由 0x73B6 地址转入。而 0x73B6 也是同一天开始活跃的新地址,它的初始以太币来自总部位于美国旧金山的 Kraken 交易所。

0x820d 在收到来自 0x73B6 的 10 个以太币后,随即部署了它的第一个合约。可能有些地方不太理想,他并没有继续使用该合约。 三分钟后 ,0x820d 部署下了第二个合约,攻击对象是 Fomo3D。在一组准备工作设置、若干次失败的调用以及两次虽然成功但却没有收益的尝试过后,0x820d 应该是发现了攻击合约里的 bug 和优化空间。

在接下来的 14 个小时内 ,他依次部署了 8 个合约进行攻击测试,无奈都不成功。终于在第 9 个合约 0xBad7 中首次完成攻击,以 0.1 ETH 的投入换回了 0.125 ETH。

0xBad7 是 0x820d 团队首个可以正常工作的攻击合约,他们在 7 月 21 日至 7 月 23 日三天时间内总计调用该合约 11551 次,小有斩获。

7 月 23 日,0x820d 又部署了新的合约,将攻击对象转移为另一款 Fomo3D 山寨游戏老鼠会 RatScam (0x5167350d082c9ec48ed6fd4c694dea7361269705),0x820d 团队在一天时间内使用了 2299 次攻击合约。

一天后,0x820d 又找到了新目标,一个名为 FoMoGame (0x86D179c28cCeb120Cd3f64930Cf1820a88B77D60) 的山寨游戏,部署新合约(0xb599)进行攻击。这款游戏知名度不高,入场资金并不多,黑客调用了 126 次之后就放弃。

接下来的 三天内 ,0x820d 前后部署了 10 个新合约进行优化与攻击测试。

终于,在 7 月 26 日 上线了他们的新版攻击合约(0×5483)。该合约总共发生过 23835 笔交易,最近一次活跃时间在 8 月 10 号(7 天前)。这款攻击合约,可由攻击者 自定义受害游戏合约地址 。因此 0x820d 在接下来的几天内, 持续混合攻击 Fomo3D 原版、RatScam、FoMoGame 等游戏 ,并持续观察其他山寨游戏的动态,等待时机。同时,继续部署若干个新合约进行调优测试。

终于, 8 月 6 日 Last Winner 游戏上线, 24 小时后 0x820d 团队就使用准备好的 0×5483 合约,针对 Last Winner 发起第一次攻击,并在接下来的 4 天内集中力量,疯狂利用空投漏洞展开攻势。

8 月 10 日,0x820d 调用 0×5483 攻击合约 withdraw 接口,提走了里面的余额,攻击疑似暂停。

原来,他们早已经部署了新版合约攻击合约 0x9C10,又发起了超过 30000 笔交易,至今仍在活跃攻击。

不仅仅是空投:BAPT-LW20 黑客团队拿走 LW 最终大奖

北京时间 8 月 17 日上午,Last Winner 游戏第一轮最终结束,最终大奖由 0×5167 地址获得,奖金额总计 7,754 以太币。


Last Winner的最后赢家:智能合约超大规模黑客攻击手法曝光
而这个地址正是 BAPT-LW20 黑客团队的五个地址之一。 如下图,14 小时前,黑客还在利用 攻击合约 获取空投奖励。随后,他改变了方案,直接用自身地址购买道具参与游戏,不断尝试夺取最终大奖。在此之后,又继续调

Viewing all articles
Browse latest Browse all 12749

Trending Articles