Metasploit to Max

الموضوع في 'الـقـسـم الـعـام' بواسطة .:: RSS ::., بتاريخ ‏27 سبتمبر 2012.

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

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

    الأنتساب:
    ‏9 سبتمبر 2011
    المشاركات:
    14,005
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    36
    الإقامة:
    IQ-T34M
    Metasploit To Max

    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته


    متطلبات الشرح هي كالتالي :

    معرفه تامة في الــ
    Basic Assembly
    معرفه تامة في الــ Shellcoding

    معرفه تامة في الــ Basic Ruby هنا ننصح بدراسة الــ Development Guide الخاص بمطورين
    الــ Metasploit




    Basic Stack Overflow شرحت في عده مراحل
    Heap Exploitation - Chunk - Got Table هذه شرحت ضمن مراحل عديده
    deadbeef ايضا تشرح في وقت لاحقا علما ان الموضوع التالي هو توضيحي لكتابة ثغرات الــ Metasploit ضمن هدف تطوير الثغرات الامنية في NINJA-SEC Ghost Machine والاغلبية العظمي منكم وصل لقسم الــ Buffer في انظمة Linux لكن تبقي العملية مشابهه لما سنذكره الان .


    تذكير :


    Structured Exception Handlingهي اسلوب متبع في انظمة ويندوز ويقوم بالسماح للبرمجيات بمعالجه الاخطاء الناتجه عن الاخطاء البرمجية / الهاردوير بتوفير قائمة من العنوانين تسمي exception handling routines مما يسمح للبرمجيات بعمل PASS Control After Execption .

    الان لنبدأ
    عملية كتابة الثغرة بأستخدام الادوات التي تم توفيرها ضمن الـــ LAB Machine..


    اولا نقوم بتشغيل النظام من خيار الــ BOOT - Disable DEP مؤقتا لتوصيل هدف الموضوع النهائي .



    [​IMG]


    بعد تشغيل النظام ننطلق الي النقطة التالية :

    - امكانية تقيح البرنامج في اكثر من Tools مثل Visual C++ لكن سنستخدم الــ Immunity بما ان اغلبكم اصبح متقدما في استخدامه ولكن سنقوم بأستخدامه في نقاط اخري .

    تذكير :

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


    - Refresher :

    نحن نذكر الصورة التالية من موديل 11 او 12 حقيقه لا اذكر ..


    [​IMG]

    [​IMG]

    للمزيد راجع الــ Lab Guide ..

    اولا منذ فترة قام احد الاشخاص بطرح Crash لــبرنامج Golden Alwafi علما كتبنا استغلال ليس كاملا لنكتب الاستغلال كاملا علما سنطبق علي برنامجين لتوضيح الفكرة والاثنين SEH Chain Exploit احدهم سيكون علي شكل Fileformat والاخر Protocol TCP لعملية التوضيح مع العلم ان هناك اكثر من اختبار خلال الشرح.


    نقوم بتشغيل المنقح من قائمة Reverse Engineering



    [​IMG]

    من قائمة Open نفتح البرنامج لاحظ عند عمل Run للبرنامج يقوم بأيقاف الــ Execution لعملية Pass the Exeption اضغط علي Shift + f7 + f8 + f9 لملاحظة الــ Stat Bar اشار الي ان البرنامج في حالة Run .


    الــ Skeleton Exploit هي كالتالي وتعتبر مجرد Template تقوم باحداث ملف يحتوي علي Data Dump لاحداث الــ Crash في البرنامج :



    نقوم بنسخ الــ Skeleton Exploit الي مسارها التالي : Exploits - Windows - Fileformat

    لاحظ الان التالي في بداية الثغرة :

    كود PHP:
    <span style="color: #000000"> class Metasploit3 <span style="color: #007700"><span style="color: #000000"> class Metasploit3 <span style="color: #007700"> buffer = Rex::Text.pattern_create(39100)



    نوعيه الداتا هي Text علي شكل Random Data تحتوي علي 39000

    كود PHP:
    [ false, 'The file name.', 'ninja.waf']),]



    [​IMG]

    والخيار الذي يسبقه هو Registerd Option تم تخصيصها كثوابت ضمن الـ Exploit مع امكانية تغيرها نبقي هذا الخيار لعدم تخصيصه كل مرة نقوم بعمل Lunche لنقم الان بأستخراج ملف الــ DUMP لاحداث كراش ضمن البرنامج
    :


    [​IMG]

    [​IMG]

    الان لدينا ملف الكراش كما نلاحظ من المثال التالي عدد الــ DUMP 39100 كما هو مخصص ضمن الــ Skeleton Exploit ونشير لاحقا الي ما يحتويه لنقوم بأحداث الكراش ضمن البرنامج لنشاهد النتائج التالية .



    [​IMG]


    ملاحظات مهمه :

    - بعد الحسابات نلاحظ اننا نستطيع التحكم في SEH Chain بعد 352
    -نحتاج للبحث عن SEH Compatible Overwrite Addresses - Safeseh
    -نحتاج للتدقيق في حال وجود Bad Char وبالطبيعه قمت باضافة الــ Bad Char المتعارفة سابقا
    "\x00\x0a\x0d"
    -نحتاج الي ايجاد تقنية لتخطي SEH Chain وما استخدمته هو JMP Back كما سنلاحظ لاحقا



    قبل البدء بكتابه الثغرة الان لنتأكد مما ذكر سابقا في (ملاحظات مهمه) اولا لنتأكد من عملية SEH Overwrite Attack بأستخدام الكراش الذي تم طرحه سابقا من قبل مكتشف الثغرة :

    * استخراج Data Dump باستخدام Pattern_create بعدد 352
    * الصورة التالية توضح ما نحاول ان نفعله :


    [​IMG]


    لنقم الان بأستخراج الــ Data Dump لنشاهد هل ما ذكر صحيح ( نقوم بعمل Restart للمنقح واعاده تشغيل البرنامج ) نفتح ملف الــ Crash الجديد المستخدم من الثغرة المنشورة سابقا .


    [​IMG]


    EBX تشير الي 352 Byte وكما نلاحظ الان الــ pointer to next SEH تشير الي 4 A كما قمنا بتخصيصها سابقا ضمن الــ Crash File والــ SEH overwrite بــ B 4 كما ذكرنا ما نلاحظه لاحقا ان الــ Execution توقف لغاية ما وصل الي CC حيث انها Breakpoint في لغة الــ ASM وهذا تماما ما نريد ان نحققه ضمن عملية التطوير .. الان نحن نعلم تمام ان عملية الــ OVERWRITE ATTACK تمت بكل نجاح كيف يصبح شكل الــ Exploit النهائي !


    اولا البحث عن SEH Compatible Overwrite Addresses هناك طريقة POP r32 POP r32 RETN بعملية البحث عن Sequence of command بعد عملية البحث عن Executable Module .

    لكن لن نستخدم هذه الطريقة لاسباب سأتركها لكم لاكتشافها (علما انتظر اجابات حول الموضوع) وهذا يعتبر بمثابة الــ HOME WORK لكم .. قمت باختيار العنوان التالي :

    كود PHP:
    'Ret' => 0x00484f5c, # call dword ptr ss:[ebp-0c]


    ضمن قائمة التارجت نظيف العنوان التالي كـــ Return Address علما ستقوم بأضافة عنوان اخر مع شرح لماذا قمت بأستخدامه !

    حتي نقوم الان بعملية كتابة الــ Exploit كاملا نعلم ان تم التحكم في SEH بعد 352 اذا الــ Offset هي 352 ليصبح الــ Exploit كالتالي :

    [​IMG]


    نعود الان الي موديل 12 و 13 لنعلم لماذا سأستخدم التقنية التالية :

    JMP Back - JMP SHORT - JMP PAYLOAD - JMP BACK TO JMP

    هذه التقنية هي المستخدمه ضمن الــ Exploit الخاص بنا لعملية تحقيق OVEWRITE SEH دون احداث اي Crash في البرنامج عند تنفيذ الــ Exploit .

    نقوم الان بتحديد الــ Exploit Techniques ضمن خانه Def_Exploit لتصبح هي التالي كالصورة النهائية :


    [​IMG]


    بعد ادخال التغيرات لنعد تسمية الملف الي Golden_seh ومن الــ Console نقوم بتطبيق الامر التالي reload_all لتحميل الادخلات الجديدة علي الثغرة
    نقوم الان بعمل use exploit/windows/fileformat/Golden_seh ونقوم باستخراج ملف الــ Crash مرة اخري ..بتطبيق امر exploit

    [​IMG]


    ريستات للمنقح مرة اخري .. مع اعادة تشغيل البرنامج داخل المنقح بعد عمليه Pass The Exeption بأستخدام shift + f7 + f8 + f9 والتاكد من ان البرنامج يعمل نقوم بفتح ملف الــ Exploit المستخرج بأسم ninja.waf


    [​IMG]

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




    [​IMG]


    قم بتعديل الــ Skeleton Exploit الخاصه بك واعاده السناريو من البداية مع ملاحظة نقطة مهمه جدا وهي تفسير التقنية المستخدمه ضمن الاستغلال مع اصلاح الخطأ التي تم توفيرها داخل الــ Skeleton Exploit








    المصدر: شبكة عراق تيم IQ-TEAM - من قسم: |[ RSS Forum ]|

    Metasploit to Max​
     
حالة الموضوع:
مغلق

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