أساسيات ثغرات الفيض ‫‪Buffer Overflow‬‬

السلام عليكم

ماهية ثغرات البوفر اوفر فلو :

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

هي الحصول على النتيجة المطلوبة دون ادنى اهتمام بنسبة الأمان الذي يجب ان يكون متوفر في هذا البرنامج او الأداة الي جانب النتيجة المطلوبة .

فعند برمجة برنامج يقوم بتشغيل ملفات الصوت مثلا اهم ما يتوجه اليه المبرمج ان يعمل هذا المشروع البرمجي وان يقوم هذا البرنامج فعلا بتشغيل الصوتيات دون الاهتمام بالجانب الامني المهم جدا .

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

نقطة مهمة :

ان التعامل مع امثال هذه الثغرات تحتاج لخبرة لا بأس بها في لغات برمجة ومن اهمها لغة التجميع ( اسمبلي ) .

مصطلحات نظرية مهمة :

ماهو البوفرBuffer : البوفر هو المكان الذي يتم فيه تجميع وتخزين البيانات المؤقت

ماهو اوفر فلو ‫‪overflow‬‬ : هو الفيض الذي يحدث بأن تحمل شيئ ما اكثر من ما هو مسموح له . ملئ كاس من الماء اكثر من قدرت استيعابه .

ماهي المسجلات ‫‪Registers‬‬ : سجلات يتم استخدامها لتنفيذ عملية التحكم والسيطرة ويتم استخدامها من قبل البروسيسور .

المؤشر ‫‪EBP‬‬ : هو المؤشر المسؤول عن استداعاء او طلب دالة معينة يتم الضغط عليها الى العودة وتشير الى اعلى المكدس .

نقطة الضغف ‫‪points Vulnerability‬‬ : هو الخلل البرمجي الذي يسمح للمخترق بتنفيذ اشياء ضارة .

المنقح العام ‫‪GDB‬‬ : يتم استخدامه لمتابعة البرامج ومعرفة الملفات الموجودة بداخلها .

الكومة ‫‪Stack‬‬ : تحدث الكومة مع البرامج التي تمنح حجم ذاكرة  محدد  في الاستخدام فعند حدوث الكومة يقوم البرنامج باستخدام ذاكرة اكبر من ما هو مخصص له .
ويستخدم الستيك ايضا في عملية Program Crash . وهية فيض في عملية جلب واستدعاء الدوال .

المساحة Heap : هية المساحة المخصصة للبرنامج .

عنوان العودة ‫‪Returning Address‬‬ : وهو امر يستخدم داخل البرنامج ليتم الرجوع بعد ذلك لنقطة الادخال .

تعتبر هذه مقدمة في الاساسيات وليست كل الأساسيات في ثغرات البوفر اوفر فلو . وهية بداية لسلسة دروس سنتحدث بها عن هذا النوع من الثغرات .

rOckHuntEr

الكاتب: بندر الحارثي

نبذة عن الكاتب

التعليقات:

اترك تعليقاً | عدد التعليقات: (20)

  1. يقول بشار:

    مرحباً بك أخي بندر عضواً كريماً في مجتمع الحماية العربي.

    مشاركة رائعة منك في موضوع سألنا عنه الكثير من الأعضاء.

  2. يقول Hit-Man:

    السلام عليكم
    شكرا لك أخي بندر الحارثي على الدرس
    الكود اللدي تكلمت عليه أخي .وبعدها دكرت أنه الواحد يجب تعلم اسمبلي
    هل هدا يعني أنه أغلب الاكواد مكتوبة بالاسمبلي
    وشكرا

  3. اهلا بك اخي بشار . ان شاء الله سيكون هنالك اتمام لسلسلة واسعة عن هذا النوع من الثغرات .

    وعليكم السلام اخي Hit Man .

    تعتبر الاسمبلي اهم لغة برمجية تساعد في ثغرات الفيض مع العلم ان هنالك اهمية كبيرة للغات برمجية اخرى مثل

    البايثون و C++ و Ruby و CGI وPErL .

    ولكن الخبرة في الأسمبلي مهمة جدا . ولكنها ليست كل شي .

  4. يقول abys:

    مقدمة جيدة لكن فيه بعض الأخطاء
    المؤشر ‫‪EBP‬‬ : هو المؤشر المسؤول عن استداعاء او طلب دالة معينة يتم الضغط عليها الى العودة وتشير الى اعلى المكدس .

    المسجل ESP هو اللي يشير إلى أعلى المكدس أما ebp فهو frame pointer

    عنوان العودة ‫‪Returning Address‬‬ : وهو امر يستخدم داخل البرنامج ليتم الرجوع بعد ذلك لنقطة الادخال .

    عنوان العودة= و هو أمر؟ !!!!!
    العنوان هو عنوان D: وهو عنوان يحفظ في المكدس ليتم العودة إليه بعد الإنتهاء من الدالة التي تكون تشتغل في تلك اللحظة.

  5. اهلا اخي abys .

    كون القيمة القديمة لـ EBP هي الأولى المُدفعة في المكدس وبعدها تنتقل القيمة الجديدة لـ ESP إلى EBP. وتحفظ هذه القيمة الجديدة لـ ESP من قبل EBP وتصبح القاعدة المرجعية للمتغيرات المحلية اللازمة لاسترجاع جزء المكدس ضروري لتابع الاستدعاء.

    تسألني لماذا قلت انها تشير الى اعلى المكدس . ؟

    أن ESP تشير إلى أعلى المكدس فعلا ، فهي تتغير كثيراً أثناء تنفيذ البرنامج وجعله سجل مرجعي متزن أمر متعب جداً، ولهذا السبب يستخدم الـ EBP في هذا الدور.

    عنوان العودة = Rat .

    وهو امر يستخدم داخل البرنامج نفسه للرجوع الى نقطة الأدخال .

    اي استفسارات اخرى نتشرف بذلك .

  6. يقول سالم:

    الله يعطيك العافية اخوي وكثر الله من امثالك

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

    فيارت ما تحرمنا مثل هذة المواضيع ولك جزيل الشكر والتقدير

    واخيراَ ابغى استفسر منك اخوي من ناحية لغات البرمجة التي تفيدني في هذا المجال

    لاني انا الان اتعلم لغة السي فهل لغة السي تفيدني فيها ؟؟؟؟

    وثاني شي انا عندي خبرة كويسة في لغة الاستعلام sql
    فهل تفيدني ايضاَ في هذا المجال

    ولك جزيل الشكر والتقدير

  7. اهم لغات البرمجة التي تفيد في البوفر اوفر

    C و C++ و لغة التجميع اسمبلي

    اسعدني مرورك

  8. يقول سالم:

    كل عام وانتم بخيير

    وينكم ياجماعة الخير ما احد يجاوبني ؟؟؟!!!!

  9. قمت بالرد عليك اخي سالم .

  10. يقول خلاصات:

    إشاعة : عيون مايكروسوفت على شركة Symantec…

    I found your entry interesting thus I’ve added a Trackback to it on my weblog :)…

  11. يقول باسم:

    شكراا اخي على الطرح

    بعض نقاط مهمة اشرت اليها ملاحضها ايضا فالكتاب دة

    http://www.exploit-db.com/download_pdf/13667

  12. يقول ahmed.ihmeid:

    السلام عليكم
    لم أفهم ما هي علاقة الـBufferOverflow بالإختراق؟
    وهل هي تعد ثغرة أمنية لبعض البرامج؟

  13. يقول vip:

    اتمنى ان يتم تغطية مواضيع جديدة مثل تخطي الحمايات dep,aslr
    والاهم من ذلك حماية gcc compiler -fno-stack-protector
    لم اجد طريقة لتخطيها
    بانتضار باقي الدروس

  14. […] و قوتها مما اعطاه شعبية كبيرة في وسط متكشفي الثغرات(Buffer Overflow) و بالذات أن مبرمجي هذا البرنامج قد صنعوه لهذا الغرض […]

  15. يقول AsMaR:

    جميل جداً جداً.. ولكن لو كان الموضوع مختصر أكثر لأصبح اجمل بكثير
    شكراً 🙂

  16. يقول ibrahem2:

    موضوع محترم

أكتب تعليق