HTTP Injection İle Sınırsız İnternet - Yusuf Bülbül

HTTP Injection İle Sınırsız İnternet

Yakın zamanlarda http injector uygulamalarıyla operatorlerin sağladığı sınırsız whatsup ya da facebook gibi paketleri sınırsız internet paketine çevirme ile alakalı bazı yöntemler ve muhabbetler okudum. Bu yazımda kısaca bu konudaki denemelerimden ve olayın teknik olrak nasıl gerçekleştiğinden bahsedeceğim. Şimdi öncelikle Türkiyede operatörlerin sınırsız whatsup veya facebook gibi paketleri kullanıcılarına nasıl sağladığından bahsedeyim.

Türkiyedeki operatörler bu olayı SNI filtreleme ile yapıyorlar. SNI (açılımı ile Sunucu Adı Göstergesi), bir istemci aygıtın, TLS bağlantısının ilk adımında ulaşmaya çalıştığı alan adını belirtmesini sağlayan TLS şifreleme protokolüne yapılan bir ektir. Bu SNI olayını daha detaylı anlatayım; aynı sunucu içerisinde farklı alan adları ve bu farklı alan adlarına ait farklı sertifikalar olabiliyor. Bu yüzden şifreleme başlangıcında HTTP içerisinde bağlanılmak istenen alan adının belirtilmesi gerekiyor. Biliyorsunuz ki artık HTTP bağlantılarının neredeyse hepsi TLS ile şifreleniyor. Artık neredeyse tüm web sayfaları https ile çalışıyor. Bunun manası şudur, http katmanındaki tüm veri trafiği şifreleniyor yani HTTP içeriğini göremiyorsunuz dışarıdan. Fakat bu şifreleme olayının başlangıcında yani http veri trafiği şifrelenmeden önce HTTP içerisinde SNI adı görülebilir.

Şimdi Türkiyedeki operatörler bedava whatsup ya da facebook gibi paketler sağlarken kendi güvenlik duvarlarında bu SNI ları filtreliyorlar. Yani eğer SNI alanı, whatsup.com ya da facebook.com gibi ücretsiz veri trafiğine ait bir başlıksa güvenli bağlantıya izin veriyor. Güvenli bağlantı sağlandığında da artık veri trafiğinin içeriği görünmediği için orada paket başına bir filtreleme yapamıyor.

Peki burada SNI’yı istediğimiz gibi manüpüle edersek istediğimiz yere bağlantı sağlayabilir miyiz? Bu işlemin sonucunda bağlantının şifrelenmesi ve TLS protokolünün gerçekleşmesi gerekiyor. Yani sadece SNI alanını manüpüle ederek istediğimiz yere bağlanamayız. Çünkü kuracağımız her bağlantı için farklı SNI alanına ait sertifikalar gerekiyor. Eğer sadece bu alanı değiştirirsek geçerli sertifika bulunamayacak ve güvenli bağlantı gerçekleşmeyecektir. Güvenli bağlantının nasıl gerçekleştiğini bilmiyorsanız TLS hakkında yazdığım yazıyı buradan okuyabilirsiniz. Doğal olarak güvenlik duvarını delmek için yapılacak iki şey var. Birincisi, kurulacak bağlantının SNI bölümünü istediğimiz gibi manipüle etmek. İkincisi ise bir şekilde SNI yı değiştirmemize rağmen bir şifreli bağlantı kurarak tüm veri trafiğini bu şifreli kanal üzerinden yürütmek.

Şifreli bağlantı sağlamak için genellikle SSH bağlantısı kullanılıyor. SSH bağlantısı TLS ile HTTP üzerinden sağlanabiliyor. Aynı zamanda ssh bağlantısı üzerinden HTTP yönlendirme de sağlanabiliyor. Yani aslında kısaca şunu yapıyoruz; SNI bölümünü istediğimiz gibi değiştirip uzak bir sunucuya http üzerinden şifreli bir SSH bağlantısı kurup güvenlik duvarını kandırıyoruz. Tüm internet trafiğini bu şifreli ssh bağlantısı üzerinden yönlendirdiğimiz için güvenlik duvarı olaya ayıkamıyor. Tabi böyle bir durumda tüm paketleri şifreleyip katman içinde bir katman oluşturuyoruz. Bu sebeple internet hızı düşebilir ve gecikme oldukça artabilir. Ama günün sonunda sınırsız internet değil mi? Tabi şunu da belirtmek gerekir; bunu çok kullanırsanız operatör bu kullanımı fark edip tüm bedeli size yansıtacaktır. Ayrıca bu yapılan şey yasal da değil büyük ihtimalle. Fakat elçiye zeval olmaz. Ben sadece olayın nasıl gerçekleştiğini anlatıyorum size. 🙂

Şimdi olayın pratikte nasıl yapıldığını anlatan bir kaç kaynak vereceğim. Burada olay daha pratik ve uygulamaya yönelik olarak anlatılmış. Genellikle kullanılan uygulama şu. Fakat kullanılabilecek açık kaynak bir uygulama da gördüm githubdan. Açık kaynak için şu uygulamaya göz atabilirsiniz. Fakat bu uygulamalar http paketlerini manipüle ettiğinden büyük ihtimalle telefonda root yetkisi isteyeceklerdir. Bunun için telefonunuzu rootlamanız gerekebilir.

Uygulama hakkında kısaca bahsedeyim. HTTP injector uygulamasını ediniyorsunuz. Bir de ücretsiz bir ssh sunucusu buluyorsunuz kendinize. Bunun için intertte bedava ssh prox’ler ve sunucular var. Buradan ücretsiz ssh sunucu listesine bir göz atın. Ya da aws gibi bir buluttan bir yıllık ücretsiz sanal makine alabilirsiniz. Bu bulut üzerinden aldığınız sanal makineyi de kullanabilirsiniz. Ssh için ve SNI ile alakalı gerekli bilgileri uygulamaya girdiğinizde uygulama tüm işlemleri sizin yerinize hallediyor zaten.

SNI ile ilgili pratik yapmak için curl ya da openssl kütühanesini kullanarak denemeler yapabilirsiniz. Curl kütüphanesi için şuradaki yazıya göz atabilirsiniz. OpenSsl ile alıştırma yapmak için şu sayfaya göz atabilirsiniz. SSH üzerinden tünel oluşturmak için ve bu konuda alıştırma yapmak için şu yazıya göz atabilirsiniz.

İyi eğlenceler 🙂

Bilgi Paylaştıkça Çoğalır;
Yusuf

Yusuf

Bir Mühendis.

Önerilen makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir