Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Bİlgisayar Ağları - Ders 2 - TCPDUMP



  October 04, 2017    Labels:,,,, 


Tcpdump, Linux işletim sistemine sahip bilgisayarlarda komut satırında çalışan bir paket analizcisi programıdır. Kullanıcıya bağlı bulunduğu bir ağ üzerinden iletilen veya alınan TCP/IP paketlerini veya diğer paketleri yakalama ve gözlemleme olanağı sunar. BSD lisansı altında dağıtılan Tcpdump ücretsiz bir yazılımdır. Tcpdump, paket yakalamak için “libpcap” kütüphanesini kullanır. Tcpdump'ın Windows için olanı WinDump olarak adlandırılır ve libpcap’in Windows'a port edilmiş hali olan WinPcap kullanır.

TCPDUMP Kurulumu
  • sudo apt-get install tcpdump
komutu ile kurulum gerçekleştirilir.

TCPDUMP Kullanımı

TCPDUMP klasik Lunix/Unix araçları gibi komut satırında çalışır. Parametre alarak çalışır ve parametresiz çalıştığında tespit ettiği ilk ağ arabirimini dinlemeye alır.
TCPDUMP programını kullanabilmek için root kullanıcı olmak gerekir.
TCPDUMP, paketleri çekirdeğe giriş veya çıkış yapmadan yakaladığı için iptables ile yazılan kurallardan etkilenmez.

Promiscious Mod

Normal şartlarda bilgisayarlar sadece kendilerine gelen paketleri dinlerler. Ancak TCPDUMP promiscious modda çalışır. Yani kendi ağında dolaşan tüm paketleri dinleyecek şekilde çalışır. Bu şekilde çalışma türüne promiscious mod denir. TCPDUMP komutu çalıştırıldığında ağ arabirimi promiscious moda geçer ve ağda ki tüm paketleri dinler. Komutun çalışması bittiğinde ağ arabirimi normal çalışma moduna geri döner. "ifconfig" komutunun çıktısında ağ arabirimlerinin hangi modlarda çalıştığı görülebilir(BROADCAST - PROMUSC - SIMPLEX - MULTICAST vb).

Sık Kullanılan Parametreler
  • Arabirim Seçimi (-i)
Sistemimizde birden fazla ağ arabirimi bulunduğunda ve tcpdump parametresiz kullanıldığında aktif olan ağ arabirimleri arasında numarası en düşük olan dinlemeye alınır. Eğer istediğimiz bir ağ arabiriminin dinlenmesini istiyorsan bunu -i komutu ile belirtiriz.

tcpdump -i eth2

Sistemde bulunan ve tcpdump tarafından dinlemeye alınabilecek ağ arabirimlerinin listesini almak için aşağıdaki komut kullanılır.

tcpdump -D

  • İsim Çözümleme (-n)
Eğer tcpdump ile yakaladığımız paketlerin dns isimlerinin çözülmesi istenmiyorsa -n parametresi kullanılır. Yoğun ağlarda tcpdump her tespit ettiği ip adresi-isim için dns sorgusu yapmaya çalıştığı ve cevap beklediği için ciddi yavaşlık hissedilir. Bu yüzden böyle durumlarda -n parametresi kullanılır.

tcpdump -n

Eğer ip-isim çevirinden başka port ve protocol numaralarınında isimlere çevrilmesi istenmiyorsa -nn parametresi kullanılır.

tcpdump -nn

  • Zaman Damgası Gösterimi (-t)
Tcpdump çıktılarında paketlerin yakalandığı zaman aralıkları gösterilir. Eğer daha sade bir çıktı isteniyorsa -t parametresi ile bu bilginin gösterilmesi iptal edilebilir.

tcpdump -t

  • Yakalanan Paketleri Dosyaya Kaydetme (-w)
Tcpdump ile konsol üzerinde paketleri yakalarken çıktılar çok hızlı bir şekilde akıp gidebilir. Eğer çıktıları detaylı bir şekilde incelemek istiyorsak bu çıktıları bir dosyaya yazabiliriz. Bu işlemi yapmak için -w parametresi kullanılır ve bu parametreden sonra yazılacak dosyanın ismi belirtilir.

tcpdump -w dosya_ismi

Tcpdump ile dosyaya yazdırılan çıktılar yine tcpdump ile okunabilir. Bunun için -r parametresi kullanılır.

tcpdump -r dosya_ismi

-w parametresi ile çıktıları dosyaya kaydederken filtreleme yapılabilir. Yani istenen tipte ki paketleri ya da belli zaman aralığında ki paketleri kaydedebiliriz. Aynı şekilde -r ile okuma yaparken de filtreleme kullanılabilir. Bu filtrelemenin -w ile kaydedilen filtreleme ile aynı olma zorunluluğu yoktur.

tcpdump -w log icmp

Yukarıda ki komut sadece icmp paketlerini dosyaya kaydeder.

tcpdump -r log -nn

Yukarıda ki komut okuma yaparken isim çözümlemelerini filtreler.

  • Yakalanacak Paket Sayısını Sınırlama (-c)
Tcpdump kullanırken yakalayacağımız paketlerin sayısını belirlemek için -c parametresini kullanırız.

tcpdump -i eth0 -c 15

Yukarıda ki komut eth0 ağ arabiriminden geçen ilk 15 paketi yakalar ve durur.

  • Yakalanacak Paketlerin Boyutunu Sınırlama (-s)
Tcpdump da -s parametresi ile yakalanacak paketlerin boyutu byte olarak belirtilebilir.

tcpdump -s 1500

  • Detaylı Loglama Yapmak (-v)
Tcpdump da -v parametresi ile biraz daha detaylı çıktı üretilebilir. Örneğin bu parametre ile çıktımıza TLL ve ID değerleri dahil edilebilir.

  • Promisc Modu Kapama (-p)
Tcpdump da çalışan tüm komutlar otomatik olarak promisc modda çalışır. Eğer komutumuzun promisc modta çalışmasını istemiyorsa -p parametresini kullanırız. Bu parametre, sadece bizim ağ arabirimizize gelen paketleri dinlememizi sağlar. Yani sadece direkt olarak bizim makinemize gelen ya da broadcast olarak gönderilen paketleri dinleriz.

tcpdump -p -i eth0

  • 2. Katman Bilgilerini Yakalama (-e)
Tcpdump kullanarak ethernet başlık bilgileri de yakalanabilir. Yerel ağlarda yapılan trafik analizlerinde mac adresleri önemli bilgiler vermektedir.

tcpdump -t -nn -e

Yukarıda ki komut ile çıktımıza mac adres bilgisini ve varsa diğer 2. katman bilgilerini dahil etmiş olduk.

  • BPF (Berkley Packet Filter)
Tcpdump ile gelişmiş paket filtreleme için BPF kullanılabilir. Yani mesela sadece x hostunun y portundan gelen paketleri dinle gibi bir filtre yazılabilir.
BNF üç ana kısımdan oluşur.
  1. Type (Host, net, port parametreleri)
  2. Direction (Src, dst parametreleri)
  3. Protocol (Ether, fddi, wlan, ip, ip6, arp, rarp parametreleri)
Host Parametresi

Sadece belirli bir host a ait paketlerin dinlenmesi isteniyorsa host parametresi kullanılır.

tcpdump host 10.0.0.21

Yukarıda ki bu komut kaynak ya da hedef ip adresi 10.0.0.21 olan paketlerin dinlenmesi gerektiğini belirtiyor.

Dst Host (Hedef Host Belirtme)

Bu parametre ile sadece hedef host olarak belirtilen adrese ait paketler dinlenir.

tcpdump -i eth0 dst host 10.0.0.1

Yukarıda ki bu komut makinemizin eth0 ağ arabirimine gelen ve hedefi 10.0.0.1 olan tüm paketlerin dinleneceğini belirtir.

Src Host (Kaynak Host Belirtme)

Bu parametre ile sadece kaynak host olarak belirtilen adrese ait paketler dinlenir.

tcpdump -i eth0 src host 10.0.0.21

Yukarıda ki bu komut makinemizin eth0 ağ arabiriminin yakaladığı ve kaynak hostu 10.0.0.21 olan paketleri dinleneceğini belirtir.

Sadece ip adresi vererek değil host ismi kullanarakta filtreleme yapılabilir.

tcpdump host hotmail.com

Dst host ve src host parametreleri aynı komutta kullanılabilir.

tcpdump src host 10.1.0.59 and dst host 10.1.0.1

Kaynak ip adresi 10.1.0.59 olan ve hedef ip adresi 10.1.0.1 olan paketlerin dinleneceğini belirtir.

Port Parametresi

Tcpdump da belirli bir portu dinlemek istediğimizde port parametresini kullanabiliriz. Host parametresi gibi port parametresi de src ve dst ön eklerini alabilir. Mantık host parametresi ile aynıdır.

tcpdump port 23

Kaynak veya hedef portu 23 olan paketlerin dinlenmesini belirtir.

tcpdump dst port 23

Hedef portun 23 olan paketlerin dinlenmesini belirtir.

tcpdump src port 23

Kaynak portun 23 olan paketlerin dinlenmesini belirtir.

tcpdump -nn host 192.168.2.165 and port 23

Host adresi 192.168.2.165 olan ve port numarası 23 olan paketlerin dns çözümlemesi yapılmadan dinlenmesini belirtir.

Tcpdump TCP Paket Formatı

16:21:24.174 ---------> Zaman damgası
192.168.60.3 ---------> Kaynak ip adresi
34720 ---------> Kaynak port numarası
>    ---------> Yön belirteci
10.10.10.3 ---------> Hedef ip adresi
3389 ---------> Hedef port numarası
S ---------> TCP bayrağı (SYN Bayrağı set edilmiş)
2354677536 ---------> TCP Başlangıç seri numarası (ISN)
2354677536 ---------> Bir sonraki byte için beklenen sıra numarası
(0) ---------> Bu segmentin içerdiği uygulama verisi hesabı
win 5840 ---------> Byte cinsinden window size
mss 1460 ---------> Maximum segment size (MSS)
sackOK ---------> Selective acknowledgement
(DF) ---------> Paketin DF(parçalanmaması) özelliğinde olduğunu

Tcpdump UDP Paket Formatı

10:20:21.17 ---------> Zaman Damgası
172.27.20.4 ---------> Kaynak ip adresi
41197 ---------> Kaynak port numarası
>    ---------> Yön belirteci
192.168.50.5 ---------> Hedef ip adresi
24 ---------> Hedef port numarası
udp 300 ---------> Byte cinsinden dup datagram boyutu

Tcpdump ICMP Paket Formatı

10:20:04.92 ---------> Zaman Damgası
172.27.20.4 ---------> Kaynak ip adresi
>    ---------> Yön belirteci


No comments:

Post a Comment