Bu yazımızda HTTP trafiğini incelerken kullanabileceğimiz filtreler hakkında bilgi vereceğim.
Yapacağımız örneklerde kullandığımız araç Wireshark Version 3.2.8
Http(Hyper Text Transfer Protocol) Protokolü Nedir?
90 yıllardan bu yana kullanılan popüler bir iletişim protokolüdür. HTTP protokolü sayesinde internet ağı üzerindeki web sayfaları görüntülenebilir. Genel manada HTTP istemci(web tarayıcı örn. chrome) - sunucu(web sunucusu) arasındaki iletişimin kurallarını belirleyen yapıdır. Taşıma katmanında TCP protokolünü kullanır. Ayrıca bu protokol 80 portunu kullanır.
Temel Çalışma Mantığı
Bir tarayıcı yardımıyla bir web sayfasına girmek istersek, sitenin adresini yazdığımızda HTTP ile web sayfasına bir bağlantı isteği göndermiş oluruz. Eğer bu istek kabul edilirse(200lü kodlar döner) web sayfası ile bağlantı kurmuş oluruz. Eğer kabul edilmezse(500lü kodlar eğer tarayıcı ile ilgili bir hataysa 400lü kodlar) bize bir hata kodu döndürür.
Filtreler
Kod:
http.response == 1 || 0
http.response == true || false
Gelen cevapları(response) görmek için boolean kullanabiliriz. True veya 1 değeri response'ları bize filtreleyecektir.
Kod:
http.response.code = 200
HTTP yanıt durumu kodları ile filtreleme yapılabilir. Örnek "200 Tamam" yani başarılı istekleri filtreledik.
veya
Kod:
http.response.code == 404
Bu sefer ise 404 Not Found yani bulunamama hatasının bulunduğu paketleri filtreledik.
Kod:
http.request.method == "GET"
request methodu "GET" olanları filtreledik.
Kod:
http.request.method == "POST"
request methodu "POST" olanları filtreledik.
Kod:
http.user_agent == "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0)"
User-Agent değeri ile filtreledik.
User-Agent Nedir? Kullandığımız internet tarayıcılarının hepsi içerisinde User-Agent bilgisi bulundurur. Biz bir sunucuya bağlanmak istediğimizde karşı taraf bizim hangi tarayıcıyı ve hangi işletim sistemini kullandığımızı öğrenebilir.
Pakete Follow > HTTP Stream yaparak kontrol edebiliriz. Diğer vereceğimiz örneklerde de detaylar için bu işlemi yapınız.
Kod:
http.host == "asecuritysite.com
Host adresine göre filtreleme yapabiliriz.
Kod:
http.request.full_uri == "Full/request/URI/adresi"
Full request URI adresi ile filtreleme yapabiliriz.
Kod:
http.date == "Mon, 17 Jun 2013 09:27:32 GMT"
Tarihe göre filtreleme yapabiliriz.
Kod:
http.content_type == "application/json"
Uygulama türünü belirterek filtreleme yapabiliriz.Ayrıca "text/html", "text/css", "application/xhtml+xml" vs.. bunlar da birer örnektir.
Kod:
http.accept_encoding == "gzip, deflate"
Accept Encoding istemcinin hangi içerik kodlamasını anlayabileceğini bildirir, genellikle bir sıkıştırma algoritması olur. Buradaki örnekte gzip ve deflate(her ikisi de dosya sıkıştırmada kullanılır gzip daha etkilidir.) olarak filtrelemiş bulunduk.
Kod:
http.accept_language == "en-us"
Accept-Language HTTP başlığı, istemcinin hangi dilleri anlayabildiğini ve hangi dil türünün tercih edildiğini bildirir. Burada en-us olarak filtreledik.
Bunların Dışında;
Kod:
http.cookie > cookie bilgisine göre filtreleme
http.content_length > içerik uzunluğuna göre filtreleme
http.content_type > içerik tipine göre filtreleme
http.file_data > veriye göre filtreleme
http.******** > konuma göre filtreleme
http.time > zamana göre filtreleme
Görüntü Filtreleri;
Kod:
[COLOR="red"]http contains PNG or "\x89\x50\x4E\x47"
http.content_type == "image/png"[/COLOR]
http contains GIF or "GIF89a"
http.content_type == "image/gif"
[COLOR="Red"]http contains JPEG or "\xff\xd8"
http.content_type == "image/jpeg"[/COLOR]
Video ve Ses Filtreleri;
Kod:
http contains MP3 or "\x49\x44\x33"
[COLOR="Red"]http contains AVI or "\x52\x49\x46\x46" [/COLOR]
Önceki yazımda kırmızı ile yazılanları detaylı bir şekilde inceledik. Detay için..
Diğer Dosya Türleri;
Kod:
http contains PDF or "%PDF"
http contains ZIP or "\x50\x4B\x03\x04"
http contains RAR or "\x52\x61\x72\x21\x1A\x07\x00"
http contains GZIP or "\x1F\x8B\x08"
http contains SWF or "\x46\x57\x53"
Ayrıca filtreleme işlemi yaparken stringler yerine kullanabileceğiniz Magic Number'lar işinize yarayabilir. Detay için..
Not: Bazı Wireshark filtreleri eski versiyonlarda desteklemeyebilir örneğin "http.accept" filtresi 1.0.0 versiyonu ile 3.4.1 versiyonu arasındaki wireshark sürümleri için kullanılabilirken, "http.bad_header_name" filtresi 3.0.0 versiyonu ile 3.4.1 versiyonu arasında kullanılabiliyor.
Not2: HTTP filtrelerinde daha da detaya inmek isterseniz bu adresten filtrelerin karşısına gelebilecek değişken tiplerine ve desteklediği versiyonlara kadar hepsini bulabilirsiniz.
Konumu burada bitirmiş bulunmaktayım.
Selam ve Sevgilerle..
Son düzenleme: