Menumpas pelaku cheat CSGO dengan IdentityLogger
(mobeigi.com)- Invex Gaming mengoperasikan server komunitas CSGO berbasis Australia dan Selandia Baru dari 2014 hingga 2019, dan karena pengelakan ban yang berulang, beban peninjauan demo manual bagi admin makin besar
- Ban yang ada melacak dengan menggabungkan alamat IP dan Steam ID, tetapi ketika pelaku cheat mengganti keduanya sekaligus, server sulit memastikan apakah itu pemain yang sama
- IdentityLogger menyimpan Tracking ID dengan memanfaatkan cookie persisten dari browser VGUI bawaan CSGO, lalu menggunakan alamat IP, Steam ID, dan Tracking ID sebagai sidik jari bersama
- Setelah diterapkan ke seluruh server pada Februari 2017, pemain yang mengganti Steam ID dan alamat IP sekalipun tetap dapat dikenali kembali lewat Tracking ID dan langsung diblokir
- Metode ini berfungsi sampai Valve menghapus browser VGUI pada Oktober 2017 untuk memperkuat keamanan, dan setelah itu teknologinya serta pluginnya dipublikasikan
Operasional Invex Gaming dan beban penanganan cheat
- Invex Gaming adalah server komunitas CSGO berbasis Australia dan Selandia Baru yang beroperasi dari 2014 hingga 2019
- Pekerjaan operasionalnya luas, mulai dari memelihara forum dan infrastruktur server, mengelola biaya dan donasi, menambahkan model pemain, memperbaiki hitbox, mengotomatisasi sistem VIP, menulis plugin kustom, menambal exploit dan bug game, menangkal DDoS, hingga menangani laporan
- Di antara semuanya, mengidentifikasi dan memblokir pelaku cheat yang terus berulang adalah pekerjaan yang paling membosankan dan menguras tenaga
- Untuk deteksi otomatis ada metode seperti kode sisi server dan Valve Anti-Cheat, tetapi karena pertarungan berulang antara pengembang cheat dan pengembang anti-cheat, sulit untuk menangkap semua cheat secara otomatis
- Pada akhirnya, jalan terakhir adalah analisis manual dengan menonton demo CSGO, dan admin harus menentukan sendiri apakah seorang pemain berbuat curang
Titik lemah ban berdasarkan alamat IP dan Steam ID
- Ban pada umumnya bekerja dengan menyimpan informasi identitas agar akses ke layanan bisa diblokir
- Server Invex Gaming terutama menggunakan dua pengenal
- Alamat IP: pengenal internet yang diberikan oleh ISP atau penyedia server
- Steam ID: pengenal unik yang terikat pada akun Steam
- Ketika seorang pemain diblokir, alamat IP dan Steam ID disimpan dalam daftar ban, lalu jika ada koneksi berikutnya dengan alamat IP atau Steam ID yang sama, pemain dikeluarkan dari server
- Jika seseorang kembali dengan hanya mengganti Steam ID tetapi masih memakai alamat IP yang sama, Steam ID baru itu bisa dihubungkan ke ban lama lalu diblokir lagi
- Hal yang sama berlaku jika hanya alamat IP yang diganti tetapi Steam ID tetap sama; alamat IP baru akan dikaitkan dengan ban yang ada
- Masalah muncul ketika pelaku cheat mengganti Steam ID dan alamat IP secara bersamaan
- Dari sudut pandang server, itu adalah kombinasi alamat IP dan Steam ID yang belum pernah dilihat
- Tidak ada cara untuk menghubungkannya ke ban sebelumnya, sehingga mereka bisa bermain lagi
- Bahkan jika diblokir lagi, mereka bisa terus menghindari ban dengan mengganti kedua pengenal itu bersama-sama
- Opsi untuk memelihara daftar VPN populer dan alamat IP terkait juga sempat dipertimbangkan, tetapi tim operasional tidak menyukainya karena beban perawatan yang berkelanjutan
- Analisis setelahnya menunjukkan bahwa pelaku cheat paling terkenal memiliki akses ke alamat IP yang tersebar secara geografis dan lebih dari 87 akun Steam yang telah membeli CSGO
Potensi false positive dari sidik jari alamat IP
- Steam ID memang mengidentifikasi pemain secara unik, tetapi alamat IP bukan pengenal yang unik
- Jika dua saudara di rumah yang sama masuk ke server dan hanya satu yang melakukan cheat, sidik jari keduanya bisa saling terkait karena memakai alamat IP yang sama, sehingga keduanya dapat diblokir
- Masalah serupa juga dapat muncul pada jaringan bersama seperti kampus, tempat seluruh lalu lintas eksternal keluar melalui satu alamat IP
- Seseorang diblokir karena cheat dari jaringan kampus
- Steam ID pemain lain yang memakai jaringan yang sama bahkan bisa ikut terhubung dengan alamat IP rumahnya dan terkena ban secara tidak adil
- Untuk kasus langka seperti ini, Invex Gaming membuat sistem pengecualian, dan menyarankan agar orang tidak bermain dari jaringan yang tidak mereka percayai
Memakai cookie browser VGUI sebagai pengenal ketiga
- Pada awal 2017, masalah pengelakan ban di server memburuk drastis, sehingga admin harus terus meninjau demo secara manual
- Tantangan utamanya adalah mengenali pemain yang sama bahkan ketika Steam ID dan alamat IP berubah bersamaan
- CSGO memiliki browser web bawaan di dalam game yang bisa dipakai operator server untuk menampilkan MOTD saat koneksi, dan browser ini disebut browser VGUI
- Browser VGUI memungkinkan operator server membuka situs web sewenang-wenang di layar pemain, dan jendelanya juga bisa disembunyikan
- Browser ini telah diautentikasi sebelumnya dengan cookie Steam sehingga dapat login otomatis ke domain Steam, dan juga mengizinkan eksekusi JavaScript sisi klien yang dikirim operator server
- Inti IdentityLogger adalah fakta bahwa browser VGUI mendukung cookie dan cookie itu tetap tersimpan antar-sesi
- Hasil pengujian menunjukkan bahwa cookie yang disimpan melalui browser VGUI tetap ada bahkan setelah CSGO ditutup dan dijalankan lagi
- Tampaknya juga tidak ada batas masa kedaluwarsa cookie, dan cookie dengan masa berlaku lebih dari 10 tahun pun dapat disimpan
- Data cookie disimpan dalam file di dalam direktori instalasi Steam milik pemain
- Dengan cara ini, setiap pemain bisa diberi pengenal ketiga bernama Tracking ID
- Agar terlihat seperti pemain baru, seseorang harus mengganti Steam ID, alamat IP, dan folder instalasi Steam sekaligus, dan dianggap hampir tidak ada pemain yang sampai mengganti folder instalasi Steam
Alur implementasi IdentityLogger
- IdentityLogger adalah sistem terpadu yang membuat sidik jari pemain berdasarkan alamat IP, Steam ID, dan Tracking ID
- Saat pemain terhubung ke server, sistem lebih dulu melakukan pemeriksaan ban di database
- Alamat IP, Steam ID, dan Tracking ID menjadi target pemeriksaan
- Jika ada ban yang cocok, pemain dikeluarkan dari server dan pengenal baru dihubungkan ke ban yang sudah ada
- Untuk pemain yang tidak diblokir, sistem membuka halaman web rahasia melalui jendela browser VGUI tersembunyi
- Permintaan diautentikasi dengan memasukkan nilai rahasia, dan walau permintaan browser VGUI dibuat di sisi klien, lalu lintasnya dienkripsi dengan HTTPS
- Skrip PHP memeriksa apakah cookie Tracking ID sudah ada
- Jika belum, sistem membuat dan menyimpan Tracking ID baru
- Tracking ID berupa string alfanumerik acak 64 karakter seperti
TeStsCOhZO1TQsumJkDUOdMMo13ReRLEngrQTg7S49LKT2rBvgPhauzSYbegscOT - Cookie tersebut pada akhirnya disimpan dalam file
vgui.browser.cookies.datdi direktori instalasi Steam milik pemain
- Steam ID, alamat IP, dan Tracking ID disimpan ke database setiap kali pemain masuk ke server
- Database ini diintegrasikan dengan panel web untuk admin yang menyelidiki sidik jari pemain, serta plugin SourceBans yang dimodifikasi berdasarkan perangkat lunak manajemen ban untuk game berbasis Source
Cara metode ini menghentikan pengelakan ban
- Sebagai contoh, jika seorang pemain pertama kali masuk dengan alamat IP
198.51.100.1dan Steam IDSTEAM_1:1:1111, Tracking ID baru akan dibuat - Saat pemain itu diblokir karena cheat, alamat IP, Steam ID, dan Tracking ID semuanya masuk ke database ban
- Di kemudian hari, jika pemain yang sama masuk dengan alamat IP
100.64.50.74dan Steam IDSTEAM_1:1:3333, alamat IP baru dan Steam ID baru itu akan lolos pemeriksaan awal - Namun, Tracking ID yang telah tersimpan tetap terhubung ke ban sebelumnya, sehingga pemeriksaan ban tidak akan lolos
- Sistem segera memblokir pemain itu lagi, lalu menghubungkan alamat IP baru dan Steam ID baru ke ban yang lama
- Setelah itu, pemain tersebut akan langsung diblokir saat terhubung, apa pun alamat IP atau Steam ID yang digunakan, karena Tracking ID yang sama
Hasil penerapan 2017 dan publikasi
- Setelah pengujian, Invex Gaming menerapkan IdentityLogger ke seluruh server CSGO pada Februari 2017
- Segera setelah diterapkan, jumlah pelaku cheat yang diblokir meningkat tajam
- Terungkap pula bahwa sebagian anggota komunitas tepercaya yang sudah lama dikenal ternyata melakukan cheat lewat akun rahasia
- Beberapa pelaku cheat bahkan bertanya langsung mengapa pengelakan ban mereka terdeteksi meski sudah mengganti Steam ID dan alamat IP
- Operator server lain juga menunjukkan ketertarikan pada plugin ini, dan ada yang sampai menawarkan uang
- Karena bila teknik ini diketahui luas orang bisa mengakalinya hanya dengan menghapus file cookie, implementasinya dijaga rahasia di dalam tim admin
- Metode ini terus berfungsi sampai Valve sepenuhnya menghapus browser VGUI pada Oktober 2017 dalam proses memperkuat keamanan game
- Setelah browser VGUI dihapus, teknologinya dipublikasikan dan pluginnya juga dirilis sebagai open source
1 komentar
Pendapat di Hacker News
Di UT2004, pemain bisa diblokir berdasarkan GUID (hash CD key) atau IP, tetapi setelah Epic menelantarkan game itu, banyak key generator bermunculan sehingga pemblokiran GUID menjadi tidak efektif; sekarang VPN juga bisa dipakai hanya dengan 2 dolar, jadi pemblokiran IP pun punya banyak keterbatasan
Solusi utama yang saat ini dipakai adalah, selain pemblokiran IP, memasukkan seluruh basis data subnet VPN yang diketahui ke firewall untuk melakukan pemblokiran VPN, serta teknik fingerprinting serupa yang menelusuri struktur folder sistem tertentu
Itu dibuat karena di Tremulous (fork ioquake3) orang terus-menerus mengakali pemblokiran IP, tetapi bisa juga dipakai untuk game lain. Ini bukan proyek saya, tetapi saya mengenal pembuatnya, dan jika ada permintaan, proyek itu juga bisa di-fork dan disesuaikan untuk game tertentu atau penggunaan umum
Di schachtmeister2, heuristic seperti
whois -10 "Hosting",whois -13 "VPN",whois +7 "residential"juga bisa dipakaiTambahan: saya menghubungi admin setelah melihat repositori Git mengembalikan 502
Saya tidak lagi bermain online karena sudah kalah skill, tetapi kalau punya sekitar 30 menit luang, masuk sebentar untuk bermain cepat melawan AI masih tetap menyenangkan
Pemilik server mengizinkan koneksi akun non-Steam (kopian bajakan), jadi kami tidak bisa mengandalkan pemblokiran SteamID seperti GUID di Unreal. Mengganti ID palsu memang agak merepotkan karena letaknya entah di bagian dalam folder instalasi, tetapi tetap bisa dilakukan. Game ini cukup populer di Afrika Utara, bekas wilayah Baltik dan sekitarnya, serta Asia Utara dan Barat, jadi tanpa para pemain ini server akan kosong
Karena itu kami memakai wortel dan cambuk sekaligus. Pemain Steam mendapat reload hampir seketika, dibebaskan dari sebagian fitur operasi otomatis/kick yang agresif, serta mendapat nickname terreservasi dan tag “VIP”. Dengan harga beberapa key VPN, mereka mendapatkan keunggulan yang sah dan kepemilikan game, dan biaya sekali bayar itu langsung masuk ke pengembang. Atau bisa juga gratis jika selama 5 minggu bermain setidaknya 1 game per minggu dan menghubungi staf lewat media sosial
Untuk sisi cambuk, kami tidak sekadar melakukan kick/ban, melainkan sengaja membuatnya menjengkelkan untuk menunjukkan bahwa mereka benar-benar tidak diterima, agar mereka tidak ingin kembali. Misalnya melucuti senjata lalu memberi senjata terburuk, teleport acak hingga tersangkut di luar map atau di lantai, mengulang
amx_rocketuntuk membuat kembang api, memakaiamx_druguntuk menaikkan sudut pandang ke maksimum dan memberi efek mabuk, serta mengejek mereka sebagai loser berskill rendah yang baru merasa senang kalau AI harus bermain menggantikannyaAda juga plugin amx dan perintah yang dianggap “ilegal”; biasanya dihindari karena sangat mudah disalahgunakan, tetapi berguna dalam situasi seperti ini. Khususnya
amx_execcukup menakutkan karena memungkinkan admin mengakses langsung konsol dalam game milik klien dan menjalankan perintah atau pengaturan apa punMisalnya, dengan perintah seperti
rate 1000,name iCaNtAiM,unbind all,bind y quit,fps_max 50, admin bisa merusak kecepatan jaringan, mengganti nama, menghapus key binding, mengikat tombol chat default ke keluar dari game, dan menurunkan FPS maksimum ke tingkat yang tidak terlalu mencolok tetapi cukup menyebalkan. Mengembalikan default mudah dilakukan dengan menghapus file konfigurasi, tetapi jika tidak punya cadangan konfigurasi, ini bisa sangat menjengkelkanMenariknya, banyak server menjual keuntungan VIP dengan harga sampai 20 dolar per bulan. Awalnya saya kaget, tetapi kemudian saya mengetahui ada semacam struktur kartel gelap: agar tampil di posisi yang layak pada browser server pihak ketiga, orang harus membayar biaya yang cukup besar, dan sebagian besar pendapatan dipakai untuk “boost”
Ketika pemilik server kami berhenti membayar “boost” selama dua bulan, jumlah pemain rata-rata turun dari 14/32 menjadi 3/32, dan jumlah pemain puncak yang biasanya mencapai 28/32 setiap akhir pekan menjadi sekitar 12/32 pada Jumat malam kalau sedang beruntung. Begitu pembayaran dilanjutkan, jumlah pemain langsung melonjak; bagian gilanya, biayanya 180 dolar per bulan
Sebelum ikut mengelola, saya mengira deathmatch yang menyenangkan, manajemen yang baik, latensi rendah, server berkinerja tinggi, dan dedikasi pada remake/remix map terpopuler kedua dalam game sudah cukup untuk menjadi populer. Namun tampaknya agar terlihat oleh sebagian besar pemain, harus membayar mahal kepada para gatekeeper lama
Mirip seperti memberi tahu web scraper bahwa IP-nya diblokir, strategi seperti itu tidak menghasilkan apa-apa. Cara yang lebih baik adalah menandai IP scraper di belakang layar lalu hanya menyajikan data sampah yang disisipkan secara acak ke halaman
Menurut saya deteksi cheat juga sama. Jika memblokir, kita hanya kehilangan keuntungan strategis, sementara mengganti IP, CD key, atau akun hanyalah ketidaknyamanan kecil bagi cheater
Ini bidang yang saya minati baik secara profesional maupun pribadi, jadi jika butuh usulan, saya bisa membantu
Saya suka bahwa penulis memakai alamat TEST-NET-2 dari RFC5737 sebagai contoh alamat IPv4: “An example of an IPv4 IP address is 198.51.100.1.”
https://www.rfc-editor.org/rfc/rfc5737
Suatu saat dalam karier, saya benar-benar ingin menangani anti-cheat khusus sisi server. Perlombaan senjata yang antagonistik seperti ini tampaknya sangat menarik untuk dipikirkan secara lama dan mendalam
Karena jumlah pemain jauh lebih banyak daripada jumlah developer, ini adalah pertarungan yang kalah
Memindahkan semua tindakan penting ke server tidak mudah dan tidak murah, tetapi itulah cara untuk mencegah cheat secara lebih menyeluruh
Kalau ditambah game dengan banyak simulasi fisika, tickrate 120 (mungkin bisa dinaikkan setelah pengujian tambahan), pertarungan aksi berbasis kontrol yang presisi, dan target penskalaan sebesar MMORPG, ini benar-benar menjadi sulit
Sekarang ada aimbot berbasis YOLO, sehingga dunia menjadi jauh lebih rumit, dan kesimpulan realistisnya adalah anti-cheat pada akhirnya bisa dibobol
Di sisi klien, orang bisa membuat binary pribadi yang hash-nya tidak terdaftar di layanan anti-cheat utama, dan di sisi server, yang bisa dilihat hanya hal-hal yang diizinkan oleh aturan game
Tidak ada mekanisme untuk menghentikan kecepatan reaksi supermanusia, dan mungkin memang seharusnya tidak ada, sehingga ini menjadi masalah yang tidak lagi bisa diselesaikan
Karena itu dibutuhkan penilaian komunitas, tetapi ini juga membosankan. Pemain yang jago di Counter-Strike dituduh sebagai cheater adalah masalah lama sekaligus menarik
Beberapa tahun lalu saya membeli beberapa game Battlefield, tetapi beberapa di antaranya tidak bisa dimainkan karena cheater dengan speedhack dan aimbot. Saya bertanya-tanya mengapa mereka tidak melakukan apa-apa padahal tampaknya mudah dideteksi di sisi server
Jika situs webnya sedang down atau lambat dan Anda ingin membaca artikelnya, ada tangkapan layar halaman lengkap: https://i.imgur.com/SPp6IHX.jpeg
Saya tidak menyangka tulisan ini akan mendapat trafik sebanyak ini
Artikel ini membahas cara mencegah cheater yang sudah diblokir kembali berulang kali lewat penghindaran blokir, bukan mencegah cheater, yaitu deteksi cheat
Terutama dengan adanya cheat hardware seperti DMA belakangan ini, deteksi cheat adalah permainan yang sama sekali berbeda. Secara pribadi, menurut saya salah satu cara paling efektif untuk mencegah penghindar blokir adalah benar-benar mengenakan biaya untuk game-nya
Orang-orang CS:GO juga tidak terlalu peduli meski akun berisi skin bernilai ratusan dolar diblokir. Itu karena mereka membeli akun curian orang lain sekitar 5 dolar, atau toh sudah membayar 30 dolar per bulan untuk layanan cheat
Saya rasa ada tumpang tindih yang sangat besar antara cheater yang sering muncul dan whale pay-to-win
Cara yang lebih andal untuk mengurangi cheater dalam game adalah honeypot cheater. Alih-alih memblokir lalu melacak lagi cheater yang membeli akun baru, masukkan saja mereka diam-diam hanya ke matchmaking berisi cheater lain, bot yang sengaja dibuat menyebalkan, latensi palsu, dan sesekali input tombol yang diabaikan
Jika kesenangan mereka dirusak, mereka akan berhenti merusak game. Maka perang informasi berbalik: untuk tahu apakah perlu membeli akun baru, mereka harus lebih dulu mencari tahu apakah mereka secara rutin bermain dengan cheater atau bot
Tentu saja suatu saat pemasok yang ceroboh bisa saja membocorkan kunci TPM sehingga pemalsuan menjadi mungkin
Pemain dari negara besar mudah melewatkan rasa komunitas yang ada di negara kecil
Jika orang yang bermain setiap hari hanya cukup untuk 3–4 server, mereka cepat saling mengenal, dan itu sangat menambah lelucon serta kesenangan
Itu jauh lebih baik daripada game berskala jutaan pemain, di mana orang yang bermain satu ronde dengan Anda tidak akan pernah Anda lihat lagi. Untuk alasan yang sama, saya juga suka game yang memiliki server yang dikelola komunitas
Anda akhirnya terus masuk ke server yang sama berdasarkan siapa yang sedang online, dan terutama seberapa bagus koneksi Anda
Cara “jika seseorang masuk dengan Steam ID lain tetapi memakai alamat IP yang sudah diblokir, blokir lagi” hanya bekerja dengan baik sampai Anda menyadari bahwa itu menghukum pemain tak bersalah karena CGNAT dan rotasi alamat IP
Cheater biasanya tahu cara membuat router meminta IP baru, dan IP itu kemudian dialokasikan ke orang lain
Namun itu cukup jarang, dan selama beberapa bulan jumlah laporan hanya bisa dihitung dengan jari. Jika servernya lebih populer, kami pasti jauh lebih sering mengalaminya
Jika “solusi dan tekniknya hanya dibagikan kepada satu operator server lain di Inggris yang sepenuhnya dipercaya”, kemungkinan besar itu adalah kami
Pada akhirnya kami menggabungkannya dengan sinyal fingerprinting lain, tetapi cara menggunakan VGUI ternyata sangat efektif. Saya ingat browser web dihapus sekitar 2018, dan itu disayangkan. Fitur itu sangat kuat karena memungkinkan pembuatan skill tree kustom atau integrasi menarik yang terhubung dengan server
Pernyataan bahwa “trafiknya sendiri dienkripsi dengan HTTPS, jadi sekalipun memakai alat packet sniffing seperti Wireshark, token mentahnya tidak bisa ditemukan” kurang tepat; jika browser bawaannya menggunakan proxy sistem dan daftar sertifikat sistem, mendekripsi HTTPS dengan alat seperti Fiddler atau Burp Suite sangat mudah
Request-nya juga bersembunyi secara biasa di antara request lain, dan request-request itu memang bisa diperkirakan. Biasanya request MOTD tentu saja ada, jadi tidak terlihat aneh
Dalam situasi ketika cara menghindarinya jauh lebih sederhana, seperti menghapus satu file lokal, ini sudah bekerja cukup baik dibanding harus menemukan request sebenarnya lalu menyiapkan Fiddler atau Burp Suite
Tidak perlu dirancang berlebihan
Hanya butuh beberapa klik, dan tergantung TLS yang dipakai mungkin perlu dilakukan untuk tiap koneksi, tetapi tidak terlalu sulit
Saya tahu “seharusnya dipatenkan” itu lelucon, tetapi kalau dipatenkan, tekniknya harus dipublikasikan dan akan langsung menjadi tidak berguna
Meski begitu, saya sama sekali tidak merendahkan tulisannya. Saya menikmatinya saat membaca