الوسوم:
حالة الموضوع:
مغلق
  1. .:: RSS ::.

    .:: RSS ::. عضوية آلية

    الأنتساب:
    ‏9 سبتمبر 2011
    المشاركات:
    14,005
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    36
    الإقامة:
    IQ-T34M
    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 الآن ...

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

    كود:
    Smashing The Stack Linux Style.avi
     
حالة الموضوع:
مغلق

مشاركة هذه الصفحة