1 Überblick

In den letzten Monaten stolperten wir über ein paar JavaScript Dateien, die anscheinend für das Schürfen von Kryptowährungen direkt im Browser verantwortlich sind. Schon seit geraumer Zeit nutzten Cyberkriminelle den Vorteil von Kryptowährungen, um Profite zu generieren. Allerdings verwenden sie in der Regel Malware oder potenziell unerwünschte Anwendungen, die sie auf den Computern ihrer Opfer installieren.

In unserem Fall findet das Schürfen der Kryptowährungen direkt durch den Browser statt, wenn der User gewisse Webseiten ansteuert. Aus dieser Tatsache heraus besteht keine Notwendigkeit, den Rechner des Opfers zu kompromittieren. Alles was benötigt wird, ist ein Internet-Browser mit aktiviertem JavaScript – und das ist standardmäßig voreingestellt. Mit diesem Beitrag möchten wir hinter die Kulissen der Bedrohung schauen. Unsere Forschungsergebnisse werden hier teilweise sehr ausführlich dargelegt.

Wir begannen damit, in unseren Telemetrie-Daten zu suchen. Es stellte sich heraus, dass die Verteilung teilweise über Malvertising stattfand. Diese CPU-intensive Aufgabe ist in der Regel von der Mehrheit der Werbenetzwerke verboten, weil sie die Nutzererfahrung erheblich beeinträchtigt.
Auf den ersten Blick scheint das Schürfen von Kryptowährungen über den Internet-Browser kontraintuitiv zu sein. Mining von Bitcoin benötigt viel CPU-Power. Später erfahren wir aber, dass Cyberkriminelle vor allem auf Web Mining setzen, da sie keine Malware auf Rechnern von Opfern verteilen müssen. Es ist außerdem leichter, eine signifikante Anzahl von Computern über “infizierte“ Webseiten zu erreichen, als über das gezielte Kompromittieren von einzelnen Maschinen.

Obwohl die unerwünschten Skripte nicht länderspezifisch sind, bemerkten wir, dass die Kampagne hauptsächlich in Russland und der Ukraine stattfand. Grafik 1 zeigt die fünf Länder, in der die unerwünschten Skripte hauptsächlich ausgeführt wurden. An dieser Stelle möchten wir anmerken, dass sich die Zielgruppenorientierung wohl anhand der auf den Webseiten eingesetzten Sprachen ergeben hat. Wir waren durchaus auch in der Lage mit einer US-amerikanischen IP-Adresse die “infizierten“ Webseiten zu besuchen.

Länder, die von dem Web Miner betroffen sind nach Angaben der ESET LiveGrid® Telemetrie

Grafik 1: Länder, die von dem Web Miner betroffen nach Angaben der ESET LiveGrid® Telemetrie sind

Grafik 2 zeigt den zeitlichen Verlauf des Cisco Umbrella Top 1M Rankings für die Domain reasedoper[.]pw. Hier sind die JavaScript Skripte gehostet. Wir bemerken einen signifikanten Anstieg der DNS-Lookups für die Domain über den Zeitraum von März bis April 2017. Am 28. Juni 2017 rangierte reasedoper[.] pw auf Platz 26.300. Das ist fast der gleiche Rang (26.293 am selben Tag) wie auf GitHubs sehr beliebter Text-Sharing-Website GitHub Gist (gist.github.com).

Grafik 2: Rang von reasedoper[.]pw im Cisco Umbrella Top 1M Ranking.

Grafik 2: Rang von reasedoper[.]pw im Cisco Umbrella Top 1M Ranking.

2 Rückblick

Die Idee vom Schürfen von Kryptowährungen in Browsern ist keine neue. Im Jahr 2013 gründeten Studenten des MIT das Unternehmen Tidbit. Es bot einen Web Service an, um Bitcoin zu schürfen. Anstatt Werbung einzublenden, konnten Webmaster Tidbit-Scripts auf ihrer Webseite einbinden, um Geld durch Bitcoin Web Mining einzunehmen. Die Dienstleister erhielten allerdings eine Vorladung von der Staatsanwaltschaft von New Jersey, da sie die Rechnerleistung der User durch ihren Webmining-Dienst ungefragt anzapften. Letztendlich erreichten sie einen Vergleich, mussten ihr Projekt aber aufgeben.

Bereits früher stellten andere Dienste, wie bitp[.]it, Web-Browser Bitcoin Mining zur Verfügung. Allerdings wurden die Services aufgrund der Ineffizienz des Bitcoin Minings mit regulären CPUs oder GPUs eingestellt. Das bitp[.]it Projekt schlossen die Betreiber im Juli 2011.

3 Verbreitungsmethode der Web Mining Skripte

Die Verbreitungsmethode für die Art von Script ist einer der Kernpunkte, um zu bestimmen, ob sie als seriös oder unerwünscht einzustufen sind. In diesem speziellen Fall waren wir in der Lage, zwei Wege zu finden, wie User zur Ausführung der Skripte gezwungen werden: Malvertising und in den Quellcode geschriebene JavaScript Codeschnipsel. Grafik 3 zeigt das globale Verbreitungsschema der Mining Skripte.

Grafik 3: Verbreitungsschema der Mining Skripte

Grafik 3: Verbreitungsschema der Web Mining Skripte

Malvertising

3.1 Malvertising

Die hauptsächliche Verbreitung der Mining Skripte findet durch Malvertising statt. Üblicherweise besteht diese Methode daraus, Traffic eines Werbe-Netzwerks zu kaufen und anstelle von Werbeeinblendungen schädliche oder zumindest unerwünschte JavaScript Dateien zu verbreiten. In unserem vorliegenden Fall können wir nicht mit Sicherheit sagen, ob die Einbettung der Skripte gewollt oder ob listat[.]biz kompromittiert war. Allerdings ist listat[.]biz sehr verdächtig, da es scheinbar LiveInternet counter (LI stat) nachahmt, welcher ein legitimer Web Counter ist. Darüber hinaus wurden viele verdächtige Domains mit der gleichen E-Mail-Adresse registriert, darunter lmodr[.]biz, die auch im Malvertising-Schema auftauchen.

Die Hauptseiten, welche den Mining Skripten im Juli 2017 am meisten Traffic bescherten, sind in Grafik 4 abgebildet. Wir bemerkten, dass es sich bei dem überwiegenden Teil um Video Streaming und In-Browser Gaming Webseiten handelte. Das ergibt auch Sinn, denn die Besucher dieser Webseiten tendieren eher dazu, mehr Zeit auf derselben Website zu verbringen, während sie einen Film schauen oder ein Videospiel spielen. Außerdem ist zu erwarten, dass diese Websites höhere Rechenleistung fordern als andere. Diese Tatsache verschleiert den zusätzlichen CPU-Load, der vom Mining Script hervorgerufen wird. Das erlaubt dem Mining Script länger ausgeführt zu werden und mehr Rechenleistung in Anspruch nehmen zu können.

Grafik 4: Webseiten, welche nach ESET LiveGrid® Telemetrie-Daten den meisten Traffic erzeugen.

Grafik 4: Webseiten, welche nach ESET LiveGrid® Telemetrie-Daten den meisten Traffic erzeugen

Die von uns beobachtete Seite mit den meisten schädlichen Werbeaufrufen okino[.]tv scheint besonders verbreitet zu sein. Zum Zeitpunkt der Erstellung des Artikels, besaß die Seite einen Alexa Rank in Russland von 907 und in der Ukraine von 233. Auch einige andere Seiten weisen eine gewisse Popularität auf, da sie in Russland bei Alexa unten den Top 1000 rangieren.

Okino[.]tv Alexa Rank

Grafik 5: Okino[.]tv Alexa Rank

Grafik 6 zeigt den CPU-Verbrauch beim Besuch der Webseite wotsite[.]net.

CPU-Verbrauch beim Besuch von wotsite[.]net

Grafik 6: CPU-Verbrauch beim Besuch von wotsite[.]net

Grafik 7 erläutert ein spezifisches Beispiel für eine Reihe von nachgeschalteten Weiterleitungen, wie Grafik 3 von oben bereits zeigt. Die ersten drei Hops fügen bloß das Skript ein, welches dann vom nächsten Hop bereitgestellt wird. Das ist in Grafik 8, 9 und 10 zu sehen. Die erste, in der Weiterleitung gebrauchte Domain (in unserem Fall skyadsvideo1[.]ru), ist nicht stets dieselbe. Wir sahen auch die Domain code.moviead55[.]ru. Beide lösen zu selben IP-Adressen auf: 167.114.238.246 und 167.114.249.120. Eine Whois-Abfrage zur Domain skyad[.]video, dessen Subdomain code.skyad[.]video auch in dieselben zwei IP-Adressen aufgelöst wird, stellte klar, dass die Domains anscheinend zum SkyAdVideo Netzwerkeigentümer gehören.

Weiterleitungen von okio[.]tv zum Mining Script

Grafik 7: Weiterleitungen von okio[.]tv zum Mining Script

Von der okino[.]tv Homepage

Grafik 8: Von der okino[.]tv Homepage

Vom Skript von skyadsvideo1[.]ru/code.php (nach Enthüllen)

Grafik 9: Vom Skript von skyadsvideo1[.]ru/code.php (nach Enthüllen)

lmodr[.]biz/mdstat2.php

Grafik 10: lmodr[.]biz/mdstat2.php

Eine Suche auf der Webseite PassiveTotal zeigte, dass listat[.]biz bloß zum Mining Script umleitete, außer am 1. Juni und 15. Juli. An diesen Tagen erfolgte eine Weiterleitung zu realen Web Countern und zu anstatalsl[.]biz. Alles sieht danach aus, dass lmodr[.]biz und listat[.]biz nur für das Einfügen des unerwünschten Mining Skripts gebraucht wurden.

listat[.]biz/3.html

Figure 11 - listat[.]biz/3.html

Zu unserer Überraschung stellten wir außerdem fest, dass der erste Hop moviead55[.]ru auch einen Miner einbetten konnte. Er wird direkt auf der Website gehostet und schürft die Kryptowährung ZCash. Es benutzt einen Mining Pool an ws.zstat[.]net:8889 und kommuniziert über Websockets. Allerdings konnten wir keine Ähnlichkeiten im Code mit dem auf reasedoper[.]pw gehosteten Skript feststellen. Folglich gehen wir davon aus, dass unterschiedliche Gruppen versuchen, Profite zu generieren, indem sie die Rechenleistung anderer User missbrauchen.

3.2 Hardcoded JavaScript Code

Im Google Cache fanden wir rund sechzig Webseiten, die alle nahezu das gleiche JavaScript Snippet wie in Grafik 10 aufwiesen. Die Homepages dieser Webseiten betten ein Script von einer script.php URL.

Grafik 12: Script Injection auf der Homepage

Das Skript ruft URLs von verschiedenen Domains auf, inklusive static.reasedoper[.]pw, welche die JavaScript-Skripte für das Mining hostet. Die Analyse der Skripte folgt dann im nächsten Abschnitt. Wir bemerkten außerdem, dass eine der anderen betroffenen Domains, listat[.]org, IP-Adressen an listat[.]biz weitergibt. Diese Domain ist maßgeblich für die Malvertising Kampagne verantwortlich. Eine weitere Gemeinsamkeit ist ein Name einer Funktion. Er lautet show_260. Dieser Funktionsname kommt auch in der Malvertising Kampagne vor.

Im IoC-Abschnitt ist eine unvollständige Liste von betroffenen Domains zu finden. Keine davon scheint eine sehr bekannte Webseite zu sein.

4 Das Schürfen der Kryptowährung

Etliche Skripte sind auf static.reasedoper[.]pw und mataharirama[.]xyz gehostet. Die Skripte mit der Bezeichnung multi im Namen können mehrere Prozesse anstoßen, während die mit single dazu analog nur einen Prozess ausführen. Sie sind die hauptsächlichen JavaScript-Dateien, welche die Schürfer starten, um verschiedene Kryptowährungen zu schürfen. Diese Skripte sind simple verschleiert. Zeichenketten werden ausschließlich mit Hilfe der hexadezimalen Escape-Sequenz gebildet (“\x42\x43…”).

Grafik 13 zeigt, dass Feathercoin, Litecoin und Monero geschürft werden können. Zurzeit scheint es allerdings so, als ob kein Litecoin-Mining stattfindet.

Drei Coins können geschürft werden

Grafik 13: Drei Coins können geschürft werden

Feathercoin und Litecoin sind von Bitcoin inspirierte Kryptowährungen. Der Unterschied besteht in den unterschiedlich verwendeten Hash Algorithmen: neoscrypt respektive scrypt. Das Ziel ist die Reduzierung der Notwendigkeit von spezieller Hardware wie ASIC Miner, anstelle normaler CPUs. Für das Schürfen der beiden genannten Coins ist nicht nur CPU-Power erforderlich, sondern auch mächtig viel Arbeitsspeicher.

Die letzte Altcoin, Monero, unterscheidet sich von den anderen beiden. Das Hauptfeature dieser Kryptowährung ist eine stärkere Privatsphäre als beispielsweise bei Bitcoin. Es ist sehr schwer, Transaktionen zu verfolgen, da die Blockchain nicht transparent ist. Insbesondere verwendet Monero „Ringsignaturen“, um die echte Absenderadresse unter mehreren möglichen zu verbergen.

Außerdem wird für jeden Transfer ein neuer Public Key erzeugt, um den echten Empfänger zu verstecken. Der benutzte Hash Algorithmus cryptonight benötigt auch viel Speicherplatz, insgesamt ergibt es aber Sinn, diese Altcoin Kryptowährung für das JavaScript Mining auf normalen Rechnern einzusetzen.

Da das Schürfen von Kryptowährungen normalerweise eine Menge Computerleistung erfordert, überrascht es nicht, dass sich die Malware-Entwickler für den Einsatz von asm.js anstelle der Implementierung des normalen JavaScript Hash Algorithmus entscheiden. Asm.js wird nachgesagt, zwischen 1,5- und 2-mal langsamer als die reguläre Implementierung des Algorithmus in C zu sein. Drei Algorithmen werden unterstützt: scrypt.asm.js (Litecoin), cryptonight.asm.js (Monero) and neoscrypt.asm.js (Feathercoin).

Letztendlich ist die Feathercoin Wallet Adresse in allen Skripten dieselbe, während für Monero unterschiedliche angegeben sind. Allerdings werden die gleichen Adressen in verschiedenen Skripten geteilt. Folglich vermuten wir, dass alles zur gleichen Gruppe führt.

Da Moneros Hauptfeature Anonymität ist, waren wir nicht in der Lage, den Geldbestand in den Wallets abzurufen. In Bezug auf Feathercoin konnte keine Netzwerkadresse ausgemacht werden. Wir sind nicht sicher, was der Grund dafür sein könnte, aber diese Tatsache kann auf die Nutzung eines Mining Pools hindeuten.

5 Verbindung mit früheren Web Miner

In den Mining Scripts haben wir eine in den Quellcode geschriebene Feathercoin Adresse 6nmfjYVToBWb2ys4deasdydPj1kW9Gyfp4 gefunden. Eine kurze Recherche in Google ergab, dass diese Adresse schon seit einigen Jahren in Gebrauch ist.

In einem Beitrag, welcher Anfang 2016 erschien, klagte ein Internet User über ein Skript, das 100% CPU-Last erzeugt. Was dort beschrieben wurde, gleicht unseren Entdeckungen aus den Analysen und den übereinstimmenden Feathercoin Adressen. Zur Zeit unserer Entdeckung war das Mining Script bei minecrunch[.]co gehostet. Eine Suche nach der Domain führte uns zu einem Thema, das auf cryptocurrencytalk.com diskutiert wurde. Dort beschreibt der User Kukunin seinen "bescheidenen Service - MineCrunch". In Bezug auf die Performance merkt Kukunin an:

“Während klassisches CPU Mining zu wenig Profit abwirft, ist Distributed Mining (durch hunderttausende Besucher) von neuen Krypto-Coin (CPU-only beispielsweise) mit nativer Geschwindigkeit (dank asm.js) eine runde Sache.

[…]

Der C Scrypt Miner wurde in JavaScript mit Hilfe von Emscripten übersetzt, um die beste Performance zu erreichen. Sie ist lediglich 1.5-mal langsamer als die ursprüngliche cpuminer Application."

Ein Link im ersten Post (https://kukunin.github.io/webminer/) zeigt dieselbe Feathercoin Adresse als Beispiel. Das untermauert die Verbindung zwischen dem reasedoper[.]pw Miner und minecrunch[.]co. Wenn das Ziel von MineCrunch die Bereitstellung eines offenen Services für Distributed Mining sein soll, ist es fragwürdig, warum die von reasedoper[.]pw generierten Profite nur dem MineCrunch-Entwickler (oder Eigentümern der fest codierten Adresse) zugutekommen.  Es ist sehr unwahrscheinlich, eine andere Affiliate-ID angeben zu können.

Fazit

Trotz des Performance-Downgrades bei der Verwendung eines JavaScript Miners anstelle eines nativen Programms, kann die Anzahl der Besucher, welche eine Miner-Website erfährt, zur Profit-Generierung beitragen. Im Juni war die Anzahl der DNS Lookups für reasedoper[.]pw so hoch wie für gist.github.com, nach Angaben von Cisco Umbrella Top 1M.

Selbst wenn JavaScript Miner als Alternative zu herkömmlichen Ads angesehen werden können, stellen sie dennoch keine sinnvollen Inhalte für die User bereit und sind daher als ungewollte Programme anzusehen. Die New Jersey Abteilung für Verbraucherschutz setzt das Schürfen von Bitcoin auf anderen Rechner ohne Erlaubnis der Besitzer gleich, mit dem unerlaubten Zugang zu den Geräten. Folglich sollen die Entwickler solcher Services das Verhalten ausführlich deklarieren, bevor wirklich Kryptowährung geschürft werden darf – Im Verteilungsschema im Sinne von Malvertising kann davon allerdings nicht die Rede sein.

Letztendlich können sich User gegen diese unerwünschten Bedrohungen wehren, indem sie ausgeklügelte Adblocker oder Script-Blocker Add-ons / Erweiterungen für ihre Browser installieren. ESET Nutzer können in den Einstellungen die Option “Erkennung potentieller unerwünschter Software“ aktivieren und sich somit vor solchen schädlichen und unerwünschten Skripten schützen. ESET erkennt das hier besprochene Skript als JS/CoinMiner.A potentially unsafe application.

Mehr Informationen sind unter https://support.eset.com/kb3204 zu finden.

IOCs

Mining und Malvertising URLs

Domain URL Note
static.reasedoper.pw static.reasedoper[.]pw/launcher.0.single.js
static.reasedoper[.]pw/launcher.1.single.js
static.reasedoper[.]pw/launcher.2.single.js
static.reasedoper[.]pw/launcher.0.multi.js
static.reasedoper[.]pw/launcher.1.multi.js
static.reasedoper[.]pw/launcher.2.multi.js
[…]
Website that hosts the mining scripts.
mataharirama[.]xyz mataharirama[.]xyz/launcher.9.single.js
    Copy of reasedoper. They share 2 IP addresses:

  • 163.172.162.231
  • 163.172.153.226
listat[.]biz listat[.]biz/3.html Redirect to reasedoper[.]pw or mataharirama[.]xyz.
lmodr[.]biz lmodr[.]biz/mdstat.php Redirect to listat[.]biz

Hash

Hash (SHA-1) File name Detection name
fa2f4cf2f38383477a0a78d7e3d0841f254c5adf launcher.0.multi.js #rowspan#
b9cd68313b72deac23a53f44ae68598ec139ad27 launcher.0.single.js #rowspan#
e44c502ff69b6bbe291e8125304203af0f675aa3 launcher.1.multi.js #rowspan#
7ce2fb5cea77cbd38cd54533bce81d1b0b0d7a82 launcher.1.single.js #rowspan#
3b28b5f079f6d2bdaa028b31a2b5fa9734f832f2 launcher.2.multi.js #rowspan#
51b97b46fe53cc5aaedc3f45d6517a74008ca9cd launcher.2.single.js #rowspan#
38ccae4555505c8d5f36a9d9c9a20fe80a11304a launcher.3.multi.js #rowspan#
2aa56f945c7d3805d3ee7851cdd4e932f1cd3160 launcher.3.single.js #rowspan#
ae6fe31b8355a3e70d6bf6c89ff7ae18c8de41d0 launcher.4.single.js #rowspan#
fc7e8fb976cc260ceb680e10713e4640b23dde79 launcher.4.multi.js #rowspan#
d5482f2f7bab8a8832f65f6ba5dc2edc5e19687f launcher.5.multi.js #rowspan#
b5d475d9c084d652faabe3888bbda5b673ebe9dd launcher.5.single.js #rowspan#
626646c572211e157dceeb4b918b9f46c3c656f5 launcher.6.single.js #rowspan#
3c70b32180c2e6ae39006eee867135650c98cfa0 launcher.6.multi.js #rowspan#
80c11eb331758a4d6d581ddcb5ebeca9410afe93 launcher.7.multi.js #rowspan#
52317c0abdc69f356dd2865c1fd35923f8beb7d3 launcher.7.single.js #rowspan#
31d40684cd765ef6625fd9a03d2522d84f0ca79b launcher.8.single.js JS/CoinMiner.A potentially unsafe application
9bc931ec55d1fed45bec1c571a401f4a201a02cf launcher.8.multi.js #rowspan#
afae4cf246125671b7eae976c7329b4e0729e109 launcher.9.multi.js #rowspan#
3ac2e2d827e39bd802d5e3f7619099696bc38955 launcher.9.single.js #rowspan#
c4c5f13f0250364bd1321d038d56dbf1a97154f8 launcher.10.single.js #rowspan#
29695469e53822602d9b1884c2268a68e80df999 launcher.10.multi.js #rowspan#
b34216ee46ea1355cbc956514012e74ff9712129 launcher.11.multi.js #rowspan#
9394db4ba0ee70673d451547fd4ae40bfea6112d launcher.11.single.js #rowspan#
6f0bf3fa4dea541a7293b89661d539bb602218c6 launcher.12.single.js #rowspan#
3512351bd8903ae82cc1162fed4faaafceba893d launcher.12.multi.js #rowspan#
5adf5146a84699b6aca5e9da52bb629bceaa7726 launcher.13.single.js #rowspan#
8c45141791b94e172fd5ad8eaefebe5ebb8e729c launcher.13.multi.js #rowspan#
519928629becb1f8b18a56609b03d4cea3c52ddd launcher.14.multi.js #rowspan#
c5629530af39c99c25f83baee7db4a24a9d0aa03 launcher.14.single.js #rowspan#
bf3a1151bc4f8188f735583257ecbbd1eaff123f launcher.15.multi.js #rowspan#
6e5d2b1b9f1140079f3b48edec09c8515e77e14d launcher.15.single.js #rowspan#
12b1bfd6b49c02f928f0429f1505d114583c213c monero.worker.js #rowspan#
885f102c9d4dd2e286401756ca265e4aa3f7a664 scrypt.worker.js #rowspan#

Domains mit fest codiertem Injection Script

allday[.]in[.]ua
anekbook[.]ru
bike[.]co[.]ua
cg-lab[.]ru
dikobras[.]com
doctrina62[.]ru
ekavuz[.]ru
fenix-45[.]ru
ipnalog[.]ru
jobochakov[.]com
kharkov-arenda[.]com[.]ua
kuzdoska[.]ru
laminirovanievolos[.]ru
marlin-group[.]ru
mat4ast[.]com
megalifez[.]net
mirstihoff[.]ru
munirufa[.]ru
murlyka[.]net[.]ua
newscom[.]ru
obad[.]ru
ogms[.]ru
opinionblog[.]ru
optiplast[.]ru
otdamprimy[.]ru
pcook[.]ru
pogelanie[.]info
posbank[.]ru
programs-tv[.]ru
psinovo[.]ru
scoot-club[.]ru
ska4ka[.]com
stihi[.]by
stihoslov[.]ru
subcar[.]org
sumytex[.]in[.]ua
suntehnic[.]ru
td-klassik[.]ru
trbook[.]com[.]ua
vstupino[.]su
x-sport[.]info