Wer die Open Source Home-Theater Software „Kodi“ kennt, wird vielleicht bemerkt haben, dass die populäre Third-Party Addon Repository XvBMC-NL wegen Urheberrechtsverletzungen abgeschaltet wurde. Im Nachgang stellten wir nun fest, dass die Repository Teil einer bis zum Dezember zurückreichenden Crypto-Mining Kampagne war. Das ist der zweite öffentlich bekannte Fall, bei dem Cyberkriminelle Malware im größeren Maßstab durch Kodi-Addons verbreiteten. Außerdem ist es die uns erste öffentliche bekannte Crypto-Mining Kampagne, welche via Kodi-Plattform ausgespielt wird. Interessanterweise visierten die Malware-Entwickler nur Kodi-Fans mit Linux- oder Windows-Betriebssystemen an.

Für diejenigen, die Kodi nicht kennen: Die beliebte Media Player Software bietet selbst keine Inhalte an, lässt sich aber durch Addons erweitern, über die auf Videos oder Musik zugegriffen werden kann. Die Erweiterungen erhält der User über die offizielle Kodi-Repository oder via zahlreicher Drittanbieter. Einige Third-Party Addons lassen den Benutzer auch auf Raubkopien zugreifen, weswegen Kodi kontrovers diskutiert wird.

Copyright-verletzenden Addons wurde bereits nachgesagt, die Kodi-User diverser Malware auszusetzen. Aber abgesehen von einem Vorfall, bei dem sich in einer Erweiterung ein DDoS-Modul befand, konnten bisher keine Beweise für Kodi Malware-Addons erbracht werden – bis jetzt!

Die Kodi Crypto-Mining Kampagne

Unserem Research nach zu urteilen, fügte man die von uns gefundene Malware im XvMBC Repository erst im Dezember 2017 bzw. Januar 2018 zu den populären Third-Party Addon-Repositories Bubbles und Gaia hinzu. Durch diese beiden Quellen sowie durch Update-Routinen unwissender User von Drittanbieter Addon-Repositories und vorgefertigten Kodi-Builds verbreitete sich die Malware auf vielen verschiedenen Kodi-Systemen.

Die Malware besitzt eine mehrstufige Architektur und ergreift Maßnahmen, um sicherzustellen, dass der finale Payload – also der Crypto-Miner – nicht einfach mit dem Addon in Verbindung zu bringen ist. Der Crypto-Miner läuft unter Windows und Linux und schürft die Kryptowährung Monero (XMR). Wir sind keiner auf Android- oder MacOS-Geräte abzielende Version begegnet.

Die Opfer der Crypto-Miner Kampagne kompromittierten sich mit der Malware wahrscheinlich über einen der drei Wege:

  • Sie fügten ihrer Kodi-Installation eine URL eines schädlichen Repositories hinzu, um einige Addons herunterzuladen. Das schädliche Addon wurde installiert, als sie ihre Kodi-Addons aktualisieren.
  • Sie installierten ein vorgefertigtes Kodi-Build, das die URL eines schädlichen Repositories enthielt. Das schädliche Addon wurde installiert, als sie ihre Kodi-Addons aktualisieren.
  • Sie installierten ein vorgefertigtes Kodi-Build, das ein schädliches Addon, aber keine Verbindung zu einem Repository für Updates enthielt. Sie waren zunächst kompromittiert, erhielten jedoch keine weiteren Updates für das schädliche Addon. War der Crypto-Miner jedoch bereits installiert, blieb er und erhielt Updates.

Laut den Telemetrie-Daten von ESET sind die fünf größten von dieser Bedrohung betroffenen Länder die Vereinigten Staaten, Israel, Griechenland, das Vereinigte Königreich und die Niederlande. Das ist nicht verwunderlich, gelten sie doch als die Länder mit dem höchsten Traffic-Aufkommen – laut einer Statistik der Unofficial Kodi Addon Community.

Eine andere Erklärung für die geografische Verteilung bilden die länderspezifischen Kodi-Builds, welche die bösartigen Repositories enthalten. Es könnte sich aber auch um schädliche Repositories handeln, die in den verschiedenen Ländern unterschiedlich stark nachgefragt wurde – wie beispielsweise die niederländische XvBMC.

Verteilung von ESET-Erkennungen des Crypto-Miners

Abbildung 1: Verteilung von ESET-Erkennungen des Crypto-Miners

Zum jetzigen Zeitpunkt sind die Repositories, von denen aus die Malware zuerst verbreitet wurde, entweder nicht mehr funktionstüchtig (Bubbles) oder sie verbreiten den bösartigen Code nicht mehr (Gaia). Allerdings sind unwissende Opfer, die sich den Crypto-Miner auf ihren Geräten installierten, wohl noch betroffen. Darüber hinaus ist die Malware nach wie vor auch in anderen Repositories und einigen vorgefertigten Kodi-Builds vorhanden – höchstwahrscheinlich ohne das Wissen ihrer Entwickler.

Zeitachse der Crypto-Mining Kampagne

Abbildung 2: Zeitachse der Crypto-Mining Kampagne

Technische Analyse der Crypto-Mining Kampagne

Wie funktioniert die Malware?

Nachdem die Opfer das schädliche Repository zu ihrer Kodi-Installation hinzugefügt haben, bietet das bösartige Repository ein Addon namens script.module.simplejson an - ein Name, der dem eines legitimen Addons gleicht und das wiederum von vielen anderen Addons verwendet wird. Während andere Repositories nur das script.module.simplejson in Addon-Version 3.4.0 ausgeben, stellt die schädliche Repository das Addon in der Versions 3.4.1 bereit.

Da Kodi zur Aktualisierungserkennung auf Versionsnummern angewiesen ist, erhalten alle Benutzer mit der aktivierten Funktion "Automatische Aktualisierung" (allgemeine Standardeinstellung) automatisch die Datei script.module.simplejson in Version 3.4.1 aus dem schädlichen Repository.

Der einzige Abschnitt, der in Version 3.4.1 gegenüber Version 3.4.0 geändert wurde, besteht aus Metadaten. Die addon.xml- Datei enthält eine zusätzliche <requires> -Zeile:

Diese Zeile weist Kodi an, ein Addon namens script.module.python.requests der Version 2.16.0 oder höher herunterzuladen und zu installieren. Das Addon script.module.python.requests wird aber nur vom schädlichen Repository bereitgestellt. Es ist eine Modifikation – des sonst eigentlich legitimen Addons script.module.requests – welche zusätzlichen, schädlichen Python-Code enthält.

Dieser Python-Code lädt eine Windows- oder Linux-Binärdatei herunter und führt diese aus. Die ausführbare Datei ist ein Downloader, der die endgültige Payload – den eigentlichen Crypto-Miner – abruft und startet. Wenn die Installation des Crypto-Miners erfolgreich war, initiiert der Python-Code die Selbstlöschung.

Das Ausführungsmodell der Malware

Abbildung 3: Das Ausführungsmodell der Malware

Der Python-Code

In dem hier analysierten Sample befindet sich der verschleierte bösartige Code in der Datei script.module.python.requests\lib\requests\packages\urllib3\connectionpool.py (Zeilen 846-862).

Verschleierter bösartiger Code in connectionpool.py

Abbildung 4: Verschleierter bösartiger Code in connectionpool.py

Wenn der Code entschleiert und kommentiert wird, ist er viel besser lesbar – wie in Abbildung 5 zu sehen:

Bösartiger Code nach Entschleierung (Kommentare vom ESET-Forscher hinzugefügt)

Abbildung 5: Bösartiger Code nach Entschleierung (Kommentare vom ESET-Forscher hinzugefügt)

Der Code ist eindeutig von jemandem geschrieben, der Kodi und die Addon-Architektur gut kennt. Das Skript registriert, auf welchem Betriebssystem es ausgeführt wird (nur Windows und Linux werden unterstützt, Android und macOS ignoriert) und stellt eine Verbindung zum C&C-Server her. Dann lädt es ein für das Betriebssystem geeignetes Downloader-Modul herunter und führt es aus.

Die Windows-Binärdatei wird in C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\TrustedInstaller.exe geschrieben. Das Linux-Pedant nach /tmp/systems/systemd.

Nach dem Abrufen und Ausführen des binären Downloader-Moduls vollzieht das Python-Skript - hier connectionpool.py – die Selbstlöschung. Auf Abbildung 4 zurückblickend, sehen wir, dass der bösartige Code mit den speziellen Markierungen # - + - und # -_- # umklammert ist. Der Code, der nach erfolgreicher Ausführung des binären Downloaders ausgeführt wird, öffnet die Python-Datei, findet die speziellen Markierungen und löscht sie und alles dazwischen. Die bereinigte Python-Datei wird dann gespeichert. Aus diesem Grund kann die Crypto-Miner Installation nicht einfach auf das Kodi-Addon zurückgeführt werden.

Zeilen der Selbstlöschung (Kommentar vom Forschenden)

Abbildung 6: Zeilen der Selbstlöschung (Kommentar vom Forschenden)

Die ausführbare Crypto-Miner Datei

Das vom Python-Code abgerufene Downloader-Modul (64-Bit-EXE für Windows, 64-Bit-ELF-Datei für Linux) enthält eine verschlüsselte Crypto-Miner-Konfiguration sowie Download-Links für die Payload der zweiten Stufe – also die eigentlichen Crypto-Miner-Binärdateien.

Die binären Downloader schaffen den Betriebssystem-geeigneten Payload der zweiten Stufe (Crypto-Miner-Binärdateien für verschiedene GPUs und ein böswilliges Launcher-/ Update-Modul) in passwortgeschützten ZIP-Dateien herbei. Diese Binärdateien sind für 64-Bit-Windows und 64-Bit-Linux kompiliert und basieren auf der Open Source Crypto-Mining Software XMRStak.

Die Konfiguration für den Crypto-Miner lautet wie folgt:

{„monero“:{„default“:{„wallet“:“49WAk6TaCMX3HXN22nWPQAfBjP4J3ReUKg9tu3FoiPugcJs3fsnAvyGdrC41HZ4N6jcHEiwEGvH7z4Sn41PoZtLABFAVjm3″
,“password“:““,“name“:““,“email“:““,“weight“:1,“format“:{„rig“:““,“address“:“%w%.%n%/%e%“,“password“:“%p%“}},
“pools“:[{„host“:“xmr-us-east1.nanopool.org:14444″},{„host“:“xmr-eu1.nanopool.org:14444″},{„host“:“xmr-asia1.nanopool.org:14444″}]}}

Wie kann ich eine Kompromittierung verhindern oder die Malware loswerden?

Wer Kodi auf seinem Windows- oder Linux-Gerät verwendet und Addons aus Repositories von Drittanbietern oder einen vorgefertigten Kodi-Build installiert hat, kann damit rechnen, von der Crypto-Mining Malware betroffen zu sein.

Eine verlässliche Überprüfung erfolgt beispielsweise mit ESET-Produkten, welche die Schadsoftware als Win64/CoinMiner.II und Win64/CoinMiner.MK unter Windows und als Linux/CoinMiner.BC, Linux/CoinMiner.BJ, Linux/CoinMiner.BK, und Linux/CoinMiner.CU unter Linux erkennen.

Wir raten unseren Windows-Lesern den kostenfreien ESET Online Scanner einzusetzen. Linux-User sollten die kostenlose ESET NOD32 Antivirus Testversion ausprobieren. Mit diesen Antivirus-Produkten wird die Malware aufgespürt und entfernt. Bestehende ESET-Kunden sind automatisch geschützt.

 "Wenn Nutzerinnen und Nutzer Kodi und seine Add-ons auf einem Windows- oder Linux-Gerät verwenden, sollten sie auf Nummer Sicher gehen und ihre Systeme auf jeden Fall mit einer zuverlässigen Anti-Malware-Lösung scannen" – Thomas Uhlemann, Security Specialist bei ESET

Fazit

Zwar sind die Malware-verbreitenden Kodi Addon-Repositories mittlerweile geschlossen oder bereinigt, die vielen Geräte, die sich mit Updates von diesen haben versorgen lassen, aber nicht. Der Crypto-Miner arbeitet weiter auf den Windows- und Linux-Systemen. Wie in Abbildung 7 zu erkennen, werden wohl nach wie vor viele Geräte fleißig Monero für die Cyberkriminellen schürfen.

Für die Cyber-Kriminellen bisher geschürften Monero

Abbildung 7: Für die Cyber-Kriminellen bisher geschürften Monero

Laut der von Nanopool zur Verfügung gestellten Statistik über das Monero-Wallet der Malware-Entwickler sind zum Zeitpunkt der Erstellung des Artikels mindestens 4774 Opfer von der Malware betroffen und haben damit 62,57 XMR (ca. 5700 EUR oder 6700 USD) geschürft.

Die Malware-Kampagne war nicht nur die zweite der Kodi-Plattform überhaupt, sondern gleichzeitig die erste, die mit einem Crypro-Miner für die Opfer endete. Nebenbei gebrauchten die Cyber-Kriminellen eine sehr interessante Technik der Kompromittierung. Die Verwendung der komplexen Skriptfunktionalität von Kodi-Addons wird auf allen Betriebssystemen unterstützt - Android, Linux, macOS und Windows - Die Cyberkriminellen nahmen aber lediglich Linux und Windows ins Visier.

Mit ihrer Raffinesse wären sie sicherlich in der Lage gewesen, auch andere Betriebssysteme anzugreifen. Durch die Entwicklung nativer Versionen ihres Crypto-Miners für die anderen Betriebssysteme oder durch die Bereitstellung alternativer Payloads für beispielsweise batteriebetriebene Plattformen hätten die Cyber-Kriminellen vielleicht noch viele weitere Systeme kompromittieren können.

Die Sicherheitsmaßnahmen von Betriebssystemen werden sich weiter verschärfen. Cyberkriminelle nutzen daher zunehmend Möglichkeiten von Anwendungs-Addons und Scripting-Funktionen – wie in unserem untersuchten Fall. Das haben wir bereits in der Vergangenheit bei Manipulationen von Visual Basic Makros gesehen. Die Kompromittierung mit Kodi-Addons kann ein Hinweis darauf geben, was uns zukünftig erwartet.

Indicators of Compromise (IoCs)

Schädliche Kodi-Addons

Da die ursprünglichen Repositories, welche die schädlichen Addons (Bubbles und Gaia) enthielten, sind bereits gelöscht bzw. bereinigt. Allerdings existieren noch gespiegelte Repositories und vorgefertigte Kodi-Builds mit Schadcode. Nachfolgend listen wir exemplarisch einige Websites, die die Malware höchstwahrscheinlich unwissend verbreiten.

Example mirror of Bubbles
github[.]com/yooperman17/trailerpark/blob/master/repository/repository.bubbles.3/repository.bubbles.3-4.2.0[.]zip
github[.]com/yooperman17/trailerpark/blob/master/repository/common/script.module.urllib.3/script.module.urllib.3-1.22.3[.]zip
Example mirror of Gaia
github[.]com/josephlreyes/gaiaorigin/blob/master/common/script.module.python.requests/script.module.python.requests-2.16.1[.]zip
github[.]com/josephlreyes/gaiaorigin/blob/master/common/script.module.simplejson/script.module.simplejson-3.4.1[.]zip
Malicious files previously available on XvBMC repository
github[.]com/XvBMC/repository.xvbmc/tree/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/script.module[.]simplejson
github[.]com/XvBMC/repository.xvbmc/tree/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/script.module.python[.]requests
github[.]com/XvBMC/repository.xvbmc/blob/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/zips/script.module.python.requests/script.module.python.requests-2.16.3[.]zip
github[.]com/XvBMC/repository.xvbmc/blob/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/zips/script.module.simplejson/script.module.simplejson-3.4.1[.]zip
Sampling of malicious Kodi builds
archive[.]org/download/retrogamesworld7_gmail_Kodi_20180418/kodi[.]zip
archive[.]org/download/DuggzProBuildWithSlyPVRguideV0.3/DuggzProBuildWithSlyPVRguideV0.3[.]zip
ukodi1[.]xyz/ukodi1/builds/Testosterone%20build%2017[.]zip

C&C URLs
openserver[.]eu/ax.php
kodinet.atspace[.]tv/ax.php
kodiupdate.hostkda[.]com/ax.php
kodihost[.]rf.gd/ax.php
updatecenter[.]net/ax.php
stearti.atspace[.]eu/ax.php
mastercloud.atspace[.]cc/ax.php
globalregistry.atspace.co[.]uk/ax.php
meliova.atwebpages[.]com/ax.php
krystry.onlinewebshop[.]net/ax.php

Downloader module (Windows)
openserver[.]eu/wib
kodinet.atspace[.]tv/wib
kodiupdate.hostkda[.]com/wib
kodihost.rf[.]gd/wib
updatecenter[.]net/wib
bitbucket[.]org/kodiserver/plugin.video.youtube/raw/HEAD/resources/lib/wib
gitlab[.]com/kodiupdate/plugin.video.youtube/raw/master/resources/lib/wib
www.dropbox[.]com/s/51fgb0ec9lgmi0u/wib?dl=1&raw=1

Downloader module (Linux)
openserver[.]eu/lib
kodinet.atspace[.]tv/lib
kodiupdate.hostkda[.]com/lib
kodihost.rf[.]gd/lib
updatecenter[.]net/lib
bitbucket[.]org/kodiserver/plugin.video.youtube/raw/HEAD/resources/lib/lib
gitlab[.]com/kodiupdate/plugin.video.youtube/raw/master/resources/lib/lib
www.dropbox[.]com/s/e36u2wxmq1jcjjr/lib?dl=1&raw=1

Cryptominer binaries (Windows)
updatecenter[.]net/wub
openserver[.]eu/wub
glocato.atspace[.]eu/wub
oraceur.hostkda[.]com/wub
dilarti.1free-host[.]com/wub
utudict.vastserve[.]com/wub
encelan.atspace[.]cc/wub

Cryptominer binaries (Linux)
updatecenter[.]net/lub
openserver[.]eu/lub
glocato.atspace[.]eu/lub
oraceur.hostkda[.]com/lub
dilarti.1free-host[.]com/lub
utudict.vastserve[.]com/lub
encelan.atspace[.]cc/lub

Hashes of malicious add-ons
B8FD019D4DAB8B895009B957A7FEBAEFCEBAFDD1
BA50EAA31441D5E2C0224B9A8048DAF4015735E7
717C02A1B040187FF54425A64CB9CC001265C0C6
F187E0B6872B096D67C2E261BE41910DAF057761
4E2F1E9E066D7D21CED9D690EF6119E59CF49176
53E7154C2B68EDBCCF37FB73EEB3E042A1DC7108
FF9E491E8E7831967361EDE1BD26FCF1CD640050
3CC8B10BDD5B98BEA94E97C44FFDFB1746F0C472
389CB81D91D640BA4543E178B13AFE53B0E680B5
6DA595FB63F632EE55F36DE4C6E1EB4A2A833862
9458F3D601D30858BBA1AFE1C281A1A99BF30542
B4894B6E1949088350872BDC9219649D50EE0ACA
79BCC4F2D19A394DD2DB2B601208E1D1EA57565B
AAAEDE03F6C014CEE8EC0D9C0EA4FC7B0E67DB59
C66B5ADF3BDFA87B0731512DD2654F4341EBAE5B
F0196D821381248EB8717F47C70D8C235E83A12E
7CFD561C215DC04B702FE40A199F0B60CA706660

ESET erkennt den schädlichen Python-Code als Python/CoinMiner.W.

Hashes of cryptominers and downloader modules (Windows)
08406EB5A8E75F53CFB53DB6BDA7738C296556D6
2000E2949368621E218529E242A8F00DC8EC91ED
5B1F384227F462240178263E8F2F30D3436F10F5
B001DD66780935FCA865A45AEC97C85F2D22A7E2
C6A4F67D279478C18BE67BEB6856F3D334F4AC42
EE83D96C7F1E3510A0D7D17BBF32D5D82AB54EF3

ESET erkennt sowohl den Crypto-Miner als auch das Downloader-Modul als Win64/CoinMiner.II und/oder als Win64/CoinMiner.MK. Unsere Telemetrie-Daten zeigen mehr als 100 verschiedene Hashes für die Erkennungsnamen.

Hashes of cryptominers and downloader modules (Linux)
38E6B46F34D82BD23DEACD23F3ADD3BE52F1C0B6
90F39643381E2D8DFFF6BA5AB2358C4FB85F03FC
B9173A2FE1E8398CD978832339BE86445ED342C7
D5E00FB7AEA4E572D6C7C5F8D8570DAB5E1DD156
D717FEC7E7C697D2D25080385CBD5C122584CA7C
DF5433DC7EB272B7B837E8932E4540B216A056D8

ESET erkennt die Linux-Version des Crypto-Miner und des Downloader-Moduls als Linux/CoinMiner.BC, Linux/CoinMiner.BJ, Linux/CoinMiner.BK und Linux/CoinMiner.CU.