Wireshark İle Paket Analizi

 

 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

Paket analiz araçları arasında arkasındaki geniş geliştirici ekibi ve internet üzerinde bolca eğitim dokümanı bulunmasından dolayı Wireshark en çok tercih edilen yazılımlardan biri olmuştur .

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 .

 Resim 10.2 
Resim 10.3 
 
Resim 10.2’de görüldüğü üzere paketlerin kayıt edileceği dosya formatını seçebiliyoruz . Bu formatların farkı pcapng daha güncel bir format . pcap ise bilgisayar ağlarının erken dönemlerinden beri var olan bir format . Bazı paket analiz yazılımları pcapng desteklememektedir . Duruma göre pcap seçmek yararlı olabilir . Pcapng formatının birden çok ağ arayüzünü kayıt altına alma daha gelişmiş paket zaman damgalarını kaydetme gibi kabiliyetlere sahip .

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ı

Resim 13.2

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 .

 .

 
Ip paketinin içerisinde versiyon 4 olduğu , toplam boyutunun 51 byte olduğu gibi bilgileri görmekteyiz . TTL değeri 64 olarak belirtilmiş . Her işletim sisteminin varsayılan olarak ttl değeri vardır . Bu değerlere bakarak işletim sistemi tahmini yapabiliriz

 
Udp paketinin detaylarında kaynak port 40909 , hedef port 53 olarak belirtilmiş . Udp paketinin boyutu 31 byte olarak belirtilmiş .


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 Paket 10

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 .
 

Resim 22.2 Paket 12

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 . 

Resim 24.2
  • 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 .
 

Resim 25.4

39 numaralı pakete sağ tıklayıp Follow > TCP Stream seçeneğini seçiyoruz . 


 Resim  26.1 Paket 39
 
Açılan bu ekranda kırmızı alanda indirdiğimiz verinin ASCII formatını görüyoruz . Verinin daha anlamlı olması için mavi alandan HEX Dump’ı seçelim .


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

  1. Dos/DdoS Atakları

Dos yani Denial of Service hedef sisteme gönderilen milyonlarca istek ile sistemleri çalışamaz hale getirilmeye çalışılmasıdır . DdoS yani Distributed denial-of-service ise farklı ağlardan hedef sisteme istekler göndererek hedef sistemin karşılayabileceğinden fazla isteği göndererek sistemin hizmet dışı kalmasını amaçlar . 
    DoS/DdoS atakları herhangi bir veri sızıntısına neden olmaz fakat prestij ve maddi kayıplara neden olabilir . Örneğin bir bankanın 1 gün boyunca müşterilerine hizmet verememesi müşterilerinin gözünde prestij ve maddi kayba sebep olur . DDoS saldırılarında saldırganlar zararlı yazılımlarla yönettikleri istemcileri hedef sisteme yönlendirerek saldırının engellenmesini oldukça zorlaştırır . Akıllı cihazları etkileyen Mirai botnet zararlı yazılımı internette ki IoT cihazlarını tarayarak bulduğu cihazların telnet servisine varsayılan kullanıcı adı ve parolaları deneyerek cihaza girip saldırganın komut çalıştırmasını sağlıyor . Saldırgan C&C (Command and control ) ya da c2 diye anılan sunucudan bulaştığı sistemleri yönetiyor . Botnetler farklı çalışma modellerine sahip olabilirler . En fazla kullanılan model tek bir merkezden cihazların yönetilmesi .

Resim 28.1 Botnet ağının şematik olarak gösterimi


  1. TCP SYN Flood Packet Atakları

Wireshark ile yapılan saldırıların tespit edilebileceğinden bahsetmiştik . SYN flood saldırısını detaylı incelemeden önce ne olduğundan bahsedelim . Tcp 3-way handshake yapılırken istemci syn gönderir sunucu syn-ack gönderir ve istemciden ack paketini bekler . Syn flood saldırısında ise syn gönderen saldırgan ack göndermeyerek sunucunun belli bir süre ack beklemesiyle gerçekleşir . Saldırganın bu işlemi aynı anda binlerce kez yapmasıyla sistem DoS(Denial of service) saldırısına maruz kalmış olur . DoS servis dışı bırakma anlamına gelir . DDoS(Distributed Denial of Service) ise bu işlemin dağıtık bir şekilde binlerce farklı bilgisayardan gerçekleşmesidir . Saldırgan işleri daha da karmaşık hale getirebilir . Saldırgan giden paketteki kaynak ip adresi kısmına rastgele ip adresleri verirse syn-ack paketleri saldırgana değil , farklı ip adreslerine gönderilmiş olur .


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 .

Resim 29.1

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

Saldırı yapılırken web adresinin yüklenme süresi 3 dakika kadar sürüyor . Daha fazla kaynak kullanarak bu süreyi arttırabilir , adrese erişimi engelleyebilirsiniz . Kullanabileceğiniz diğer bayraklar ;
  • FIN flag

  • SYN flag

  • RST flag

  • PUSH flag

  • ACK flag

  • URG  flag

Veri boyutunu arttırabilir , udp paketi yollayabilir , paketlerin kaynak portunu ve ip adresini gibi pek çok değeri değiştirebilirsiniz .

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

  1. Http objelerini dışa aktarma

Wireshark http trafiğinde giden gelen resim , yazı gibi verileri otomatik dışa aktarmanıza olanak sağlar .

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 .


  1. Wifi trafiğini dinleme

Wireshark ile wifi ağ kartınız monitor moda alarak havadaki wifi paketlerini yakalayabilirsiniz .

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 .



Resim 36.1

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 .

HTTP bağlantı ile yapılan oturum açma işlemi .

Ö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 .


Resim 37.1

Ardından browserdan örnek olması amacı ile Twitter’a giriyoruz . Belirttiğimiz dizin altında sslkeylog.log isminde dosyamız oluşuyor . Yandaki resimde görüldüğü üzere anahtarlar dosyaya yazılmış .
 
 


 
Resim 38.1 Preferences menüsü altından dosya dizinini giriyoruz.

Parolanın gittiği paketi bulmak için girdiğimiz Kullanıcı adını içeren paketleri filtreliyoruz . 




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 .

No comments:

Post a Comment

Hack The Box | MetaTwo

  Makinayı nmap ile tarıyoruz . 21/tcp open  ftp? | fingerprint-strings: |   GenericLines: |     220 ProFTPD Server (Debian) [::ffff:10.10.1...