• أهلا وسهلاً بكم في :: IQ-TeaM FORUM :: .
    إذا كانت هذه الزيارة الأولى أو لديك الرغبة بالانضمام لأعضاء شبكة عراق تيم فيجب الاطلاع على خصوصية الشبكه فربما بقائك زائر افضل لك من الانضمام بحيث أن قوانين شبكة عراق تيم لا تتناسب مع اهتماماتك .
    • للأطلاع على الخصوصية وسياسة الاستخدام - التفاصيل
    • بعد الاطلاع على سياسة الموقع وقوانين شبكة عراق تيم يمكنك التسجيل معنا - تسجيل عضو جديد
  • بادئ الموضوع .:: RSS ::.
  • تاريخ البدء
الحالة
مغلق و غير مفتوح للمزيد من الردود.
غير متصل

.:: RSS ::.

عضوية آلية

إنضم
9 سبتمبر 2011
المشاركات
13,987
الإعجابات
0
النقاط
250
العمر
30
الإقامة
IQ-T34M
الإجابات المقدمة: 0
#1
Smashing The Stack Linux Style​

Required knowledge :

1- معرفة بمفهوم Buffer Overflows .

2- فهم Basic Assembly.

3- بعض المعلومات عن منقح GDB لن تضر :) .

Warming Up :
أن مبدأ كتابة استغلال لثغرات Buffer Overflows على منصات اللينكس مشابه لمثيلاته على منصة ويندوز مع وجود اختلافات بسيطة ...
فعلى المنصتين يحدث عندما يحاول برنامج كتابة بيانات اكبر من سعة المخزن (Buffer) مما يؤدي إلى فيضان البيانات الأضافية إلى المخازن المجاورة
حيث تكتب البيانات الأضافية فوق البيانات التي تحويها هذه المخازن .
Setting Things Up :
قبل أن نبدأ يجب علينا فهم عدة نقاط ...
Linux ASLR Address Space Layout Randomization :
طبعا معظمكم يعرف عنه وهو يقوم بتغير العناوين بشكل عشوائي وبشكل دوري ...في هذا الدرس بذات نحن لن يزعجنا ASLR لأننا سوف نتبع طريقة نتخطى من خلالها هذه الحماية ولكن إذا أردت قراءة المزيد عنه
الروابط تضهر للاعضاء فقط سجل دخولك أو قم بالتسجيل الآن.

إذا أردت إيقافه نفذ الأمر التالي :
كود:
echo 0 >/proc/sys/kernel/randomize_va_space
Stack-smashing Protection :
يقوم المترجم (GCC) بشكل افتراضي عند عمل Compile لملف معين بإضافة حماية تسمى Stack-smashing Protection وهذه الحماية تكشف الـStack Buffer Overflows قبل تنفيذ إي كود وهذا يتم بطريقة التالية :يتم وضع أعداد عشوائية قبل The Stack return pointer وبحالة Buffer Overflows يتم الكتابة بطريقة (From Low To High) ولهذا للكتابة على return pointer سوف يتم الكتابة على الإعداد العشوائية الآن عندما يتم التحقق من هذه الإعداد يلاحظ انه تم تغييرها وبتالي إيقاف البرنامج قبل تنفيذ باقي الكود .

وسوف اقتبس من أستاذي انتي تراست : "تتمثل الفكرة وراء حماية المكدس هو وضع قيمة 4 بايت إلى المكدس بعد الــ Buffer وقبل RET ADDRESS في أنظمة UNIX وغالبا ما تسمى هذه قيمة CANARY ، وعلى أنظمة الــ Windows تسمى Security Cookies وتتمثل كالأتي إذا كانت قيمة الــ Canary ليست هي نفسها عند اكتمال وظيفة معينه كما هو الحال عندما تم دفعها إلى المكدس، يتم عمل Terminated حيث يصعب علي المخترق تحديد إذا كان هناك خطأ في برنامج معين أم لا "

إذا أردت قراءة المزيد عن هذا الموضوع
الروابط تضهر للاعضاء فقط سجل دخولك أو قم بالتسجيل الآن.

لإيقاف هذه الحماية عند عمل Compile لبرنامجنا المصاب .....
كود:
gcc vulnapp.c -o vulnapp -fno-stack-protector
Exploitation Stack Overflow :
تنقسم إلى عدة مراحل سوف نتكلم عنها بإيجاز ...لأنه قد تم شرحها مسبقا ويفترض بالقارئ أن يعرف مبادئ الاستغلال ...
POC-Crash :
طبعا في هذه المرحلة يقوم المهاجم بإرسال Evil Buffer لتحقق من إمكانية إعادة حصول لـCrash وتأكد من أمكانية الكتابة على EIP
Offset - Payload Location :
معظمكم يعرف كيف تتم هذه العملية ,كما انه تم توضيحها في الفيديو .....
Landing the Shell :
يوجد عدة طرق لـredirect the execution flow ربما أسهلها هي القفز مباشرة إلى عنوان الشيل كود ...حيث نقوم بمعرفة عنوان الشيل في ذاكرة ثم نعتمده كعنوان للعودة ...ولكن من مشاكل هذه الطريقة هي الـ ASLR الذي سوف يغير العناوين ...ثم لدينا مشكلة إن العناوين أصلا غير ثابتة ....لهذا كما سوف تشاهدون في Presentation في نهاية الموضوع سوف نتبع طريقة بسيطة للغاية تسمى JMP To Register ...حيث أننا سوف نلاحظ إن EAX يشير لبداية الـEvil Buffer وبتالي يكفينا JMP/CALL EAX لتشغيل الـShellcode الخاص بنا ...ولكي نجدها سوف نبحث في البرنامج المصاب نستطيع استخدام objdump أو msfelfscan
وبتالي سوف نحصل على عنوان JMP/CALL EAX سوف يكون ثابت ولن يتأثر بـASLR كما إن الاستغلال أصبح universal الآن ...

أترككم مع الفيديو ...

كود:
الروابط تضهر للاعضاء فقط سجل دخولك أو قم بالتسجيل الآن.
 


الحالة
مغلق و غير مفتوح للمزيد من الردود.
الوسوم - Tag الوسوم - Tag
الوسوم linux smashing stack style
Smashing The Stack Linux Style