في الفترات الأخيرة تكلمنا عن العديد والعديد من الأمور التي يُمكن أن نقوم ببرمجتها بلغة Python والتي بالطبع تتعلق في مجال أمن المعلومات وإختبار الإختراق بشكل مُباشر ، حيث أننا نؤمن بضرورة قيام مُختبر الإختراق ببرمجة الأدوات الخاصة به والتي يستخدمها في عمليات إختبار الإختراق المُختلفة ، حيث بالطبع تساعده على تأكيد فهمه للعملية التي يقوم بها ، وتعطيه خيارات أكبر في عملية التعديل عليها وإضافة خواص مُساعدة له في هذه العملية أو الوظيفة التي يقوم بها بشكل أساسي في إختبار الإختراق مهما إختلفت طبيعتها.

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

Wireless-Jamming-Social

في البداية دعونا نبدأ بفهم ألية العمل الرئيسية  لفكرة التشويش وكيف نستطيع فصل الأجهزة الموجوده حولنا بكل سهولة ، كما نعلم أنه عندما نُريد فصل الإتصال الخاص بنا نقوم بإرسال طلب للراوتر نُخبره بأننا نُريد إنهاء الإتصال ، هُنا سوف نقوم بعمل إنتحال MAC Address للجهاز المُتصل بالشبكة والذي نُريد أن نقوم بالتشويش عليه ، حيث سوف نُرسل Deauthentication packet مُزيفة من الجهاز الخاص بنا تحمل عنوان MAC Address الخاص بالجهاز الذي سوف نقوم بالتشويش عليه ، وعنوان MAC Address للراوتر الذي سوف يستقبل هذا الطلب.

مبدئياً قُمت برفع السكربت على حساب Github الخاص ب iSecur1ty ، وهذه الصورة تُوضح الكود :

Jammer-code

سوف أقوم بتوضيح فكرة السكربت سطر بسطر ، ولكن قبل ذلك نُريد أن أقوم بتوضيح بسيط للعملية لكي تُصبح عملية البرمجة أكثر سهولة في.

النظرية : 

أولاً سوف نحتاج لجمع جميع الشبكات بشكل أوتوماتيكي لغرض التعرف عليها ، بعد ذلك سوف نقوم بجمع عناوين Bssid الخاصة بجميع الشبكات ووضعها على حدى لأغراض التواصل معها ، لأنهُ كما ذكرنا نحتاج عنوان MAC Address الخاص بالشبكة لكي نقوم بإرسال الحُزمة لها ، بعد ذلك سوف نحتاج لضبط كارد الوايرليس الخاص بنا على Monitor Mode ، بعدها سوف نقوم بتجهيز الحُزمة حيث سوف نقوم بإستخدام Scapy في هذه العملية.

قُمت بالإستعانة بكود جاهز يقوم بإرسال الحُزمة من خلال Scapy ، وأنصحكم بدراستها بشكل مُعمق أكثر في حال كُنتم تريدون معرفة المزيد حولها

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

النظرية لغاية الأن مُمتازة ، دعونا نقوم بعمل Implementation لهذه النظرية وتنفيذها كما بالكود المُسبق.

شرح السكربت : 

لن أقوم بشرح أساسيات وسوف أفترض وجود أساسيات اللغة لديكم ، وتستطيعون مُراجعة دورة إستخدام Python في إختبار الإختراق.

في بداية السكربت من السطر 9 ولغاية السطر 12 نقوم بإستدعاء المكتبات التي سوف نحتاجها وهي :

  • Scapy : لإعداد الحُزمة وإرسالها.
  • wifi : لإظهار جميع الشبكات.
  • time : لضبط أمور التوقيت.
  • wireless : سوف نحتاجها في عملية كشف interfaces الموجوده بالجهاز.

بالسطر 14 و 15 نقوم بمعرفة  interface الرئيسي حيث سوف نقوم بإستخدامه في عملية جمع المعلومات الخاصة بالشبكات حولنا.

السطر 17 نقوم بإستخدام Cell.all Method لكي نقوم بجمع جميع الشبكات المُحيطة بنا وتخزينها على شكل List لكي يتم التعامل مع كُل شبكة لاحقاً بالأسطر التي تليه.

السطر 19 نقوم بطباعة الجُملة كما نرى ، والسطر 20 نقوم بعمل List إسمها bssid سوف نقوم بوضع جميع عناوين bssid الخاصة بِكُل شبكة ، السطر 21 نقوم بتأخير تنفيذ السطر التالي لمُدة ثانيتين من خلال time.sleep من السطر 22 لغاية السطر 29 نقوم بتمرير جميع الشبكات التي وجدناها بالسطر 17 والتعامل مع كُل شبكة على حدى ، حيث نطبع عنوان ssid وعنوان bssid والقناة وكذلك قوة وجودة الإتصال مع الشبكة ، وبالسطر 28 نقوم بعمل append على bssid list حيث نقوم بإضافة عنوان bssid الخاص بالشبكة داخلها.

الأن أصبح لدينا List كاملة بجميع عناوين bssid الخاصة بالشبكات ، حيث سوف نقوم بإستخدامها للتوصل بالشبكة وإرسال حُزمة Deauthentication  لها.

بعد ذلك بالسطر 33 قُمنا بتعريف Function قُمنا بتسميتها بـ Jam حيثُ تأخُذ المُتغير address والذي بطبيعة الحال سوف يكون هو عنوان bssid الذي جمعناه ووضعناه داخل bssid List ، السطر 34 هُنا نقوم بتعريف كارد الوايرليس أو “interface” الذي كما ذكرنا يجب أن يكون مُفعل بوضعية Monitor Mode وفي حالتنا هو mon1 ، بعد ذلك قُمنا بتعريف bssid على أنه المُتغير الذي تأخذه الدالة Jam ، ويليه المُتغير Client حيث هو عنوان Mac Address الخاص بالهدف ، ونستطيع إستخدام “FF:FF:FF:FF:FF:F” لعمل Broadcast كما ذكرنا مُسبقاً.

في السطر 37 قُمنا بتعريف المُتغير count المسؤول عن عدد الحُزم التي سوف يتم إرسالها للشبكة الواحده ، حيث انني حددتها ب 3 حُزم فقط ، وبالسطر 38 قُمنا بضبط Scapy verbose بالقيمة 0 لكي لا يتم عرض أي معلومات من قبل Scapy على الشاشة.

في السطر 39 هُنا نقوم بتجهيز المُتغيرpacket  بالحُزمة وضبطها وإعدادها بشكل عام لكي تقوم بإرسال Deauthentication packet من وإلى العناوين التي تكلمنا عنها مُسبقاً وأنصحكم بالإطلاع على Scapy أكثر للتعرف على العديد من الأمور المُمتعة حول هذا الموضوع ومواضيع مُختلفة في التعامل مع الشبكات من خلال Scapy.

من السطر 40 وإلى السطر 42 نقوم بعمل حلقة Loop بعدد الشبكات التي تم إكتشافها ومن ثم نقوم بإستخدام sendp في السطر 41 لإرسال packet التي تم تعريفها مُسبقاً من خلال المُتغير packet ، حيث سوف تُرسل الحُزمة بناءاً على ما تم شرحه في الأعلى ، والسطر 42 يقوم بطباعة المعلومات التي تم الإرسال إليها.

وأخيراً من السطر 43 إلى السطر 46 نقوم بتشغيل while loop مُستمرة ، ونقوم بسحب جميع عناوين Bssid الخاصة بالشبكات من خلال تعريف مُتغير item وسحبها بإستخدام for loop من Bssid List وفي السطر الاخير 46 نقوم بإستدعاء الدالة Jam وتمرير المُتغير item كعنوان bssid وتنفيذ ما سبق عليه.

سكربت بسيط ولا يوجد به أي تعقيدات ، الأن سوف نقوم بتشغيله ولنرى ماذا سوف يحصل بالضبط فور تشغيله :

jammer-first-network

كما نرى بهذه الصورة فور تشغيل البرنامج قام بإظهار جميع الشبكات الموجوده حولي.

قمت بإخفاء باقي العناوين لأغراض تتعلق بالخصوصية 🙂

والصورة التالية توضح كذلك إرسال الحُزم بشكل صحيح إلى الهدف :

jammer-done

وكما نرى هذه نتيجة من أحد الاجهزة المُتصلة بالشبكة بعد التشويش عليها حيث نرى أنه تم فصلها من الشبكة :

wifi-deauth-done

حيث أنني كُنت مُتصل بشبكة Orange وكما نرى لقد تم قطع الإتصال ، وبهذا قد نكون أتممنا الهجمة بالشكل المطلوب ، يُمكنكم بالطبع التعديل على السكربت ليتوافق مع إحتياجاتكم ، مثل إدخال العناوين يدوياً ، أو تحديد بعض القوانين والقواعد عليها ، حيث ان الأداة قابلة للتعديل وفق المنهج الذي تكلمنا عنه مُسبقاً.

هذا ما عندي فإن أحسنت فمن الله، وإن أسأت أو أخطأت فمن نفسي والشيطان و أتمنى أن يكون هذا المقال قد نال إعجابكم وبإذن الله نلتقي في مقالات أخرى.