Wireshark İle Paket Analizi
- Paket Nedir ?
- Paket Sniffing kavramı nedir ?
- Nasıl paket yakalanır ?
- Paket Analizi Nedir ?
- Paket Analizi Araçları nelerdir ?
- Wireshark
- Wireshark nedir ?
- Wireshark nasıl kurulur ?
- Wireshark’ı tanıyalım
- Wireshark ile paket analizi
- Arp Protokolü
- DNS Protokolü
- TCP Protokolü
- Http Protokolü
- FTP Protokolü
- Wireshark Saldırı Analizi
- Dos/DdoS Atakları
- TCP SYN Flood Packet Atakları
- Wireshark İle Paket filtreleme
- Protokol filtreleme
- Wireshark’ın Yetenekleri
- Http objelerini dışa aktarma
- Wifi trafiğini dinleme
- TLS Decryption
- Sonuç
- Kaynaklar
Paket Nedir ?
Bilgisayar ağlarında cihazlar arasında veriler iletilir . Veri herhangi bir dosya , mesaj , resim gibi farklı formatlarda olabilir . Bu veriler iletilirken veri küçük parçalara ayrılır ve paketler halinde iletilir . Bu bölünmüş veri parçalarına paket olarak isimlendirilir . İletilen paketler karşı tarafta birleştirilerek verinin tamamını oluşturur . Bu paketlerden en çok kullanılanları IP , TCP ve UDP paketleridir .
Kaynak : https://www.khanacademy.org/
Yukarıda ki resimde görüldüğü üzere OSI modelinde katman 3 yani network katmanında kullanılan ip paketinin data kısmı , katman 4 yani transport katmanında kullanılan tcp paketini içeriyor . OSI modelinin yapısı :
Application (Uygulama) : HTTP , FTP , SSH ...
Presentation (Sunum) : SSL , JPEG ...
Session (Oturum) : Soketler , Netbios , RPC ...
Transport (Ulaşım) : TCP , UDP ...
Network (Ağ) : IP , ICMP ...
Data Link (Veri bağlantısı) : Ethernet , Switch , 802.1x ...
Physical (Fiziksel) : Fiber , Wireless ...
Her bir katmanın görevi bir üst katmana veri sunmaktır . Genel olarak paket kelimesi ile anılsa da farklı katmanlarda veriler farklı isimlerle bağdaştırılabiliyor . 5 , 6 ve 7. katmadaki verilere data , 4. katmanda tcp ise segment udp ise datagram , 3. katmanda paket , 2. katmanda frame ve son olarak 1.katmanda ise bit olarak isimlendirilebiliyor . IP paketinin yapısına biraz daha yakından bakalım .
İlk 5 satırı incelediğimizde her bir satır 32 bit boyutundadır . 32 bit ve 5 satır yani 160 bit = 20 byte olduğunu hesaplamış oluruz .”Options” kısmının boyutu isteğe bağlı değişebilir . Şimdi sırası ile inceleyelim .
Version : IP paketinin versiyon sayısını belirtir ipv4 ise 4 e eşit olur .
IHL : “Internet header length” IHL alanı başlık uzunluğunu belirtir . Bu alan minimum 20 byte maksimum 60 byte olabilir .TOS : “Type of sevice“ Bu alan veri akışı veya Voip aramalarında hizmet kalitesiyle ilgili bilgi sağlar . “Differentiated Services Code Point” olarak da anılır . Verinin nasıl işlenebilceğini belirtmek için de kullanılır .
Total length : 16 bitlik bu kısım byte cinsinden tüm paketin boyutunu belirtir .
Identification : IP paketi iletim sırasında parçalanırsa tüm parçalar ait oldukları orijinal paket ile aynı kimlik numarasınıiçerirler .
Flags : Paketin parçalanıp parçalanamayacağını belirtir . 3 bit bulunmaktadır .
bit 0: Reserved; must be zero.
bit 1: Don't Fragment (DF)
bit 2: More Fragments (MF)
TTL :“Time to live” bir paketin işletim sisteminin belirlediği ttl değeri olur . Bu değer paketin her bir routerdan geçişinde 1 azaltılır eğer 0 olursa paket yok edilir .
Protocol : Veri kısmındaki protokolü tanımlar .
Header Checksum : Header kısmındaki hataları kontrol için kullanılır . Paket routera ulaştığında header değerini hesaplayıp Header checksum değeri ile kıyaslar .
Source & Destination address : Paketin gönderildiği ve paketin ulaşması gereken adresini belirtir .Örnek olarak bir ip paketinin yapısını gördük . Ağ üzerinde gidip gelen verilerin yapısını biraz anladık . Peki biz biz bu paketleri kendi bilgisayarımızda nasıl izleyip kayıt altına alabiliriz ? Bu konuya detaylı olarak değineceğiz .
Paket Snifing kavramı nedir ?
Paket sniffing ağ kartımızdan geçen veya ağımızdaki diğer cihazların trafiğinin çeşitli yöntemlerle dinlenmesi ve kayıt altına alınmasıdır . Paket sniffing 2 çeşide ayrılmaktadır .Aktif paket sniffing :
- Ağda çeşitli MITM saldırıları gerçekleştirerek hedef cihazların ağ trafiğini üzerimizden hedef routera yönlendirilmesidir .Bu şekilde kurban cihazın trafiğini müdahale edip çeşitli bilgiler edinebiliriz . Örneğin kurbanı farklı adreslere yönlendirebiliriz .
Pasif paket sniffing :
- Herhangi bir müdahalede bulunmadan ağ kartımızdan geçen verilerin kayıt altına alınmasıyla gerçekleşir .
Nasıl paket yakalanır ?
Sistemimizdeki (bilgisayar , sunucu ... ) cihazların ağ trafiğini donanımsal veya yazılımsal bir şekilde kayıt altına alıp veri üzerinde çalışmalar gerçekleştirebiliriz .
- Donanımsal : Ağ trafiğini donanımsal olarak yakalamak için hazır ürünler veya raspberry pi gibi ürünler kullanarak fiziksel olaraktrafiği herhangi bir kayıp olmaksızın kayıt altına alınır . Aşağıdaki cihazda görüldüğü üzere 2 ethernet portu bulunmakta bunlardanbiri giriş diğeri cıkış olarak çalışır . Ağa erişmeniz için ek katman oluşturmuş olur üzerinden geçen verileri kayıt altına alır .
Resim 6.1
- Yazılımsal : Ağ kartından geçen trafiği yazılımsal olarak yakalanmasıdır . Bu alandaki en popüler yazılım Wireshark’tır .
Paket Analizi Nedir ?
Paket analizi sistemimizdeki (bilgisayar , sunucu vb.) ağ trafiğini donanımsal veya yazılımsal bir şekilde kayıt altına alıp ilgili uzman tarafından yorumlanmasıdır . Kayıt altına alınan verilerden saldırı tespiti , ağdaki sorunların analiz edilmesi gibi konularda kullanılır .Paket Analizi Araçları nelerdir ?
Paket analizi konusunda çeşitli araçlar bulunmakta . Bu araçlardan en popüleri ise Wireshark .
Wireshark
Tshark
Tcpdump
Windump
Microsoft Network Monitor
CloudShark
NetworkMiner
Wireshark
Wireshark nedir ?
Wireshark 1998 yılında Ethernal ismi ile yayınlanmış daha sonra ticari nedenlerden dolayı ismi Wireshark olarak değiştirilmiş paket analiz yazılımıdır . Wireshark açık kaynak kodludur . Wireshark’ın kaynak koduna github üzerinden ulaşabilirsiniz . Wireshark 1100’den fazla protokolü destekler . Wireshark’ın komut satırıüzerinden çalıştırılabilen Tshark isminde ki versiyonu da bulunmaktadır . Wireshark ile saldırı tespiti , ağdaki anomaliler ve pek çok konuda tespitler yapılabilir .Wireshark nasıl kurulur ?
Wireshark wireshark.org adresinden Windows ve MacOs işletim sistemleri için indirilip basit bir şekilde kurulabilir . Farklı linux dağıtımları içinnasıl kurulacağı aşağıda gösterilmiştir .Debian için :
sudo apt install wireshark
Arch için :
sudo pacman -S wireshark
Wireshark’ı tanıyalım
Resim 8.1
Wireshark’ı başlattığımızda bizi karşılayan ekran yukarıda görülmektedir . Wireshark ile ağ kartımızdan geçen trafiği izleyeceğimiz için Windows’ta sağ tıklayıp yönetici olarak çalıştır seçeneği ile başlatmamız gerekir . Linux’ta ise root yetkileri ile çalıştırmak için sudo wireshark komutunu kullanabiliriz .
Wireshark’ı başlattığımızda bizi giriş(resim 8.1) ekranı karşılıyor . 1 numaralı bölümde çeşitli ayarları yapabileceğimiz ve istatiksel bilgileri edinebileceğimiz seçenekler bulunmakta . 2 numaralı kısımda ise paket yakalamayı başlatma durdurma , yakalanan paketleri kayıt etme , paketleri sıralamak için çeşitli seçenekler bulunmakta . 3 ve 4 numaralı kısma geldiğimizde paket filtreleme yapmamız için bir alan bulunuyor . 5 numaralı kısımda ise wi-fi ve ethernet gibi arayüzler bulunmakta . Diğer arayüzler ise sanallaştırma yazılımlarının(Vmware) oluşturmuş olduğu arayüzler . Bu ekrandan arayüzü seçip trafiği incelemeye başlayabiliriz .
Resim 9.1
Capture seçeneğini seçitiğimizde Options kısmında daha detaylı ayarlamalar yapacağız .
Resim 10.1
Seçenekler kısmında promiscous mode seçeneğini seçtiğimizde paketin içerisinde hedef mac adresi bizim mac adresimiz olmasa bile bu paketleri yakalar . Örneğin ağda yayınlanmış hedefi biz olmayan arp paketleri . Output ve Options kısmında yakaladığımız paketleriçeşitli kurallarla kayıt etmemiz için seçenekler var . Örneğin kayıt dosyası 100mb olduğunda yeni paketleri 2. bir dosyaya kaydet gibiseçenekleri ayarlayabiliyoruz . Dosya formatlarını seçebiliyoruz , kalıcı bir dosya belirleyip bütün kayıtları o dosyaya kayıt edebiliyoruz .
Wireshark ile paket analizi
Resim 11.1
Artık genel olarak paketlerin yapıları ve bu paketleri analiz etmemiz için gerekli yazılıma sahibiz . Bir web sitesine bağlandığımızda neler gerçekleştiğini görelim . Örnek olarak x.com adresine bağlanıyoruz ve trafiği kayıt altına alıyoruz . Kayıt altına aldığımız tüm trafik yukarıda gözükmekte . 1 numaralı kısımda yakaladığımız paketler ve bunlara ait çeşitli protokol , paketin kaynağı , paketin hedef adresi , paket numarası gibi çeşitli bilgiler yer almakta . 2 numaralı kısımda ise paketin içeriğini detaylı bir şekilde görmekteyiz . 2 numaralı kısımda sıralama alt katmandan başlar . 3 numaralı kısımda ise paketin hexadecimal ve ascii formatlarını görmekteyiz . İsteğe bağlı olarak paketi hex , ascii , raw formatlarda görüntüleme ve dışa aktarabilme seçeneğine sahibiz . 0 numaralı kısımda ise daha sonra detaylı değineceğimiz paketleri filtrelemek için filtrelerimizi yazdığımız bir kısım bulunmakta . İlk paketimizden incelemeye başlayalım .
Arp Protokolü
İlk paketimiz ARP protokolü paketidir . Ağda bilgisayarların iletişim kurması için ip ve mac adresine ihtiyaç vardır . İp adresini bildiğimiz cihazın mac adresini öğrenmek için arp protokolünü kullanırız . İp adresi bilinen cihazın mac adresini öğrenmek için ARP paketinin içerisinde hedef makinenin ip adresini ve mac adresi kısmı ff:ff:ff:ff:ff:ff şeklinde doldurulur ve ağda yayınlanır . Paketi alan cihazlar paketteki ip adresi kendi ip adresi ile aynı ise cevap olarak kendi mac adresini içeren cevap yollar . İlk 2 paketimizde bu işlem gerçekleşiyor . Kısaca arp bu şekilde çalışıyor . Şimdi detaylarına bakalım .
Resim 12.1 Paket 1
Paketimize çift tıklayıp açıklan pencerede detaylı baktığımızda alt katmandan başlayarak üst katmana doğru hiyerarşik bir şekilde yerleştirilmiş . İkinci katmanı yani Data link katmanını inceleyelim .Resim 12.2
2. Katman Data link katmanında gördüğünüz üzere ağ kartımızın mac adresi ve hedef kısmında ff:ff:ff:ff:ff:ff şeklinde ve broadcast türünde ağda yayınlanmış . Şimdi üst katmanı yani ARP protokolünü inceleyelim .ARP request paketimizin içine baktığımızda bizim mac adresimiz ve ip adresimiz yeşil alan içerisinde belirtilmiş . Kırmızı alanda ise hedef mac adresi ff:ff:ff:ff:ff:ff şeklinde boş bırakılmış ve hedef ip adresi girilmiş . Hedef ip adresimiz ise router’ın ip adresidir .
Router’ın mac adresini öğrenmek için ağda yayınladığımız ARP paketinin içeriğini gördük . Şimdi ise hedefimizden bize dönen cevap paketini inceleyelim . Resim 11.1’de ki resimde 2. paketimiz ARP reply paketidir .
Resim 13.1
Yukarıdaki resimde görüldüğü üzere 2. katmanda hedef bizim mac adresimiz , kaynak mac adresi ise router mac adresi olarak değişmiş durumda . Paketimiz ise artık broadcast değil unicast türündedir .- Broadcast : Ağdaki olası tüm hedeflere
- Unicast : Bir kaynaktan bir hedefe
- Multicast : Bir veya daha fazla gönderici , bir veya birden fazla alıcının trafiğe katılması
Arp reply paketimiz içerisinde artık mac adresini öğrenmek istediğimiz cihazın mac adresi bulunmakta . Hedef ip ve mac adresleri kısmında ise bizim cihazımız var . Bu şekilde arp cache tablomuza bu değerler eklendi . Arp tablomuzu görmek için Windows terminaline arp -a yazarak görebiliriz . Linux üzerinde arp komutu ile görebiliriz .
DNS Protokolü
Artık router ile iletişim kurabilmemiz için gerekli bilgiyi edindik . Artık x.com adresinin ip adresini bilmemiz gerekir . Bunun için dns protokolünü kullanıyoruz .Kaynak : https://en.wikipedia.org
Yukarıdaki görselde dns özetlenmiştir . İlk olarak root servera’a gidilip org alan adlarının bulunduğu sunucuyu sorar ardından org kullanan alan adlarının bulunduğu sunucuya wikipedia adresini sorar . Oradan aldığı bilgi ile wikipedia.org’un tutulduğu dns sunucusuna gidip wikipedia.com’un ip adresini öğrenir . Kısaca dns’in yapısını öğrendik şimdi wireshark ile görelim . 3-6 arasındaki paketlerimiz dns sorgularını ve cevaplarını içermekte . 3 numaralı paketten incelemeye başlayalım .
3. paketimizin genel yapısına baktığımızda IP paketi onun altında udp paketi onun altında sorgumuzun detaylarını içeren kısım var . Dns görülüğü gibi udp port 53’te çalışmaktadır .
.
Resim 16.1
Query kısmında x.com’u sorduğumuz , tip a yani ipv4 adresini sorduğumuz görülmekte . Son olarak wireshark bize cevabın paket 5’te olduğunu söylemekte .Resim 16.2
4. paketimize baktığımızda bir dns sorgusu daha görüyoruz fakat burada sorgudaki tip değişiyor . IPv6 adresini sorguluyoruz . Şimdi sorgulara dönen cevapları inceleyelim .
Resim 17.1
Wireshark bize paket 5’in cevap olduğunu belirtmişti . Paket 5 response kısmı 17.1’de görülmekte .
Kaynak port 53 yani dns sunucusunun çalıştığı port . Answers kısmında x.com adresinin IPv4 adresi 160.153.63.10 olarak bize cevap olarak döndürülmüş .Resim 17.2
Resim 17.2’de ise ipv6 sorgumuzun cevabının döndüğü paketi görüyoruz . Fakat cevap kısmında herhangi bir sonuç yok çünkü x.com İpv6 adresine sahip değil . Örneğin google.com’un ipv6 adresi 2607:f8b0:4006:809:0:0:0:200e şeklindedir . TTL değeri 10 dakika olarak belirtilmiş . İp adresi 10 dakika boyunca tutulacak 10 dakika sonunda tekrar x.com’a gitmek istersek dns sorgusu gerçekleşecek .TCP Protokolü
Artık router ile haberleşebiliyoruz ve web sitesine ulaşmak için ip adresi de elimizde . Sırada ip adresine bağlanmak gerekiyor . Bunun için öncelikle http protokolünün nasıl çalıştığına kısaca değinelim . Http protokolü tcp protokolü üzerinden veri aktarımı sağlar . Http protokolü 7. katmanda , tcp ise 4. yani transport katmanında çalışır . Tcp protokolü kullanılabilmesi için öncelikle sunucu ve istemci arasında bir bağlantı gerçekleşmesi gerekir . Bu bağlantı 3-way handshake olarak adlandırılır . İstemci syn paketi yollar , sunucu syn-ack ve son olarak istemcinin ack paketi göndermesiyle bağlantı sağlanmış olur .Resim 18.1
7,8 ve 9. pakette 3-way handshake işleminin gerçekleştiğini görüyoruz . 7. paketten itibaren detaylı incelemeye başlayalım . Tcp bağlantısı kurulması sırasında Sequence number ve Acknowledgement number‘a dikkat edelim . Bu numaralar aslında daha uzun ve karmaşık sayılar fakat wireshark bizim için anlaşılabilirliği arttırmak için basitleştiriyor . Bu numaralara sonraki paketlerde daha detaylı değineceğiz . Kısaca verilerin kayıpsız iki tarafa iletildiğini doğrulamak için kullanılıyor .Resim 18.2 Paket 7
Veri bağlantısı katmanında bizim mac adresimiz kaynak , router mac adresi hedef olarak belirtilmiş . Bir üst katmanda IPv4 kullanıldığını görüyoruz . Kaynak kısmında bizim local ip adresimiz , hedef kısmında x.com’un ip adresi yer alıyor . Boyut bilgisi(Total length) 60 byte olarak belirtilmiş .
Resim 19.1 Paket 7
Giden paketteki tcp kısmına baktığımızda seq number , ack number gibi değerleri görmekteyiz . Paketteki flag kısmına 0x002 yani syn paketi olduğunu görüyoruz . Paket 7’nin içerisini gördük .Resim 19.2 Paket 8
Sunucudan gelen Syn ack paketinde syn paketini aldığı için ack numarası 1 olarak gönderilmiş . Seq number ise şu an sıfır fakat sunucunun göndereceği bir sonraki pakette bunun 1 olacağını wireshark bize söylüyor .Resim 20.1 Paket 9
Son olarak istemciden sunucuya giden ack paketi ile bağlantı tamamlanıyor . İstemci 1 paket aldı ve 2 paket gönderdi , sunucu 2 paket aldı 1 paket gönderdi ve tcp bağlantısı gerçekleşti . Bu aşamadan sonra http protokolü devreye girecek .Http Protokolü
Sunucu ile tcp bağlantısını kurduktan sonra sunucuya bir http get isteği yapıyoruz . 10. pakette bu olay gerçekleşmektedir .Resim 20.2’de web sitesine erişmek için GET isteği atıyoruz ve bu paketin 4. katmanını inceleyelim .
Paketin boyutu 69 byte yani bu şu demek şu an sequence numaram 1 bir sonraki gönderdiğim pakette(13. Paket ) sequence numarasını 69 + 1 = 70 görmemiz gerekiyor . Bizim paketimize karşılık sunucunun gönderdiği pakette(11. Paket) ise acknowledgement kısmında 70 değerini görmemiz gerekiyor . Eğer 70 göremezsek bir problem olduğu anlamına gelir ve wireshark bizi uyarır . Kısaca istemci 70 byte gönderdim der (seq numarası) , sunucu 70 byte aldım der (ack numarası) ve gönderilen verilerin eksiksiz olduğunu doğrularlar . İkinci dikkat çeken kısım PSH, ACK . Bunun anlamı “isteğin tamamı bu daha fazla veri bekleme” anlamına gelmektedir .
Resim 21.1 Paket 10
Paketin 7. katmandaki http protokolü kısmına geldiğimizde HTTP 1.1 versiyonu ile GET isteği yaptığımız görülmekte . İsteğin header kısmında User-Agent değerinde isteğin curl aracı ile yapıldığı görülmekte . Request URI(Uniform Resource Identifier) harf , sembol ve rakam kullanarak bir kaynağı tanımlamaya yarayan bir standarttır . Örneğin x.com/kayit.php adresine gitmek isteseydik / yerine /kayit.php şeklinde olacaktı .
Resim 22.1 Paket 11
Sunucunun 8.pakette 1 olan ack numarası , 69 byte’lık isteğimizi almasıyla ack numarası 70 olan bir ack paketini istemciye gönderdi . Hemen ardından 12. paket ile bize istediğimiz 274 byte’lık veriyi gönderdi .
Sunucu bize http 200 kodu ile birlikte çeşitli başlıklar ve son olarak “x” karakterini gönderdi . Web sitesinde herhangi bir html içerik yok sadece x karakteri bulunmakta . Ve bir sunucunun gönderdiği bir sonraki paketteki(13.paket) seq değeri 274+1=275 olması beklenmektedir . İstemcinin ack değeri ise 275 olmalı .
Resim 23.1 Paket 13
Beklenildiği gibi 13. pakette ack numarası 275 oluyor . 13. Pakette sunucuya ack paketi gönderilmesiyle veri aktarımı tamamlanıyor . Sırada tcp bağlantısını sonlandırma işlemi var .
Resim 23.2
İstemcinin FIN,ACK paketlerinin gönderilmesiyle tcp bağlantısı sonlanıyor . Son olarak 17 ve 18. paketlerde router mac adresimizi öğrenmek için arp paketeleri yayınlıyor bu kısmı arp protokolü kısmında açıklamıştık . Bu örnekte http trafiğini inceledik .
FTP Protokolü
File transfer protocol 1971’li yıllarda geliştirilen dosya aktarma protokolüdür . Bu protokolü wireshark ile inceleyelim . Örnek olarak bir ftp sunucusuna bağlandık ve trafiği inceleyelim .- Kullanıcı adı sordu anonymous girdik . Anonymous bağlanma iznimiz olduğu için anonymous kullanıcı adı ile parola kısmını boş bırakarak giriş yapabiliriz .
cd in-notes
get rfc1952.pdf
quit
Komutları ile örnek bir ftp dosyası indirdik ve wireshark 78 paket kaydetti .
Resim 23.3
Dns sorgusu ile ftp sunucusunun ip adresi öğrenildi ardından tcp 3way-handshake gerçekleşti . Syn paketimize yani 5. pakete sağ tıklayıp Follow > TCP Stream seçeneğine tıklayarak ftp bağlantımızla ilgili olmayan paketleri gizledik .Resim 24.1
Bu seçeneği seçtiğimizde resim 24.2’de görülülen çeşitli hata mesajlarından kurtuluyoruz .
TCP Previous segment not captured
- Olması gereken seq numarası beklenenden büyük olduğu için wireshark bizi uyarıyor .
- Bu pakette sunucunun gönderdiği bir önceki pakette sonraki seq numarasının 1441 olacağını söylüyor fakat 41. pakette seq numarası 8641 .
Resim 25.1 Paket 39
Resim 25.2 Paket 41
Dup ack paketleri ise gelen paketlerde gap(boşluk , eksik) olduğu için istemci tarafından gönderilen paketler . FTP şifreli bir iletişim protokolü değildir . Bu sebepten kayıt altına aldığımız ftp trafiği içerisinde ftp şifremizi , dosya trafiğini görebiliriz . Resim 24.1’de anonymous:123123123 şeklinde kullanıcı adı ve parolamız açık bir şekilde görülmekte . Ekrandaki herhangi bir ftp paketine sağ tıklayıp Follow > TCP Stream seçeneğini seçersek ftp komutlarımızı görmüş oluruz .
Resim 25.3
Şimdi ftp ile indirdiğimiz dosyaya ulaşmaya çalışalım . Resim 11.1’de 0 numaralı kısımda ki filtre kısmına ftp-data yazarak ftp ile gelen giden verileri görmek için filtreliyoruz .39 numaralı pakete sağ tıklayıp Follow > TCP Stream seçeneğini seçiyoruz .
Resim 26.2
Resim 26.2’de görüldüğü üzere dosyanın hex hali ve yanında ascii halini görüyoruz . Bu örnekte ascii kısmından dosyanın pdf olduğunu anlayabiliyoruz . Her durumda ascii kısmından anlamak mümkün olmayabilir . Dosyanın header bilgisini internette arattığımızda pdf dosyası olduğunu anlıyoruz . Dosyayı elde etmek için hex yerine raw seçeneğini seçip Save as seçeneğini seçiyoruz .
Resim 26.3
Dosyamıza isim verip kaydediyoruz ve dosyayı elde etmiş olduk . Bir saldırgan araya girip trafiğinizi dinleseydi bu şekilde dosyayı elde edebilecekti .
Wireshark Saldırı Analizi
Dos/DdoS Atakları
Resim 28.1 Botnet ağının şematik olarak gösterimi
TCP SYN Flood Packet Atakları
Resim 28.1
Yukarıdaki grafikte görüldüğü üzere saldırgan gönderdiği syn paketlerine ack cevabını döndürmemesiyle sunucu ack paketlerini bekliyor ve normal kullanıcılara hizmet veremiyor . Şimdi örnek bir saldırı gerçekleştirip inceleyelim .Örnek olması amacıyla bir web sitesi ayağa kaldırdık ve SYN flood saldırısı gerçekleştirdik .Syn flood saldırısı için hpin3 aracını aşağıdaki gibi kullanabiliriz .
Saldırgan : 192.168.1.14
Hedef : 192.168.1.12
sudo hping3 -S -c 500 192.168.1.12 --flood -p 80
-S syn paketini belirtir
-c 500 , 500 paket göndermek istediğimizi belirtir
--flood mümkün olan en hızlı şekilde paketleri göndermemizi sağlar .
-p 80 , 80. porta gönderilmesini sağlar
FIN flag
SYN flag
RST flag
PUSH flag
ACK flag
URG flag
Resim 30.1
Hedef sistemdeki network yöneticisinin trafiği kayıt altına aldığını düşünelim . Saldırımız sonucu hedef sisteme binlerce syn paketi ulaşıyor . Saldırgandan ack göndermediği görülmektedir .Resim 30.2
Statistics menüsü altında Flow Graph seçeneğini seçtiğimizde grafiksel olarak akışı görmekteyiz . Hiçbir zaman tcp bağlantısı tamamlanmamış . Bu saldırının efektifliğini kaynak ip adresi spoof ederek , paket boyutlarını büyütme gibi yöntemlerle arttırabilmek mümkün . Bir dos saldırı türünde SYN flood saldırısının yapısını inceledik . DDoS/Dos başlığı altında pek çok saldırı türü bulunmaktadır .Wireshark İle Paket filtreleme
Protokol filtreleme
Resim 11.1’de görülen 0 numaralı kısma filtrelerimizi yazıyoruz .
Resim 32.1
Protokolleri filtrelemek isteyebiliriz bunun için filtre kısmına protokolü yazmamız yeterli .
Resim 32.2
Wireshark’ta paketleri daha iyi filtrelemek için operandlara sahibiz . Büyüktür , küçüktür gibi operandlarımız var . Sembol olarak veya gt(grather than , >) , ge (Greater than or equal to , >=) harflerle kullanabiliriz .
== ip.src==10.0.0.5
!= ip.src!=10.0.0.5
kaynak ip adresi 10.0.0.5 olmayan paketler
> frame.len > 10
>= frame.len ge 0x100
<= frame.len <= 0x20
http contains google
http paketlerinin içinde google kelimesi geçen paketleri getirir
Resim 33.1
ip.src ile kaynak ip adresi 192.168.1.14 olan ve dns protokolü olan paketleri listeliyoruz .
ip.src
Kaynak ip adresi filtreleme
ip.dst
Hedef ip adresi filtreleme
tcp.port
tcp protokolü paketlerini porta göre filtreleme
eth.addr == ff:ff:ff:ff:ff:ff
eth.dst == ff:ff:ff:ff:ff:ff
Mac adresine göre filtreleme
ip.src == 10.43.54.65 and tcp.dstport == 25
ip adresi 10.43.54.65 olan ve tcp hedef portu 25 olan paketler
http.request.method == “GET”
http ile get metodu kullanılan pakerler
http.host == “www.melih.ninja”
http paketlerini url’e göre filtreler
frame.time >= “May 23, 2013 17:02:00”
Belirtilen zamana eşit ve büyük olan paketleri filtreler
tcp.flags.syn == 1
Syn ve Syn-Ack paketlerini filtreler
tcp.flags.syn == 1 and tcp.flags.ack == 0
Sadece Syn paketlerini gösterir
Wireshark paketleri çok detaylı bir şekilde filtreleme imkanı sunmaktadır . Daha fazla filtreyi wireshark’ın aşağıdaki dökümanından bulabilirsiniz .
https://www.wireshark.org/docs/dfref/
Wireshark’ın Yetenekleri
Http objelerini dışa aktarma
Resim 34.1
File > Export Objects menüsü alında http’yi seçerek http objelerini elde edebiliriz .
Preview seçeneği ile dosyayı görebiliriz . Save all seçeneği ile objeyi kayıt ederiz .
Wifi trafiğini dinleme
Resim 35.1
Edit menüsü altında Preferences seçeneğini seçip protokoller kısmından IEEE 802.11 kısmına geliyoruz .Resim 35.2
Resimdeki adımları izleyerek wireshark’a parola:ssid formatında bilgileri verdiğimizde wireshark otomatik olarak girilen ssid’ye ait trafiği çözme işlemini gerçekleştiriyor .wlan.bssid veya wlan.ssid filtreleri ile paketleri daha kolay analiz edebiliriz .
3.TLS Decryption
SSL(secure socket layer) protokolü , http protokolünün şifrelenmeden iletilmesinden doğan güvenlik sorununu çözmek için geliştirildi . SSL 1.0 ile başlayan serüven 1996 yılında ssl 3.0’ın son versiyon olarak duyurulmasıyla son buldu . 1999 yılında ise tls(transpor layer security) 1.0 karşımıza çıktı . Son olarak 2018 yılında tls 1.3 ile birlikte güvenlik iyice arttırıldı . Sunucunun sertifikasının doğrulanması gibi çeşitli aşamalardan sonra veriler session key ile şifrelenir . Session key verinin çözülmesi için gerekli anahtardır . Wireshark’a session keyleri verdiğimiz taktirde tls trafiğini bizim için çözüyor .Öncelikle çevre değişkeni ekleyeceğiz ve tarayıcımız belirttiğimiz sslkeylog.log dosyasına session keyleri kayıt edecek . Log dosyasını Wireshark’a verdiğimizde tls trafiği çözülmüş olacak .
Görüldüğü üzere kullanıcı adı ve parolamız artık okunabilir . Eğer session anahtarlarımız olmasaydı veriyi okuma şansımız olmayacaktı . Bu işlemi Linux ile yapmak için çevre değişkeni eklememiz gerekli . Bunun için terminalde export komutunu kullanacağız .
- export SSLKEYLOGFILE=”sslkeylogfile.log”
- Değişkenin printenv komutu ile eklendiğini kontrol edebilirsiniz .
- Chromium’u başlatırız (export komutunu girdiğimiz aynı terminalde)
- Anahtarların kayıt edildiği dosyanın dizinini Wireshark’a veririz .
Sonuç
Wireshark’ın desteklediği onlarca protokole dair çeşitli yetenekleri bulunmaktadır . Bahsetmiş olduklarımız temel olarak en fazla kullanılanlardır . Bu döküman genel özet niteliğindedir Wireshark'ın dökümantasyonundan daha derin bilgiyi edinebilirsiniz .Kaynaklar
- https://www.guru99.com/ip-header.html
- http://web.deu.edu.tr/doc/oreily/networking/firewall/ch06_03.htm
- https://www.geeksforgeeks.org/difference-between-unicast-broadcast-and-multicast-in-computer-network/
- https://en.wikipedia.org/wiki/File:Tcp_synflood.png
- https://en.wikipedia.org/wiki/SYN_flood
- https://www.e3s-conferences.org/articles/e3sconf/pdf/2020/62/e3sconf_icenis2020_15003.pdf
- https://en.wikipedia.org/wiki/Denial-of-service_attack
- https://www.cloudflare.com/learning/ddos/glossary/mirai-botnet/
- https://www.youtube.com/watch?v=5qecyZHL-GU
No comments:
Post a Comment