Bu makalemde sizlere python ile yazılmış SCAPY kütüphanesinden bahsedeceğim. Scapy baktığımız zaman üzerinde geniş kapsamlı çalışma yapılabilecek bir konu olduğu için her hafta bu yazı dizime ek makaleler yayınlayarak konunun iyice anlaşılmasını sağlamaya çalışacağım. Bu hafta Scapy makalemde aşağıdaki konu başlıklarına değinerek tamamlayacağım.
Scapy nedir?
Scapy Kurulumu ve Konfigrasyonu
Scapy ile çalışma
Scapy, network ağları için özelleştirilmiş paketler üretmeye yarayan python ile yazılmış bir kütüphanedir. Scapy ile aynı zamanda network tarama ve analiz işlemleri yapabiliriz. Scapy python ile yazıldığı için ilgili uygulamalar kuruluğu zaman (python, nmap, Vpython, pcap v.b) Windows ve Linux sistemler ile komut satırından sorunsuz bir şekilde çalışır, platform bağımlılığı yoktur. Scapy’i diğer programlardan (nmap, hping v.s) ayıran özelliği esnek bir yapıya sahip olmasıdır. Esnek yapıdan kastımız ise bu programlar size tasarımcısının sunduğu özellikleri kullanmanızı sağlarken, scapy ile bunların yanında kendi ihtayıcınıza özel TCP/IP paketlerini oluşturarak bu paketler ile networkünüzü analiz edebilirsiniz. ARP paketleri oluşturarak sisteminize arpspoofing testleri yapabilirsiniz.
Scapy python ile yazıldığı için kullandığınız işletim sisteminde mutlaka python kurulu olması gerekmektedir. Python kurulumu ile ilgili http://www.istihza.com adresinden faydalanabilirsiniz. Python kurulumunu gerçekleştirdikden sonra kullanım kolaylığı bakımından python’un işletim sisteminizde path olarak tanımlamanızda fayda olacaktır. Python Linux sistemlerde otamatik kurulu gelmektedir ve path olarak tanımlı olduğu için terminal sayfasında python yazdığınız zaman python’ın komut satırına ekran düşecektir. Python GUI kullanıcaksanız o zaman IDLE’ı yüklemeniz gerekicektir. Redhat’ın lisanssız sürümünü kullanıyorsanız bu işlemleri manuel olarak yapmanız gerekecektir. Ubuntu, Centos gibi depolarını ücretsiz kullandıran işletim sistemi kullanıyorsanız redhat gibi manuel kurmanıza gerek kalmayacaktır çünkü depolarında scapy dahil tüm paketler bulunmaktadır. Windows kullananlar scapy , python dahil tüm programları manuel kurması gerekmektedir. Ben makalemde her iki işletim sisteminde de kurulumu göstereceğim. Öncelik ile ben çalışmalarımı Linux tarafında Ubuntu, Windows tarafındada ise Windows 7 kullanarak anlatacağım. Ubuntu tarafında scapy kurulumuna bir göz atalım.
Scapy pyhon kütüphanelerinde bulunduğu için ubuntu üstünde “apt-get install scapy” komutu ile kurulumunu gerçekleştiriyoruz. Backtrack kullanıyorsanız bunu yapmanızada gerek yok çünkü backtrack’da kurulu olarak geliyor. İleriki makalelerimde scapy ile ilgili ek bileşenlerin kurulumlarından ve özelliklerinden bahsediceğim için şimdi onların kurulumlarına girmiyorum bizim konuyu öğrenme adına ilk aşamada scapy kurulumunu bilmemiz yeter.
Windows kurulumuna göz atacak olursak, python kurduğunuzu varsayarak anlatıyorum,http://www.secdev.org/projects/scapy/ adresinden scapy’nin executable.zipdosyasını bilgisayarınıza indirmeniz gerekmekte. Bu işlemi yaptıktan sonra komut sayfası açarak scapy’nin kurulu olduğu dizine ilerliyorsunuz (cd c:\downloads\scapy.2.0 gibi) ve python’u path olarak tanımladıysanız eğer “python setup.py install” komutunu çalıştırarak scapy kurulumunu gerçekleştiriyorsunuz. Python’ı path olarak tanımlamadıysanız bu komut hata verecektir o zaman yapmanız gereken işlem komut satırında python’ın ve scapy’nin dizinlerine giderek bu setup dosyasını çalıştırmanız gerekecektir. (python c:\Users\gokhan_test\Desktop\scapy-2.2.0\setup.py install) bu işlemi her defasında yapmak yerine path olarak tanımlamanız daha kullanışlı olacaktır. Bu işlemleri yaptığınızda C dizini altında bulunan python klasörü altına “Scripts” adında bir klasör daha gelecektir ve scapy’nin script dosyaları burada olacaktır.
Python için path tanımladığım gibi scapy içinde path tanımladığımdan cmd de scapy yazdığıma scapy’nin komut satırı karşıma gelmekte.Ben makalemin devamında ubuntu üzerinden testler yapacağım ama dediğim gibi Windows işletim sistemlerinde de aynı komutlar sorunsuz bir şekilde çalışacaktır.
LS() Komutu
Scapy’i çalıştırdığınız zaman karşınıza “>>>” şeklinde komut girmenizi bekleyen bir alan gelecektir. Biz burada “ls()” komutunu çalıştırdığımız zaman scapy içersinde hazır bulunan protokollerin listesini almaktayız daha sonra bu alana ek olarak kendi oluşturduğunuz protokolü ekleyebilirsiniz scapy’nin farklı özelliklerinden biride bu, örnek olarak şirketinizde Erp sisteminiz var ve bilgisayarlarda kullanması gereken bir port var siz buna xcompany_port adını verdiniz. Bu port bilgisini buraya eklediniz ve networkde bir tarama yaptınız bu port hangi bilgisayarlarda açık ise listesini o isim ile görebilirsiniz nmap ile bu taramayı yaptığınızda size sadece o port’un numarasını verecektir ismini kendi db’sinde bulunmadığı için vermeyecektir.
LSC() Komutu
>>>lsc() komutu ise bizim scapy’de kullanabileceğimiz parametrelerin bilgisinivermektedir.Alıştırmalarımızda daha detaylı göreceğimiz parametrelerin bu komut ile çıkan sayfada , açıklamalarınıda görmekteyiz.
>>>Conf komutu ilede scapy’de bulunan konfigrasyon ayarlarımızı görmekteyiz.
Temel anlamda bilgilendirmelerimizden sonra scapy alıştırmalarımıza başlayabiliriz.
Benim alıştırmalarda izleyeceğim yol ilk olarak basit örnekler yaparak konunun farkındalığını arttırmak sonrada önümüzeki haftalar dahil olmak üzere kendi scriptlerimizi yazarak scapy üzerinden exploiting olacaktır. Network üzerinde belirlediğimiz bir ip adresine Tcp paketi yollama.
Adım adım paketimizi inceleyelim.
“Gokhan” Bizim değişkenimizin adı, yani biz bu tcp paketini Gokhan değişkenine atadık ve ileriki aşamada bu paketimizi Gokhan olarak çağıracağız.
IP(dst=”10.5.0.144″) Scapy de bir komutu tanımlarken alacağı içeriği parantez içinde belirtiyoruz burada “IP” paketimizin türünü, (dst=”10.5.0.144″) ifadesi ise hedef ip adresini belirttiğimiz anlamına geliyor. Paketimizin IP paketi olduğunu belirtip enter tuşuna bastığımızda bu paketi scapy otamatik olarak hafızasına kayıt ediyor.
Gokhan.show() parametresi ile bizim Gokhan değişkenimizdeki IP paketinin içeriğini görebilmekteyiz.
Version=4
Paketin IPV4 olduğunu ,
Ttl=64
Paketin yaşam süresini
Flags=0
0 görünmesinin nedeni ise biz daha bu pakete TCP paketi olduğunu belirtmememizden kaynaklanmaktadır. Şimdi farklı bir parametre ile bu IP paketine TCP paketi olduğunu belirtelim.
“Gokhan=(IP(dst=”10.5.0.144″)/TCP(flags=”FS”))”
Bu parametre ile Gokhan adlı paketiminiz TCP paketi olduğunu ve flag olarak FIN + SYN olduğunu belirtiyoruz.
Artık paketi incelediğimizde TCP paketi olduğunu belirtmiş bulunuyoruz.
Paketimizi hedef adrese yollamak için,
Sr1(Gokhan) yazdığımızda karşı tarafa 1 adet send-receive paket yolladığımızı belirtiyoruz.
Wireshark ile baktığımızda hedef adreste nasıl bir paket geliyor bakalım.
Wireshark çıktısında gördüğümüz üzere, bizim hazırladığımız paketin flag bilgisinde (FIN, SYN ) paketi olduğu görnüyor. Wireshark’da paket rengini siyah görmeniz normal çünkü bu size bozuk paket olduğunu belirtiyor.
Bir sonraki yazımda daha detaylı scapy üzerinde çalışmalar yapıp, belirttiğiniz adreste scanning, fuzzing, firewall atlatma teknikleri ve daha birçok özelliğini inceleyeceğiz. İlk yazımızın amacı, tamamen mantığı kavramak niteliğindeydi.
Teşekkürler.