Scapy İle Ağ Trafiği Analizi

Eşref Erol
Three Arrows Security
4 min readAug 30, 2018

Merhaba sevgili okurlarımız. Kurban Bayramında kavurmaları biraz fazla kaçırmışız galiba o yüzden yazılara biraz ara vermiştik anca toparlanabildik kusura bakmayın efenim. Bu yazımızda daha önceden temel düzeyde kullanımını anlattığımız Scapy ile ağ trafiğimizi nasıl takip edebileceğimizi anlatmaya çalışacağım.

Scapy yazımız için: https://link.medium.com/nVmrnRAqzV

Scapy İle Ağ Trafiği Analizi Nasıl Yapılır?

Öncelikle belirtmek istediğim birkaç şey var. Bunlardan bir tanesi apaçık ortada olduğu üzere bilgisayarınızda Python’un ve Scapy’nin kurulu olması gerektiği. Diğer dikkat edilmesi gereken nokta ise başlangıçta root yetkisinde çalışan sistemler dışındaki(Örn: Kali Linux) sistemlerde Scapy’i ya da Python’ı yetkili olarak başlatmanız gerektiğidir. Ağ trafiğini incelememiz için bu yetkiye ihtiyacımız olacak yoksa programlarımızı kullanırken yetki hataları ile karşılaşırız. Bunları belirttiğimize göre konumuza geçelim.

Malumunuz olduğu üzere Wireshark ve Tcpdump gibi araçlar ile ağ trafiğimizi inceleyebiliyoruz. Bu inceleme işini Scapy aracılığı ile yapmamız da mümkün. Peki bunu nasıl yapabiliriz? Bu işlemi Scapy’de “sniff()” fonksiyonu ile gerçekleştireceğiz. Aslında bir nevi sniffer, Türkçeye çevirecek olursak ağ trafiğini koklayan bir araç/fonksiyon kullanacağız. Gelin beraber sniff fonksiyonunu, parametrelerini ve kullanımını inceleyelim.

Sniff fonksiyonunun en basit kullanım şekli aşağıdaki gibidir.

>>>a=sniff()
>>>a.show()

“a” Değişkenine aşağıdaki gibi sorgu çekerek istediğiniz paketlerin basılmasını sağlayabilirsiniz.

>>>a[paket_numarası]

count: Fonksiyonumuzun kaç adet paketi yakalamasını istediğimizi belirtebiliriz. Bu değer varsayılan olarak 0’dır Bu da sonsuz sayıda paket anlamına gelmektedir. Siz fonksiyonu durdurana kadar paketleri takip etmeye devam edecektir.

store: Paketleri kaydedip kaydetmeyeceğine karar verdiğimiz parametredir. Varsayılanı 1 olarak tanımlanmıştır. Eğer biz bu parametremize sıfır değerini verirsek aşağıdaki gibi bir çıktı alırız.

prn: Fonksiyonumuzdan düzenli ve ayrıntılı çıktı almamızı sağlayan parametremizdir. Varsayılan değeri “None”dır. Buraya kendi oluşturduğunuz herhangi özel bir fonksiyonu da atayabilirsiniz ancak ben esas olarak tanımlanan şekilde çalışması ve tek satırda ek fonksiyon yazabilmek için “lambda” fonksiyonunu kullanacağım.

Özel fonksiyon tanımlayarak şu şekilde de kullanılabilir:

lfilter: Fonksiyonumuzun yakalayacağı paketleri belli özellikler ile sınırlandırmak yani filtrelemek için bu parametremizi kullanabiliriz. Daha basit bir filtreleme işlemi içinse “filter” parametresi de kullanılabilir.

offline: Kayıtlı olan bir trafiği (.pcap) okuması için kullanılır. Varsayılanı “None” değeridir.

timeout: Girilecek değer kadar zaman sonrasında kaydetme işinin sonlandırılması sağlar. Paket sayısı yerine süre baz alınarak sınırlandırma sağlanır.

l2socket: Layer 2 düzeyinde tanımlanmış bir soketin kullanılmasını sağlar.

opened_socket: .recv() fonksiyonu için kullanılmak üzere hazır hale getirilmiş bir nesne oluşturur.

stop_filter: Girilecek değerdeki özelliğe sahip ilk paketin kayda alınmasından sonra kayıt işleminin sonlandırılmasını sağlar. Örnek olarak yapacağınız bir saldırı senaryosu olduğunu varsayalım. Burada saldırının başarılı olduğunu gösteren paketin kaydından sonra kayıt işleminin durdurulması ve oluşturduğunuz aracın sıradaki işleme geçmesini sağlamak için kullanılabilir diyebiliriz.

iface: Özellikle kullanılması gereken bir ağ arayüzünü veya arayüzlerini belirtmek için kullanılır. Varsayılan değeri “None”dır.

Peki biz bu bilgilerle ne yapabiliriz? Bu aslında her zaman olduğu gibi tamamen sizin hayal gücünüze bağlı. Kendinize ait Wireshark ya da Tcpdump gibi bir araç oluşturabilirsiniz. Yapacağınız bir saldırı için otomatize bir araç yazmak için sniff fonksiyonunu kullanabilirsiniz. Ya da kendi güvenliğinizde takip ve uyarı için kullanılabilecek bir uygulama yazabilirsiniz. Bu böylece sürüp gider, tamamen sizin hayal gücünüze kalmış.

96. yılında 30 Ağustos Zafer Bayramımızı kutluyor, Cumhuriyerimizin Kurucusu Anafartalar Komutanı Gazi Mareşal Başbuğ Mustafa Kemal Atatürk ve silah arkadaşlarını saygı ve rahmetle anıyoruz.

Okuduğunuz için teşekkür ederim. Umarım faydalı bir yazı olmuştur. Ağ Güvenliği 101 serimizin 3. yazısında görüşmek üzere.

Faydalanılan Kaynaklar:

https://thepacketgeek.com/scapy-sniffing-with-custom-actions-part-1/
https://thepacketgeek.com/scapy-sniffing-with-custom-actions-part-2/
https://rstforums.com/forum/topic/61424-sniffing-with-scapy/

--

--

Eşref Erol
Three Arrows Security

Dr. | Editor at @threearrowsec & @h4cktimes | @Parrotsec TR Community