
Hampir setiap dari kita menggunakan layanan toko online, yang berarti cepat atau lambat ia berisiko menjadi korban sniffer JavaScript - kode khusus yang disuntikkan penjahat cyber ke situs untuk mencuri informasi kartu bank, alamat, login, dan kata sandi pengguna.
Hampir 400.000 pengguna situs web dan aplikasi seluler maskapai British Airways, serta pengunjung situs web Inggris dari raksasa olahraga FILA dan distributor tiket Amerika Ticketmaster, telah menderita penghirup.
Threat Intelligence Group-IB analis Viktor Okorokov berbicara tentang bagaimana sniffer tertanam dalam kode situs dan mencuri informasi penagihan, serta CRM yang mereka serang.
The Phantom Menace
Ternyata untuk waktu yang lama JS sniffer tetap tidak terlihat oleh analis antivirus, dan bank dan sistem pembayaran tidak melihat ancaman serius pada mereka. Dan sepenuhnya sia-sia. Pakar Group-IB
menganalisis 2.440 toko online yang terinfeksi yang pengunjungnya - sekitar 1,5 juta orang per hari - berisiko mengalami kompromi. Di antara para korban tidak hanya pengguna, tetapi juga toko online, sistem pembayaran dan bank yang mengeluarkan kartu yang dikompromikan.
Laporan Group-IB adalah studi pertama tentang pasar darknet untuk sniffer, infrastruktur dan cara mereka untuk menghasilkan uang, membawa pencipta mereka jutaan dolar. Kami mengidentifikasi 38 keluarga sniffer, yang sebelumnya hanya 12 yang diketahui peneliti.
Mari kita membahas empat keluarga sniffer yang dipelajari selama penelitian.
Keluarga ReactGet
Sniffer keluarga ReactGet digunakan untuk mencuri data kartu bank di situs toko online. Sniffer dapat bekerja dengan sejumlah besar sistem pembayaran berbeda yang digunakan di situs: satu nilai parameter sesuai dengan satu sistem pembayaran, dan masing-masing versi sniffer yang terdeteksi dapat digunakan untuk mencuri kredensial, serta mencuri data kartu bank dari bentuk pembayaran beberapa sistem pembayaran sekaligus, seperti yang disebut sniffer universal. Ditemukan bahwa dalam beberapa kasus, penyerang melakukan serangan phishing pada administrator toko online untuk mendapatkan akses ke panel administrasi situs.
Kampanye menggunakan keluarga sniffer ini dimulai pada Mei 2017, situs di bawah kendali CMS dan platform Magento, Bigcommerce, Shopify diserang.
Bagaimana ReactGet tertanam dalam kode toko online
Selain implementasi script "klasik" dengan referensi, keluarga sniffers ReactGet menggunakan teknik khusus: menggunakan kode JavaScript, memeriksa untuk melihat apakah alamat saat ini di mana pengguna berada memenuhi kriteria tertentu. Kode berbahaya hanya akan diluncurkan jika URL saat ini berisi
checkout substring atau
cek onestep ,
onepage / ,
out / onepag ,
checkout / one ,
ckout / one . Dengan demikian, kode sniffer akan dieksekusi tepat pada saat ketika pengguna mulai membayar untuk pembelian dan memasukkan informasi pembayaran ke dalam formulir di situs.
Sniffer ini menggunakan teknik non-standar. Pembayaran dan data pribadi korban dikumpulkan bersama, disandikan menggunakan
base64 , dan kemudian string yang dihasilkan digunakan sebagai parameter untuk mengirim permintaan ke situs penyerang. Paling sering, path ke gerbang mensimulasikan file JavaScript, misalnya
resp.js ,
data.js dan sebagainya, tetapi juga tautan ke file gambar,
GIF dan
JPG juga digunakan. Keunikannya adalah sniffer membuat objek gambar dengan ukuran 1 x 1 piksel dan menggunakan tautan yang sebelumnya diperoleh sebagai parameter
src gambar. Artinya, bagi pengguna, permintaan lalu lintas seperti itu akan terlihat seperti permintaan untuk gambar biasa. Teknik serupa digunakan dalam sniffer keluarga ImageID. Selain itu, teknik menggunakan gambar 1 oleh 1 piksel digunakan dalam banyak skrip analitik online yang sah, yang juga dapat menyesatkan pengguna.
Analisis Versi
Analisis domain aktif yang digunakan oleh operator sniffer ReactGet mengungkapkan banyak versi keluarga sniffer yang berbeda. Versi dibedakan dengan ada atau tidak adanya kebingungan, dan di samping itu, setiap sniffer dirancang untuk sistem pembayaran tertentu yang memproses pembayaran kartu bank untuk toko online. Setelah mengurutkan nilai parameter yang sesuai dengan nomor versi, spesialis Grup-IB menerima daftar lengkap variasi sniffer yang tersedia, dan dengan nama bidang formulir yang dicari oleh setiap sniffer dalam kode halaman, mereka menentukan sistem pembayaran yang diarahkan oleh sniffer.
Daftar sniffer dan sistem pembayaran yang sesuai Sandi pelacak kata sandi
Salah satu keuntungan dari sniffer JavaScript yang bekerja di sisi klien situs adalah fleksibilitasnya: kode jahat yang tertanam di situs dapat mencuri semua jenis data, apakah itu data pembayaran atau nama pengguna dan kata sandi akun pengguna. Spesialis Group-IB menemukan sampel sniffer milik keluarga ReactGet, yang dirancang untuk mencuri alamat email dan kata sandi pengguna situs.
Persimpangan dengan ImageID Sniffer
Analisis terhadap salah satu toko yang terinfeksi mengungkapkan bahwa situsnya terinfeksi dua kali: selain kode berbahaya dari keluarga sniffer ReactGet, kode sniffer keluarga ImageID terdeteksi. Persimpangan ini dapat menunjukkan bahwa operator di balik penggunaan kedua sniffer menggunakan teknik serupa untuk menyuntikkan kode berbahaya.
Sniffer universal
Analisis salah satu nama domain yang terkait dengan infrastruktur sniffer ReactGet mengungkapkan bahwa pengguna yang sama telah mendaftarkan tiga nama domain lainnya. Ketiga domain ini mensimulasikan domain dari situs kehidupan nyata dan sebelumnya digunakan untuk meng-host sniffer. Ketika menganalisis kode dari tiga situs yang sah, sniffer yang tidak dikenal ditemukan, dan analisis lebih lanjut menunjukkan bahwa ini adalah versi perbaikan dari sniffer ReactGet. Semua versi sniffer yang sebelumnya dilacak dari keluarga ini ditujukan pada sistem pembayaran tunggal, yaitu, untuk setiap sistem pembayaran diperlukan versi khusus sniffer. Namun, dalam kasus ini, ditemukan versi universal sniffer, yang mampu mencuri informasi dari formulir yang terkait dengan 15 sistem pembayaran dan modul situs e-niaga yang berbeda untuk pembayaran online.
Jadi, pada awal pekerjaan, sniffer mencari bidang dasar formulir yang berisi informasi pribadi korban: nama lengkap, alamat fisik, nomor telepon.
Kemudian sniffer mencari lebih dari 15 awalan yang berbeda sesuai dengan sistem dan modul pembayaran untuk pembayaran online.
Selanjutnya, data pribadi korban dan informasi pembayaran dikumpulkan bersama dan dikirim ke situs yang dikontrol oleh penyerang: dalam kasus khusus ini, dua versi sniffer universal ReactGet yang terletak di dua situs yang diretas ditemukan. Namun, kedua versi mengirim data curian ke situs yang diretas yang sama
zoobashop.com .
Analisis awalan yang digunakan oleh sniffer untuk mencari bidang yang berisi informasi pembayaran korban memungkinkan kami untuk menentukan bahwa pola sniffer ini ditujukan pada sistem pembayaran berikut:
- Otorisasi.Net
- Verisign
- Data pertama
- USAePay
- Stripe
- Paypal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Pembayaran realex
- Psigate
- Sistem pembayaran Heartland
Alat apa yang digunakan untuk mencuri informasi penagihan?
Alat pertama yang ditemukan selama analisis infrastruktur penyerang digunakan untuk mengaburkan skrip berbahaya yang bertanggung jawab untuk mencuri kartu bank. Script bash ditemukan pada salah satu host penyerang menggunakan
javascript-obfuscator CLI untuk mengotomatisasi kebingungan kode sniffer.
Alat yang terdeteksi kedua dirancang untuk menghasilkan kode yang bertanggung jawab untuk memuat sniffer utama. Alat ini menghasilkan kode JavaScript yang memeriksa apakah pengguna ada di halaman pembayaran dengan mencari alamat pengguna saat ini untuk
checkout ,
kereta, dan sebagainya, dan jika hasilnya positif, kode memuat sniffer utama dari server penyerang. Untuk menyembunyikan aktivitas jahat, semua baris, termasuk jalur uji untuk menentukan halaman pembayaran, serta tautan ke sniffer, dikodekan menggunakan
base64 .
Serangan phishing
Ketika menganalisis infrastruktur jaringan para penyerang, ditemukan bahwa seringkali kelompok kriminal menggunakan phishing untuk mendapatkan akses ke panel administratif dari toko online target. Penyerang mendaftarkan domain yang terlihat mirip dengan domain toko, dan kemudian menggunakan formulir login panel admin Magento palsu di atasnya. Jika berhasil, penyerang akan mendapatkan akses ke panel admin CMS Magento, yang memungkinkan mereka untuk mengedit komponen situs dan mengimplementasikan sniffer untuk mencuri informasi kartu kredit.
Keluarga G-analytics
Keluarga sniffer ini digunakan untuk mencuri kartu dari pelanggan toko online. Nama domain pertama yang digunakan oleh grup itu terdaftar pada April 2016, yang mungkin mengindikasikan awal aktivitas grup pada pertengahan 2016.
Dalam kampanye saat ini, grup menggunakan nama domain yang meniru layanan kehidupan nyata seperti Google Analytics dan jQuery, menutupi aktivitas sniffer dengan skrip yang sah dan mirip dengan nama domain yang sah. Serangan itu dijalankan di situs yang menjalankan CMS Magento.
Bagaimana G-Analytics tertanam dalam kode toko online
Ciri khas keluarga ini adalah penggunaan berbagai metode pencurian informasi pembayaran pengguna. Selain implementasi klasik kode JavaScript di bagian klien situs, kelompok kriminal juga menggunakan teknik kode embedding di bagian server situs, yaitu skrip PHP yang memproses data yang dimasukkan oleh pengguna. Teknik ini berbahaya karena menyulitkan peneliti pihak ketiga untuk mendeteksi kode berbahaya. Spesialis Group-IB menemukan versi sniffer yang tertanam dalam kode PHP situs, menggunakan domain
dittm.org sebagai gerbang.
Versi sebelumnya dari sniffer juga ditemukan, yang menggunakan domain
dittm.org yang sama untuk mengumpulkan data curian, tetapi versi ini sudah dimaksudkan untuk instalasi di sisi klien dari toko online.
Kemudian kelompok itu mengubah taktiknya dan mulai lebih memperhatikan penyembunyian aktivitas jahat dan penyamaran.
Pada awal 2017, grup ini mulai menggunakan domain
jquery-js.com , menyamar sebagai CDN untuk jQuery: ketika dialihkan ke situs pengguna jahat, itu dialihkan ke situs
jquery.com yang sah.
Dan pada pertengahan 2018, grup ini mengadopsi nama domain
g-analytics.com dan mulai menutupi kegiatan sniffer di bawah layanan Google Analytics yang sah.
Analisis Versi
Selama analisis domain yang digunakan untuk menyimpan kode sniffer, ditemukan bahwa situs tersebut memiliki sejumlah besar versi yang berbeda dengan adanya kebingungan, serta ada atau tidak adanya kode yang tidak terjangkau yang ditambahkan ke file untuk mengalihkan perhatian dan menyembunyikan kode berbahaya.
Secara total, enam versi sniffer diidentifikasi di
jquery-js.com . Sniffer ini mengirim data curian ke alamat yang terletak di situs yang sama dengan sniffer itu sendiri:
hxxps: // jquery-js [.] Com / latest / jquery.min.js :
- hxxps: // jquery-js [.] com / jquery.min.js
- hxxps: // jquery-js [.] com / jquery.2.2.4.min.js
- hxxps: // jquery-js [.] com / jquery.1.8.3.min.js
- hxxps: // jquery-js [.] com / jquery.1.6.4.min.js
- hxxps: // jquery-js [.] com / jquery.1.4.4.min.js
- hxxps: // jquery-js [.] com / jquery.1.12.4.min.js
Domain
g-analytics.com kemudian, yang digunakan oleh kelompok dalam serangan sejak pertengahan 2018, berfungsi sebagai tempat penyimpanan untuk sejumlah besar sniffer. Sebanyak 16 versi sniffer yang berbeda ditemukan. Dalam hal ini, gerbang untuk mengirim data yang dicuri disamarkan sebagai tautan ke gambar
GIF :
hxxp: // g-analytics [.] Com / __ utm.gif? V = 1 & _v = j68 & a = 98811130 & t = tayangan laman & _s = 1 & sd = 24-bit & sr = 2560x1440 & vp = 2145x371 & je = 0 & _u = AACAAEAB ~ & jid = 1841704724 & gjid = 877686936 & cid
= 1283183910.1527732071 :
- hxxps: // g-analytics [.] com / libs / 1.0.1 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.10 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.11 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.12 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.13 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.14 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.15 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.16 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.3 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.4 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.5 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.6 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.7 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.8 / analytics.js
- hxxps: // g-analytics [.] com / libs / 1.0.9 / analytics.js
- hxxps: // g-analytics [.] com / libs / analytics.js
, , . , , ,
google-analytics.cm ,
cardz.vc .
cardz.vc Cardsurfs (Flysurfs), AlphaBay , .
analytic.is , , , , Group-IB , Cookie-, , , .
iozoz.com , , 2016 . , . email-
kts241@gmail.com ,
cardz.su cardz.vc , Cardsurfs.
, , G-Analytics Cardsurfs , , .
Illum
Illum — , -, CMS Magento. , , .
, , , , , . , , , 2016 .
Illum -
.
cdn.illum[.]pw/records.php ,
base64 .
, —
records.nstatistics[.]com/records.php .
Willem de Groot, ,
, CSU.
Group-IB , .
, , Linux: , Linux Privilege Escalation Check Script, (Mike Czumak), CVE-2009-1185.
- :
core_config_data CVE-2016-4010,
RCE CMS Magento, -.
, . , , CMS . ,
segapay_standart.js segapay_onpage.js , Sage Pay.
paymentnow[.]tk ,
payment_forminsite.js ,
subjectAltName , CloudFlare. ,
evil.js . , CVE-2016-4010, footer CMS Magento.
request.requestnet[.]tk , ,
paymentnow[.]tk .
. - .
— PayPal, .
CoffeMokko
CoffeMokko, -, 2017 . , Group 1, RiskIQ 2016 . CMS, Magento, OpenCart, WordPress, osCommerce, Shopify.
CoffeMokko -
:
src js . .
, . , , .
, : , , .
/savePayment/index.php /tr/index.php . , , .
base64 , :
- «e» «:»
- «w» «+»
- «o» «%»
- «d» «#»
- «a» «-»
- «7» «^»
- «h» «_»
- «T» «@»
- «0» «/»
- «Y» «*»
base64 , .
, :
, -. TLD. , .
, jQuery (
slickjs[.]org ,
slick.js ), (
sagecdn[.]org , Sage Pay).
, , .
,
/js /src . : . , .
Dalam beberapa sampel sniffer yang terdeteksi dari keluarga ini, kode tersebut dikaburkan dan berisi data terenkripsi yang diperlukan agar sniffer berfungsi: khususnya, alamat gerbang sniffer, daftar bidang formulir pembayaran, dan dalam beberapa kasus kode formulir pembayaran palsu. Dalam kode di dalam fungsi, sumber daya dienkripsi menggunakan
XOR menggunakan kunci, yang diteruskan oleh argumen dari fungsi yang sama.
Setelah mendekripsi string dengan kunci yang sesuai, unik untuk setiap sampel, Anda bisa mendapatkan string yang berisi semua baris dari kode sniffer melalui karakter pembatas.
Algoritma kebingungan kedua
Dalam sampel sniffer kemudian dari keluarga ini, mekanisme kebingungan yang berbeda digunakan: dalam hal ini, data dienkripsi menggunakan algoritma yang ditulis sendiri. String yang berisi data terenkripsi yang diperlukan agar sniffer berfungsi berfungsi sebagai argumen untuk fungsi dekripsi.
Menggunakan konsol peramban, Anda dapat mendekripsi data terenkripsi dan mendapatkan larik yang berisi sumber daya sniffer.
Tautan ke Serangan MageCart Awal
Analisis terhadap salah satu domain yang digunakan oleh grup sebagai gerbang untuk mengumpulkan data curian mengungkapkan bahwa domain tersebut memiliki infrastruktur pencurian kartu kredit yang identik dengan yang digunakan oleh Grup 1, salah satu grup pertama yang
ditemukan oleh spesialis RiskIQ.
Dua file ditemukan di host keluarga sniffer CoffeMokko:
- mage.js - file yang berisi kode sniffer Grup 1 dengan alamat gerbang js-cdn.link
- mag.php - skrip PHP yang bertanggung jawab untuk mengumpulkan data yang dicuri sniffer
Ditemukan juga bahwa domain paling awal yang digunakan oleh kelompok di belakang keluarga sniffer CoffeMokko didaftarkan pada 17 Mei 2017:
- tautan-js [.] tautan
- tautan info-js [.]
- tautan track-js [.]
- tautan map-js [.]
- tautan smart-js [.]
Format nama domain ini sama dengan nama domain Grup 1 yang digunakan dalam serangan 2016.
Berdasarkan fakta yang ditemukan, dapat diasumsikan bahwa ada koneksi antara operator sniffer CoffeMokko dan grup kriminal Grup 1. Agaknya, operator CoffeMokko dapat meminjam alat dan perangkat pencurian kartu dari pendahulunya. Namun, lebih mungkin bahwa kelompok kriminal di balik penggunaan CoffeMokko keluarga sniffer adalah orang yang sama yang melakukan serangan sebagai bagian dari kegiatan Grup 1. Setelah publikasi laporan pertama tentang kegiatan kelompok kriminal, semua nama domain mereka diblokir, dan alat-alat dipelajari secara rinci dan dijelaskan. Kelompok itu dipaksa untuk istirahat, memperbaiki alat internal mereka dan menulis ulang kode sniffer untuk melanjutkan serangan mereka dan tidak diperhatikan.