Tcpreplay: Kaydedilen Trafiğinizi Yeniden Hareketlendirin

Tcpreplay verilen pcap dosyasını tekrardan oynatan ve bunu yaparken hiz tekrarlama muti proccessing gibi bir çok parametre alan opensource bir araçtır . Tcpreplay güvenlik cihazlarını test etmeden yazılım geliştirmeye , saldırı analizine birçok konuda ve birçok senaryoda kullanılabilir.

Tcpreplay projesi aşağıdaki bileşenlerden oluşur:

  • Tcpreplay : verilen pcap dosyasındaki trafiği birçok seçenek ile tekrardan oynatır.
  • Tcprewrite : pcap dosyasını yeniden şekillendirmek için kullanılır , istenildiği şekilde mac , ip , vlanid gibi değişikleri pcap dosyasını okuyarak yapar .
  • Tcpprep : tcpreplay ve tcprewrite için cache dosyası hazırlar . Bu dosya sayesinde trafik iki ayrı interface ten client-server şeklinde ayrıştırılır.
  • Tcpbidge : iki network segmeti arasında bridge olrak yerleşip , hangi segmentte hangi mac adreslerinin olduğunu öğrenip brodcast stormlarının olmasını engeller , tcprewrite gibi paket değiştirmede kullanılır .
  • Tcpcapinfo : tcprewirte buglarının detaylı incelenmesi için yazılmıştır. Daha çok geliştirici tarafından kullanılmaktadır.
  • Flowreplay : verilen pcap dosyasındaki trafiğin client trafını oluşturacak şekilde yeniden canlandırmak amacı ile yazılmıştır. Fakat tcp sequence ve ack number larının senkronize edilememesinden dolayı proje iptal edilmiştir.

Kurulum :

# wget http://sourceforge.net/projects/tcpreplay/files/tcpreplay/3.4.4/tcpreplay-3.4.4.tar.gz/download

# tar -zxvf tcpreplay-3.4.4.tar.gz

# cd tcpreplay-3.4.4

# less INSTALL

# ./configure

# make

# make install

Tcpreplay en başarılı çalışma şekli ips , web application firewall ve url filtering gibi L2 de çalışan cihazlarla birlikte çalıştığı halidir .

Çalışma mantığını hazırlamış olduğumuz test ortamı üzerinde anlatacak olursak:

Topoloji : iki adet pc , biri tek ethernet li diğeri 3 ethernetli (iki ethernet te kullanılabilir)

L 2 işe çalışabilecek ve L 7 de işlem yapabilecek bir firewall , ips vs bir cihaz

Burada amaçladığımız ; PC X ten bir trafik oluşturup bu trafiğin dumpını alırken aynı zamanda bridge mod ta çalışan firewall -ips cihazından log almak, daha sonra bu PC Y ye atıp tcpreplay ile yaniden oynatıp firewall -ips ten aynı logları elde etmektir .

Kullanmış olduğumuz firewall url filterin , ips ve application tanıma ozelliklerine sahiptir. Tcp oturumunun tam kurulamaması durumunda http logları , application gibi bilgileri bize veremeyecktir

Tcpreplay in birçok kullanım amacı olabilir , mesela bir UTM , next generation firewal veya bir ips i test etmek istiyorsunuz . Datasheet değerlerinin doğru olup olmadığı test etmenin en kolay yolu tcpreplay kullanmaktır .

Şöyle ki, bir miktar zararlı yazılım ve yasaklanmış verilerinden bulunduğu 40-50 mb lık bir pcap dosyası oluşturup bunu tcpreplay ile işlemcinin ve ethernetlerinizin gücüne göre çok yüksek hızlarda (çift çekirdekli xeon işlemcili bir sunucudan 800 mbit trafik trafik oluşturabilir)cihazdan geçirebilirsiniz . Bu test cihazınıza hping ile synflood yapmaktan cok daha sağlıklı sonuçlar verecektir.

Böylece cihazımızın tüm bileşenlerini gerçek trafik altında test edip zayıf bileşenin hangisi olduğunuz ve bunların değerlerini tespit edebiliriz . birçok utm cihazı 50 Gb 100Gb trafik kaldırabildiğini idda eder . Peki bu trafiğin içerinde antivirus taraması application kontrol yapılması durumda performans ne olacaktır ?

Bunu anlamanın en kolay yolu tcpreplay ile testler yapmaktır.

Testler sırasında trafik çeşitliliği konusunda sıkıntı çekiyorsanız wireshark ın sitesinde bolca pcap dosyası bulabilirsiniz . Mesela skype ı durdurduğunu idda eden bir ürün inceliyorsanız wireshark tan skype dosyasını indirip cihazdan geçirin ve loglarında skype geçtiğine dair bir veri varsa muhtemlen bunu durduruyordur.

Veya saldırıya ugradınız ve sisteminiz zarar gördü , birtakım onlemler aldınız fakat bu önlemlerin yeterli olup olmadığından emin değilseniz ve elinizde saldrı trafiğinin dump’ı varsa bunu tcpreplay ile yeniden oynatıp ayarların bu saldırıyı durdurup durdurmayacağını görebilirsiniz . Örnek çoğaltılabilir şimdi tcp replay in nasıl kullanıldığına ve çalışma mantığına gelelim

Tcpreplay Kullanımı

Tcpreplay ve diğer bileşenlerin çok sayıda kullanım şekli vardır . Biz burada sadece yukarıda anlatmış, çizmiş olduğumuz topoloji üzerinden çift ethernet ile sadece tcpreplay ve tcpprep ‘i kullanarak oluşturulan pcap doyalarında herhangi bir değişiklik yapmadan bir örnek yapacağız.

tcpreplay ve diğer bileşenler hakkında daha detaylı bilgi için http://tcpreplay.synfin.net/wiki/manual#a3.xOnlineManual adresinden yararlanabilirsiniz .

Tcpreplay ‘e vermiş olduğumuz pcap dosyası ile aslında trafiği tekrar oynatması için gereki tüm bilgiyi vermiş oluruz. Bu pcap ister client trafından ister server tarafından alınmış olsun içerisinde bir tcp veya udp oturumunun devam ettirilmesi için gerkli tüm sıra numaraları ve bilgiler mevcuttur .

Tcpreplay belirlemiş olduğumuz ethernetlerden birini client verilerini göndermek diğerini de server verilerini gondermek için kullanır . Tcpdump ile her iki etherneti ayrı ayrı dinlediğimizde bir tcp oturumunun ilk syn paketini eth0 dan gonderiyor ise syn+ack paketini eth1 den gönderdiğini görebiliriz

Eth0 da tamamen client trafiği varken eth1 de ise server trafiği vardır . Tcpreplay i bir bridge mod ta çalışan bir cihaza bağladığımızda , cihaz aynı bridge segmentinde bulunan iki etherneti arasında veriyi trasfer eder . Fakat çok portlu bir switch e bağladığımızda switch ‘in hangi ethernetlerinden bu verileri göndereceğini bilmesi için tcpreplay pcap paketini inceleyip client trafındaki mac adresini ilgili swtch portuna ve server tarafındaki mac adresini ilgili switch portuna yazdırmalıdır .

Tcpreplay trafiği çift taraflı simule etmek için pcap dosyasından elde edilmiş cache dosyasına ihtiyaç duyar . Bu dosyayı tcpprep ile oluşturabiliriz .

Yukarıdaki toplojiye göre PC Y den almış olduğumuz download.pcap dosyası ile işlem yapacağız dosyanın içerisinde www.bga.com.tr de ufak bir gezinti , eicar dan virus downlad edilme gibi veriler var .

Bu pcap dosyasından cache dosyasını elde etmek için tcpprep ‘i aşağıdaki parametreler ile çalıştırıyoruz.

root@home-labs:/root # tcpprep –auto=bridge –pcap=download.pcap –cachefile=download.cache

Elde ettiğimiz download.cache ve download.pcap dosyalarını tcpreplay e aşağıdaki şekilde verdiğimizde

Tcpreplay bu trafiği bir kez simule eder ve ilgili raporu sunar .

Raporda hangi ethernetten kac paket gonderildigi kacinin basarı ile ulasştığı , nekadar surede gonderilfiği gibi bilgiler vardır.

root@home-labs:/root # tcpreplay –cachefile=TeamViewer.cache –intf1=eth0 –intf2=eth1 TeamViewer.pcap

Yukarıdaki örnekte vermiş olduğumuz trafik aynen simule edilir . Yani bir kez ve aynı sürede oynatılır. Loop ve topspeed gibi parametreler ile birden fazla kez ve olabildigince hızlı oynatmasını sağlayabiliriz.

Yukarıdaki ekran görüntüsü 100Mbit lik biri switch ile denendiği sırada alınmıştır . O sebeple 95 Mbit ortalama ile gönderildiği görülüyor.

Aşağıdaki grafikte palo alto ngf ethernetlerinin birinden alınmış trafik gözükmektedir .

Yazan: Erhan YÜKSEL