Web trafiğinde emülatör ve sanal makine tespiti
Emülatörler ve VM'ler dolandırıcılığı ölçeklendirir: cihaz çiftlikleri, mobil emülasyon, bulut tarayıcılar. Tespit, sanal bir ortamın tam üretemediği donanım, zamanlama ve tutarlılık sinyallerini okumaktır.
Ölçekli olarak yürütülen dolandırıcılığın çoğu sanallaştırılmış altyapı üzerinde çalışır, çünkü alternatif — fiziksel telefon ve dizüstü bilgisayarlarla dolu bir oda — ölçeklenemez ve gizlenemez. Bir emülatör ya da sanal makine, tek bir operatörün talep üzerine binlerce görünüşte birbirinden farklı cihaz oluşturmasını sağlar; her biri yepyeni bir tüketici uç noktası gibi görünür. Bu sanallaştırmayı tespit etmek, bir device intelligence katmanının yaptığı en yüksek kaldıraçlı işlerden biridir, çünkü tek tek dolandırıcı eylemlerin peşinden birer birer koşmak yerine ölçekli istismarın altyapısını tespit eder.
Bu yazı, emülatör ve VM'lerin web ve uygulama trafiğinde kendilerini nasıl ele verdiğini ele alıyor: sanallaştırılmış bir ortamın yeniden üretmekte zorlandığı donanım, zamanlama ve tutarlılık sinyalleri, neden tek bir sinyalin yeterli olmadığı ve tespiti meşru sanallaştırmayı bozmadan nasıl değerlendirmek gerektiği. Hedef kitle, bot detection kuran veya değerlendiren mühendisler ve dolandırıcılık ekipleri.
Emülatör ve VM'ler dolandırıcılık açısından neden önemli
Emülatörler ve sanal makineler önemlidir çünkü hacimli dolandırıcılığın maliyet açısından verimli zeminidir — tek bir makineyi temiz görünen bir cihaz filosuna dönüştürürler ki bu tam olarak çoğu dolandırıcılık ekonomisinin gerektirdiği şeydir.
Dolandırıcılıkta tekrar eden sorun ölçektir. Tek bir sahte hesap ya da tek bir dolandırıcı işlem nadiren kazandırır; para bunu binlerce kez yapmaktadır. Bunu binlerce kez yapmak binlerce cihaz kimliği gerektirir, çünkü platformlar istismarı giderek cihaza göre ilişkilendirir (bkz. device fingerprinting nasıl çalışır). Çok sayıda cihaz kimliği elde etmenin dürüst yolu fiziksel donanımdır ve bu, aşırı pahalı ve yavaştır. Sanallaştırma ise ucuz yoldur.
Somut olarak, sanallaştırma şunların temelini oluşturur:
Cihaz çiftlikleri. Hesap oluşturmak, promosyon talep etmek, sahte yorum yazmak ya da credential-stuffing ve hacimli hesap oluşturma istismarını yürütmek için düzenlenen, emüle edilmiş mobil cihaz ya da headless browser örneklerinden oluşan raflar. Emüle edilmiş her örnek ayrı bir telefon ya da dizüstü bilgisayar gibi görünür.
Mobil uygulama emülasyonu. Gerçek bir telefon gerektirmesi gereken uygulama tabanlı akışları otomatikleştirmek için Android veya iOS uygulamalarını masaüstü ya da sunucu donanımında emülatörlerde çalıştırmak — mobil kayıtlar, uygulamaya özel promosyonlar, uygulama içi dolandırıcılık.
Bulut tarayıcılar ve browser-as-a-service. Bulut VM'lerinde çalışan, scraping, reklam dolandırıcılığı ve hesap istismarı için otomatikleştirilmiş tam tarayıcılar. Bunlar sayfaları tam olarak işlediği ve JavaScript çalıştırdığı için ilkel botlardan daha gelişmiştir.
Ortak nokta şu: tek bir fiziksel makine, çok sayıda sanal kimlik. Sanallaştırmayı tespit edebilirseniz, filoyu gerçek boyutuna geri indirirsiniz — ve aslında tek bir emüle edilmiş sunucu olan "bin kullanıcı", bin gerçek cihazdan çok farklı bir risk kararıdır. Sanallaştırma tespitinin bir kuvvet çarpanı olmasının nedeni budur: hacimli dolandırıcılığı mümkün kılan maliyet yapısına saldırır.
Bir sanal makineyi ele veren nedir
Bir sanal makine, sahip olmak yerine sentezlemek zorunda olduğu fiziksel sinyaller aracılığıyla kendini ele verir — GPU, zamanlama davranışı, sensörler ve üzerinde çalıştığı hipervizörün düşük seviyeli izleri. Gerçek tüketici donanımı bu sinyalleri gerçek olmanın bir yan etkisi olarak üretir; bir VM'nin bunları taklit etmesi gerekir ve hepsini tutarlı biçimde taklit etmek zordur.
Sanallaştırılmış GPU imzaları. Bu en güçlü ipuçlarından biridir. Grafik işleme, gerçek GPU'ya, sürücüsüne ve kayan nokta davranışına bağlıdır. VM'ler tipik olarak sanallaştırılmış ya da yazılımla işlenen grafikler kullanır — SwiftShader, llvmpipe, VMware/VirtualBox/QEMU sanal GPU'ları ya da hâlâ ele verici dizeler bildiren pass-through bir GPU. WebGL renderer ve vendor dizeleri sıklıkla sanallaştırmayı doğrudan adlandırır ("SwiftShader", "llvmpipe", "VMware SVGA", "Google SwiftShader") ve bu dizeler taklit edilmiş olsa bile, canvas ve WebGL işleme çıktısının kendisi fiziksel GPU'lardan ince, taklit edilmesi zor biçimlerde farklılık gösterir. Gerçek bir GPU, karmaşık bir sahneyi sürücüye özgü karakteristik izlerle işler; yazılımsal işleme ise farklı bir imza üretir.
Fazla temiz zamanlama. Gerçek donanım gürültülüdür. JIT derlemesi, çöp toplama (garbage collection), termal kısıtlama, işletim sistemi kesmeleri ve bellek hiyerarşisi etkileri zamanlama ölçümlerine sürekli titreşim (jitter) katar. Sanallaştırılmış ortamlar — özellikle yüksek kaliteli altyapı üzerinde bulut barındırmalı olanlar — genellikle fazla pürüzsüz çalışır ve zamanlama varyansı fiziksel tüketici cihazlarının sergilediğinden daha düşüktür. Belirli hesaplama örüntülerinin yüksek çözünürlüklü zamanlaması, performans profili doğal olmayacak kadar tekdüze olan bir ortamı ortaya çıkarabilir. Paradoksal biçimde, bir veri merkezi VM'sinin "temizliği" başlı başına bir sinyaldir.
Hipervizör izleri. Sanallaştırma düşük seviyeli izler bırakır: bir hipervizör altında farklılaşan CPU özellik bayrakları ve komut zamanlama tuhaflıkları, belirli TSC (timestamp counter) davranışı ve — gözlemlenebildiği yerde — tüketici tipik yapılandırmalar yerine VM tipik yapılandırmalar etrafında kümelenen donanım eşzamanlılık ve bellek değerleri. Bir tüketici dizüstü bilgisayarı olduğunu iddia ederken çok sunucu benzeri bir çekirdek sayısı ve bellek profili bildiren bir cihaz tutarsızdır.
Ses ve diğer donanım parmak izleri. AudioContext parmak izi ses alt sistemine bağlıdır; sanallaştırılmış ya da olmayan ses donanımı, gerçek ses donanımından farklılaşan kayan nokta çıktısı üretir. Tek başına küçük, kombinasyon içinde yararlıdır.
Ağ bağlamı. Emülatör ve VM filoları sıklıkla veri merkezlerinde çalışır, bu yüzden ağ katmanı — veri merkezi ASN'si, barındırma sağlayıcısı IP'si — uç nokta sinyallerini doğrular. Bir VM imzası ve bir veri merkezi IP'si, tek başına her ikisinden çok daha güçlü bir örüntüdür. (Gelişmiş operatörler ağ tarafını gizlemek için VM'lerinin önüne konut proxy'leri (residential proxy) koyar ki uç nokta düzeyindeki VM tespitinin bağımsız olarak önem taşımasının nedeni tam da budur — proxy'nin ardında da hayatta kalır.)
Mobil emülatörler kendilerini nasıl ele verir
Mobil emülatörler kendilerini aynı ilkenin telefonlara uygulanmasıyla ele verir: fiziksel bir cihazın belirli donanım, sensör ve işleme özelliklerini sentezlemek zorundadırlar ve sentez eksiktir. Masaüstü donanımında bir emülatörde çalışan bir Android ya da iOS uygulaması telefon değildir ve onlarca sinyal bunu söyler.
Donanım kimlik dizeleri. Emülatörler karakteristik cihaz modeli, build fingerprint ve donanım adı değerleri taşır. Android emülatörleri tarihsel olarak "generic", "goldfish", "ranchu", "sdkgphone" ve benzeri build tanımlayıcılarını, emülatör tipik model adlarıyla birlikte bildirir. Bunlar gerçek bir cihazı taklit edecek şekilde yamalanmış olsa bile, model, kart, CPU ABI ve build fingerprint _kombinasyonu çoğu zaman piyasaya çıkmış hiçbir gerçek cihazla eşleşmez — x86 ABI'ye sahip olduğunu iddia eden bir amiral gemisi telefon (gerçek telefonlar ARM'dir) açık bir ele veriştir.
Eksik ya da sahte sensörler. Gerçek telefonlarda ivmeölçerler, jiroskoplar, manyetometreler, ortam ışığı sensörleri ve barometreler bulunur ve — kritik olarak — bu sensörler cihaz tutulup hareket ettirildikçe sürekli, ilişkili, gürültülü veri üretir. Emülatörler ya bu sensörlerden yoksundur, ya statik değerler bildirir ya da bir insan elinde tutulan bir cihazın doğal varyansına ve sensörler arası ilişkisine sahip olmayan sentetik örüntüleri yeniden oynatır. İvmeölçeri kusursuz bir sabit okuyan ya da jiroskopu ve ivmeölçeri fiziğin gerektirdiği şekilde birlikte hareket etmeyen bir "telefon" emüle edilmiştir.
İşleme ve GPU farklılıkları. Tıpkı masaüstünde olduğu gibi, mobil GPU işleme imzası, fiziksel bir telefonun mobil GPU'su (Adreno, Mali, Apple GPU) ile emüle edilmiş ya da yazılımla işlenmiş bir GPU arasında farklılık gösterir. Belirli iddia edilen bir telefon modeliyle eşleşmesi gereken ekran yoğunluğu, çözünürlük ve işleme izleri çoğu zaman eşleşmez.
Zamanlama ve performans profili. Sunucu sınıfı donanımda bir emülatörde çalışan bir telefon uygulaması, aynı uygulamanın gerçek telefonun SoC'sinde çalışmasından farklı davranır — çoğu zaman gerçek cihazın olacağından daha hızlı ve pürüzsüz, "fazla temiz" ipucunun bir başka örneği.
Mobil durum, sensör verisinin belirleyici hâle geldiği yerdir, çünkü iyi taklit edilmesi gerçekten zordur. Gerçek bir telefonun hareket sensörlerinin sürekli, fiziksel olarak tutarlı çıktısını yeniden üretmek — ivmeölçer ve jiroskopun aynı hareket konusunda gerçekçi insan eli mikro-titreşimiyle uyuşması — bir model adı dizesini düzenlemekten çok daha fazla iş gerektirir ve çoğu emülasyon kurulumu bunu inandırıcı biçimde yapmaz.
Neden tek bir sinyal yeterli değil
Hiçbir tekil sinyal sanallaştırmayı güvenilir biçimde tespit edemez, çünkü herhangi bir sinyal onu bilen bir operatör tarafından taklit edilebilir — bu yüzden sağlam tespit, herhangi bir tekil kontrole değil, sinyaller arası tutarlılığa dayanır. Bu, anti-detect tarayıcı tespitini yöneten ilkeyle aynıdır: tek tek ipuçları yamalanabilir; hepsi arasındaki tutarlılık yamalanamaz.
Kararlı bir operatör şunları yapar:
- Gerçek bir GPU'yu adlandırmak için WebGL vendor/renderer dizelerini taklit eder.
- Android build fingerprint ve modelini gerçek bir telefona uyacak şekilde yamalar.
- Hareket verisini sahtelemek için sentetik sensör değerleri enjekte eder.
- Ağ sinyalini temizlemek için VM'nin önüne bir konut proxy'si (residential proxy) koyar.
Bunlardan herhangi biri, o tek sinyale dayanan bir dedektörü yener. Yalnızca WebGL renderer dizesini kontrol eden bir sistem, bir dize düzenlemesiyle alt edilir. Yalnızca build fingerprint kontrol eden bir sistem, bir yama ile alt edilir.
Zor olan, tümünü aynı anda tutarlı biçimde yapmaktır. Bir Adreno GPU iddia etmek için WebGL dizesini taklit eden operatör, hâlâ gerçek bir Adreno ile eşleşmeyen canvas işleme çıktısı üretir. Model adını sahteleyen operatör, hâlâ x86 ABI bildirir ya da böyle bir telefonun sahip olmadığı bir çekirdek sayısı ya da gerçekçi sensörler arası ilişki olmayan sensör verisi ya da iddia ettiği SoC için fazla temiz bir zamanlama bildirir. Ekledikleri her taklit, diğerlerinin tümüyle tutarlı kalması gereken bir başka yüzeydir ve kısıtlar katlanarak artar.
Bu, ortamsal tutarlılık ilkesidir: tespit "bu tek değer sanallaştırılmış görünüyor mu" değil, "bu değerlerin tümü tek, gerçek, fiziksel olarak mümkün bir cihazı mı tanımlıyor" sorusudur. GPU'su yazılım gibi işleyen, sensörleri sabit okuyan, ABI'si x86 olan ve zamanlaması veri merkezi kadar pürüzsüz olan bir iddia edilen iPhone tek bir açıdan değil — dört açıdan tutarsızdır ve dördünü de aynı anda uzlaştırmak masraflı olan kısımdır. Her sinyalde tam tutarlılığı sürdürmenin maliyeti, tutarlılık temelli tespitin tek sinyalli kontrollerin başarısız olduğu yerde dayanmasını sağlayan şeydir. Daha geniş silahlanma yarışı ve geldiği nokta bot trafiğinin durumu yazısında ele alınıyor.
Sanallaştırma tespitine göre nasıl hareket edilir
Sanallaştırmayı refleksle engellemeyin — onu bağlam içinde bir risk sinyali olarak tartın, çünkü meşru sanallaştırma mevcuttur ve toptan bir engelleme yanlış pozitiflere yol açar. Doğru yanıt, trafik hakkında başka nelerin doğru olduğuna bağlıdır.
Bir kullanıcının bir VM ya da emülatörde olmasının gerçek, meşru nedenleri vardır: emülatörlerde test eden geliştiriciler, güvenlik araştırmacıları, tarayıcıları VM'lerde çalıştıran gizliliğine önem veren kullanıcılar, kurumsal sanal masaüstü altyapısı, erişilebilirlik kurulumları. Tüm sanallaştırmayı doğrudan engellemek bu kullanıcıları cezalandırır. Sanallaştırma bir karar değil, bir risk sinyalidir.
Verimli yaklaşım, onu kademeli bir kararın girdilerinden biri olarak ele alır:
- Yalnızca sanallaştırma, aksi hâlde normal bağlam: düşük-orta risk. Bir emülatörde tek bir geliştirici dolandırıcılık değildir. Not edin, engellemeyin.
- Sanallaştırma + veri merkezi ağı + yeni hesap + yüksek hız: yüksek risk. Bu cihaz çiftliği imzasıdır — barındırma altyapısında, hızla hesap oluşturan emüle edilmiş bir uç nokta. Sinyaller birbirini doğrulayarak güvenli bir karara dönüşür.
- Sanallaştırma + tutarlılık ihlalleri (işlemeyle eşleşmeyen taklit dizeler, imkânsız donanım kombinasyonları): yüksek risk. Sanallaştırmanın yanı sıra onu gizlemeye yönelik aktif girişimler başlı başına en güçlü sinyaldir — meşru VM kullanıcıları amiral gemisi telefonları taklit etmek için build fingerprint'lerini yamalamaz.
- Filo korelasyonu: birçok "farklı" cihaz aynı ele verici sanallaştırma imzasını paylaştığında ve koordineli biçimde davrandığında, filo tespiti onları gerçek kökenlerine indirir ki bu, herhangi bir tekil hesabın görünümünden bağımsız olarak belirleyicidir.
Örüntü, headless-browser tespiti ve genel olarak bot detection ile tutarlıdır: tekil sinyal skoru bilgilendirir, sinyallerin kombinasyonu kararı üretir ve yanıt kademelidir — izin ver, meydan oku ya da engelle — sanallaştırma üzerine keskin bir engelleme değil. Emülatör ve VM tespiti en değerli hâlini bağımsız bir kapı olarak değil, ağ ve davranışsal bağlamla birleştiğinde hacimli dolandırıcılığın arkasındaki altyapıyı açığa çıkaran, ağır ağırlıklı bir sinyal olarak alır.
Tracio, sanallaştırmayı 130'dan fazla sinyal genelinde device intelligence'ının bir parçası olarak tespit eder — GPU ve işleme imzaları, zamanlama ve donanım-tutarlılık kontrolleri, mobil sensör ve build kimliği analizi — bunları IP intelligence ağ bağlamı ve tek sinyalli dedektörlerin kaçırdığı taklit girişimlerini yakalayan sinyaller arası tutarlılık kontrolleriyle birleştirir. Bot detection katmanından geçer ve altta yatan sinyaller ekli olarak 50 ms'nin altında bir karar döndürür.
Sanallaştırma tespitinin kendi funnel'ınızdaki cihaz çiftliği ve emülatör trafiğine karşı nasıl performans gösterdiğini görmek ister misiniz?
Ücretsiz denemenizi başlatın — 2.500 doğrulama ücretsiz, kredi kartı gerekmez. Emülatör ve VM tespitini kendi tehdit modelinize karşı incelemek için demo ayarlayın.