02 Mayıs 2024 11:03

Anasayfa

undefined...

Tcpdump ile trafiği ip, port , protokole vb göre izole etme yöntemlerini aşağıda inceleyeceğiz.

Not: Tcpdump'ın çalıştırabilmesi için yüksek yetkiler gerekiyor.Bu yüzden komutların önünde sudo bulunmaktadır.

Not: Tcpdump çıktısını sonlandırmak için Ctrl+C'yi kullanınız. 

 

tcpdump 

 

Temeller:

 

-i : En küçük interface numarasına sahip olanı dinler.(eth0 ve eth1 varsa eth0'ı dinler.)
-i any
 : Tüm interface'leri dinlemek için kullanılır.
-i eth0 : eth0 interface'ini dinler.(Hangi interface'i yazarsanız onu dinler.)
-D : Kullanılabilir interface'lerin listesini gösterir.
-n : Hostname'leri çözümlemez.
-nn : Hostname'leri ve port isimlerini çözümlemez.
-q : Çıktının daha az ayrıntılı olmasını sağlar.
-t : Okunabilir zaman damgası çıktısı verir.
-tttt : Maksimum okunabilir zaman damgası çıktısı verir.
-X : Paket içeriğini hem hex hem de ASCII olarak gösterir.
-XX :  -X ile aynıdır ancak ethernet başlığını da gösterir.
-v, -vv, -vvv : Geri aldığınız paket bilgisini ayrıntılı gösterir.
-c : Yalnızca x sayıda paket alın ve sonra durdurun.
-s : Yakalamanın anlık uzunluğunu (boyutunu) bayt cinsinden tanımlayın. Kasıtlı olarak daha az çekim yapmadığınız sürece her şeyi elde etmek için -s0 kullanın.
-S :  Mutlak sıra numaralarını yazdırır.
-e :  Ethernet başlığını da alır.
-q : Daha az protokol bilgisi gösterir.
-E : Bir şifreleme anahtarı sağlayarak IPSEC trafiğinin şifresini çözün.

 

Tcpdump'ta ,çeşitli trafik türlerini kesmenize ve tam olarak aradığınızı bulmanıza olanak sağlayan ifadeler vardır.Üç ana ifade türü vardır.

  • type :   host, net  ve port .
  • dir :   src, dst ve bunların kombinasyonu yapmamızı sağlar.
  • proto :  tcp, udp, icmp ve daha fazlasını belirlememizi sağlar.

 

İzole ederken birden fazla komutun kombinasyonu size kolaylık sağlayacaktır.Bunun için mantıksal operatörleri kullanabilirsiniz.

 

AND için aşağıdaki şekilde kullanım sağlayabilirsiniz.

 

and or &&
 

OR için aşağıdaki şekilde kullanım sağlayabilirsiniz.

 

 or or ||
 

EXCEPT için aşağıdaki şekilde kullanım sağlayabilirsiniz.

 

not or !
 

  Basit Örnekler:

 1-Tüm interface'leri dinlemek için aşağıdaki komutu çalıştırınız.

 

 tcpdump -i any
 

2-Belirlediğiniz interface'i dinlemek için aşağıdaki komutu kendinize göre düzenleyip çalıştırabilirsiniz.

 

tcpdump -i eth1
 

 3-Hostname ve port adlarının çözümlenmesini , mutlak sıra numaraları ve  okunabilir zaman damgaları içermeyen ayrıntılı çıktı için aşağıdaki komutu çalıştırınız.

 

tcpdump -ttttnnvvS
 

4-Aşağıdaki komut ile belirlediğiniz ip , hedef  ya da kaynak olması farketmeksizin gelen trafiği gösterecektir.(Örnek ip: 1.2.3.4)

 

tcpdump host 1.2.3.4
 

5- Paketlerin içeriğini görmek istediğinizde hex çıktısı kullanmak kullanışlıdır. 

 

tcpdump -nnvXSs 0 -c1 icmp
 

6-Trafiği kaynağa göre izole etmek için src , hedefe göre izole etmek için dst kullanılır.

 

tcpdump src 1.2.3.4 
 

tcpdump dst 1.2.3.4 
 

7-Belirli bir ağa giden veya gelen paketleri bulmak için net seçeneğini kullanın. Bunu src veya dst seçenekleriyle de birleştirebilirsiniz.

 

tcpdump net 1.2.3.0/24
 

8-Belirlediğiniz porttan gelen trafiği göstermek için aşağıdaki komutu kendinize göre düzenleyiniz.

 

tcpdump port 3389
 

tcpdump src port 22
.

 9-Belirlediğiniz protokolün (tcp, icmp, udp vb) trafiğini gösterebilirsiniz.

 

tcpdump icmp
 

sudo tcpdump -i eth0 proto 17
 

10-Sadece ipv6'dan gelen trafiği gösterebilirsiniz.

 

tcpdump ip6
 

11-Belirlediğiniz port aralığındaki trafiği gösterebilirsiniz.

 

tcpdump portrange 21-23
 

12-Belirli bir boyutta paket arıyorsanız aşağıdaki seçenekleri kullanabilirsiniz.

 

tcpdump less 32
 

tcpdump greater 64
 

tcpdump <= 12
 

13-Paket yakalamalarını gelecekte analiz için bir dosyaya kaydetmek genellikle yararlıdır. Bu dosyalar PCAP (PEE-cap) dosyaları olarak bilinir ve ağ çözümleyicileri, izinsiz giriş tespit sistemleri ve tabii ki tcpdump'ın kendisi dahil yüzlerce farklı uygulama tarafından işlenebilir. Burada -w anahtarını kullanarak capture_file adlı bir dosyaya yazıyoruz.

 

tcpdump port 80 -w capture_file
 

14--R anahtarını kullanarak PCAP dosyalarını okuyabilirsiniz. Bir dosyada okurken tcpdump içindeki tüm normal komutları kullanabileceğinizi unutmayın; Sadece dosyada bulunmayan şeyleri yakalayamayacağınız ve işleyemeyeceğiniz gerçeğiyle sınırlısınız.

 

tcpdump -r capture_file
 

Gelişmiş Örnekler:

 1-Kaynak belirli bir ip'den herhangi bir host'un belirlediğiniz kaynak portuna giden trafiği bulmak için aşağıdaki komutu kendinize göre düzenleyip kullanabilirsiniz. 

 

tcpdump -nnvvS src 192.168.101.3 and dst port 22
 

2- Bir network'ten belirlediğiniz network'lere giden trafiğin hex çıktısını göstermek için aşağıdaki komutu kendinize göre düzenleyebilirsiniz.

 

tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
 

3-Belirlediğiniz ip'ye giden ve ICMP olmayan trafiği göstermek için aşağıdaki komutu kendinize göre düzenleyebilirsiniz.

 

tcpdump dst 192.168.101.3 and src net and not icmp

 

4- Karmaşık sorgular oluştururken, seçeneklerinizi tek tırnak kullanarak gruplandırmanız gerekiyor. Belirli özel karakterleri - bu durumda "()" parantezlerinin altında görmezden gelinmesini söylemek için tek tırnak kullanılır .

 

tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)' 
 

5-Belirli TCP flag'ları kümesine sahip paketleri izole etmek için filtreleri de kullanabilirsiniz.

 

TCP RST Flag'larını izole etmek;

 

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

TCP SYN flag'larını izole etmek;

 

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

 SYN ve ACK flag'larının ikisini izole etmek;

 

tcpdump 'tcp[13]=18'
 

 TCP URG flag'larını izole etmek;

 

tcpdump 'tcp[13] & 32!=0'
tcpdump 'tcp[tcpflags] == tcp-urg'
 

TCP ACK flag'larını izole etmek;

 

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

TCP PSH  flag'larını izole etmek;

 

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

TCP FIN  flag'larını izole etmek;

 

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

6-Http User Agent'ları bulmak için aşağıdaki komutu çalıştırabilirsiniz.

 

tcpdump -vvAls0 | grep 'User-Agent:'
 

7-Cleartext get  isteklerini göstermek için  aşağıdaki komutu çalıştırabilirsiniz.

 

tcpdump -vvAls0 | grep 'GET'
 

 8-HTTP HOST başlıklarını bulmak için   aşağıdaki komutu çalıştırabilirsiniz.

 

tcpdump -vvAls0 | grep 'Host:'
 

9-DNS trafiğini göstermek için aşağıdaki komutu bulabilirsiniz.

 

 tcpdump -vvAs0 port 53
 

10-Sunucu ve istemciden çerezleri yakalamak için aşağıdaki komutu çalıştırabilirsiniz.

 

tcpdump -nn -A -s0 -l | egrep -i 'Set-Cookie|Host:|Cookie:'
 

11-FTP trafiğini göstermek için aşağıdaki komutu bulabilirsiniz.

 

 

tcpdump -vvAs0 port ftp or ftp-data
 

 12-NTP trafiğini göstermek için aşağıdaki komutu bulabilirsiniz.

 

tcpdump -vvAs0 port 123
 

13-Cleartext parolalarını bulmak için aşağıdaki komutu çalıştırınız.

 

tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -lA | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '
 

14-Evil bit ile trafiği  bulmak için aşağıdaki komutu çalıştırınız.

 

tcpdump 'ip[6] & 128 != 0'
 

 15-Port 25 üzerinden gelen SMTP / POP3 mail alıcılarını yakalamak için aşağıdaki komutu çalıştırınız.

 

sudo tcpdump -nn -l port 25 | grep -i 'MAIL FROM\|RCPT TO'
 

16-DHCP istek/yanıtlarını yakalamak için aşağıdaki komutu çalıştırınız.DHCP istekleri,67.portta, yanıtları 68.portta.

 

sudo tcpdump -v -n port 67 or 68
 

17-Bazen yerel arayüzünüzü etkileyen, ağınızdaki en çok konuşanları top talkers) bulmak çok yararlıdır. Neler olduğunu ve hangi IP'nin olası bir tıkanıklık kaynağı olabileceğini anlayabilirsiniz.Ip adresini alıp paketlere göre sıralamak için aşağıdaki komutu kullanabilirsiniz.

 

sudo tcpdump -tnn -c 40 -i eth0  | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head
 

18-80 portundaki HTTP veri paketlerini , tcp session kurulumu(SYN / FIN / ACK) olmadan yakalamak için aşağıdaki komutu çalıştırınız.

 

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
 

19-Zaman döngülü trafik yakalayıp farklı dosyalara kaydetmek için aşağıdaki komutu kendinize göre oluşturup çalıştırabilirsiniz.

 

tcpdump  -w /tmp/capture-%H.pcap -G 3600 -C 200
 

Bu komutta, her 3600 saniyede(1 saatte) yakaladığı trafiği /tmp altında capture-[saat].pcap olarak kaydedecektir. Örneğin saat 17:09 ise dosya ismi capture-17.pcap olacaktır.

 

19-Wireshark güçlü bir araçtır, ancak sınırlamaları vardır. Profesyonel ağ ekipmanınız olmadığı sürece, bilgisayarınızı içermeyen trafiği analiz etmek zordur.Bazen en kolay çözüm, uzak sunucudaki trafiği yakalamak için tcpdump kullanmak ve ardından buna bakmak için Wireshark'ı çalıştırmaktır.

Komutu çalıştırabilmeniz için gerekli olanlar;

  • SSH servisi, root erişimi aktif ve tcpdump yüklü sunucu
  • Sunucuda  çalışan Apache veya node.js gibi ağ trafiği oluşturan hizmetler
  • SSH istemcisi ve Wireshark kurulu bir bilgisayar
 Wireshark kurulu bilgisayar üzerinden aşağıdaki komutu çalıştırınız.

 

ssh root@remotesystem 'tcpdump -s0 -c 1000 -nn -w - not port 22' | wireshark -k -i -
 

Diğer yöntem olarak istediğiniz çıktıyı pcap uzantılı dosyaya kaydedip scp ile aktarım yapıp wireshark yüklü bilgisayarda çalıştırabilirsiniz.

Makdos Bilişim Teknolojileri 2015 - 2022