Scapy nedir ?
Scapy network üzerinden özelleştirilmiş paketler göndermemizi/almamızı sağlayan bir python kütüphanesidir. Bu yazımda scapy hakkında giriş düzeyinde Bilgi vereceğim.
Kurulum Aşaması
Linux da kurmak çok kolay eğer kali linux kullanıyorsanız zaten yüklü gelecektir.
Windows da ise ya Npcap yada WinPcap kurmanız gerekmektedir. İkisini de kurmanıza gerek yok.Wireshark kullanıyorsanız varsayılan olarak WinPcap kurulu olur.
WinPcap: https://www.winpcap.org/install/
Npcap: https://nmap.org/npcap/
Ben wireshark kullandığım için bu paketleri yükleme gereği duymuyorum. Şimdi sıra scapy yüklemeye geldi.
Bu adresten scapy indirebilirsiniz: https://scapy.net/download/
İndirdiğiniz dosya da komut istemini çalıştırıp şu komutu verdikten sonra kurulum tamamlanmış olacak.
Şimdi istersek komut isteminde scapy komutunu verip çalıştıtırız ya da istersek scapy dosyasının içindeki run_scapy.bat dosyasını çalıştırıp scapy’i başlatabiliriz.
Scapy Komutlar
Kurulum aşaması bu kadar şimdi birkaç özellikten bahsedeyim.Öncelikle lsc() komutu ile kullanabileceğimiz komutları görebiliriz.
help() komutu ile istediğimiz komut hakkında detaylı bilgi alabiliriz.Örneğin sniff komutu ağdaki bütün paketleri yakalamamızı sağlıyor daha detaylı görmek için;
enter ile satır satır boşluk tuşu ile sayfa sayfa atlayabiliriz yada “q” tuşu ile çıkabiliriz.
scapy’nin desteklediği protokolleri görebilmek için ls() komutunu kullanırız.
Protokol hakkında detaylı bilgi almak için ;
Scapy Örnekler
Şimdi basit paketler oluşturalım ve wireshark ile paketleri inceleyelim.
kernelblog değişkenimizin adı IP() tanımı ile ip başlığı bilgisini girdim kaynak benim ip adresim(src) hedef de(dst) “kernelblog.org”. “show” komutu ile oluşturmuş olduğum ip başlığının içeriğini görebiliyorum.
Gelelim TCP bilgisini girmeye;
kaynak port(src) 445 belirledim hedef port(dst) 80 belirledim ve bayrağı syn/ack yaptım. Show komutu ile zaten gördüğünüz parametreleri girebilirsiniz.Peki nasıl göndereceğiz ? send ile tabiki 🙂
sendp(): 2.katmandan paket yollamaya yarar. (Veri katmanı)
send(): 3.katmandan paket yollamaya yarar. (Ağ katmanı)
Önce oluşturduğumuz ip ve tcp başlıklarını birleştirelim ve send ile gönderelim.
Wireshark da paketimizin başarılı bir şekilde gittiğini görüyoruz.
ICMP Paketi Gönderelim
İp başlığını oluşturdum(buraları biliyorsunuz) icmp başlığında dikkat etmişsinizdir type ve code kısmı bildiğimiz ping işlemi işte daha detaylı bilgi için
İp ve icmp başlıklarını birleştirdikten sonra bir de yazı gireyim dedim.
Scapy ile ağımızı dinleyebiliriz ve istediğimiz paketi filtreleyebiliriz.Varsayılan kullanımda herhangi bir parametre girmezsek bütün paketleri yakalayacaktır.
Scapy de filtreleme işlemi için “filter” parametresini kullanırız ve eğer yakalanacak paket sayısını belirtmek istersek “count” parametresini kullanırız.Show komutunun aksine summary komutu paketleri sıralamaz.
Sniff komutundaki bir yararlı parametre de “prn” parametresidir. Bu parametre yakalanan paketi belirtilen fonksiyona yönlendirir.
Örneğin bana_gel isimli bir fonksiyon oluşturup gelen paketin summary ile ekrana basılması sağlanmıştır. Diğer yazıda görüşmek dileği ile ..