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