- Modern çekirdek tabanlı anti-cheat sistemleri, Windows ortamındaki en karmaşık güvenlik yazılımlarından biridir ve oyun çalışırken bile çekirdek düzeyinde belleği ve sistem olaylarını izler
- Kullanıcı modu korumasının sınırlarını aşmak için çekirdek sürücüleri kullanır; süreç, iş parçacığı oluşturma, imaj yükleme ve kayıt defteri değişikliklerini gerçek zamanlı izler
- BattlEye, EasyAntiCheat, Vanguard, FACEIT AC gibi başlıca sistemler; çekirdek sürücüsü, servis ve oyun DLL'inden oluşan 3 katmanlı bir yapıyla çalışır; açılışta yüklenen Vanguard en güçlü denetim yetkisine sahiptir
- Bellek tarama, hook tespiti, sürücü bütünlüğü doğrulaması, DMA saldırılarına karşı önlem, davranış tabanlı tespit gibi çok katmanlı savunmaları birleştirerek hile davranışlarını engeller
- Sonuç olarak TPM tabanlı uzaktan doğrulama ve donanım güveni doğrulaması, oyun güvenliğinin temel dayanağı olarak öne çıkıyor
1. Kullanıcı modu korumasının sınırları ve çekirdeğe geçiş
- Kullanıcı modu süreçleri, yetki olarak çekirdeğin altında kaldığından çekirdek sürücüsü veya hypervisor düzeyindeki hileler tarafından kolayca aşılabilir
- Örnek:
ReadProcessMemory çağrısı, çekirdek hooking ile sahte hale getirilebilir
- Çekirdek modu hileleri oyun belleğini doğrudan manipüle edebilir ve kullanıcı modu tespitinden kaçabilir
- Buna karşılık anti-cheat sistemleri çekirdek düzeyine taşınarak aynı yetki seviyesinde izleme yapar
2. Hile ile anti-cheat arasındaki “silahlanma yarışı”
- Kullanıcı modu → çekirdek → hypervisor → DMA şeklinde ilerleyen bir yetki yükseltme yarışı sürüyor
- Anti-cheat tarafı buna sürücü engelleme, hypervisor tespiti ve IOMMU tabanlı DMA savunması ile karşılık veriyor
- Bu süreç, hile geliştirme maliyetini ve zorluğunu artırarak sıradan kullanıcıların erişimini engelleyen bir etki yaratıyor
3. Başlıca çekirdek anti-cheat sistemleri
- BattlEye:
BEDaisy.sys çekirdek sürücüsü merkezli, süreç/iş parçacığı/imaj yükleme callback'leri kaydeder
- EasyAntiCheat(EAC): Epic Games'e ait, benzer bir 3 katmanlı yapı kullanır
- Vanguard: Açılışta
vgk.sys yüklenir, sürücü whitelist modeli ile güçlü denetim sağlar
- FACEIT AC: Çekirdek düzeyinde izleme ile yüksek güvenilirlik sağlar
- ARES 2024 makalesi, bu sistemlerin rootkit benzeri teknik bir yapıya sahip olduğunu ancak amaçlarının savunma olduğunu açıkça belirtir
4. Çekirdek anti-cheat'in 3 katmanlı yapısı
- Çekirdek sürücüsü: System call hooking, bellek tarama ve erişim denetimi yapar
- Kullanıcı modu servisi: Ağ iletişimi, ban yönetimi ve telemetri gönderiminden sorumludur
- Oyun DLL'i: Oyun süreci içinde doğrulama yapar ve servisle IPC üzerinden iletişim kurar
- Aralarında IOCTL, Named Pipe, Shared Memory üzerinden iletişim sağlanır
5. Açılışta yükleme ile çalışma anında yükleme arasındaki fark
- BattlEye/EAC: Sürücü oyun başlatıldığında yüklenir, oyun kapanınca kaldırılır
- Vanguard: Açılışta yüklenir ve sonradan yüklenen tüm sürücüleri izler
- Bu nedenle sistemin yeniden başlatılması gerekir ve koruma açılış aşamasından itibaren sağlanabilir
6. Çekirdek callback tabanlı izleme
- ObRegisterCallbacks: Süreç handle erişimini denetler, dış süreçlerin bellek erişimini engeller
- PsSetCreateProcessNotifyRoutineEx: Hile süreci oluşturulmasını engeller
- PsSetCreateThreadNotifyRoutine: Oyun süreci içindeki anormal iş parçacıklarını tespit eder
- PsSetLoadImageNotifyRoutine: İzin verilmeyen DLL yüklemelerini tespit eder
- CmRegisterCallbackEx: Kayıt defteri değişikliklerini izler
- Minifilter sürücüsü: Dosya sistemi düzeyinde hile dosyalarına erişimi engeller
7. Bellek koruması ve tarama
- Handle erişimini kısıtlama ile dışarıdan bellek okuma/yazma engellenir
- Kod bölümü hash doğrulaması ile kod yaması tespit edilir
- VAD ağacı dolaşımı ile elle map edilmiş yürütülebilir bellek tespit edilir
- Anonim yürütülebilir bellek, elle map edilmiş DLL, shellcode sezgisel yöntemlerle belirlenir
8. Enjeksiyon tespiti
- CreateRemoteThread, APC, NtMapViewOfSection, Reflective DLL gibi çeşitli enjeksiyon teknikleri tespit edilir
- Stack frame analizi(RtlWalkFrameChain) ile anormal kod çalıştırma olup olmadığı kontrol edilir
9. Hooking tespiti
- IAT hooking: Import Address Table üzerindeki değiştirmeler tespit edilir
- Inline hooking: Fonksiyon başlangıcındaki JMP komutları karşılaştırılarak yama olup olmadığı kontrol edilir
- SSDT, IDT, GDT bütünlük kontrolleri ile çekirdek düzeyindeki hooking engellenir
- Doğrudan syscall kullanımı tespiti ile
ntdll atlatma girişimleri durdurulur
10. Sürücü düzeyinde koruma
- İmzasız sürücüler ve test imzası modu tespit edilir
- BYOVD(açıklı sürücü kötüye kullanımı) saldırılarını engellemek için blocklist uygulanır
- PiDDBCacheTable, MmUnloadedDrivers, BigPool gibi çekirdek içi yapılar izlenerek elle map edilmiş sürücüler tespit edilir
11. Anti-debugging ve analizi önleme
- NtQueryInformationProcess ile debugger varlığı kontrol edilir
- KdDebuggerEnabled değişkeni ile çekirdek debugger'ı tespit edilir
- ThreadHideFromDebugger bayrağı ile gizlenmiş iş parçacıkları tespit edilir
- RDTSC tabanlı zamanlama kontrolleri, donanımsal breakpoint'ler ve hypervisor varlığı üzerinden analiz ortamları engellenir
12. DMA tabanlı hileler ve karşı önlemler
- PCIe DMA aygıtları, CPU müdahalesi olmadan belleği okuyabilir
- IOMMU DMA erişimini sınırlar, ancak devre dışı bırakıldığında veya yanlış yapılandırıldığında etkisiz kalabilir
- FPGA aygıtlarının meşru cihaz gibi görünmesi tespiti zorlaştırır
- Secure Boot, TPM 2.0 ile açılış bütünlüğü doğrulaması bazı riskleri azaltabilir
13. Davranış tabanlı tespit ve makine öğrenimi
- Fare girdisi analizi ile insan hareketi ile auto-aim ayrıştırılır
- CNN ve Transformer modelleri kullanılarak triggerbot ve aimbot tespit edilir
- Graf sinir ağları ile takım tabanlı kötüye kullanım(wallhack, iş birliği) tespit edilir
- Telemetri hattı: Çekirdekte giriş yakalama → şifreli iletim → sunucuda ML analizi → ban kararı
14. Sanal ortamlar ve analizden kaçınma
- CPUID hypervisor biti ve vendor string ile VM tespiti yapılır
- VMware, VirtualBox, Hyper-V için kayıt defteri ve aygıt izleri kontrol edilir
- Çift sanallaştırma ortamı, komut yürütme gecikmesi üzerinden tespit edilebilir
15. Donanım tanımlama ve ban uygulaması
- SMBIOS, disk, GPU, MAC, MachineGuid gibi verilerle HWID oluşturulur
- HWID spoofing, kayıt defteri, sürücü ve fiziksel müdahale ile denenebilir; ancak
tanımlayıcı uyuşmazlığı veya anormal biçim üzerinden tespit edilebilir
16. Gelecek eğilimleri ve teknik dönüşüm
- DMA sonrasındaki aşama firmware tabanlı hileler olup tespit zorluğunu en üst düzeye çıkarır
- Yapay zeka tabanlı donanımsal aimbot'lar, insan girdisinden ayırt edilmesi zor araçlardır
- TPM tabanlı uzaktan doğrulama ve cloud gaming, uzun vadeli alternatifler olarak öne çıkıyor
- Çekirdek anti-cheat hâlâ fiili ön cephe olsa da
donanım güveni doğrulaması ve sunucu tarafı doğrulama nihai yön olarak gösteriliyor
1 yorum
Hacker News yorumları
Özetle, modern hileler anti-cheat'i hypervisor, BIOS yamaları, DMA cihazları vb. ile aşıyor
Donanım seviyesinde koruma güçlendikçe hile geliştiricileri de o ölçüde evrim geçiriyor
Ancak yapay zeka tabanlı oyun analizi ortaya çıktıkça, doğrudan hileciyi tespit eden yöntemler etkili olmaya başlıyor
Sonuçta gelecek, kernel modu değil user mode anti-cheat ve oynanış analizinde
Aksine, bu daha çok anti-cheat'in iyi çalıştığının kanıtı gibi görünüyor
Eskiden tek bir program indirince hemen hile yapılabiliyordu, şimdi ise giriş bariyeri yükseldiği için çoğu kişi denemeye bile kalkmıyor
Yine de yazının başlarında bu savunmaların etkisiz hâle getirilebileceği söylenmişti; o zaman gerçekten güvenilir değiller mi sorusu akla geliyor
Benim de iki hesabım banlandı ama müşteri desteğiyle açtırabildim
Ancak destek işlerinde yapay zeka kullanılıyor gibi göründüğünden, haksız banların çok olacağını düşünüyorum
Böyle davranış tabanlı ban sistemleri, kendini oyuna adamış kullanıcıları bile yanlış cezalandırma riski taşıdığı için güven vermiyor
Yani artık herkes hile geliştiremiyor; bu yüzden anti-cheat bir ölçüde başarılı
Ama oynanış analizi büyük ihtimalle yalnızca bariz hilecileri yakalar, basit ESP türlerini kaçırabilir
Bu tip hileciler topluluğu yavaş yavaş çürüttüğü için daha tehlikeli
Kernel'e müdahale etmek, OS'in güvenlik modelinin tamamını yok saymak demek
Nitekim hatalı anti-cheat yüzünden root yetkisinin ele geçirildiği vakalar da oldu
Doğru olan, OS'in sandbox özelliklerini ve önyükleme aşamasındaki güven zincirini kullanmak
Bu yüzden yalnızca OS özelliklerine güvenmek zor, attestation da pratikte dar bir kapsama sahip
Mükemmel olmasa bile hileci sayısını istatistiksel olarak azaltabiliyorsa yine de anlamlıdır
Seçmeli anti-cheat eşleştirme sistemi olan oyunlar görmek isterdim
Anti-cheat'i açanlar sadece kendi aralarında eşleşir, kapatanlar ise topluluk öz denetimiyle yürüyen bir yapıda oynar
Böyle bir deneyi muhtemelen ancak Valve ölçeğinde bir şirket yapabilir
Ama topluluk öz denetimi büyük ölçekte asla verimli değil
Şahsen, hileci varsa oyunu kapatıp dışarı çıkıp biraz hava almanın daha iyi olduğunu düşünüyorum
Kernel seviyesinde ‘zararlı yazılım gibi’ anti-cheat kuracağıma konsolda oynamayı tercih ederim
Hileciler özünde anormal davranış kalıpları sergilediği için, sunucuda tüm girdileri kaydedip makine öğrenimi tabanlı anomali tespiti uygulanırsa yakalanabilirler
Ayrıca ‘honeypot’ nesneleri oluşturup yalnızca hilecilerin bunlara tepki vermesini sağlamak da mümkün
p-hacking örneğinde olduğu gibi, rastlantısal dalgalanmaları anlamlı sinyal sanabilirsiniz
Nitekim Dota 2, istemci içindeki anormal veri bölgelerini okuyan tüm hesapları banladı
İlgili yama duyurusu
Sadece ML atıp bırakınca çözülen bir sorun değil
Davranış analizi, topluluğun değişim hızına yetişmekte zorlanır
Hileciler genelde profesyonellerden yaklaşık 100 ms daha hızlı tepki veriyor
Oyuncu değilim ama çevrimiçi oyunlardaki hile önleme sorununun teknik açıdan ilginç ve zorlu bir problem olduğunu düşünüyorum
“Her şeyi sunucuda yapın” tavsiyesi tek başına gerçekçi değil
Oyunlar Olimpiyat değil, mahalle ligi gibi; kusursuz adaletten çok eğlence önemli
Hileciler birbirleriyle eşleşirse sıradan kullanıcılar daha az etkilenir
Ama büyük oyun şirketleri buna personel ayırmıyor
Anti-cheat sadece giriş bariyerini yükseltir
Çevrimiçi oyunda hile yapanlara ‘ezik’ gözüyle bakılan bir atmosfer oluşmalı
Kernel seviyesinde anti-cheat, istemciyi mümkün olduğunca kilitlemeye çalışır ama buna rağmen hileciler yine vardır
Sonuç olarak sunucu istemciye hiçbir zaman tam anlamıyla güvenemez
Ağ koduyla da tamamen çözülemez
Günümüz rekabetçi oyun kültürü, şirketlerin kullanıcıları arkadaşlarıyla değil yabancılarla rekabet ettirdiği bir yapı kuruyor
Ama gerçekten bunu bu kadar zorlamak gerekiyor mu emin değilim
Spor ya da satrançta olduğu gibi, beceri yarıştırmak insanın içgüdüsel isteklerinden biri
Kernel anti-cheat için “en sofistike yazılım” ifadesi abartılı geliyor
Sistem çağrılarını yakalamak özel bir teknik değil
Görünüşe göre pek çok kişi rekabetçi oyun oynamamış
Kernel-level anti-cheat (KLAC) gerçekten işe yarıyor
VAC/VACNet tabanlı çözümlere kıyasla FACEIT veya Vanguard gibi kernel tabanlı sistemlerde hile oranı çok daha düşük
Elbette kusursuz değiller ama giriş bariyerini ciddi biçimde yükseltiyorlar
Sadece DMA cihazları bile yüzlerce dolara mal oluyor, ileri düzey hileler ise abonelik modeliyle pahalıya geliyor
Oyun bir tercihtir; KLAC'tan hoşlanmıyorsan oynamazsın
Ama bunu reddedersen hilecilerin cirit attığı bir ortamı da kabullenmen gerekir
TPM tabanlı boot ölçümü ve UEFI Secure Boot ile uzaktan doğrulama yapılabildiğini duymuştum; saldırganların bunu da manipüle edebilmesi şaşırtıcı
Bizim, cihaz mülkiyetini tam olarak koruyup aynı zamanda ayrımcılığa uğramadan özgür olma hakkımız olmalı