Ağ trafiği dinleme araçları — 2

Bu flood’da bilgisayarımızın ağ ile yaptığı HTTP/HTTPS iletişimini dinlememizi sağlayan Web Debugging Proxy araçlarını ve bu araçlardan biri olan Fiddler'ı inceleyeceğiz.

Bir önceki flood’da ağ trafiğini ethernet frame seviyesinde yakalayan Wireshark’tan bahsetmiştik. Wireshark, genel amaçlı trafik izlemede başarılı olsa da önceki flood’da bahsedildiği gibi SSL/TLS ile şifrelenen HTTPS trafiğini genel-geçer biçimde çözerek takip edememektedir.

Günümüzde geliştirilen uygulamaların büyük bölümü HTTP/HTTPS tabanlı olduğu için HTTP/HTTPS trafiği için özelleştirilmiş, SSL/TLS trafiğini kullanılan uygulamadan bağımsız olarak çözebilen Web Debugging Proxy veya HTTP Proxy olarak adlandırılan uygulamalar popüler olarak tercih edilmektedir. Bu uygulamalardan en popüler olanlar Fiddler, Burp Suite ve Charles Proxy olarak sıralanabilir. Burp Suite ve Charles Proxy Windows, Linux ve macOS platformlarında kullanılabilirken Fiddler Windows'ta çalışmakta, Linux ve macOS'ta ise beta durumdadır.

Bütün Web Debugging Proxy'ler birbirine benzer yapıdadırlar. En popüler araç Fiddler olduğu için anlatımda Fiddler'ı kullanacağız. Öncelikle bu araçların nasıl çalıştığı ile başlayalım. Fiddler, çalıştırıldığı bilgisayar üzerinde 8888 portunu dinlemeye başlar. Bu porta yapılan istekleri yakalayıp kaydeder ve gidecekleri asıl hedefe (http://www․milliyet․com․tr, vb) yollar. Gelen cevabı alıp yine kaydederek asıl kaynağına yani iletişimi başlatan prosese iletir. Aşağıda Fiddler'ın nasıl çalıştığı özetlenmiştir.

Önceleri programlar, internete proxy üzerinden çıkan kullanıcıların da programları kullanabilmesi için proxy ayarı yapılmasına olanak tanırlardı. Son dönemlerde ise proxy ayarları işletim sistemi seviyesinde yapılabilir hale gelmiş ve bu sayede proxy ayarı program program yapılmak yerine direkt olarak işletim sistemi üzerinden yapılmaya başlanmıştır. İşletim sistemi, programların gönderdiği paketleri asıl hedeflerine göndermek yerine Sistem Proxy ayarı ile yapılandırılan proxy'e göndermekte ve proxy'lere trafiği dinleme olanağı sağlamaktadır.

Bazı durumlarda proxy ayarı işletim sistemi seviyesinde de yapılabilir. Bu sayede koşturulan programların yaptığı istekler işletim sistemince asıl hedef yerine yapılandırılan proxy sunucusuna yönlendirilerek kaydedilebilir. Aşağıda macOS ve Windows için proxy ayarı verilmiştir.

Fiddler, diğer Web Proxy'lerin aksine, sistem proxy ayarını otomatik yapmakta ve kapanırken de geri almaktadır. Bu sayede Fiddler'ı açar açmaz sistemi proxy'si değişmekte ve programlar Fiddler üzerinden internete çıkmaktadır. Aşağıda yakalanan bir HTTP paketi gösterilmiştir.

Fiddler HTTP istek ve cevaplarını yakalamanın yanı sıra HTTP isteğine dair detaylar da toplamaktadır. Aşağıdaki örnekte bu istatistikler gösterilmiştir. İstatistikte TCP bağlantısı kurma, DNS isteği ve HTTPS handshake tamamlanma süresi gibi detaylar bile görüntülenebilmektedir.

Fiddler, JavaScript benzeri bir betik diline sahiptir. FiddlerScript ile Fiddler’ın yakaladığı HTTP isteği ve cevabı istenildiği gibi manipüle edilebilir. Örneğin HTTP cevabında bulunan Redirect alanı değiştirilerek istemcinin istenen URL'e yönlendirme yapması sağlanabilir.

Fiddler, HTTPS trafiğini çözebilmek için HTTPS aktivasyonu sırasında kendi sertifikasını bilgisayarın kök sertifika dizinine kurmak üzere kullanıcıdan onay alır. Fiddler üzerinden geçen HTTPS trafiği için istemciye kendi ürettiği sertifikayı gönderir. Fiddler’ın sertifikası bilgisayarın kök dizininde bulunduğu için istemci bu üretilen sertifikaya güvenir ve iletişime devam eder. İstemciden gelen trafiği kendi üzerinde çözen Fiddler, öte yandan da asıl sunucu ile istemciymiş gibi iletişim kurarak istek ve cevapları istemci ve sunucu arasında taşır.

Aşağıda, Fiddler’ın proxy olarak kullanıldığı bir bilgisayarda Chrome ile twitter․com adresine erişilmeye çalışılmış ve tarayıcıya sunulan sertifika incelenmiştir. Görüldüğü üzere tarayıcıya Fiddler tarafından twitter․com için üretilen fake sertifika gönderilmiştir.

Bilindiği gibi bütün majör tarayıcılar yaptıkları HTTP istek ve cevapları zaten geliştirici araçları üzerinden göstermektedir. Fiddler’ın en önemli kullanım alanı sunucudan sunucuya ve browser dışı istemcilerden dış dünyaya yapılan iletişimlerin izlenmesidir.

Fiddler’ın bir başka kullanım alanı ise geliştirme ve test sırasında istemciden yapılan isteklerin yakalanıp HTTP paketi seviyesinde elle değiştirilip sunucuya gönderilmesidir. Bu sayede kod ile oluşturulması zor HTTP istekleri manuel olarak oluşturulabilir.

Son olarak Enterprise bir ürün olan FiddlerCore ile Fiddler’ın HTTP/HTTPS paket yakalama altyapısı üçüncü parti uygulamalara eklenebilir. Böylece uygulama genelinde gönderilen ve alınan HTTP paketler üzerinde istenen işlemler gerçekleştirilebilir.