Wireshark Nedir?
Wireshark, 1998 yılında ilk olarak Ethereal adıyla faaliyete başlayan bir
projedir
Ticari marka sorunları nedeniyle Mayıs 2006‘da Wireshark olarak yeniden
adlandırılan bu yazılım,
bilgisayara ulaşan paketleri yakalamaya ve bu paketlerin içeriğini görüntülemeye imkan tanır.
Bir başka deyişle bilgisayara bağlı olan her türlü ağ kartlarındaki (Ethernet, Wifi gibi) tüm TCP/IP mesajlarını analiz eden bir programdır.
Amacına yönelik zengin özellikleri ile günümüzde kendi türünün en yaygın kullanılan ve fayda sağlayan araçlarından bir tanesidir.
Yaygın olarak temel kullanım
amaçları aşağıda listelenmiştir;
•
Şebeke problemlerinde sorun çözme
• Güvenlik problemlerini sınamak
• Uygulamaya konan protokollerde oluşan hataları onarmak veya arındırmak
• Ağ problemlerinin içindeki bilgileri öğrenebilmek amacıyla kullanılmaktadır
Wireshark Özellikleri
• Windows, Unix, OS X, Solaris, FreeBSD, NetBSD ve birçok işletim sistemleri
için uygundur.
• Yerel ağ arayüzünden paketleri tutar, ayrıntılı bir şekilde protokol
bilgileriyle görüntüler.
• Tutulan bilgileri kaydetme özelliği vardır.
• Çeşitli kriterlerde paket arar ve filtreler.
• Çeşitli istatistikleri yapılan ayarlar doğrultusunda kullanıcıya sunar.
• Birçok protokol için şifre çözme desteği sunar. (IPsec,ISAKMP,Kerberos,SNMPv3,
SSL/TLS, WEP, ve WPA/WPA2’yi
içerir)
Wireshark Aracının Kullanım Alanları
• Ağ trafik tespiti
• Veri madenciliği
• Port tarama tespiti
• Denial of Service (DoS) saldırılarının analizi
• Bağlantı sorunu tespiti
• Casus yazılım tespiti
Kurulum
Windows makineler için bu adres kullanılarak indirilebilir ve standart kurulum
adımları uygulanarak kurulum işlemi gerçekleştirilebilir.
Debian
temelli Linux dağıtımları için ise sudo apt-get install wireshark komutu ile
gerekli paketlerin edinilmesiyle yükleme işlemi gerçekleştirilebilir.
Temel Wireshark Kullanımı
Genellike Wireshark yazılımını açtıktan sonra ilk yaptığımız şey trafiğini
izleyeceğimiz ağ kartını (interface) seçip başlatmaktadır.
Capture Filter
Normalde hiç bir filtre verilmeden paket yakalama işlemi başlatılırsa ağ kartına
gelen her şey kaydedilir.
Amacımıza yönelik yakalama işlemi
için filtre girmek işimizi kolaylaştıracaktır. Örneğin; sadece TCP paketlerini
yakalamak için aşağıdaki gibi filtre girilebilirdi.
Promiscuous Mode
Wireshark’ta normalde tüm ağ kartları promiscuous modunda aktif olarak geliyor.
Ancak yine de kontrol etmekte fayda var. Normalde ağ kartı işletim sistemine kendisiyle alakalı olmayan paketleri iletmez.
Aslında arka planda bir filtreleme gerçekleştirir. Gerçekten o ağ kartına düşen tüm paketleri görmek için bu modun aktif olması önemlidir.
Capture menüsündeki ayarlardan
(Capture/options) tüm aktif arayüzlerde bunu aktif edebilirsiniz.
Trafik Arayüzü
Trafiği dinlemeye başladığınızda varsayılan olarak aşağıdaki gibi bir ekranla
karşılaşırsınız. Diyelim ki bütün alanları görmek istemiyorsunuz, sadece işinize
yarayacak kısımları seçmek için toolbar kısmından sağ tıklayarak veya View
kısmından kullanacağınız alanları ayarlayabilirsiniz.
Toolbar
Toolbar‘da sıklıkla kullanacağınız kısa yollar bulunuyor.
İlk bölümde, yakalama işlemi için başlatma/durdurma/yeniden başlatma/ayarlar yapabilirsiniz.
İkinci bölümde, capture (trafik) dosyasını açma/kaydetme/kapatma yapabilirsiniz.
Üçüncü bölümde, packet list bölümünde gördüğünüz paketlere hızlı erişim için gerekli araçları görebilirsiniz. Özellikle analiz işleminde bu kısım çok faydalıdır. Örneğin 22 nolu pakete git diyebilirsiniz. En son pakete ya da ilk pakete git diyebilirsiniz. Ya da capture aktifken her zaman son capture edilen dosyada bulun diyebilirsiniz.
Dördüncü bölümde, renklendirme bölümüdür. Bu, ilginizi çekebilecek paketleri vurgulamanızı sağlar. Renklendirme kurallarına buradan ulaşabilirsiniz.
Beşinci bölümde, packet list bölümündeki text ifadeleri yakınlaştırma ve uzaklaştırmayla ilgili şeyleri görebilirsiniz.
Display Filter
Analiz işleminde en sıklıkla kullanılacak bölüm burasıdır bu sebeple bu kısımı ayrı olarak ileride inceleyeceğiz. Bu kısmı capture filter ile karıştırmamak gerekir. Display filter yakalanmış tüm paket içerisinden görüntüleyeceğiniz kısmı size yansıtır. Buraya girilen filtreler packet list’e yansır. Benzer şekilde status bar kısmında da tüm paket içerisinden filtrelenmiş paket sayısını hızlıca görebilirsiniz.
Örneğin girilen filtre sonucunda status bar kısmında da 768 paketten 603 tanesi getirilmiştir.
Filtre yazmak Wireshark kullanmanın en can alıcı noktası diyebiliriz. Çünkü akan trafikten istediğinizi bulmanızı sağlayan şey filtre girmektir. TCP/IP bildiğinizi düşünürsek (bilmiyorsanız da öncelikle burayı ziyaret edebilirsiniz), örneğin; girdiğimiz tcp.port == 443 filtresi tcp paketleri içerisinde port bilgisi 443 olan paketleri getirir. Eğer girdiğiniz filtre doğru bir filtre ise Wireshark filtre alanını yeşillendirir. Eğer girdiğiniz filtrede bir yanlışlık varsa Wireshark sebebini status bar kısmında belirtir ve filtre alanını kırmızıya boyar.
Bir diğer durum ise alanın sarı olmasıdır. Eğer programlama mantığına göre hareket edip != ifadesini kullanıyorsanız Wireshark sizi uyarır. Örneğin; siz 443 portu olmayan paketleri görüntülemek isterseniz; !tcp.port==443 şeklinde girmelisiniz.
Wireshark’da da AND/OR koşul ifadeleri, gruplamalar yapılarak daha gelişmiş filtreler yazılabilir. (“tcp.port==443 and tcp.seq==1) or http” gibi)
Paket içerisinde bir anahtar kelime aramak istiyorsanız contains ifadesini kullanabilirsiniz. (frame contains “google”)
Packet List
Capture işlemi başladıktan sonra ilk olarak 1 numaralı paket düşer. Daha sonra
düşen tüm paketler sırasıyla numaralandırılarak bu listede gösterilir. Yine
varsayılanda ilk paket referans alınarak zaman bilgisi düşülür. Source kısmında
ip paketi varsa source (kaynak) ip, destination kısmında ip paketi varsa
destination (hedef) ip bilgisi gösterilir. Protokol kısmında ise bağlantıların
ilgili protokolleri gösterilir. Length kısmında frame’in boyutu, Info kısmında
ise paket ile ilgili detay bilgi yer alır. Eğer ip paketi bulunmuyorsa MAC adres
source/destination olarak gösterilir.
Packet Detail
Pakete tıkladığınızda paketin detayları bu bölümde görülür. Parçalara ayrılmış
şekilde karşımıza çıkarır alanları.
Wireshark yakaladığı frame hakkında özet bilgiyi Frame kısmında sunar. Bu alan
paket içerisinde bulunmaz. Paket içeriği Ethernet yazan bölümle ile birlikte
başlar. Frame kısmında Wireshark’ın keşfettiği protokol, packet list’deki
renklendirme kuralı, zamansal bilgiler, boyut hakkında bilgi görülebilir.
Dissector Çalışma Mantığı
Dissector’ler, byte’ları decode ederek okunabilir formatlara dönüştürür ve
Wireshark bize o şekilde sunar. Wireshark ilk olarak statik olarak port
numarasına bakar. Eğer port standart bir port değilse heuristic (sezgisel)
motoru belirli patternleri sırasıyla arar. Bulamazsa dissector uygulanmaz data
olarak belirtilir. Diyelim ki siz ftp trafiği olduğunu biliyorsunuz, Data
kısmına sağ tıklayarak “Decode as” diyerek FTP olduğunu belirtebilirsiniz.
Böylelikle dissector’ü manual olarak çalıştırmış olduk.
Spesifik Paket Kaydetme Seçenekleri
Capture ettiğiniz paketlerden sadece istediğinizi almak için File/Export
Specified Packets menüsünden yararlanabilirsiniz. Örneğin; display filter sonucu
ortaya çıkan paketlerden 1-30 arasındaki paketlerden seçtiğimizde sadece 4 tane
yeni paketi çıkaracaktır.
Adres Çözümleme Protokolü (ARP) Paket
Analizi
Wireshark ile bilgisayar ağ arayüzü
dinlenmiş ve ARP paketleri filtreleme çubuğuna yazılan “arp” parametresi ile
filtrelenmiş ve aşağıda verilen örnek paketler yakalanmıştır.
Wireshark Filtreleme Komutları
ip.dst==192.168.1.24
192.168.1.24 ip’ye giden paketleri dinler.
ip.addr == 192.168.1.1
Bu filtreleme gerek kaynak gerekse hedef ip adresinde 192.168.1.1 olan tüm satırları filtreler.
ip.src==192.168.1.42
192.168.1.42 nolu ip den giden paketleri dinler
ip.addr==192.168.1.1 &&
ip.addr==192.168.1.55
Bu filtreleme ile iki ip adresi arasındaki konuşmayı filtreleyebilirsiniz.
http or dns
Bu filtreleme ile ip kısıtı olmaksızın sadece http ve dns protokelleriyle ilgili stream’leri filtreleyebilirsiniz.
tcp.flags.reset==1
Bu filtre ile TCP Reset stream’lerini filtreleyebilirsiniz.
!(arp or icmp or dns)
Bu filtre ile tüm stream’lerin arasında aslında ihtiyacımız olmayan ve en çok göreceğimiz ARP, DNS ve ICMP satırlarını filtreleyebilirsiniz. Örneğin; Wireshark’ı RDP ile bağlandığınız bir sunucuda çalıştırdıysanız bu filtreye RDP’yi de ekleyebilirsiniz. Böylece RDP satırlarıda gizlenecektir.
tcp.analysis.retransmission
Bu filtre ile TCP ReTransmission stream’lerini görebilirsiniz.
udp contains XY
Bu filtre ile UDP paketinin HEX içeriğinde “XY” geçen stream’leri filtreleyebilirsiniz. Buradaki XY değerini ihtiyacınız olan değerler değiştirmeniz gerekmektedir.
http.request
Bu filtre ile http GET isteklerini filtreleyebilirsiniz.
Wireshark Kullanarak Analiz Edebileceğiniz Bazı Güvenlik Problemleri
Torrent Sorunu
ARP Poisoning Tespiti
ARP zehirlemesi saldırısına örnek olarak şekilde de görüldüğü üzere 10.0.0.14
adresli makinedan ağa arp request paketleri yağmaktadır. Filtre ifadesi olarak
arp yazarsak yakalanan paketler arasında arp protokolüne yönelik olanları
filtreler ve olası bir saldırı hakkında bilgi sahibi olabiliriz.
Port Tarama Tespiti
Syn
Flood Tespiti
TCP protokolünün tasarım özelliklerinden kaynaklanan bir sorun, Syn flood
saldırılarına zemin hazırlamaktadır. Bir Tcp bağlantısı kurulması 3 adımda
gerçekleşen ve 3 way handshake adı verilen prosedürle oluşturulmaktadır.Burada
bağlantı kurmak isteyen taraf Syn bayrağıyla Tcp paketini ilgili makinenin
ilgili servisine yollar. Bağlantı kurulmasında herhangi bir sorun yoksa sunucu
taraf, istemciye Syn+Ack bayraklarıyla paket yollar ve bunu alan istemci Ack
bayraklı Tcp paketi ile bağlantıyı gerçekleştirir. Burada bir servis kendisine
gelen Syn bayraklı paketlere karşılık Syn+Ack yollamak üzere programlandığından
kötü niyetli birinin fazlaca Syn bayraklı paketlerle bağlantı isteğinde
bulunması sunucunun bir yerden sonra Ayn+Ack paketi gönderemeyecek duruma
getirir ve servisin durmasına sebep olur.
Örnek pcap görüntüsündeki Syn flood saldırısında görüldüğü üzere değiştirilmiş
ip adreslerinden hedefin 445. portuna deli gibi Syn bayraklı paketler
yağdırılmakta.
(ICMP Tabanlı) OS Fingerprinting Tespiti
Bilindiği üzere uzaktan işletim sistemi tespit etme yöntemlerinden biri
sistemlerin döndüğü karakteristik Icmp hata mesajlarıdır. Bu sebepten ötürü
saldırganlar OS belirlemede hedef sisteme farklı tipte Icmp paketleri yollayıp
geri dönen cevapların dönüş süreleri gibi sistemden sisteme değişen ayırt edici
özelliklerden faydalanırlar.
Yukarıda görüldüğü üzere saldırgan hedef sistem üzerinde Icmp tabalı işletim
sistemi saptama taraması yapıyor. Farklı türlerde gelen Icmp paketleri bizi
durumdan haberdar ediyor.
Normal trafiğin dışında herhangi bir şüpheli durumda icmp.type == 13 ||
icmp.type == 17 || icmp.type == 15 gibi filtrelemelerle Icmp tabanlı sistem
belirleme saldırısına maruz kalıp kalmadığımızı anlayabiliriz.