Forum

Fortigate üzer...
 
Bildirimler
Hepsini Temizle

Fortigate üzerinde paket takibi (packet sniffing) nasıl yapılır?

5 Yazılar
5 Üyeler
0 Likes
1,587 Görüntüleme
(@buraksekercioglu)
Gönderiler: 28
Trusted Member
Konu başlatıcı
 

Tüm fortigate ürünleri kendi içersinde güçlü bir packet sniffer
barındırmaktadır. Bu yazımda anlatacaklarım FortiOS v2.80-MR5 ve
sonrası firmware ile çalışan fortigate cihazları içindir.

Sniffer Temelleri:

Fortigate üzerinde yer alan sniffer, arabirimler üzerinde
gerçekleşen haberleşmeleri takip etmek amacı ile kullanılmakta olup 3
ayrı katmandan oluşur. Bu katmanları incelersek

  1. paket başlıklarını içerir
  2. paketlerin başlık ve verilerini IP bazlı olarak verir
  3. paketlerin başlık ve verilerini ETHERNET bazlı olarak verir

Şimdi bu katmanlarla ilgili olarak bir takım örnekler verelim;

Tüm paket izleme komutlarının yazım şekli şu şekildedir:

# diag sniffer packet <arabirim> <’filtre’> <katman> <adet>

açıklarsak;

<arabirim> belirli bir arabirim ya da ‘any’ dersek tüm arabirimlerle alakalı haberleşmeler

<katman> alınacak olan verilerin detay bilgisine bağlı olarak katman bilgisi (1-2-3)

<adet> paket izleme ile alınacak veri adedi

<’filtre’> daha fazla detay alabilmek için kullanılabilecek filtre cümlesi

Örnek 1: Basit İzleme

Tüm haberleşmeye ait 3 paket veriyi 1. katman detaylarına göre izle

# diag sniffer packet internal none 1 3
192.168.0.1.22 -> 192.168.0.30.1144: psh 2859918764 ack 1949135261
192.168.0.1.22 -> 192.168.0.30.1144: psh 2859918816 ack 1949135261
192.168.0.30.1144 -> 192.168.0.1.22: ack 2859918884

göreceğiniz gibi haberleşmemizin arasına girerek haberleşmeden 
küçük bir kesit veriyi aldık. Raporda görüleceği gibi 192.168.0.1 Ip
adresi 22. portunu kullanarak ve 192.168.0.30 Ip adresine 1144 portu
üzerinden bağlantı kuruyor. Sniffer sorgu cümlesinde belirtmiş
olduğumuz ‘none’ ifadesi filtre kullanmadan sorgula manasına gelir. “1″
ise 1. katmanı kullan ve “3″ manası da 3 tane paket yakala ve dur
demektir.

Örnek 2: Basit İzleme

# diag sniffer packet internal none 1 3
192.168.0.30.1156 -> 192.168.0.1.80: syn 2164883624
192.168.0.1.80 -> 192.168.0.30.1156: syn 3792179542 ack 2164883625
192.168.0.30.1156 -> 192.168.0.1.80: ack 3792179543

görüldüğü gibi bir takım verileri yakaladık, 192.168.0.30 numaralı
IP adresi 80 portundan 192.168.0.1 adresine bağlanmayı SYN  ile
bağlantı deniyor ve karşılık olarak da SYN ACK alıyor. Sonunda da 3
yönlü haberleşmeden sonra bağlantı kuruldu.

Bilgi katmanını 1. seviyeye aldığımızda kaynak ve hedef IP adresleri ile ilgili port bilgilerini görebiliriz.

Eğer <adet> bilgisini girmezseniz sistem haberleşme bilgilerini siz CTRL+C basana kadar almaya devam edecektir.

İPUCU: Bu bilgileri alırken bir dosyaya da LOG
kaydı olarak kaydetmek en güzelidir. Bunun için de PUTTY
(Freeware,Windows) SSH Client yazılımı ile log alabilirsiniz. Daha
sonra bu bilgileri istediğiniz gibi arama ve sıralamada
kullanabilirsiniz.

Katman 2 ve Katman 3 :

2. Katman daha fazla bilgi içerir

Katman 1: IP başlıklarını içerir ki bunu yukarıda görmüştük

Katman 2: IP paket içeriklerini gösterir

2. Katmana bir örnek verirsek

# diag sniffer packet internal none 2 1
192.168.0.1.22 -> 192.168.0.30.1144: psh 2867817048 ack 1951061933

0×0000   4510 005c 8eb1 4000 4006 2a6b c0a8 0001        E..\..@.@.*k….
0×0010   c0a8 001e 0016 0478 aaef 6a58 744a d7ad       …….x..jXtJ..
0×0020   5018 0b5c 8ab9 0000 9819 880b f465 62a8      P..\………eb.
0×0030   3eaf 3804 3fee 2555 8deb 24da dd0d c684      >.8.?.%U..$…..
0×0040   08a9 7907 202d 5898 a85c facb 8c0a f9e5       ..y..-X..\……
0×0050   bd9c b649 5318 7fc5 c415 5a59                  …IS…..ZY

3. Katman da ise ETHERNET (ETHER FRAME) bilgileri de yer alır. Bu
formattaki bilgiler teknik destek ve bir sorunun çözümünde kullanılır.

Bu işlem için Fortigate to Ethereal scriptini
kullanabilirsiniz. Bu dosya 3. Katmandan alınacak olan verileri
ETHEREAL programı tarafından okunabilecek hale getirir.

FİLTRE KULLANIMI

Şu ana kadar bahettiğimiz gibi yapılan sorgulamalarda filtre
kullanımı sorgunun gücünü ve amacını daha da ortaya koyacaktır. Filtre
anahtarları aşağıda yer aldığı gibidir.

<filter>    filtre
Yazım: ‘[[src|dst] host<host_name_or_IP1>]
[[src|dst] host<host_name_or_IP2>] [[arp|ip|gre|esp|udp|tcp]
[port_no]] [[arp|ip|gre|esp|udp|tcp] [port_no]]’

Şayet ikinci bir host tanımlıysa, sadece 2 host arası trafiği izlemek için aşağıdaki filtreyi kullanabilirsiniz.

<filtre>    esnek mantıksal filtreler
Örnek: forti1 ve forti2 yada forti3 cihazları arasındaki UDP port 1812 haberleşmesini görebilmek için
udp and port 1812 and host forti1 and \( forti2 or forti3 \)‘ filtresi kullanılabilir.

bir pc ile diğer bir pc arasındaki trafiği filtresiz olarak izlemeye
kalkarsanız, sniffer tüm paketleri görüntüleyeceği için takibi zor bir
durum ortaya çıkabilir. Bu yüzden filtre kullanılır.

Örnek 3 : Filtrelerle İzleme

İki bilgisayar arasında yada fortigate ile pc arasındaki trafiği izlemek için kullanılır.

Not: Filtrelerinizde tek (’ ‘ ) tırnak kullanımını unutmayın.

# diag sniffer packet internal ’src host 192.168.0.130 and dst host 192.168.0.1′ 1

192.168.0.130.3426 -> 192.168.0.1.80: syn 1325244087
192.168.0.1.80 -> 192.168.0.130.3426: syn 3483111189 ack 1325244088
192.168.0.130.3426 -> 192.168.0.1.80: ack 3483111190
192.168.0.130.3426 -> 192.168.0.1.80: psh 1325244088 ack 3483111190
192.168.0.1.80 -> 192.168.0.130.3426: ack 1325244686
192.168.0.130.1035 -> 192.168.0.1.53: udp 26
192.168.0.130.1035 -> 192.168.0.1.53: udp 42
192.168.0.130.1035 -> 192.168.0.1.53: udp 42
192.168.0.130 -> 192.168.0.1: icmp: echo request
192.168.0.130.3426 -> 192.168.0.1.80: psh 1325244686 ack 3483111190
192.168.0.1.80 -> 192.168.0.130.3426: ack 1325244735
192.168.0.130 -> 192.168.0.1: icmp: echo request

Bu trafik log yapısında göründüğü gibi çok fazla trafik bu hat
üzerinde gerçekleşmektedir, bu filtre komutu sadece 192.168.0.130
kaynağından 192.168.0.1 hedefine doğru olan trafikleri gösterir ama
192.168.0.130 a doğru olanları göstermez (örn: ICMP yanıtları). Bunun
sebebi de filtrede yazdığımız

’src host 192.168.0.130 and dst host 192.168.0.1′ komutudur.

Bir bilgisayardan daha önce yakaladığımız diğer ICMP ve DNS
sorgularında görebileceğiniz gibi, eğer trafiğin sadece özel bir tipi
ile ilgileniyorsanız (örn: TCP trafik sadece) filtre cümlemizi
aşağıdaki gibi değiştirmemiz gerekebilir.

# diag sniffer packet internal ’src host 192.168.0.130 and dst host 192.168.0.1 and tcp’ 1

192.168.0.130.3569 -> 192.168.0.1.23: syn 1802541497
192.168.0.1.23 -> 192.168.0.130.3569: syn 4238146022 ack 1802541498
192.168.0.130.3569 -> 192.168.0.1.23: ack 4238146023

Gerçi ICMP (Ping) de çalışıyordu, izleme sadece TCP haberleşmeyi
gösterir. Görebileceğiniz gibi Hedef: 192.168.0.1.23 (yani 192.168.0.1
in 23. portu) bize 192.168.0.1 ile telnet(23. port) haberleşmesi
olduğunu gösterir.

Aynı durumu şöyle de görebiliriz.

# diag sniffer packet internal ‘host 192.168.0.130 and icmp’ 1

192.168.0.130 -> 192.168.0.1: icmp: echo request
192.168.0.1 -> 192.168.0.130: icmp: echo reply

Bu örnekte sadece 192.168.0.130 IP adresli pc ye gelen ve giden ICMP paketlerini yakalıyoruz.

Değişik kombinasyonlar ile bu paket yakalama örneğini
geliştirebiliriz. Örnek vermek gerekirse; 192.168.0.130 IP adresli pc
ye gelen ve giden ICMP ve TCP haberleşmesini izlemek için aşağıdaki
komutu kullanabiliriz.

# diag sniffer packet internal ‘host 192.168.0.130 and (icmp or tcp)’ 1

Bu izleme yöntemi 192.168.0.130 IP adresli cihaza gelen ve giden tüm
ICMP  ve TCP paketlerini KATMAN 1 standartlarına göre gösterecektir.

Şimdi paket izleme işlemini biraz daha sınırlandıralım:

Örneğin, 2 cihaz arasındaki trafiğe ait TCP 80 portundan yapılan haberleşmeleri izlemek istediğimizde ise;

# diag sniffer packet internal ‘host 192.168.0.130 or host 192.168.0.1 and tcp port 80′ 1

192.168.0.130.3625 -> 192.168.0.1.80: syn 2057246590
192.168.0.1.80 -> 192.168.0.130.3625: syn 3291168205 ack 2057246591
192.168.0.130.3625 -> 192.168.0.1.80: ack 3291168206
192.168.0.130.3625 -> 192.168.0.1.80: psh 2057246591 ack 3291168206
192.168.0.1.80 -> 192.168.0.130.3625: ack 2057247265

Eğer iki cihaz arasında telnet ya da ssh trafiği yürütülüyorsa göremeyiz çünkü sadece TCP 80 portunu görmek istedik.

Bir sonraki yazımda ise tcp bayraklarının paket izleme ile nasıl takip edileceğinden bahsedeceğim.

Dosyalar:

Fortigate ile yakalanan katman 3 göre olan paketlerin ethereal yazılımının anlayacağı şekile dönüştüren Perl Converter için TIKLAYIN

 

 
Gönderildi : 26/11/2008 19:58

(@savasdemir)
Gönderiler: 1870
Illustrious Member
 

Burak çok profosyonel bir çalışma
emeğine sağlık kardeş
selamlar

 
Gönderildi : 27/11/2008 12:21

(@muratcan-2)
Gönderiler: 2192
Üye
 

Teşekkürler.

 
Gönderildi : 28/11/2008 00:16

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 32981
Illustrious Member Yönetici
 

Emeğinize sağlık .

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 30/12/2008 17:24

(@KaanATASOY)
Gönderiler: 22
Eminent Member
 

çok işe yarar bir çalışma olmuş teşekkürler.

 
Gönderildi : 04/11/2013 13:26

Paylaş: