Blog

Tcpdump ile Sniffing

Tcpdump Nedir ?
  • Tcpdump Linux/Unix sistemlerde ağ paketlerini yakalayıp bu paketleri analiz edebilebilen bir araçtır.
  • Pcap paket yakalama kütüphanesini kullanır .
  • Ağ arabiriminden geçen paketleri (TCP/IP protokollerini) kaydeder ve herhangi bir pcap destekli araç kullanarak kaydedilmiş paketleri okuyabilir.
  • Ağ üzerinde yakaladığı paketleri PCAP formatında kaydetmesi diğer pcap destekli araçlar tarafından da bu paketlerin okunabilmesini sağlar ki buda büyük bir avantajdır ve tcpdump’ı vazgeçilmez yapar.
  • Tcpdump’ın windows işletim sistemlerinde ki karşılığı Windump aracıdır.
Tcpdump Kullanımı

Tcpdump diğer tüm linux araçları gibi komut satırından rahatlıkla çalışır ve tüm özellikleri için parametreler alır.
Eğer root izni ile sistemde işlem yapıyorsak parametresiz olarak tcpdump komutunu çalıştırdığımızda aktif olan ilk ağ arabirimini dinlemeye başlar.

Tcpdump çok çeşitli amaçlar doğrultusunda kullanılabilecek bir araçtır ve bu amaçlara yönelik bir çok parametresi vardır.
Bu yazıda tcpdump’ın klasik kullanımında işimize yarayacak olan temel komut parametreleri örneklerle gösterilmektedir.

Tcpdump’ın bir sistemde çalışabilmesi için öncelikli 2 şart vardır.

  1. Yetki : Linux/Unix sistemlerde root haklarına sahip olunmalıdır yada tcpdump aracının suid olarak çalıştırılması gerekmektedir.
  2. Promiscious Mod : Hedefte kendisinin olmadığı paketleri alabilmek için sistemimizin ağ arabiriminin probmiscious modunda olması gerekir.
    Tüm sniffer araçları promiscious moda geçme işlemini çalışmaya başladıklarında otomatize olarak yaparlar ve sniffer işlemi sonlandırıldığında arabirim normal moda geri döndürülür.
  • Tcpdump’ın parametresiz kullanımı

    root@hbn:~# tcpdump
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    09:04:08.883313 IP 104.18.247.114.http > hbn.44740: Flags [.], seq 3826478631:3826480083, ack 3197840903, win 163, length 1452: HTTP
    09:04:08.883369 IP hbn.44740 > 104.18.247.114.http: Flags [.], ack 1452, win 16837, length 0
    09:04:08.886183 IP hbn.40756 > _gateway.domain: 52001+ PTR? 87.2.168.192.in-addr.arpa. (43)
    09:04:08.886240 IP 104.18.247.114.http > hbn.44740: Flags [.], seq 1452:2904, ack 1, win 163, length 1452: HTTP
    09:04:08.886804 IP 104.18.247.114.http > hbn.44740: Flags [.], seq 2904:4356, ack 1, win 163, length 1452: HTTP
    09:04:08.886864 IP hbn.44740 > 104.18.247.114.http: Flags [.], ack 4356, win 16837, length 0
    09:04:08.887827 IP 104.18.247.114.http > hbn.44740: Flags [.], seq 4356:5808, ack 1, win 163, length 1452: HTTP

 

Tcpdump çıktıları ilk bakışta karmaşık görülebilir fakat ağ bilginizin olması ve gerekli bileşenleri bilmeniz sayesinde bu karmaşa sizin için basitleşecek ve gayet anlaşılır olacaktır.
Tcpdump çıktılarının genel bileşenleri aşağıdakiler gibidir.

  • Tcpdump TCP Paket Formatı Bileşenleri

    Değer                                                                 Açıklaması
    09:04:08.886183                                               Zaman Damgası
    104.18.247 .114                                            Kaynak IP Adresi
    114                                                           Kaynak Port numarası
    >                                                                    Yön Belirteci
    87.265.14.254                                                   Hedef IP Adresi
    3389                                                             Hedef Port Numarası
    S                                                                    TCP Bayrağı (SYN Bayrağı set edilmis)
    6587677514                                                TCP baslangıç seri numarası (ISN)
    3541977536                                                Bir sonraki byte icin beklenen sıra numarası
    (42)                                                              Bu segmentin içerdiği uygulama verisi hesabı
    mss 1460                                                    Maximum Segment Size (MSS)
    (DF)                                                 Paketin DF(Parçalanmaması) özelliğinde olduğunu
    win 5840                                                   Byte cinsinden Window size
    sackOK                                                      Selective acknowledgement

Tcpdump ICMP Paket Formatı Bileşnleri

Değer                                                        Açıklaması
10:20:04.92                                        Zaman Damgası
172.27.20.4                                          Kaynak IP Adresi
>                                                                 Yön Belirteci

  • Tcpdump UDP Paket Formatı Bileşenleri


Değer                                                          Açıklaması
10:20:21.17                                            Zaman Damgası
172.27.20.4                                           Kaynak IP Adresi
41197                                                        Kaynak port
>                                                                  Yön Belirteci
192.168.60.5                                         Hedef IP Adresi
24                                                            Hedef port
udp 300                                            Byte cinsinden udp datagram boyutu

  • Dinleme Yapılacak Arabirimlerin Listesini Görmek İçin

    root@hbn:~# tcpdump -D
    1.eth0 [Up, Running]
    2.any (Pseudo-device that captures on all interfaces) [Up, Running]
    3.lo [Up, Running, Loopback]
    4.nflog (Linux netfilter log (NFLOG) interface)

  • Yakalanan paketlerin DNS isim çözümlemesinin yapılmasını istemiyorsak -n parametresini kullanmalıyız.Yoğun bir ağda dinleme yapıyorsak dns sorguları ve gelen cevabın beklenmesi ciddi bir yavaşlamaya yol açacaktır.

    root@hbn:~# tcpdump -n
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:29:31.815833 IP 104.18.244.114.80 > 192.168.2.87.51522: Flags [.], seq 2930325750:2930327202, ack 3321117029, win 159, length 1452: HTTP
    13:29:31.816083 IP 192.168.2.87.51522 > 104.18.244.114.80: Flags [.], ack 4294960036, win 24568, options [nop,nop,sack 1 {4294962940:1452}], length 013:29:31.817090 IP 104.18.244.114.80 > 192.168.2.87.51522: Flags [.], seq 1452:5808, ack 1, win 159, length 4356: HTTP

  • Hem isim çözümlemesinin yanısıra port çözümlemesininde yapılmamasını istiyorsak -nn parametresini kullanmalıyız.

    root@hbn:~# tcpdump -nn
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:31:40.904040 IP 104.18.244.114.80 > 192.168.2.87.51522: Flags [.], seq 2941609242:2941610694, ack 3321117029, win 159, length 1452: HTTP
    13:31:40.904285 IP 192.168.2.87.51522 > 104.18.244.114.80: Flags [.], ack 4294946968, win 24568, options [nop,nop,sack 1 {4294948420:1452}], length 013:31:40.910973 IP 104.18.244.114.80 > 192.168.2.87.51522: Flags [.], seq 1452:2904, ack 1, win 159, length 1452: HTTP
    13:31:40.911219 IP 192.168.2.87.51522 > 104.18.244.114.80: Flags [.], ack 4294946968, win 24568, options [nop,nop,sack 1 {4294948420:2904}], length 0

  • Yakaladığımız paketlerin terminal ekranında gözükmeden sonradan okumak için bir dosyaya kaydedilmesini istiyorsak -w parametresini kullanmalıyız.Kaydedilen dosya PCAP uyumlu olması nedeniyle başka sniffer tarafından da yorumlanabilmektedir.Böylece Tcpdump ile kaydedip başka bir sniffer aracıyla okuyup analiz etme imkanına sahibiz.

    root@hbn:~# tcpdump -w /root/Desktop/ag_kaydı
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

  • Dosyaya kaydedilen ağ paketlerini -r parametresiyle okuyabiliriz.

    root@hbn:~# tcpdump -r /root/Desktop/ag_kaydı
    reading from file /root/Desktop/ag_kaydı, link-type EN10MB (Ethernet)
    13:34:33.553851 IP 104.18.244.114.http > hbn.51522: Flags [.], seq 2968892322:2968893774, ack 3321118528, win 162, length 1452: HTTP
    13:34:33.553916 IP hbn.51522 > 104.18.244.114.http: Flags [.], ack 4294904860, win 24402, options [nop,nop,sack 3 {4294964392:1452}{4294922284:4294962940}{4294907764:4294920832}], length 0
    13:34:33.555804 IP 104.18.244.114.http > hbn.51522: Flags [.], seq 1452:2904, ack 1, win 162, length 1452: HTTP
    13:34:33.555863 IP hbn.51522 > 104.18.244.114.http: Flags [.], ack 4294904860, win 24402, options [nop,nop,sack 3 {4294964392:2904}{4294922284:4294962940}{4294907764:4294920832}], length 0
    13:34:33.567320 IP 104.18.244.114.http > hbn.51522: Flags [.], seq 2904:4356, ack 1, win 162, length 1452: HTTP

  • Yakalanan paketlere dosyaya yazarken ve dosyadan okurken filtreleme yapabiliriz.

    root@hbn:~# tcpdump -w log icmp
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

    root@hbn:~# tcpdump -r log icmp
    reading from file log, link-type EN10MB (Ethernet)
    13:39:02.928190 IP hbn > 102w8oqex.guzel.net.tr: ICMP echo request, id 2294, seq 1, length 64

  • Ağ üzerinde yakalanacak maximum paket sayısını -c yani count parametresiyle belirtebiliriz.

    root@hbn:~# tcpdump -c 3
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:41:31.987444 IP 104.18.244.114.http > hbn.51522: Flags [.], seq 3065607138:3065608590, ack 3321123917, win 179, length 1452: HTTP
    13:41:31.987509 IP hbn.51522 > 104.18.244.114.http: Flags [.], ack 4294912120, win 24463, options [nop,nop,sack 2 {4294964392:1452}{4294915024:4294961488}], length 0
    13:41:31.988603 IP 104.18.244.114.http > hbn.51522: Flags [.], seq 1452:5808, ack 1, win 179, length 4356: HTTP3 packets captured6626 packets received by filter6615 packets dropped by kernel

  • Tcpdump’ın daha detaylı bir loglama yapmasını istiyorsak -v parametresini kullanabiliriz.

    root@hbn:~# tcpdump -n -c 3 -v
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:44:15.676919 IP (tos 0x0, ttl 49, id 60668, offset 0, flags [DF], proto TCP (6), length 1492)104.18.244.114.80 > 192.168.2.87.51522: Flags [.], cksum 0xf3dc (correct), seq 3104578014:3104579466, ack 3321129430, win 199, length 1452: HTTP
    13:44:15.677165 IP (tos 0x0, ttl 64, id 59222, offset 0, flags [DF], proto TCP (6), length 60)192.168.2.87.51522 > 104.18.244.114.80: Flags [.], cksum 0x1fb3 (incorrect -> 0x7e24), ack 2904, win 24576, options [nop,nop,sack 2 {0:1452}{5808:7260}], length 0
    13:44:15.840298 IP (tos 0x0, ttl 49, id 60669, offset 0, flags [DF], proto TCP (6), length 1492)104.18.244.114.80 > 192.168.2.87.51522: Flags [.], cksum 0x0b6f (correct), seq 2904:4356, ack 1, win 199, length 1452: HTTP
    3 packets captured
    4 packets received by filter
    0 packets dropped by kernel

  • Tcpdump’ın üzerinde çalıştığı makineye ait paketlerin analiz edilmesini istiyorsak sniff yaptığımız arabirimin promiscious moddan çıkarılması gerekmektedir.Yazının ilk başında bahsettiğimiz üzere tcpdump otomatize olarak dinleme yaptığı arabirimi promisc moda alır.Arabirimi promisc moddan çıkarmak için -p parametresini kullanırız.

    root@hbn:~# tcpdump -p -c 3
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:47:25.812917 IP 104.18.244.114.http > hbn.51522: Flags [.], seq 3147321990:3147326346, ack 3321135476, win 213, length 4356: HTTP
    13:47:25.813020 IP hbn.51522 > 104.18.244.114.http: Flags [.], ack 4294810480, win 24189, options [nop,nop,sack 2 {4294840972:4356}{4294811932:4294839520}], length 0
    13:47:25.814201 IP 104.18.244.114.http > hbn.51522: Flags [.], seq 4356:5808, ack 1, win 213, length 1452: HTTP
    3 packets captured
    5768 packets received by filter
    5761 packets dropped by kernel

  • Yalnızca belirli bir Host’a ait paketleri izlemek istiyorsak host parametresini kullanabiliriz.

    root@hbn:~# tcpdump host 89.252.180.102
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:50:58.579471 IP hbn > 102w8oqex.guzel.net.tr: ICMP echo request, id 2317, seq 1, length 64
    13:50:58.925240 IP 102w8oqex.guzel.net.tr > hbn: ICMP echo reply, id 2317, seq 1, length 64
    13:50:59.581145 IP hbn > 102w8oqex.guzel.net.tr: ICMP echo request, id 2317, seq 2, length 64
    13:50:59.839903 IP 102w8oqex.guzel.net.tr > hbn: ICMP echo reply, id 2317, seq 2, length 64
    CTRL + C4
    packets captured
    4 packets received by filter
    0 packets dropped by kernel

  • Buna benzer şekilde kaynak host, hedef host belirtebiliriz yada kaynak port, hedef port belirtebilme imkanımız vardır.

    root@hbn:~# tcpdump src host 10.10.2.21
    .
    .
    root@hbn:~# tcpdump dst port 443
    .
    .
    root@hbn:~# tcpdump port 23    (hem kaynak hemde hedef port 23 alınır.)

  • Belirli IP ve belirli port numaralarını içeren paketlerin port ve isim çözümlemesinin  yapılamadan gösterilmesini istersek aşağıdaki komutu kullanabiliriz.

    root@hbn:~# tcpdump -nn host 192.168.2.145 and port 80

 

 


 

 

 

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir