من المعروف أن ثغرات Buffer Overflow تعتبر تهديد قوي جداً يصيب الشبكات والأجهزة الموجوده عليها حيث يمكن المخترق من أن يقوم بهجمة كاملة على هذه الشبكة ويقوم بإختراق كل الأجهزة الموجودة فيها مما يؤدي إلى حدوث مشاكل كبيرة لهذه الشبكة سواء كانت شبكة شركة أو حتى شبكة منزلية بسيطة.

تحدثنا في دروس سابقة وبدورة مصغرة عن ثغرات Buffer Overflow , وقمنا بتفصيل بعض الأمور التي تتعلق بهذه الثغرات في هذه الدورة , كما قمنا بشرح كيفية إستغلال هذه الثغرات وأمور مفصلة أخرى تتحدث عن مشروع Metasploit والذي سوف يفيدنا جداً في عملية إستغلال الثغرات البرمجية ومن ضمنها Buffer Overflow وتستطيعون مراجعة الدورة من خلال هذا الرابط.

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

حسناً دعونا في البداية نلقي نظرة على البرنامج المصاب وهو برنامج بسيط يعمل على المنفذ 10000 وهذه صورة البرنامج يعمل على windows 7 :

windows7_program

كما نشاهد البرنامج بإسم server.exe بعد تشغيله يعمل على المنفذ 10000 كما هو موضح بالأمر netstat -an.

وهذه صورة الإستغلال الخاص بنا مكتوب بلغة Python :

exploit_python

 

كما نشاهد الإستغلال يقوم بإنشاء إتصال مع الهدف على البورت 10000 ومن ثم يقوم بإرسال البيانات كالتالي :

268 بايت : التي تسبب الخلل في البرنامج.

4 بايت : للتحكم بمسجل EIP والتعين للشل كود عبر تعليمة call esp الموجودة بملف kernel32.dll.

25 بايت : Nop Sled.

وأخيراً الشل كود الخاص بنا والذي يقوم بتشغيل calc.exe على جهاز الهدف.

أنصحكم بمشاهدة دورة Buffer Overflow المجانية التي تم الإشاره إليها في بداية المقال والتي شرحنا بها جميع هذه الأمور المتعلقة بإكتشاف الثغرة 😀

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

حسناً بعد تشغيل ملف الإستغلال من خلال الأمر python exploit.py كانت النتيجة تشغيل calc.exe كما هو موضح بالصورة التالية : calc_done

ولكن لحظة ! ماذا يفيدنا تشغيل calc.exe على جهاز الهدف !!! بالطبع لا شيء ! لا بد من إعادة إنتاج Payload جديد وإضافته للثغرة ولكن هذه العملية غير فعالة وعملية في معظم الحالات لذلك دعونا نقوم بإستخدامها داخل مشروع Metasploit لكي نقوم بتوفير حل تلقائي لهذه المشكلة من خلال توفير Payload كمدخل فقط للبرنامج عبر الأمر set payload payload_type وسوف يقوم Metasploit بإضافة Payload بشكل تلقائي وإرساله للهدف عبر الإتصال 😀

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

هذه صورة النموذج والذي يحمل الإسم sample.rb وتستطيعون الحصول عليه عبر المسار :

usr/share/doc/metasploit-framework/samples/modules/exploits/sample.rb/

فور إستعراض الملف من خلال nano سوف نلاحظ التالي :

sample.rb

 

هذا عبارة عن نموذج بسيط لسكربت مبرمج بلغة Ruby يعتمد على بعض المكاتب الخاصة بميتاسبلويت ويقوم بإعداد إتصال Tcp لهدف معين يتم تحديده مسبقاً من خلال Metasploit وإرسال مكونات الإستغلال كما ذكرناها مسبقاً إلى الهدف.

سوف نقوم بإضافة أمور مهمة فقط وذكر أمور أخرى بشكل عام , وتنقسم هذه الأمور إلى :

  1. الأمور الأساسية بالإستغلال وهي :
    1- حجم Bytes الذي يؤدي إلى حلول الخطأ البرمجي “الفيض”.
    2- عنوان العودة الخاص بالتحكم بمسجل EIP.
    3- حجم الشل كود.
  2. أمور ثانوية مثل :
    1- عنوان الثغرة.
    2- إسم مكتشف الثغرة.
    3- تاريخ إضافة الثغرة.
    4- وصف عن الثغرة.

سوف نقوم فقط بشرح الجزء المهم المتعلق بالأمور الأساسية التي تم ذكرها , دعونا نبدأ بالتعديل الأول ونقوم بتعديل الأسم وتغيره إلى iSecur1ty-Server-Exploit.

وبعدها سوف نقوم بتغير Payload Space – Shellcode Space إلى 500 بايت كما تم الذكر بالإستغلال , وأخيراً عنوان العودة الخاص ب call esp لملف kernel32.dll ليصبح على هذا الشكل :

ed_sample

 

طبعاً يظهر بالصورة إسم مكتشف الثغرة هو skape تستطيعون تغيره لإسمكم أو إسم الجهة المكتشفة للثغرة لأنني لم أقم بتغيره 😀

الأن سوف نقوم بالنزول للأسفل قليلاً وتعديل الجزئية المهمة وهي جزئية junk data size – crash size وسوف نقوم بالتعديل عليها كما يلي :

junk_size

 

كما ترون قمت بإضافة 268 بايت لعمل الكراش ومن ثم قمت بإضافة سطر يقوم بعمل 25 nops , بعد هذه التعديلات نستطيع حفظ الملف ونقله إلى مجلد الإستغلالات الخاص ب metasploit والموجود بالمسار:

opt/metasploit/apps/pro/msf3/modules/exploits/windows/

وسوف نقوم بنقله إلى مجلد misc لأنها إستغلال متفرق ولا يهم مكانه بالضبط إلى أنه مهم لكي نقوم بفصل الثغرات وتصنيفها حسب الخدمات وأنا قمت بنقله إلى nntp للتوضيح ليس إلا 🙂

الأن سوف نقوم بتشغيل Metasploit من خلال msfconsole ومن ثم كتابة search iSecur1ty للبحث عن الموديولات التي تحمل الإسم iSecur1ty وسوف تكون النتيجة كالتالي :

exploit_isec

 

وبعد إستخدام الموديول وإضافة المعلومات الخاصة بنا كالبايلود والهوست والبورتات المستخدمة كانت النتيجة كالتالي :

meterpreter_done

 

كما نشاهد تم إختراق الجهاز من خلال الثغرة التي تمت إضافتها بكل سهولة 🙂

سبب إعادة الأمر exploit مرتين هو أنني لم أقم بتشغيل البرنامج المصاب بالثغرة في المرة الاولى لأني أطفئته بشكل خاطئ على جهازالهدف 😀

أتمنى أن يكون المقال أعجبكم وبإذن الله سوف يكون هنالك المزيد من الشروحات حول ثغرات Buffer overflow.