Bot nedir ve kötü amaçlı botlarla nasıl mücadele edilir?

Bu flood’da gerçek bir kullanıcıymış gibi davranarak web uygulamaları ve oyunları kötü amaçlı olarak kullanan bot adı verilen programlardan ve onlarla mücadele yöntemlerinden bahsedeceğim.

Öncelikle hepimiz arama motorlarının botlarını duymuşuzdur. Bu botlar web sitelerini ziyaret ederek sitelerde bulunan bilgileri arama motorunun veri tabanında indeksler ve bu sayede arama motoru üzerinden sitemizdeki bilgiler kullanıcılar tarafından aranabilir olur.

Arama motorlarının kullandığı botlar ile birçoğumuzun tekrarlayan ve otomasyonla çözülebilecek işler için kullandığı ChatBot'lar faydalı amaçlara hizmet ederler. Bazı botlar ise web uygulamaları ve oyunlardaki kısıtlamaları aşmak üzere kötü amaçlı da kullanılabilmektedir.

Kötü amaçlı olarak kullanılan botların en güzel örneklerden biri konser ve maç bileti satışlarında kullanılan botlardır. Biletler satışa açıldığı anda botlar konser veya maç için bilet almaya çalışan kişilere göre daha büyük bir avantajla en iyi yerlerdeki biletleri alabilirler.

Botların etkinlik bilet satışında insanlara göre avantajlı olma sebebi bilgisayarların algılama ve karar verme süresinin daha kısa olmasıdır. Ek olarak botlar API cevaplarını işleyip hızlıca yeni isteği gönderir, insanlarınsa sayfayı görmesi ve fareyle butona basması gerekir.

Kötü amaçlı olarak kullanılan botlar internet üzerinden düzenlenen yarışmalara insanlarla birlikte katılarak kısa sürede soru havuzu ve doğru cevapları çıkarabilir ve sonra bunları insanların kullanımına da sunabilir. Bu türdeki botlar genellikle deneme yanılma yoluyla ilerler.

Bir diğer örnek, bir bot ordusunun bir web uygulamasına yönlendirilmesi ve ilgili uygulamayı hizmet veremez hale (DoS) getirmesi olabilir. Sayıca çok fazla olan botlar web uygulamasının kaynaklarını (CPU, RAM, bant genişliği) tüketerek onu işlevsiz hale getirebilirler.

Yukarıda verilen örneklerden görüldüğü üzere web uygulamamızın ve servisimizin güvenliğini sağlamak için botlarla zaman zaman mücadele etmemiz gerekebilir. Unutmamak gerekir ki botlarla mücadele aklın akılla mücadelesidir, uygulanan yöntemleri sürekli geliştirmek gereklidir.

Botlarla mücadeledeki en önemli koz karşı taraf için botu idame ettirme maliyetini artırmaktır. Düşük maliyetle faaliyet gösterebilmek için bazı botlar (özellikle DoS amaçlı kullanılanlar) web istekleri yapabilen ancak tarayıcı özelliği bulunmayan uygulamalar olarak tasarlanır. Bu tip botlarla mücadele basittir. Trafiği karşılayan ağ elemanlarından biri WAF - Web Application Firewall veya Load Balancer, bota bir JavaScript Challenge gönderir. Bot bir tarayıcı gibi JS yorumlayamadığı için apışıp kalır, cevap veremez ve web uygulamasına giremez.

Botların tarayıcı tabanlı bir Scraper yerine tarayıcı özelliği olmayan Scraper'lar kullanmak isteme sebebi tarayıcı tabanlı Scraper'ların daha fazla sistem kaynağına ihtiyaç duymasıdır. Bu sayede daha az CPU (yani maliyet) ile daha fazla Scraper çalıştırılabilir.

Cloudflare, web siteniz için atak modunu etkinleştirdiğinizde ziyaretçiye aşağıdaki ekran görüntüsünde gösterildiği gibi kapsamlı bir JavaScript Challenge gönderir. Kullanıcı bu testten ancak JavaScript ve Cookie'leri etkinleştirerek geçebilir.

Daha önce de belirttiğim gibi botlarla mücadele sürekli bir mücadeledir. Örn, https://github.com/Anorov/cloudflare-scrape GitHub reposunda Cloudflare'in kullandığı JavaScript Challenge'ını Python ile bypass etmek üzere bir modül geliştirilmiş ve sürekli güncellenmektedir.

Tarihsel olarak ilk çıkan bot önleme tekniklerinden olan CAPTCHA, RECAPTCHA ve son olarak NOCAPTCHA sadece insanların tanıyabileceği karmaşık yazılar ve resimler göstererek botları engellemeye çalışmakta ve genellikle başarılı olmaktadır.

*CAPTCHA'lara bot geliştiricilerinin verdiği cevap ise çözülmesi gereken CAPTCHA'ları uzakdoğuda 8x5 bu işi yapan insanlara göndermesi, insanların bunu çözmesi ve cevabı bota geri göndermesi olmuştur. https://anti-captcha.com örnek olarak incelenebilir.

Son olarak, gelişmiş WAF - Web Application Firewall, Load Balancer, vb ağ ekipmanları sundukları servise belirli bir IP'den belirli bir sürede yapılabilecek istekleri sınırlandırarak (Rate Limiting), servislerin botlar tarafından kötüye kullanımını sınırlayabilirler.