Scapy Nedir ? | ağ saldırıları

Black_SWAN

Üye
12 Kas 2023
73
35

Scapy Nedir?

Scapy pythonla yazılmış olan, spesifik paketler oluşturup bunları iletmemizi sağlayan açık kaynak kodlu bir araç/python kütüphanesidir.
1*eL6Iwuc__uB1UpXknQhEug.png

Scapy Nasıl Kurulur?

Kişiye ait scapy'i kurabilmeniz için Python'un kurulu olması gerekmektedir. Python'un 2 veya 3 olması önemli değildir, ancak 2.7 ve 3.3 sürümlerinden biri yada daha güncel olması önemlidir. Ayrıca bileşenler python'u yüklerken yol olarak tanımlamalarınız ürünlerinize zarar vermez. GNU/Linux sistemlerinde python kurulu olarak gelir ve yol olarak tanımlamalı yani doğrudan terminale python yazdığınızda program çalışmaya başlar ayrıca bir yol belirtmenize gerek kalmaz windows'a yüklerken yükleme seçeneklerinden yol olarak tanımlamayı sağlayan tiki işaretlemeyi unutmayınız.
1*yZKejdz627LzWHuIPTly6w.png

Debian/Ubuntu'da Kurulumu:

Kod:
sudo apt-get install scapy

Not: Kali Linux kullanıcıları için belirteyim scapy zaten mevcut da yüklü geliyor bu işlemi yapmanız gerek yok.

Windows'da Kurulum:

Scapy'nin çalışması için Npcap veya Winpcap yazılımlarından biri köklü kurulmalıdır. Eğer Wireshark gibi programlar yüklüyse Windows'a yüklenirken zaten Winpcap'i varsayılan olarak programla beraber kuruyor. Ben böyle bir durumun söz konusu olmadığı kullanıcılar için ayrı ayrı kurulumunu anlatacağım.

1*G9ZfJMk3MqPmxoScrvnZHA.png

Npcap Kurulumu:

Adresinden çalıştırılabilir pencereleri yükleyip çalıştırarak tipik program kurulumu yapar gibi adımları takip ederek kurabilirsiniz.

Winpcap Kurulumu:

Adresinden yine npcap'ın kurulumuyla aynı şekilde kurabilirsiniz.

Not: Açgözlülük içeren fazla mal göz çıkarmaz yaparak, kayıtlı de yüklemeyin. Birbirlerine olumsuz etki yaratır ki zaten yüklerken birinden biri varsa kaldırmanızı söyleyip hatta kendisi kaldırıyor.
Yazılımlarımızı kurduktan sonra gelelim scapy'nin kurulumuna:
Adresinden zip dosyamızı indirip sunabileceğimiz bir yere çıkarıyoruz. Daha sonra komut satırını açıyoruz. Dosyayı çıkardığımız diziye gelip çıkardığımız dizine giriyoruz. “Setup.py” dizisinin geldiğimizde olduğu yer. satıra aşağıdaki kod yazıp çalıştırıyoruz Komutu veriyoruz:

Kod:
python setup.py kurulumu

Scapy Nasıl Kullanılır?

Şimdi scapy kullanımından önce konuyu daha iyi görebilmeniz için ağ temelleri hakkında birkaç bilgi vermek istiyorum. Scapy'i doğru bir şekilde kullanabilmeniz için paket başlıklarını bilmenizin gerekli olduğunu biliyor. Ben şimdi burada size tek kaplar, başlıklar, protokolleri anlatamam lakin ödemeleri gereken yerlerden birkaç tanesim. Sürekli tekrarlamayı ve konularımda devam edeceğim gibi kişisel siber güvenlik alanında ilerlemek istediğiniz temellerin sağlam olması gerekmektedir. Üşenip sıkılıp ben doğrudan güvenliğe girecem diye dalamazsınız yoksa bir durmaz anlamaz ezbere iş yaparsınız bu yüzden ağ, web bağlantıları ve her yerde başlarsınız bizim burada verebileceğimiz bilgiler kısıtlı bilgilerdir.

1*47fGQ0y8rrrt-G47SIFlZw.png

IP Başlığı Hk.

Kaynak IP: Kaynağın IP adresi

Hedef IP: Hedef IP adresi

Bayraklar: Paketin bozulmadan iletilebilmesi için gerekirse parçalanıp parçalanmayacağı hk. Bilgi veren kısımdır.

Başlık Sağlama Toplamı: Karşıdaki makinenin paketi bozulmadan alıp almadığını kontrol etmesini sağlayan paketin bilgi kısmı.

TTL(Time to Live): Gönderdiğimiz paketin loop'a(sonsuz döngü) girmesi için ne kadar süre sonra yok olacağı hakkında bilgi veren kısımdır.


1*hrueRCijPxpnfo7KOJOzJA.png

TCP Başlığı Hk.

Sec ve Ack Num: Üçlü el sıkışma sırasında cihazların birbirlerini tanımaları için değerleri değerleri.

Kod Bitleri: Paket çeşidini oluşturan kısımdır.


1*dLpKqjw-FtZaQY-0zz9kKQ.png

ICMP Başlığı Hk.

Tür: Kontrol mesajının tipi

Kod: Kontrol mesajı tipinin alt dalı, daha spesifik bilgi.

DHCP: Dinamik Ana Bilgisayar Yapılandırma Protokolü. Ağda bulunan cihazlara IP, alt ağ maskesi, ağ geçidi gibi verilerin otomatik olarak atanmasını sağlayan protokoldür. IP çakışması vb durumların önlenmesi için çok önemlidir.

Şimdi bu bilgilerimizi koruyarak scapy kullanımına geçebiliriz. öncelikle temel komutlarımızla başlarız.

Help(): Scapy hakkında yardım sağlayan komuttur. Parantez içine yardım almak istediğiniz şeyi yazabilir veya boş çalışma fonksiyonunu çalıştırıp komut satırına yardım almak istediğiniz konuyu yazabilirsiniz. Girip çıkamayan olursa diye çıkmak için “q”ya basın.


1*4hobgr_bRmjv7YZdt-3RXg.png

Ls(): Scapy içinde bulunan hazır protokolleri sizin için listeler.

1*qPHqJRz_si2MV_UtW45E0Q.png

Ls(Protokol): Kullanacağınız protokolün özelliklerini ve varsayılan değerleri gösterir.

1*CC87xIE5T1LeAc_ECivF8w.png

Sendp(): 2.katmandan paket yollamaya yarar.

Send(): 3.katmandan paket yollamaya yarar.

Not: Bu ikisi arasında farklı oldukça önemli programlarınızda kullanırken birini değilde diğerini kullanırsanız “Lan nerede bu hata” diye saçınızı başlatabilirsiniz.

Temel komutlarımızı dosyalarımıza göre şimdi paketlerimizi yapılandırmaya geçebiliriz. Paketlerimizi oluştururken katman katman içeriklerini gireceğiz.

Scapy İle Ağ Paketi Oluşturmak ve Göndermek:

ICMP Paketi:

İp başlığı ve icmp başlığını oluşturmamız gerekiyor. Aşağıdaki kodları sırayla takip edin.
Kod:
ip_basligi=IP(dst=”Hedef ip”, src=”kaynak ip”, ttl=20)[/COLOR][/CENTER]
[COLOR=rgb(184, 49, 47)][CENTER]icmp_basligi=ICMP(type=8, code=0)
icmp_paketi=ip_basligi/icmp_basligi
send(icmp_paketi)

Şimdi paketimiz bulunsun mi bakalım:

1*WgzT5OI53kZYBPbCIuiLsw.png

DHCP Paketi:

IP, udp ve dhcp baslıklarını kullanacağız.
Kod:
ip_basligi=IP(src=”0.0.0.0", dst=”255.255.255.255")[/COLOR][/CENTER]
[COLOR=rgb(184, 49, 47)][CENTER]
udp_basligi=UDP(dport=67, spor=68)

dhcp_basligi=DHCP(seçenekler=[(“kira_süresi”, 70000)])

dhcp_paketi=ip_basligi/udp_basligi/dhcp_basligi

gönder(dhcp_paketi)

Paketimizi kontrol edelim:

1*DMSs6WcteGquCc5scONG3Q.png

DNS Paketi:

IP, UDP ve DNS kullanacağız.
Kod:
ip_basligi=IP(dest=”8.8.8.8")[/COLOR][/CENTER]
[COLOR=rgb(184, 49, 47)][CENTER]udp_basligi=UDP(dport=53)
dns_basligi=DNS(rd=1, qd=DNSQR(qname=”www.thirdarrowsec.com"))
dns_paketi=ip_basligi/udp_basligi/dns_basligi
gönder(dns_paketi)

Kontrol edelim:

1*BeXCNyZT_es1pGwhTDDpMg.png

TCP Paketi:

Kod:
tcp_basligi=TCP(sport=8080, dport=22, flags=”S”)[/COLOR][/CENTER]
[COLOR=rgb(184, 49, 47)][CENTER]ip_basligi=IP(src=”127.0.0.1",dst=”127.0.0.1")
tcp_paketi=ip_basligi/tcp_basligi
send(tcp_paketi)

Kontrol edelim:

1*YF9_G9Jx8wdFiZp7qNz83w.png

NOT: Paketleri oluştururken örneklerde olduğu gibi alt katmandan üst katmana doğru yazmamızı unutmayalım.

Scapy Kodu Nasıl Dönüştürürüz?

Mesela siz Python 2.7 kullanıyorsunuz ama kodunuzu Python 3.x'e çevirmeniz gerekiyor. Bunu nasıl yaparsınız? Anlatacağım bu aracı sadece scapy kodlarınız için değil, başka python betikleriniz için de kullanabilirsiniz. Bunun için 2to3 adında bir python aracı mevcut. Anlatımımda bu araçtan faydalanacağız.

2to3 aracımız genellikle yorumlayıcı olarak python betiğimize ek olarak ancak Araçlar/komut dosyaları python dizinde de bulunmaktadır. Mesela python 2.7 ile yazılmış “scapy_deneme.py” olarak bir betiğimiz olsun. Bu betiği python 3.x bir sürüme dönüştürmek için terminalin kullanımı aşağıdaki gibidir:
Kod:
2 ila 3 $ scapy_deneme.py

Yukarıdaki gibi kullanırsanız Orijinal betiğinize ek olarak başka bir dosya halinde 3.x sürümünde bir python betiği oluşur. Kod Aşağıdaki dizimini kullanırsanız orijinal dosyanızdan bir kopya oluşturarak doğrudan orijinal dosyanız üzerindeki değişiklikleri yedekleyin
Kod:
$ 2to3 -w scapy_deneme.py
.

Scapy Ne İşimize Yarar?

Scapy ağ değişimine müdahale edebilmemizi, istekler ve yanıtların yollanabilmesini sağlar. Scapy'i kullanarak ağ saldırıları yapabilirsiniz. (Örn:MITM) Kendiniz ağ bilginizi pekiştirmek veya test etmek için scapy'i kullanabilirsiniz. NMAP mevcut koddaki gibi araçlar yazmak için kullanabilirsiniz. Yani içinde ağ geçen neredeyse her şeyi de kullanabilirsiniz. Gerisi sizin hayal gücünüze ve yeteneğinize bağlıdır.


Umarım faydalı olur. Bir yanlışımız varsa belirtiniz biz de feyzlenelim. Sürç-ü lisan ettiysek affola hayırlı geceler.
 

Çokgen

Katılımcı Üye
4 Eyl 2023
445
211

Scapy Nedir?

Scapy pythonla yazılmış olan, spesifik paketler oluşturup bunları iletmemizi sağlayan açık kaynak kodlu bir araç/python kütüphanesidir.
1*eL6Iwuc__uB1UpXknQhEug.png

Scapy Nasıl Kurulur?

Kişiye ait scapy'i kurabilmeniz için Python'un kurulu olması gerekmektedir. Python'un 2 veya 3 olması önemli değildir, ancak 2.7 ve 3.3 sürümlerinden biri yada daha güncel olması önemlidir. Ayrıca bileşenler python'u yüklerken yol olarak tanımlamalarınız ürünlerinize zarar vermez. GNU/Linux sistemlerinde python kurulu olarak gelir ve yol olarak tanımlamalı yani doğrudan terminale python yazdığınızda program çalışmaya başlar ayrıca bir yol belirtmenize gerek kalmaz windows'a yüklerken yükleme seçeneklerinden yol olarak tanımlamayı sağlayan tiki işaretlemeyi unutmayınız.
1*yZKejdz627LzWHuIPTly6w.png

Debian/Ubuntu'da Kurulumu:

Kod:
sudo apt-get install scapy

Not: Kali Linux kullanıcıları için belirteyim scapy zaten mevcut da yüklü geliyor bu işlemi yapmanız gerek yok.

Windows'da Kurulum:

Scapy'nin çalışması için Npcap veya Winpcap yazılımlarından biri köklü kurulmalıdır. Eğer Wireshark gibi programlar yüklüyse Windows'a yüklenirken zaten Winpcap'i varsayılan olarak programla beraber kuruyor. Ben böyle bir durumun söz konusu olmadığı kullanıcılar için ayrı ayrı kurulumunu anlatacağım.

1*G9ZfJMk3MqPmxoScrvnZHA.png

Npcap Kurulumu:


Adresinden çalıştırılabilir pencereleri yükleyip çalıştırarak tipik program kurulumu yapar gibi adımları takip ederek kurabilirsiniz.

Winpcap Kurulumu:


Adresinden yine npcap'ın kurulumuyla aynı şekilde kurabilirsiniz.

Not: Açgözlülük içeren fazla mal göz çıkarmaz yaparak, kayıtlı de yüklemeyin. Birbirlerine olumsuz etki yaratır ki zaten yüklerken birinden biri varsa kaldırmanızı söyleyip hatta kendisi kaldırıyor.

Yazılımlarımızı kurduktan sonra gelelim scapy'nin kurulumuna:

Adresinden zip dosyamızı indirip sunabileceğimiz bir yere çıkarıyoruz. Daha sonra komut satırını açıyoruz. Dosyayı çıkardığımız diziye gelip çıkardığımız dizine giriyoruz. “Setup.py” dizisinin geldiğimizde olduğu yer. satıra aşağıdaki kod yazıp çalıştırıyoruz Komutu veriyoruz:



Scapy Nasıl Kullanılır?

Şimdi scapy kullanımından önce konuyu daha iyi görebilmeniz için ağ temelleri hakkında birkaç bilgi vermek istiyorum. Scapy'i doğru bir şekilde kullanabilmeniz için paket başlıklarını bilmenizin gerekli olduğunu biliyor. Ben şimdi burada size tek kaplar, başlıklar, protokolleri anlatamam lakin ödemeleri gereken yerlerden birkaç tanesim. Sürekli tekrarlamayı ve konularımda devam edeceğim gibi kişisel siber güvenlik alanında ilerlemek istediğiniz temellerin sağlam olması gerekmektedir. Üşenip sıkılıp ben doğrudan güvenliğe girecem diye dalamazsınız yoksa bir durmaz anlamaz ezbere iş yaparsınız bu yüzden ağ, web bağlantıları ve her yerde başlarsınız bizim burada verebileceğimiz bilgiler kısıtlı bilgilerdir.

1*47fGQ0y8rrrt-G47SIFlZw.png

IP Başlığı Hk.

Kaynak IP: Kaynağın IP adresi

Hedef IP: Hedef IP adresi

Bayraklar: Paketin bozulmadan iletilebilmesi için gerekirse parçalanıp parçalanmayacağı hk. Bilgi veren kısımdır.

Başlık Sağlama Toplamı: Karşıdaki makinenin paketi bozulmadan alıp almadığını kontrol etmesini sağlayan paketin bilgi kısmı.

TTL(Time to Live): Gönderdiğimiz paketin loop'a(sonsuz döngü) girmesi için ne kadar süre sonra yok olacağı hakkında bilgi veren kısımdır.


1*hrueRCijPxpnfo7KOJOzJA.png

TCP Başlığı Hk.

Sec ve Ack Num: Üçlü el sıkışma sırasında cihazların birbirlerini tanımaları için değerleri değerleri.

Kod Bitleri: Paket çeşidini oluşturan kısımdır.


1*dLpKqjw-FtZaQY-0zz9kKQ.png

ICMP Başlığı Hk.

Tür: Kontrol mesajının tipi

Kod: Kontrol mesajı tipinin alt dalı, daha spesifik bilgi.

DHCP: Dinamik Ana Bilgisayar Yapılandırma Protokolü. Ağda bulunan cihazlara IP, alt ağ maskesi, ağ geçidi gibi verilerin otomatik olarak atanmasını sağlayan protokoldür. IP çakışması vb durumların önlenmesi için çok önemlidir.

Şimdi bu bilgilerimizi koruyarak scapy kullanımına geçebiliriz. öncelikle temel komutlarımızla başlarız.

Help(): Scapy hakkında yardım sağlayan komuttur. Parantez içine yardım almak istediğiniz şeyi yazabilir veya boş çalışma fonksiyonunu çalıştırıp komut satırına yardım almak istediğiniz konuyu yazabilirsiniz. Girip çıkamayan olursa diye çıkmak için “q”ya basın.


1*4hobgr_bRmjv7YZdt-3RXg.png

Ls(): Scapy içinde bulunan hazır protokolleri sizin için listeler.

1*qPHqJRz_si2MV_UtW45E0Q.png

Ls(Protokol): Kullanacağınız protokolün özelliklerini ve varsayılan değerleri gösterir.

1*CC87xIE5T1LeAc_ECivF8w.png

Sendp(): 2.katmandan paket yollamaya yarar.

Send(): 3.katmandan paket yollamaya yarar.

Not: Bu ikisi arasında farklı oldukça önemli programlarınızda kullanırken birini değilde diğerini kullanırsanız “Lan nerede bu hata” diye saçınızı başlatabilirsiniz.

Temel komutlarımızı dosyalarımıza göre şimdi paketlerimizi yapılandırmaya geçebiliriz. Paketlerimizi oluştururken katman katman içeriklerini gireceğiz.

Scapy İle Ağ Paketi Oluşturmak ve Göndermek:

ICMP Paketi:

İp başlığı ve icmp başlığını oluşturmamız gerekiyor. Aşağıdaki kodları sırayla takip edin.
Kod:
ip_basligi=IP(dst=”Hedef ip”, src=”kaynak ip”, ttl=20)[/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(184, 49, 47)][CENTER][COLOR=rgb(184, 49, 47)][CENTER]icmp_basligi=ICMP(type=8, code=0)
icmp_paketi=ip_basligi/icmp_basligi
send(icmp_paketi)


Şimdi paketimiz bulunsun mi bakalım:

1*WgzT5OI53kZYBPbCIuiLsw.png

DHCP Paketi:

IP, udp ve dhcp baslıklarını kullanacağız.
Kod:
ip_basligi=IP(src=”0.0.0.0", dst=”255.255.255.255")[/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(184, 49, 47)][CENTER][COLOR=rgb(184, 49, 47)][CENTER]
udp_basligi=UDP(dport=67, spor=68)

dhcp_basligi=DHCP(seçenekler=[(“kira_süresi”, 70000)])

dhcp_paketi=ip_basligi/udp_basligi/dhcp_basligi

gönder(dhcp_paketi)


Paketimizi kontrol edelim:

1*DMSs6WcteGquCc5scONG3Q.png

DNS Paketi:

IP, UDP ve DNS kullanacağız.
Kod:
ip_basligi=IP(dest=”8.8.8.8")[/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(184, 49, 47)][CENTER][COLOR=rgb(184, 49, 47)][CENTER]udp_basligi=UDP(dport=53)
dns_basligi=DNS(rd=1, qd=DNSQR(qname=”www.thirdarrowsec.com"))
dns_paketi=ip_basligi/udp_basligi/dns_basligi
gönder(dns_paketi)


Kontrol edelim:

1*BeXCNyZT_es1pGwhTDDpMg.png

TCP Paketi:

Kod:
tcp_basligi=TCP(sport=8080, dport=22, flags=”S”)[/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(184, 49, 47)][CENTER][COLOR=rgb(184, 49, 47)][CENTER]ip_basligi=IP(src=”127.0.0.1",dst=”127.0.0.1")
tcp_paketi=ip_basligi/tcp_basligi
send(tcp_paketi)


Kontrol edelim:

1*YF9_G9Jx8wdFiZp7qNz83w.png

NOT: Paketleri oluştururken örneklerde olduğu gibi alt katmandan üst katmana doğru yazmamızı unutmayalım.

Scapy Kodu Nasıl Dönüştürürüz?

Mesela siz Python 2.7 kullanıyorsunuz ama kodunuzu Python 3.x'e çevirmeniz gerekiyor. Bunu nasıl yaparsınız? Anlatacağım bu aracı sadece scapy kodlarınız için değil, başka python betikleriniz için de kullanabilirsiniz. Bunun için 2to3 adında bir python aracı mevcut. Anlatımımda bu araçtan faydalanacağız.

2to3 aracımız genellikle yorumlayıcı olarak python betiğimize ek olarak ancak Araçlar/komut dosyaları python dizinde de bulunmaktadır. Mesela python 2.7 ile yazılmış “scapy_deneme.py” olarak bir betiğimiz olsun. Bu betiği python 3.x bir sürüme dönüştürmek için terminalin kullanımı aşağıdaki gibidir:

Kod:
2 ila 3 $ scapy_deneme.py

Yukarıdaki gibi kullanırsanız Orijinal betiğinize ek olarak başka bir dosya halinde 3.x sürümünde bir python betiği oluşur. Kod Aşağıdaki dizimini kullanırsanız orijinal dosyanızdan bir kopya oluşturarak doğrudan orijinal dosyanız üzerindeki değişiklikleri yedekleyin
Kod:
$ 2to3 -w scapy_deneme.py
.

Scapy Ne İşimize Yarar?

Scapy ağ değişimine müdahale edebilmemizi, istekler ve yanıtların yollanabilmesini sağlar. Scapy'i kullanarak ağ saldırıları yapabilirsiniz. (Örn:MITM) Kendiniz ağ bilginizi pekiştirmek veya test etmek için scapy'i kullanabilirsiniz. NMAP mevcut koddaki gibi araçlar yazmak için kullanabilirsiniz. Yani içinde ağ geçen neredeyse her şeyi de kullanabilirsiniz. Gerisi sizin hayal gücünüze ve yeteneğinize bağlıdır.


Umarım faydalı olur. Bir yanlışımız varsa belirtiniz biz de feyzlenelim. Sürç-ü lisan ettiysek affola hayırlı geceler.
Ellerine sağlık. Çok güzel olmuş.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.