ARGUS kullanarak ağ trafik denetimi

Argus(Audit Record Generation and Utilization System) ileri seviye network analizi yapan açık kod bir araçtır. İstemci ve sunucu olarak iki ayrı bilesenden oluşur.

Sunucu bileşeni ağ üzerinden yakaladığı  trafiği analiz edip binary olarak kaydeder veya doğrudan istemci bileşenine aktarabilir.

Argus istemci ise sunucudan aldığı girdiyi analiz eder.  Argus server mirror trafik , pcap dosyası veya netflow’dan veri okuyarak analiz yapabilmektedir.

Argus yeni protokollere hızlı bir şekilde adapte olan 10 yıldır geliştirilen bir yazılımdır.

Argus hedef trafik üzerinde gelişmiş filtreleme seçeneklerine sahiptir. Herhangi bir parametre verilmeksizin çalıştırılırsa eth0 arabirimini dinleyerek tüm veriyi kaydeder.
root@bt:~# argus -w tum_data
Argus örnekleri

Argus sunucu ve istemcileri için  -r    parametresi ile dosyadan veri okumayı gosterir

Argus sunucu ham veri okurken istemciler argus sunucunun verilerini okuyabilir.

#argus -r argus_server_icin.pcap  -w  argus_client

root@bt:~# ra -r  argus_client

Direk ethernete gelen veriyi okumak istendiğinde , öntaımlı  argus eth0 i dinleyerek calisir

Aşağıdaki komut ile eth1 i dinlemesi sağlanabilir.

root@bt:~# argus -i eth1 -w net_77

argus[18397]: 29 Jul 10 18:48:00.219096 started

argus[18397]: 29 Jul 10 18:48:00.219477 ArgusGetInterfaceStatus: interface eth1 is up

Aşağıdaki örnekte  , argus sunucu , herhangi bir filtreleme yapmadan eth1 gelen trafiği  , argus istemcinin okuyabileceği formatta net_77 dosyasına kaydediyor .

root@bt:~#   argus -i eth1 -w net_77

root@bt:~#   ra -r net_77 |more

15:09:07.907516  e s      esp      11.22.33.44           ->      11.22.33.44.0x0c1*      424     381008   INT

15:09:08.110395  e         esp      11.22.33.44           ->      11.22.33.44.0x5ae*      321     325798   INT

15:09:07.910347  e s      tcp       11.22.33.44.48078    <?>      94.245.127.43.https       269      51571   CON

15:09:08.111925  e         esp     11.22.33.44           ->      11.22.33.44.0×243*      283      45618   INT

15:09:08.114929  e         esp       11.22.33.44           ->      11.22.33.44.0xc33*        7       2650   INT

15:09:07.915032  e s      esp      11.22.33.44           ->      11.22.33.44.0x56c*      311      77258   INT

15:09:08.116565  e         esp      11.22.33.44           ->       11.22.33.44.0x7b6*        4        920   INT

15:09:08.114184  e         esp      11.22.33.44           ->      11.22.33.44.0x30d*      480     555568   INT

15:09:08.117813  e         esp      11.22.33.44           ->      11.22.33.44.0x8e9*       48      11760   INT

15:09:07.911239  e         tcp      11.22.33.44.www      <?>       11.22.33.44.28682       295     280935   CON

15:09:07.907756  e s      esp      11.22.33.44           ->      11.22.33.44.0x88d*      359     107050   INT

Aşağıdaki örnekte argus kaydedilen trafiği okuyarak bir argus istemci olan racluster’a girdi olarak veriyor.

racluster  istemci ve sunucu arasındaki tüm trafiği port bağımsız olarak tek satırda toplar ve yine bir argus istemci olan rasort yazılımına verir. Rasort birçok sıralama kriteri bulunan bir argus client yazılımıdır. Aşağıdaki örnek te en fazla veri transferine göre  istemci sunucu çiftlerini listeler.

rasort –help  menusunden sıralam kriterleri görülebilir.

root@bt:~# argus -r port_80 -w – |racluster -m matrix -w – |rasort -m bytes |head -10

12:33:05.316320  e          ip       11.22.33.44          <->       84.51.18.163           23105   25059939   CON

12:33:05.314842  e          ip       11.22.33.44          <->       193.206.140.34       16250   15702651   CON

12:33:05.314470  e          ip      11.22.33.44          <->      77.72.184.33           10115   10715968   CON

12:33:05.320042  e          ip       11.22.33.44          <->       83.66.15.138            8118    8836581   CON

12:33:46.320669  e          ip       11.22.33.44          <->       195.95.193.16          6448    6150899   CON

12:33:05.354095  e          ip       11.22.33.44          <->       83.66.140.10            6363    5134069   CON

12:33:05.335623  e          ip       11.22.33.44          <->       195.234.52.80          6957    5043303   CON

12:33:05.760453  e          ip       11.22.33.44         <->       88.255.168.83           5060    4879868   CON

12:33:17.819516  e          ip       77.72.184.58          <->       77.79.108.82             3238    3612957   CON

12:33:05.531533  e          ip       11.22.33.44          <->       94.75.253.173           3791    3186203   CON

Kaynak ip bazlı,  en fazla veri transferi yapan ilk 10 ip

root@bt:~# racluster -M rmon -m saddr -r net_77 -w – – ip | rasort -m bytes -s saddr bytes |head -10

11.22.33.44    878147223

11.22.33.44  686936864

11.22.33.44    142340585

11.22.33.44   129783932

195.234.52.80  116004786

11.22.33.44    42923014

62.244.214.22   42170662

212.58.2.211     38119666

85.105.27.117   29664516

83.66.15.138     27507330

En fazla paket gönderen  ilk 10 ip adresi

root@bt:~# racluster -M rmon -m saddr -r net_77 -w – – ip | rasort -m pkts -s saddr pkts |head -10

11.22.33.44  1211197

11.22.33.44   962912

11.22.33.44   357568

11.22.33.44   289999

195.234.52.80   161004

11.22.33.44   122575

88.255.31.98    56154

212.58.2.211    54285

11.22.33.44    43832

62.244.214.22    40244

Belli bir host un belli bir portuna giden trafiği kaydetmek için  aşağıdaki gibi komut girilir

#argus -i eth1 -w dst_11.22.33.44_port_80_file – tcp and dst port 80 and ip and dst 11.22.33.44

# ra -r dst_11.22.33.44_port_80_file |more

20:30:16.484743  e         tcp     213.211.31.112.1047      ?>       11.22.33.44.www           2        900   CON

20:30:16.702024  e         tcp     212.175.32.126.5478      ?>       11.22.33.44.www          33      14105   CON

20:30:16.475614  e         tcp     78.180.207.102.2761      ?>       11.22.33.44.www           1         60   CON

20:30:16.475704  e         tcp      194.54.40.173.2192       ?>       11.22.33.44.www           1         60   CON

20:30:16.475860  e         tcp      88.240.217.53.3443       ?>       11.22.33.44.www           1         60   CON

20:30:16.476951  e         tcp    212.156.145.246.19704  ?>       11.22.33.44.www           2       1226   CON

20:30:16.483686  e         tcp       92.45.235.97.2063       ?>      11.22.33.44.www           1         60   CON

20:30:16.484686  e         tcp      194.27.14.239.49215    ?>      11.22.33.44.www           2       1165   CON

20:30:16.488325  e         tcp      85.97.128.238.37428    ?>       11.22.33.44.www          59       3540   CON

20:30:16.490779  e         tcp      88.249.61.141.1117      ?>       11.22.33.44.www           2       1356   CON

20:30:16.495398  e         tcp     88.224.184.137.55918   ?>       11.22.33.44.www           3       1234   CON

20:30:16.497452  e         tcp      212.253.69.30.1329      ?>       11.22.33.44.www          32      13389   CON

20:30:16.499386  e         tcp     88.247.220.208.23143    ?>       11.22.33.44.www           5       1938   CON

Bunun yanında binary dosyaya tum gelen trafiği yazıp okurken ra aracılığı ile filtreleme yapabiliriz

root@bt:~# ra -r net_77 – dst port  80 -n |more

79 dan büyük 444 ten küçük prtları listelemek için

# ra -r net_77 – dst port gt 79 and dst port lt 444 -n |more

Argus   çıktısında son sütun  bağlantının durumunu gösterir  .  Bağlantının birçok durumu olabilir  bağlantı kurulmuş olabilir , başlatılıyor olabilir, bitiriliyor olabilir,  bitirmek veya başlatmak iin karşıdan bir cevap bekleniyor olabilir bu şekilde argusta 20 ye yakın durum bildirimi vardır .

Trafiğimizdeki durum istatistiğini alabilmek için için linux  bash programlamadan yardım alabiliriz .

Argus un  tarafından trafik için dosya oluşturmasını sağlamalıyız , bunu yaparken amacımız zamanla durum değerlerinin değişiklerini gözlemlemek olduğu için argus u deomon modunda -d parametresi ile çalıştırmalıyız

argus -i eth1 -w durum_kayit  -d

Argus bu aşamadan sonra durum_kayit dosyasina verileri kaydeder ve arka planda deomon olarak çalışır

Gerekli process öldürülmeden  kayıt devam eder

Kaydedilen dosyadaki durumların istatisitğini 10 sn lik aralıklarla ekrana basan bir script yazılıp bağlantı durumlarındaki değişmeler incelenebilir .

Script :

root@bt:~# cat karsilastirma

#!/bin/bash

while true ;

do

ra -r /root/durum_kayit -nn – |awk ‘{print $NF}’ |sort |uniq -c |sort -nr > durum

cat durum

echo ” —————–”

rm -rf  /root/durum_kayit

sleep 10

done

root@bt:~# ./karsilastirma

—————–

1859 CON

1146 FIN

994 RST

668 INT

41 REQ

14 URFIL

13 ECO

3 ACC

1 URP

1 URH

1 TXD

1 RSP

1 CLO

—————–

bu noktada hping3 -S 11.22.33.44 –rand-source –flood -p 80 9819 ACC             syn flood yapıldı ve bağlantı durumlarındaki değişiklik görüldüğü gibidir.

3549 REQ

1861 CON

912 FIN

738 RST

655 INT

19 URFIL

18 ECO

1 URP

1 URH

Argus hakkında detaylı bilgi için http://nsmwiki.org/index.php?title=Argus adresi incelenebilir.