Tcpdump Giriş (Tcpdump Introduction)

watch_later 4/11/2016
Tcpdump Nedir?
Tcpdump Linux/UNIX sistemlerde de-fakto paket yakalama ve analiz aracıdır. Tcpdump pcap paket yakalama kütüphanesini(libpcap) kullanır ve ağ arabiriminden geçen paketleri (TCP/IP protokollerini) kaydedip, pcap destekli herhangi bir araç kullanarak kaydedilmiş paketleri okuma işine yarar.
Özellikle ağ üzerinden yakaladığı paketleri pcap formatındaki sniffer araçlarının okuyabileceği formatta kaydetme özelliği, yoğun trafiğe sahip ağlarda sorunsuz paket yakalama becerisi tcpdump’ı ağ mühendislerinin vazgeçilmezi olmaktadır.

Windows için Tcpdump
Tcpdump’ın Windows işletim sistemlerindeki eşdeğeri Windump aracıdır.
Tcpdump Kullanımı
Tcpdump klasik Linux/UNIX araçları gibi komut satırından çalışır ve tüm özelliklerini parametre olarak alır. Parametresiz çalıştırıldığında sistemde bulduğu ilk aktif ağ arabirimini dinlemeye alır. Tcpdump’ın çeşitli amaçlarla kullanılacak onlarca parametresi vardır.
Tcpdump sistem hakkında bilinmesi gereken iki husus vardır. Bunlar;



Promiscious mod
Bir makinenin hedefi kendisi olmayan paketleri alabilmesi için ağ arabiriminin promiscious modda olması gerekir. Tüm snifferlar otomatik olarak ağ arabirimini promiscious moda geçirir ve sniffer durdurulduğunda tekrar arabirimi normal moda dondurur.
Arabirimin prosmic modda olup olmadığı ifconfig komutu çıktısında görülebilir.
Tcpdump komutu çalıştırıldığında ağ arabirimini otomatik olarak promisc moda geçirir ve tcpdump'ı sonlandırdığınızda yine ağ arabirimini promisc moddan çıkarır.

Tcpdump TCP Paket Formatı
Değer                    Açıklaması
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 (msss)
sackOK                  Selective acknowledgement (Seçici Onay)
(DF)                        Paketin DF(Parçalanmaması) özelliğinde olduğunu

Tcpdump UDP Paket Formatı
Değer                         Açıklaması
10:20:21.17                 Zaman Damgası
172.27.20.4                 Kaynak IP Adresi
41197                          Source port
>                                  Yön Belirteci
192.168.60.5               Hedef IP
24                                Destination port
udp 300                      Byte cinsinden udp datagram boyutu
Tcpdump ICMP Paket Formatı
Değer                         Açıklaması
10:20:04.92                 Zaman Damgası
172.27.20.4                 Kaynak IP Adresi
>                                  Yön Belirteci
192.168.60.3               Hedef IP
icmp: echo request  ICMP mesaj tipi

Sık Kullanılan Parametreler
Arabirim Seçimi( -i )
Sistemde birden fazla arabirim varsa ve hangi arabirimini dinlemesini belirtilmezse tcpdump aktif olan ağ arabirimleri arasında numarası en düşük olanını dinlemeye alır, 3 adet aktif Ethernet ağ arabirimi olsun; eth0, eth1, eth2(Linux için geçerlidir). Sadece tcpdump komutunu kullanırsak tcpdump eth0 arabirimini dinlemeye alacaktır.
Eğer ilk arabirimi değilde istenilen bir arabirimi dinlemek istenirse -i parametresi ile belirtilir.
tcpdump -i en0 //arayüz seçimi
windump -i 1
tcpdump -i any //aktif tüm arayüzler dinlenir.
windump -i any
komutu ile sistemimizdeki 1. Ethernet kartını dinlemeye alınır. Sistemde bulunan ve tcpdump tarafından dinlemeye alınabilecek arabirimlerin listesine ulaşmak için –D parametresi kullanılabilir.
tcpdump –D //Linux arayüz listesi 
windump –D //Windows arayüz listesi
İsim Çözümleme ( -n )
Eğer tcpdump ile yakalanan paketlerin dns isimlerinin çözülmesi istenmiyorsa –n parametresini kullanılabilir. Özellikle yoğun ağlarda tcpdump her gördüğü ip adresi-isim için dns sorgusu göndermeye çalışıp gelen cevabı bekleyeceği için ciddi yavaşlık hissedilir.
tcpdump -n
windump -n
Zaman Damgası Gösterimi ( -t )
Eğer tcpdump'ın daha sade bir çıktı vermesini isteniyorsa ekrana bastığı satırların başındaki timestamp(zaman damgası, hangi paketin hangi zaman aralığında yakalandığını belirtir) kısmı iptal edilebilir. Çıktılarda timestamp(zaman damgası) istenmiyorsa -t parametresi kullanılabilir.
tcpdump –t
windump -t
Yakalanan Paketleri Kaydetme ( -w )
Tcpdump'ın yakaladığı paketleri sadece inceleme anında değilde sonradan incelemek üzere bir uygun bir şekilde dosyaya yazması istenirse -w parametresi kullanılabilir. Kaydedilen dosya .cap uyumlu olduğu için sadece tcpdump ile değil birçok network snifferi tarafından okunup analiz edilebilir.
tcpdump -w backup.cap
windump -w backup.cap
Kaydedilmiş Paketleri Okuma ( -r )
-w ile kaydedilen paketler -r parametresi kullanılarak okunabilir.
tcpdump -r backup.cap
windump -r backup.cap
Not: -w ile herhangi bir dosyaya kaydederken filtreleme yapılabilir. Mesela sadece belirli tip paketleri kaydet ya da zaman damgalarını kaydetme gibi, aynı şekilde -r ile paketleri okurken filtre belirtebiliriz. Bu filtrenin -w ile belirtilen filtre ile aynı olma zorunluluğu yoktur.
Yakalanacak Paket Sayısını Belirleme ( -c )
Tcpdump, -c sayı ile belirtilen değer kadar paket yakaladıktan sonra çalışması sonlanacaktır.
tcpdump -c 50
windump -c 50
Yakalanacak Paket Boyutunu Belirleme ( -s )
-s parametresi ile yakalanacak paketlerin boyutunu byte olarak belirtilebilir. Öntanımlı olarak 96 byte kaydetmektedir.
tcpdump -s 200 //her paketin 200 byte’lık kısmını yakalar.
windump -s 200
Detaylı Loglama (-v)
-v parametresi ile tcpump'dan biraz daha detaylı loglama yapmasını istenebilir. Örneğin bu parametre ile tcpdump çıktılarını TTL ve ID değerleri ile birlikte edinebilir.
tcpdump -v
windump -v
-vv gereksiz görülen ve gösterilmeyen trafik kayıtlarını daha detaylı gösterir.
tcpdump -vv
windump -vv
-v X gereksiz görülen gösterilmeyen trafik kayıtlarını, HEX ve ASCII olarak gösterir.
tcpdump -v -X
windump -v -X
-q detayları az bir trafik kaydı gösterir.
tcpdump -q
windump -q
Promisc Moddan Kaçış ( -p )
-p parametresi ile de sniff yaptığımız arabirimin promisc moddan çıkmasını sağlanabilir. Promisc moddan çıkmakla sadece o arabirime gelen ve o arabirimi ilgilendiren paketler işlenir. Bu paketlerde ya broadcast ya da direct o arabirimin adresi olması demektir. Daha çok tcpdump'ın çalıştığı makineye ait bir paket analizi yapmak istediğimiz zaman kullanılabilecek türden bir parametredir.
tcpdump -p -i eth0
windump -p -i 1
Layer 2 Başlıklarını Yakalama ( -e )
Tcpdump kullanarak ethernet başlık bilgileri de yakalanabilir. Özellikle yerel ağlarda yapılan trafik analizlerinde MAC adresleri önemli bilgiler vermektedir.
tcpdump -t –e
windump -t –e
BPF (Berkley Packet Filter)
Tcpdump ile gelişmiş paket yakalama için BPF kullanılabilir(sadece X hostunun Y portundan gelen paketleri yakala gibi örneklenebilir).
BPF üç ana kısımdan oluşur.  Bunlar:
Type (Tip)
Host, net, port parametreleri.
Direction
Src, dst parametreleri.
Protocol (Protokol)
Ether, fddi, wlan, ip, ip6, arp, rarp parametreleri.
net Parametresi
Sadece belli bir ağa(network) ait paketlerin izlenmesini isteniyorsa net parametresi kullanılabilir.
tcpdump -n dst net 10.4.9.0/24
windump -n dst net 10.4.9.0/24
tcpdump -n src net 10.4.9.0/24
windump -n src net 10.4.9.0/24
host Parametresi
Sadece belli bir host a ait paketlerin izlenmesini isteniyorsa host parametresi kullanılabilir.
tcpdump -n host 102.16.2.190
windump -n host 102.16.2.190
dst host (Hedef Host Belirtimi)
Hedef host olarak belirtilen adrese ait paketleri yakalar.
tcpdump -n dst host 102.16.2.190
windump -n dst host 102.16.2.190
src host (Kaynak Host Belirtimi)
Kaynak hostu belirterek dinleme yapabilir.
tcpdump -n src host 102.16.2.190
windump -n src host 102.16.2.190
Görüldüğü gibi and, or mantıksal operatörleri tcpdump komutlarıyla birlikte kullanılabilir.
tcpdump -n "dst host 102.16.2.190 and (dst port 80 or dst port 443)"
windump -n "dst host 102.16.2.190 and (dst port 80 or dst port 443)"
port Parametresi (Port Belirtimi)
Belirli bir portu dinlenmek istenildiğinde kullanacak parametredir. Host gibi src ve dst ön ek alabilir. src ile kaynak portu dst ile hedef portu belirtilir. dst ya da src ön eki kullanılmazsa hem kaynak hem de hedef portu verilmiş olur.
tcpdump -n dst port 21
windump -n dst port 21
portrange Parametresi (Birden Fazla Port Belirtimi)
Birden fazla portu dinlenmek istenildiğinde kullanacak parametredir.
tcpdump -n dst portrange 21-1000 //21 ile 1000 arasındaki portlar
windump -n dst portrange 21-1000
tcpdump -n tcp dst portrange 21-1000
windump -n tcp dstportrange 21-1000

tcpdump ‘tcp[13]&2!=0’ //tcp header 13 byte’ının sağdan ikinci 
//biti sıfır olmayanları yani syn paketlerini yakalar.






Bir sonraki yazımda görüşmek üzere...



sentiment_satisfied Emoticon