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.
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).
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.
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.
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.
Grafik 6 zeigt den CPU-Verbrauch beim Besuch der Webseite 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. 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. 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.
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.
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 |
|
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