• بواسطة x32x01 ||
الشرح المرادي عن استغلال ثغرات ال الـBuffer Overflow
والشرح يخص اخواتنا المبرمجين ويخصنا احنا كمان في السيبر سيكورتي
فنجان القهوة بتاعك و ركز معايا
المرادى مختلفه عن كل مرة
ان شاء الله النهارده هنعمل شرح تفصيلي بانواع الهجمات الي ممكن يستخدمها المخترق لاستغلال ثغرة الـBuffer Overflow.
ونشوف ثغرة زي دى اد ايه ممكن تكون خطيرة وهل صعبة الاستغلال لو كنت عندك خبرة محدودة والا لا

نبدا بسم الله
‏ايه السبب الي يخليني اتكلم عن الـBuffer Overflow ؟
الاجابة عشان اصلح بعض الافكار الغلط, بعض الناس تفكيرها ان الBuffer overflow تبتقتصر على مجرد تغيير قيمة في الذاكرة وبس
النهارده بأذن الله هنصحح الافكار دي

بس قبل ما نشرح اي هو الـBuffer overflow؟؟؟
طبعا في انواع كتير ممكن تعدي عليك زي مثلا heap overflow وهو لسه اصعب كـ استغلال بس دلوقتي هنتكلم بس عن الـ stack buffer overflow وازاي بيحصل الشئ ده ؟
طبعا الثغرة دي بتنتج نتيجة خطأ عادى جدا من المبرمج ... هوضح اكتر يعني لما الموقع ياخذ من المستخدم مدخلات من غير ما يتحقق من طولها ومن غير ميتأكد انها ممكن تتجاوز او تتعدي سعة البفر الي هيتم استخدامه لتخزين المدخلات دي

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

البفر اوفر فلو هو على سبيل المثال عندنا علي شكل متغيرين
Code:
int age = 20
char name[16];
زي ما احنا شايفين عندنا المتغير الي واخد الاسم سعته بس 16 بايت
لو اعطيناه مدخلات اكتر مش هيقدر يخزنها فيروح للعنوان الي بعده في الميموري على طول ويحذف اللي محتاجه من محتويات العنوان ده ويخزن فيه اللى زايد ... مش فاهم صح؟
طب بص ركز معايا

ف المثال اللى فوق لو اعطينا الـ 17 حرف للاسم هيخزن 16 بس والحرف الزايد بيتخزن على طول في المتغير age
والسبب هو ان الستاك هيعمل تخزين للبيانات بشكل تكديسي بمعنى اول حاجه تدخل الستاك بتكون اخر حاجه بتخرج منه.

(فين بردوا استغلال الثغرة والمشكلة فى كل اللى قولته ده
هقولك استنى عليا وكمل قراية ومتستعجلش)

لو لاحظنا ان اللي قولنه فوق ده خطير لو كان عندنا مثلا بدل المتغير age متغير اسمه باسورد واحنا مانعرفش قيمته هنكون قادرين على اننا نعمل اوفر فلو للبفر ونكمل لحد مانوصل للمتغير المطلوب ونحط جواه قيمة جديدة
بس هل ده كل حاجه ؟
اكيد لا
ثغرة زي دي خطيرة جدا جدا يعني على سبيل المثال عندنا تطبيق بسيط على سيرفر مهم وحصلنا فيه الثغرة دي ايه اللي ممكن نعمله ؟

دلوقتي هقولك السيناريوهات وحدة وحدة
اول سيناريو ان المخترق هيقوم بتغيير قيم وعنواين مهمة في البرنامج عشان يخليه يعمل وظايف او مهام المفروض ميعملهاش.

تاني سيناريو هو انه ممكن يستعمل شيل كود ودي كارثه
بس في الاول علشان ممكن الناس متكونش عارفه ...اي هو الشيل كود ده ؟
الشيل كود بيكون عبارة عن كود بلغة assembly بيتم تحوليه لـ hex bytes وترتيبه بنظام little-endian بحيث ان يوم مايتم ارساله للستاك يخلي البرنامج يعمل return للكود الي تم ارساله للستاك بعدها هيتم تنفيذه وده بينتج عن ايه؟
ببساطة اي حاجه عاوزها المخترق

بس في معظم الاحيان بيكون الـshellcode بسيط وهدفه هو اعطاء المخترق تحكم على السيرفر بس, لكن بحكم انك تقدر تحقن كود اسيمبلي فممكن يكون الشيل كود اي حاجه انت عاوزها
في فبعض الحالات ممكن يكون في حمايات ممكن تمنعك من انك تحقن كود فى الستاك وتمنع من تنفيذه

هنا ممكن اعمل ايه؟
في هجمة معروفة بتتم في الـreturn to libc
هنشرحها بسرعه كظه بتفاصيلها
زي ما احنا عارفين ان في برامج كتير بتستعمل كمكاتب زي libc عشان يكون البرنامج اخف واسرع وفيه دوال جاهزه تقدر تستعملها ببساطة وطبعا دى حاجة كويسه جدا بس بردوا مش كويسه لو كان البرنامج بتاعك مصاب بالثغرة !

لان لو النظام مفهوش مثلا حماية الـ ASLR وهي حماية بتخلي العناوين في الذاكرة تتغير بشكل مستمر بدون توقف وده بيخلي عملية استغلال الثغرة شبه مستحيلة وصعبة جدا وتجبرك تعمل bypass للـ ASLR ودى عملية صعبة جدا ومعقدة

لكن لو مكنش في حماية كل اللى بيعمله المخترق هو انه بيشوف اصدار الـ libc الي البرنامج بيستعملها ويطلع عناوين الـfunctions اللي محتاجها واللى بيعمله هو انه بيستغل الثغرة ويستدعي الدوال دى عشان تعمل اي حاجه هو عاوزها في النظام

وطبعا اكيد فى حالة زي دي المخترق بيستعمل دوال زى system وماشابه عشان زي ماقلنا يقدر ينفذ اوامر على سيرفر الهدف وبردوا ياخد shell ويتحكم على السيرفر
بس كده خلاص خلصنا

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

اتمنى اني اكون فدتكم ولو بشي بسيط ولو عندكم اضافة حابين تضيفوها او سؤال انا تحت امركم وشكرا ليكم على القراءة
 

المشاركات المتشابهة

الردود
0
المشاهدات
6
الردود
0
المشاهدات
8
الردود
0
المشاهدات
9
الردود
0
المشاهدات
19
الردود
0
المشاهدات
10
الوسوم : الوسوم
buffer overflow أستغلال الثغرات
عودة
أعلى