Cihaz Grafiği Analizi: Oturumlar Arası Bağlantıları Ortaya Çıkarmak
Grafik veritabanları cihazlar arasındaki gizli bağlantıları nasıl ortaya çıkararak ölçekli çoklu hesap tespiti ve dolandırıcılık şebekesi tanımlamayı mümkün kılar.
Tek bir dolandırıcı düzinelerce hesabı yönettiğinde, hesaplar tek tek bakıldığında meşru görünür. Her birinin benzersiz bir e-postası, akla yatkın bir IP adresi, gerçekçi gezinme kalıpları vardır. Geleneksel kural tabanlı tespit her hesabı bağımsız olarak kontrol eder ve şüpheli hiçbir şey bulmaz. Hesaplar arasındaki bağlantılar — paylaşılan cihazlar, örtüşen oturumlar, ortak ağ parmak izleri — hesapları teker teker işleyen sistemler için görünmezdir.
Neden Grafikler
Cihaz grafiği analizi bu modeli değiştirir. Hesapları bağımsız olarak değerlendirmek yerine, düğümlerin cihazlar, hesaplar, IP adresleri ve oturumlar olduğu, kenarların ise gözlemlenen bağlantıları temsil ettiği bir grafik oluştururuz: "bu cihaz bu hesabı oluşturmak için kullanıldı", "bu IP bu cihazla birlikte görüldü", "bu iki hesap bir oturum çerezini paylaştı". Grafik, düz tabloların gösteremeyeceği bir yapıyı ortaya çıkarır.
5 cihaz ve 3 IP adresi üzerinden 50 hesap kullanan bir dolandırıcılık şebekesi, grafikte belirgin bir küme oluşturur. Küme yoğunluğu — küçük bir düğüm grubu içindeki çok sayıda bağlantı — güçlü bir sinyaldir. Meşru kullanıcılar cihazlarını yabancılarla nadiren paylaşır ve hesap-cihaz bağlantıları yoğun kümeler yerine seyrek, ağaç benzeri yapılar oluşturur.
Grafik Veritabanı Mimarisi
Dört düğüm tipiyle bir özellik grafiği (property graph) modeli kullanıyoruz: Device (ziyaretçi kimliğiyle tanımlanır), Account (sizin kullanıcı kimliğiniz), Network (IP adresi + ASN) ve Session (bireysel tanımlama olayı). Kenarlar meta veri taşır: zaman damgası, güven skoru ve olay tipi.
Grafik, 2 adımlı gezinmeler için optimize edilmiş, amaca yönelik geliştirilmiş bir komşuluk indeksinde saklanır. Yeni bir tanımlama olayı geldiğinde, olayı bir Session düğümü olarak ekliyor, onu Device ve Network düğümlerine bağlıyor ve bağlantılı herhangi bir Account'un başka cihazlarla bağlantısı olup olmadığını kontrol ediyoruz. Bu ekleme-ve-sorgulama işlemi, 10 milyon düğüme kadar olan grafiklerde 5 ms'nin altında tamamlanır.
Aslında ilk önce Neo4j'yi denedik. 100 bin düğümle geliştirme ortamında harika çalıştı. Sonra üretim verisini yükledik — 500 milyon düğüm — ve 2 ms süren Cypher sorguları 800 ms sürmeye başladı. David, kendi komşuluk indeksimizi parçalanmış (sharded) RocksDB üzerine kurmadan önce bir hafta boyunca alternatifleri kıyasladı. Bazen sıkıcı, özel çözüm zarif hazır çözümü yener.
Kümeleme Algoritmaları
Cihaz grafiğine iki kümeleme algoritması uyguluyoruz:
Bağlı Bileşenler
En basit yaklaşım: belirli bir cihazdan erişilebilen tüm düğümleri bulmak. Device A, Account 1 ve Account 2'ye bağlıysa ve Device B de Account 2'ye bağlıysa, o zaman Device A ve Device B aynı bağlı bileşendedir. Bu, herhangi bir geçişli cihaz bağlantısını paylaşan tüm hesapları tanımlar.
Bağlı bileşenlerin hesaplanması hızlıdır ama meşru paylaşılan cihazlar (aile bilgisayarları, kütüphane terminalleri) ilgisiz hesaplar arasında köprüler oluşturduğunda çok büyük kümeler üretebilir. Bunu kenar ağırlıklandırmasıyla ele alıyoruz — bilinen paylaşılan ortamlar üzerinden geçen bağlantılar daha düşük ağırlık alır.
Topluluk Tespiti
Daha ince ayrıntılı analiz için, ağırlıklı grafik üzerinde Louvain topluluk tespiti çalıştırıyoruz. Bu algoritma, grafiği topluluk-içi bağlantıların yoğun, topluluklar-arası bağlantıların seyrek olduğu topluluklara böler. Dolandırıcılık şebekeleri, paylaşılan altyapı üzerinden daha geniş grafiğe bağlı olsalar bile sıkı topluluklar oluşturur.
Louvain algoritması O(n log n) zamanda çalışır ve bu da onu milyonlarca düğümlü grafikler için pratik kılar. Onu artımlı olarak çalıştırıyoruz — yeni kenarlar eklendiğinde, tüm bölümlemeyi yeniden hesaplamak yerine topluluk atamalarını yerel olarak güncelliyoruz.
Gerçek Dünyadan Bir Kalıp: Dolandırıcılık Şebekesi Tespiti
Bir oyun platformu, organize dolandırıcılık şebekelerini tespit etmek için cihaz grafiği API'mizi entegre etti. İlk hafta içinde grafik, 8 cihaz ve 4 IP adresi üzerinden bağlı 127 hesaptan oluşan bir kümeyi ortaya çıkardı. Hesaplar 3 aylık bir süre boyunca, her biri benzersiz bir e-posta ve gerçekçi profille oluşturulmuştu. Kural tabanlı tespit bunların hiçbirini işaretlememişti.
İpucunu veren şey grafik yapısıydı: 8 cihazı paylaşan 127 hesap, cihaz başına ortalama 15,8 hesap üretir. Bu platformda meşru kullanıcılar cihaz başına ortalama 1,2 hesaba sahiptir. Küme yoğunluğu referans değerin 47 katıydı — açık ve net bir dolandırıcılık sinyali.
Ölçekte Performans
Üretim cihaz grafiğimiz 2,3 milyar düğüm ve 8,1 milyar kenar işliyor. Ekleme gecikmesi p99'da 2,4 ms'dir. İki adımlı gezinme (bir cihaza uzunluğu 2 olan herhangi bir yol üzerinden bağlı tüm hesapları bulmak) p99'da 4,1 ms'de tamamlanır. Topluluk tespiti güncellemeleri saniyede 50.000 yeni kenar işler.
Grafik, cihaz kimliği karması (hash) ile 12 düğüm arasında parçalanmıştır (sharded) ve her parça yaklaşık 190 milyon düğüm tutar. 3'lük çoğaltma faktörü kullanılabilirliği güvence altına alır. Grafiği felaket kurtarma için saatte bir anlık görüntü olarak alıyor ve artımlı güncellemelere karşı bir tutarlılık kontrolü olarak günlük tam topluluk tespiti yeniden hesaplaması çalıştırıyoruz.
Entegrasyon
Cihaz grafiğine iki arayüz üzerinden erişilebilir: bireysel aramalar için bir gerçek zamanlı sorgu API'si (bu cihaz başka hesaplara bağlı mı?) ve analitik için bir toplu dışa aktarma API'si (bana N'den fazla hesabı olan tüm kümeleri ver). Gerçek zamanlı API, satır içi dolandırıcılık kararları için tasarlanmıştır — hesap oluşturma sırasında cihazın başka hesaplar görüp görmediğini kontrol etmek için sorgu yapın. Toplu API ise veri ekibinizin araştırma iş akışlarını besler.