Update vom 7. November:
Am 6. November entfernte StatCounter das schädliche Script. Wenige Stunden zuvor stoppte gate.io die Nutzung des StatCounter Analytics Diensts, um weitere Kompromittierungen zu verhindern. Die Nutzung beider Webseiten ist nun wieder gefahrlos möglich.
Am 3. November gelang es Angreifern erfolgreich in StatCounter vorzudringen – einer der führenden Web Analytics Plattformen. Der Dienst wird von vielen Webmastern benutzt, um Besucherstatistiken zu erfassen und auszuwerten, ähnlich wie bei Google Analytics. Für die richtige Funktionsweise integrieren die Webmaster üblicherweise einen externen JavaScript-Tag auf ihrer Website. Dieser Tag enthält Code von StatCounter in form von www.statcounter[.]com/counter/counter.js. Durch die Kompromittierung der StatCounter-Plattform konnten die Angreifer JavaScript-Code in alle Webseiten einfügen, die auf StatCounter zurückgreifen.
Laut eigenen Angaben verfügt StatCounter über mehr als zwei Millionen verknüpfte Webseiten. Darüber hinaus werden Statistiken über mehr als 10 Milliarden Seitenaufrufe pro Monat berechnet. Diese Informationen stehen im Einklang mit dem Alexa-Rang, der momentan etwas mehr als über 5000 liegt. Zum Vergleich: Die offizielle Website der Debian-Linux-Distribution debian.org besitzt einen ähnlichen Alexa-Rang.
Die Cyber-Angreifer modifizierten das www.statcounter[.]com/counter/counter.js Script in dem sie ein Schnipsel Schadcode in der Mitte hinzufügten, wie in verschönerter Form unten dargestellt. Das ist ungewöhnlich, da Cyber-Attacker üblicherweise zusätzlichen Schadcode am Anfang oder am Ende einfügen. Aber wer zusätzlichen Code verschleiern möchte, fügt diesen eher in der Mitte des Scripts ein, sodass die Anomalität schwieriger zu entdecken ist.
Das Script enthält den Dean Edwards-Packer, den wahrscheinlich beliebtesten JavaScript-Compressor. Das Entpacken gestaltet sich trivial, sodass der tatsächliche Script-Code zum Vorschein kommt – wie hier zu sehen:
Der Konnex zur Krypto-Börse gate.io
Die Codezeilen sollen überprüfen, ob die URL myaccount/withdraw/BTC enthält. Hieraus können wir schon die Intention der Cyber-Angreifer ableiten, eine Bitcoin-Plattform attackieren zu wollen. Bei erfolgreicher Überprüfung fügt das Script der Webseite ein neues script-Element hinzu und baut es in https://www.statconuter[.]com/c.php ein.
Wir möchten an dieser Stelle auf die von den Angreifern zur StatCounter sehr ähnlich registrierte Domain hinweisen: statconuter [.]com. Die Cyberkriminellen tauschten lediglich zwei Buchstaben. Bei einer Log-Überprüfung fällt das nicht sofort auf. Interessanterweise haben wir bei der Überprüfung des passiven DNS der Domäne festgestellt, dass diese Domäne bereits 2010 wegen Missbrauchs gesperrt ist.
Wie oben bereits erwähnt, haben es die Cyber-Angreifer mit dem Script auf den spezifischen URI myaccount/withdraw/BTC abgesehen. Es stellte sich heraus, dass unter den verschiedenen Krypto-Börsen zum Zeitpunkt des Schreibens nur gate.io eine gültige Seite mit diesem URI hatte. Wir gehen davon aus, dass diese Tauschbörse das Hauptziel des Angriffs ist. Insgesamt ist sie sehr beliebt, mit einem globalen Alexa Rank von um die 26.000 und in China sogar um die 8.000.
Laut coinmarketcap.com werden auf dieser Plattform täglich mehrere Millionen Dollar transferiert – allein 1,6 Millionen US-Dollar davon in Bitcoin. Hinsichtlich dessen ist es für Cyberkriminelle ein lohendes Vorhaben, Kryptowährungen von dieser Plattform zu stehlen.
Die unten abgebildete Webseite https://www.gate[.]io/myaccount/withdraw/BTC wird verwendet, um Bitcoin von einem gate.io-Konto an eine externe Bitcoin-Adresse zu übertragen.
Als wenig überraschend stellte sich heraus, dass die Payload der zweiten Stufe (von statconuter[.]com/c.php) Bitcoins stehlen sollte. Daher war es sinnvoll, das Script in die gate.io-Bitcoin Transfer-Webseite einzufügen. Dieses Script wurde auch mit Hilfe des Dean Edwards-Packers komprimiert. Die entpackte Version sieht wie folgt aus:
Bereits auf der echten gate.io Webseite gibt es eine doSubmit Funktion, welche aufgerufen wird, sobald der User auf die Schaltfläche „Senden“ klickt – Das haben die Malware-Entwickler umdefiniert.
Das Script ersetzt die Ziel-Bitcoin-Adresse automatisch durch eine Adresse, die den Angreifern gehört, wie beispielsweise 1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad. Der schädliche Server generiert jedes Mal eine neue Bitcoin-Adresse, wenn ein Besucher das statconuter[.]com/c.php script lädt. Von daher lässt sich kaum nachvollziehen, wie viel Geld an die Cyberkriminellen bereits geflossen ist.
Je nachdem, ob das Opfer einen Betrag über 10 BTC eingibt oder nicht, verwendet das Script des Angreifers entweder diesen Betrag oder das tägliche Auszahlungslimit des Opfers. In unserem Testkonto ist das Auszahlungslimit standardmäßig auf 100 BTC festgelegt. Schließlich übermittelt das bösartige Script das Formular, das die Übertragung vom Konto des Opfers zum Wallet des Angreifers vollzieht.
Diese Weiterleitung ist kaum wahrnehmbar für die Opfer, da das Ersetzen der Ziel-Adresse nur kurz nach dem Klick auf „Senden“ passiert. Die Transaktion geschieht also ziemlich schnell und wird wahrscheinlich im Moment des Geschehens nicht einmal angezeigt.
Jedes Mal, wenn das bösartige Script an ein Opfer übermittelt wird, generiert es eine neue Bitcoin-Adresse. Wir konnten also nicht feststellen, wie viel Bitcoin die Cyber-Angreifer bereits eingesammelt haben. An die Adresse aus dem Script, welches an unsere Testmaschine gesendet wurde, sind noch keine Bitcoin eingegangen.
Fazit
Selbst ohne zu wissen, wie viele Bitcoin die Cyberangreifer ergaunerten, zeigen sie, dass die Krypto-Börse gate.io im Mittelpunkt des Angriffs stand. Um das zu erreichen, kompromittierten sie die Webseite des Analyse-Diensts StatCount. Im Endeffekt können bis zu zwei Millionen Webseiten gefährdet sein – darunter auch mehrere staatliche Webseiten.
Uns beweist der Cyber-Angriff, dass selbst wenn Webseiten von sich aus gut geschützt sind, eingebetteter JavaScript-Code von Dritten zu Schwachstellen und Sicherheitslücken führen kann.
Wir benachrichtigten sowohl StatCounter als auch gate.io sofort nach der Entdeckung der Sicherheitslücke über die schädlichen Aktivitäten.
Fragen und Samples können jederzeit an threatintel@eset.com eingereicht werden.
Indicators of Compromise
Malicious URLs
- statcounter[.]com/counter/counter.js
- statconuter[.]com/c.php