ESET araştırmacıları, popüler açık kaynak kodlu medya oynatıcısı Kodi'ye yönelik bazı harici eklentilerin, Linux ve Windows üzerinde kripto para madenciliği yapan zararlı yazılımları dağıtmak üzere kullanıldığını tespit etti.
Kodi kullanıyorsanız, harici eklentilerin depolandığı Hollandalı XvBMC'nin yakın zamanda telif hakkı uyarıları nedeniyle kapatıldığını fark etmişsinizdir. Kapatılmasını takiben, deponun Aralık 2017'ye kadar uzanan bir süreçte, muhtemelen bilinmeden kötü amaçlı bir kripto madenciliği kampanyasının bir parçası olduğunu keşfettik. Bu, Kodi eklentileri ölçeğinde herkesçe bilinen ikinci zararlı yazılım dağıtım işlemi ve Kodi platformu üzerinden gerçekleştirilmiş ilk bilinen kripto para madenciliği kampanyasıdır. İlginç bir şekilde, bu kampanya Linux veya Windows'a özgü ikili dosyalarını ilgili işletim sistemlerindeki Kodi kullanıcılarına gönderir.
Kodi platformuna aşina olmayanlar için, popüler medya oynatıcı yazılımı herhangi bir içerik sağlamaz; ancak kullanıcılar hem resmi Kodi deposunda hem de çok sayıdaki harici depolarda bulunan çeşitli eklentileri yükleyerek yazılımın işlevselliğini genişletebilirler. Bazı üçüncü parti eklentilerin kullanıcıların korsan içeriğe erişmesine izin vermesi, Kodi hakkında tartışmalara neden oldu.
Son zamanlarda, telif hakkı ihlaline neden olan eklentiler de kullanıcıları kötü amaçlı yazılımlara maruz bırakmakla suçlanıyor; ancak bir DDoS modülünün popüler bir harici Kodi eklentisine dahil edildiği bir olay dışında, şu ana dek Kodi yoluyla kötü amaçlı yazılım dağıtıldığına dair bir kanıt bulunmamaktaydı.
Kampanya
Araştırmamıza göre, XvMBC deposunda bulduğumuz kötü amaçlı yazılım, ilk olarak Aralık 2017 ve Ocak 2018'de popüler üçüncü parti eklentiler olan Bubbles ve Gaia (Bubbles'ın bir türevi) depolarına eklenmiştir. Bu iki kaynaktan gelen ve diğer üçüncü parti depolama eklentilerinden şüphelenmeyen kullanıcıların güncelleme rutinleriyle kullanıma hazır durumda bulunan Kodi sürümleri, zararlı yazılımın Kodi ekosisteminde daha da yayılmasına neden olmuştur.
Kötü amaçlı yazılım çok aşamalı bir mimariye sahiptir ve nihai yükü olan "cryptominer"'ın izinin zararlı eklentiye kadar takip edilememesi için çeşitli önlemler alır. Cryptominer, Windows ve Linux üzerinde çalışır ve kripto para birimi Monero (XMR) madenciliği yapar. Henüz Android veya MacOS cihazlarını hedefleyen bir sürüm görmedik.
Bu kampanyanın kurbanları, yasadışı kripto madencisini üç şekilde çalıştırıyor:
1. Bazı eklentiler indirebilmek için, zararlı bir deponun URL adresi Kodi yüklemelerine eklenir. Daha sonra Kodi eklentileri güncellendiğinde zararlı eklenti de yüklenmiş olur.
2. Zararlı deponun URL adresini içeren hazır bir Kodi sürümü yüklerler. Daha sonra Kodi eklentileri güncellendiğinde zararlı eklenti de yüklenmiş olur.
3. Zararlı eklentiyi içeren hazır bir Kodi sürümü yüklerler fakat içerisinde depolama güncellemeleri için bir bağlantı yer almaz. Zararlı eklenti için bir güncelleme yapılmasa da, sisteme başlangıç aşamasında sızılmış olur. Ancak cryptominer yüklendikten sonra, sürekli olarak güncelleme alacaktır.
ESET'in uzaktan ölçüm verilerine göre bu tehditten en fazla etkilenen beş ülke ABD, İsrail, Yunanistan, İngiltere ve Hollanda'dır. Bu da, belirtilen ülkelerin yakın zamanda yayınlanan Resmi Olmayan Kodi Eklenti Topluluğu İstatistikleri listesindeki "en çok trafiğe sahip olan ülkeler" olmaları nedeniyle şaşırtıcı değildir. Coğrafi dağıtımlar için yapılabilecek diğer olası açıklamalar, her bir ülkeye özgü Kodi sürümlerinin bulundurduğu zararlı depolar ya da o ülkeye özgü kullanıcı verilerini içeren, yukarıda da bahsedilen Hollandalı XvBMC gibi zararlı depolar olabilir.
Şekil 1 - ESET cryptominer tespitlerinin dağılımı.
Bu yazının ardından, kötü amaçlı yazılımın yayılmaya başladığı depolar ya geçersiz hale gelmiştir (Bubbles) ya da artık kötü amaçlı kodlara (Gaia) hizmet etmemektedir; ancak cihazlarında cryptominer yüklü olduğunun farkında olmayan kurbanlar bundan hâlâ etkilenmektedir. Bunun da ötesinde, kötü amaçlı yazılımlar hâlâ diğer arşivlerde ve bazı hazır Kodi yapılarında, muhtemelen yazarlarının dahi bilgisi olmadan varlıklarını sürdürmektedirler.
Zaman çizelgesi
Şekil 2 - Kampanya zaman çizelgesi
Teknik analiz
Nasıl çalışır
Kurbanlar, zararlı depolarını Kodi yüklemelerine ekledikten sonra, kötü amaçlı depo, script.module.simplejson adlı bir eklentiye hizmet eder; bu aynı zamanda diğer birçok eklentinin de kullandığı meşru bir eklentiyle eşleşen bir isme sahiptir. Ancak, diğer depolar yalnızca 3.4.0 sürümünde script.module.simplejson eklentisine sahipken, kötü amaçlı depo bu eklentiyle 3.4.1 sürümünde çalışır.
Kodi, güncellemelerin tespit edilebilmesi için sürüm numaralarını temel aldığından, Otomatik Güncelleştirme özelliği etkin olan tüm kullanıcılar (ortak bir varsayılan ayardır) , kötü amaçlı depodan otomatik olarak script.module.simplejson 3.4.1 sürümünü alırlar.
3.4.1 sürümündeki script.module.simplejson üzerinde, 3.4.0 ile kıyaslandığında değiştirilen tek şey metadata olarak gözükmektedir; bu da addon.xml dosyasıdır ve ek bir satır talep etmektedir:
<import addon="script.module.python.requests" version="2.16.0" />
Bu, Kodi'yi 2.16.0 sürümü ve üzerinde, script.module.python.requests adı verilen bir eklenti indirerek yüklemesi için yönlendiriyor. Script.module.python.requests eklentisi, yalnızca zararlı depo tarafından kullanılıyor. Bu, meşru script.module.requests eklentisinin zararlı Python kodu içeren değiştirilmiş bir versiyonudur.
Python kodu uyumlu bir şekild, bir Windows ya da Linux ikili sistemi indiriyor ve yürütüyor. Bu yürütülebilir dosya, son yük olan yürütülebilir cryptominer'ı indirir ve çalıştırır. Cryptominer yüklemesi başarılı olduğu takdirde, zararlı Python kodu kendini kaldırarak sileceği bir aşamaya geçiş yapar.
Şekil 3 - Kötü amaçlı yazılımın yürütme modeli
Python kodu
Burada incelenen örnekte, gizlenmiş zararlı kod belirtilen dosyadadır;
script.module.python.requests\lib\requests\packages\urllib3\connectionpool.py,
846-862 arası.
Şekil 4. Connectionpool.py'daki gizlenmiş kod.
Gizliliği açığa çıkarılarak yorumlandığında, Şekil 5'te de görülebileceği gibi kod çok daha okunabilir hale geliyor.
Şekil 5. Gizliliği açığa çıkarılan zararlı kod (yorumlar araştırmacı tarafından eklenmiştir)
Kod, kesinlikle Kodi ve eklentilerinin mimarisi hakkında oldukça bilgi sahibi biri tarafından yazılmış. Script, hangi işletim sisteminin bulunduğunu tespit ediyor (yalnızca Windows ve Linux destekleniyor, Android ve macOS görmezden geliniyor), C&C sunucusuna bağlanıyor ve işletim sistemiyle uyumlu ikili indirme modülünü indirerek çalıştırıyor.
Windows ikili sistemi C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\TrustedInstaller.exe üzerine yazılırken, Linux ikili sistemi şuraya yazılıyor; /tmp/systems/systemd .
İkili indirme modülü elde edilerek çalıştırıldıktan sonra Python script dosyası connectionpool.py kendini silme işlemini başlatıyor. Şekil 4'e geri dönüp bakılacak olursa, zararlı kodun #-+- ve #-_-# gibi özel işaretlerle parantez içine alındığı görülüyor. İkili kurulum dosyasının başarıyla yürütülmesinden sonra çalışan kod, bu Python dosyasını açarak özel işaretleri ve aralarında yer alan her şeyi siliyor. Daha sonra temiz Python dosyası kaydediliyor. Sonuç olarak, cryptominer kurulumu bu Kodi eklentisiyle kolay kolay ilişkilendirilemiyor.
Şekil 6. Python kodunda kendini kaldırma (yorumlar araştırmacı tarafından eklendi)
Cryptominer yürütülebilir dosyası
Python kodu tarafından elde edilen indirme modülü (Windows için 64-bit EXE, Linux için 64-bit ELF) şifreli cryptominer konfigürasyon dosyasını ve esas cryptominer ikili sistemleri olan ikinci derece yüklerin indirme bağlantılarını içeriyor.
İkili indirme dosyaları, işletim sistemleriyle uyumlu ikinci derece yükleri (farklı GPU'lar için cryptominer ikili sistemleri ve zararlı bir yükleme/güncelleme modülü) parola korumalı ZIP dosyaları halinde elde ediyor. Bu ikililer 64-bit Windows ve 64-bit Linux sistemlerden oluşmakta ve açık kaynaklı kripto madencilik yazılımı XMRStak temel alınarak oluşturulmuş.
Cryptominer yapılandırması aşağıdaki gibi:
{"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"}]}}
Cihazım ele geçirildi mi? Nasıl temizleyebilirim?
Windows veya Linux bir cihazda Kodi kullanıyorsanız ve üçüncü parti depolardan eklentiler ya da hazır Kodi sürümleri yüklediyseniz, kripto madencilik kampanyasından etkilenme ihtimaliniz bulunuyor.
Cihazınızın ele geçirilp geçirilmediğini kontrol etmek için güvenilir bir zararlı yazılım önleme çözümüyle cihazınızı tarayın. ESET ürünleri bu tehditleri Windows üzerinde Win64/CoinMiner.II ve Win64/CoinMiner.MK olarak, Linux üzerindeyse Linux/CoinMiner.BC, Linux/CoinMiner.BJ, Linux/CoinMiner.BK ve Linux/CoinMiner.CU olarak tespit eder ve engeller. Windows'ta ESET Free Online Scanner, Linux'ta ise ESET NOD32 Antivirus for Linux Desktop ücretsiz deneme sürümünü kullanarak bilgisayarınızda bu tehditlerin varlığından haberdar olabilir ve tespit edilen herhangi bir tehditi silebilirsiniz. Mevcut ESET kullanıcıları otomatik olarak korunmaktadır.
Sonuç
Başlangıçta Kodi ekosistemine bu zararlı yazılımı dağıtan ana eklenti depoları artık kapatılmış ya da silinmiş olsa da, halihazırda bu zararlı eklentileri çalıştıran pek çok cihaz ele alınmıyor. Şekil 7'de görülebileceği gibi, birçok cihaz hâlâ bu kampanyanın ardındaki siber suçlular tarafından Monero madenciliği amacıyla kullanılıyor.
Şekil 7. Zararlı yazılım yazarları tarafından alınan ödemeler
Nanopol tarafından zararlı yazılım yazarlarının Monero cüzdanlarına dayandırılan istatistiklere göre, bu makalenin yazıldığı tarihte en az 4774 kurban bu zararlı yazılımdan etkilenmiş ve aynı zamanda 62,57 XMR (yaklaşık 5700 Euro veya 6700 Dolar) gelir elde edilmiş görünüyor.
İkinci zararlı yazılım ve ilk cryptominer olmasının yanı sıra, popüler medya oynatıcısı Kodi üzerinden dağıtılan bu zararlı yazılım kampanyası ilginç saldırı tekniği ortaya koymaktadır. Desteklenen işletim sistemleri arasında çalışan Kodi eklentilerinin karışık script özelliklerini kullanarak (Android, Linux, macOS ve Windows) kampanyanın arkasındaki siber suçlular Linux ve Windows üzerinde Kodi'yi kolayca hedef aldılar.
Bu kurnazlık daha farklı işletim sistemlerindeki başka cihazları da hedeflemiş olabilir. Bu işletim sistemleri için yerel cryptominer sürümlerini üreterek ya da o platforma daha uygun alternatif yükler sağlayarak (örneğin, pille çalışan cihazlar için daha düşük enerji tüketen yükler) Kodi'nin desteklediği diğer işletim sistemlerini de etkilemiş olabilirler. İşletim sistemlerine dair güvenlik önlemleri sıklaştırılsa da, yukarıda açıklandığı üzere uygulama eklentileri ve script özelliklerinin sağladığı fırsatlar siber suçlular arasında daha popüler hedefler haline gelmeye başlayacak gibi görünüyor. Bunu geçmişte görmüştük ve yakın zamanda Microsoft Office uygulamalarındaki Visual Basic makrolarıyla yakın zamanda yeniden dönüştürdük. Kodi eklentileri "sonraki VBA" olmayabilir, fakat burada atılan adımlar başımıza geleceklerle ilgili birer gösterge olabilir.
IoC'ler
Zararlı Kodi eklentileri
Zararlı eklentileri barındıran orijinal depolar (Bubbles ve Gaia) halihazırda silinmiş olsa da, hâlâ zararlı kod içeren depoları görüntülemek ve rasgele seçilmiş bazı zararlı Kodi sürümlerine yönelik örnek bağlantılar sağlıyoruz.
Aşağıda görüleceği gibi, zararlı dosyaların ikinci kaynaklarının sahiplerinin farkında olmadan onları yaygınlaştırdığı da dikkat çekicidir.
Bubbles örnek görüntülemesi
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
Gaia örnek görüntülemesi
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
XvBMC deposunda önceden bulunan zararlı dosyalar
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
Zararlı Kodi sürümlerinin örneklenmesi
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 URL adresleri:
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
İndirme modülü (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
İndirme modülü (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 ikili dosyaları (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 ikili dosyaları (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
Zararlı eklentilerin hash dosyaları
B8FD019D4DAB8B895009B957A7FEBAEFCEBAFDD1
BA50EAA31441D5E2C0224B9A8048DAF4015735E7
717C02A1B040187FF54425A64CB9CC001265C0C6
F187E0B6872B096D67C2E261BE41910DAF057761
4E2F1E9E066D7D21CED9D690EF6119E59CF49176
53E7154C2B68EDBCCF37FB73EEB3E042A1DC7108
FF9E491E8E7831967361EDE1BD26FCF1CD640050
3CC8B10BDD5B98BEA94E97C44FFDFB1746F0C472
389CB81D91D640BA4543E178B13AFE53B0E680B5
6DA595FB63F632EE55F36DE4C6E1EB4A2A833862
9458F3D601D30858BBA1AFE1C281A1A99BF30542
B4894B6E1949088350872BDC9219649D50EE0ACA
79BCC4F2D19A394DD2DB2B601208E1D1EA57565B
AAAEDE03F6C014CEE8EC0D9C0EA4FC7B0E67DB59
C66B5ADF3BDFA87B0731512DD2654F4341EBAE5B
F0196D821381248EB8717F47C70D8C235E83A12E
7CFD561C215DC04B702FE40A199F0B60CA706660
ESET, zararlı Python kodunu Python/CoinMiner.W olarak tespit ediyor.
İndirme modüllerinin ve cryptominerların hash dosyaları
08406EB5A8E75F53CFB53DB6BDA7738C296556D6
2000E2949368621E218529E242A8F00DC8EC91ED
5B1F384227F462240178263E8F2F30D3436F10F5
B001DD66780935FCA865A45AEC97C85F2D22A7E2
C6A4F67D279478C18BE67BEB6856F3D334F4AC42
EE83D96C7F1E3510A0D7D17BBF32D5D82AB54EF3
ESET cryptominer ve indirme modüllerini Win64/CoinMiner.II ve/veya Win64/CoinMiner.MK olarak tespit ediyor. Uzaktan ölçüm verilerimiz, tespit isimleri için 100'den fazla birbirinden uzak hash dosyası olduğunu gösteriyor.
Cryptominerların ve indirme modüllerinin hash dosyaları (Linux)
38E6B46F34D82BD23DEACD23F3ADD3BE52F1C0B6
90F39643381E2D8DFFF6BA5AB2358C4FB85F03FC
B9173A2FE1E8398CD978832339BE86445ED342C7
D5E00FB7AEA4E572D6C7C5F8D8570DAB5E1DD156
D717FEC7E7C697D2D25080385CBD5C122584CA7C
DF5433DC7EB272B7B837E8932E4540B216A056D8
ESET cryptominer ve indirme modüllerinin Linux sürümlerini Linux/CoinMiner.BC, Linux/CoinMiner.BJ, Linux/CoinMiner.BK, ve Linux/CoinMiner.CU olarak tespit ediyor.