Tcpdump

Tcpdump bir paket yakalama yazılımıdır ve çok basit yapısıyla iyi/kötü niyet ayırt etmeksizin kullanıcısı tarafından çok sevilir. Çok sevdiğimiz bu arkadaşımızı daha yakından tanımak adına aşağıdaki yardımcı dokümanı kullanabilirsiniz.

Belirli bir ip ve portu dinlemek için host ve port parametrelerini kullanılır. src ve dst ise kaynaktan mı hedeften mi gelindiği ayrıntısını yani yönünü belirtmek için girilebilir.

tcpdump -i eth0 host 192.168.1.5 and port 514
tcpdump -i eth0 src host 192.168.1.5 and dst port 514 or src port 517
tcpdump -i eth0 src host 192.168.1.5 and '(port 514 or 517)'

Belirli bir network belirtmek için net, port aralığı belirtmek için ise portrange parametreleri kullanılır.

tcpdump -i eth0 net 192.168.1.0/24 and portrange 514-517

Protokol bazlı dinleme yapmak için parametre almaksızın protokol adı (tcp, udp, icmp, arp …) kullanılır.

tcpdump -i eth0 tcp
tcpdump -i eth0 not udp
tcpdump -i eth0 udp or tcp or icmp

Ip, port vs. numerik değerleri isimlere (host adı, port adı) dönüştürülmesi istenmiyorsa -n parametresi kullanılır.

tcpdump -i eth0 host 192.168.1.5 and port 514 -n

Yakalınan içeriği daha ayrıntılı görmek için -v parametresi kullanılır. Ascii olarak görmek için -A, Hex olarak görmek için -x, Ascii ve hex olarak görmek için ise -X parametresi kullanılır.

tcpdump -i eth0 host 192.168.1.5 and port 514 -v
tcpdump -i eth0 host 192.168.1.5 and port 514 -A
tcpdump -i eth0 host 192.168.1.5 and port 514 -x
tcpdump -i eth0 host 192.168.1.5 and port 514 -X

Belirli bir sayıda paket yakalama işlemi gerçekleştikten sonra tcpdump’ın sonlandırılması için -c parametresi kullanılır.

tcpdump -i eth0 host 192.168.1.5 and port 514 -c 2

Yakaladığınız paketleri kaydetmek için -w, daha sonradan okumak için ise -r parametresi kullanılır.

tcpdump -i eth0 host 192.168.1.5 and port 514 -w kaydettim.pcap
tcpdump -r kaydettim.pcap

Yakalanan pakette zaman damgası bilgisinin görüntülenmesini istemiyorsanız -t parametresi kullanılır. Varsayılanda zaman değeri olarak saat bilgisi yer alıyorken eğer tarihsel bilgiyi de eklenmek istenirse -tttt parametresi ile birlikte kullanılır.

tcpdump -i eth0 host 192.168.1.5 and port 514 -t
tcpdump -i eth0 host 192.168.1.5 and port 514 -tttt

Yakalınan paketten sadece belirli byte sayısında bilgiyi çekmek isteyebilirsiniz. Bu durumda -s parametresi kullanılır.

tcpdump -i eth0 host 192.168.1.5 and port 514 -s 40

Hangi interface’lerin olduğunu görmek için -D parametresi kullanılır.

tcpdump -D

Herhangi bir interface seçmek için -i any parametresi kullanılır.

tcpdump -i any port 514

Belirli bir protokolden belirli bir byte seçmek için protokol-adı[byte] kullanılır.

tcpdump -i eth0 tcp[13]

Belirli bir protokolde başlangıç byte’ından sonraki bir kaç byte’ı kapsamak için protokol-adı[başlangıç:kapsam] kullanılır.

tcpdump -i eth0 tcp[12:2]

Not: Yukarıdaki örnekteki ifade 12. byte’ı değil 12’den sonraki 13. ve 14. byte’ları kapsar.

tcp - Tcpdump

TCP flag’lerini (UAPRSF) yakalamak için yukarıdaki başlık bilgisi içerisinde 6 bitlik alandaki flag konumunu bilmek gerekecektir.

  • Sağdan sola 6. bit URG, 5.bit ACK, 4. bit PSH, 3.bit RST, 2. bit SYN, 1. bit FIN ‘dir.
  • Bunların binary gösterimi; örneğin URG için 100000 dir. Bu değerin onluk değeri 32’dir.  Bu durumda ACK: 16, PSH: 8 , RST: 4 , SYN: 2, FIN: 1 dir.

SYN paketlerini görmek için

tcpdump -i eth0 tcp[13]=2
tcpdump -i eth0 tcp[tcpflags]==tcp-syn

SYN içeren paketleri görmek için

tcpdump -i eth0 'tcp[13] & 2 != 0'
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'

ACK paketlerini görmek için 

tcpdump -i eth0 tcp[13]=16
tcpdump -i eth0 tcp[tcpflags]==tcp-ack

Not : Tcpdump çıktısında nokta (.) olarak gördüğümüz no flag anlamına gelen şey genellikle ACK için kullanılır.

ACK içeren paketleri görmek için

tcpdump -i eth0 'tcp[13] & 16 != 0'
tcpdump -i eth0 'tcp[tcpflags] & tcp-ack != 0'

SYN/ACK paketlerini görmek için

tcpdump -i eth0 tcp[13]=18
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'

RST paketlerini görmek için

tcpdump -i eth0 tcp[13]=4
tcpdump -i eth0 tcp[tcpflags]==tcp-rst

RST içeren paketleri görmek için

tcpdump -i eth0 'tcp[13] & 4!= 0'
tcpdump -i eth0 'tcp[tcpflags] & tcp-rst != 0'

FIN paketlerini görmek için

tcpdump -i eth0 tcp[13]=1
tcpdump -i eth0 tcp[tcpflags]==tcp-fin

FIN içeren paketleri görmek için

tcpdump -i eth0 'tcp[13] & 1 != 0'
tcpdump -i eth0 'tcp[tcpflags] & tcp-fin != 0'

PUSH paketlerini görmek için

tcpdump -i eth0 tcp[13]=8
tcpdump -i eth0 tcp[tcplags]==tcp-push

PUSH içeren paketleri görmek için

tcpdump -i eth0 'tcp[13] & 8 != 0'
tcpdump -i eth0 'tcp[tcpflags] & tcp-push != 0'

PUSH/ACK paketlerini görmek için

tcpdump -i eth0 tcp[13]=24
tcpdump -i eth0 'tcp[tcpflags] & (tcp-push|tcp-ack) == (tcp-push|tcp-ack)'