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.
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.
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.
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).
Wenn der Code entschleiert und kommentiert wird, ist er viel besser lesbar – wie in Abbildung 5 zu sehen:
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.
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“:“49WAk6TaCMX3HXN22nWPQAfBjP4J3ReUKg9tu3
,“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.
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.