[#] الشرح المفصل لثغرات buffer overflow ||arabic||+ video [#]
السلام عليكم ورحمة الله تعالى وبركاته
اليوم معي لكم شرح كتابي + فيديوا لتغرة البافر، من الالف الى الياء، ان شاء الله تفهموا
تغرت البافر هي من اقوى الثغرات على الصعيد العالمي ... اذ ان المحترفين يستغلونها للحصول على الروت ...، وكما انها تعتمد على البنية الميكانيكية للحاسوب + البرمجية ...
1-ماهي البفر اوفر فلو :
هي عبارة عن خطا برمجي يسمح بتحكم استثنائي في ذاكرة المعالج processor . تحصل عندما نقوم بادخال معطيات تفوق سعة ال buffer وهو الجزء من الذاكرة المسؤول عن تخزين المدخلات كاسم المستعمل و كلمة السر مثلا ..وهكذا .مثلا اذا كان المبرمج حدد طول اسم المستعمل ب 50 حرف بذاكرة الBuffer و التي هي كافية من الناحية النظرية ..
ناتي نحن وندخل في اسم المستخدم 55 حرف مثلا ! ماذا يحدث يتوقف البرنامج عن العمل يعني بيعمل كراش crach و نكون بذلك قد كتبنا فوق مكان آخر من الذاكرة . مسببين عطل بالبرنامج لكن نستطيع كتابة اوامر مختلفة لتنفيذ غاياتنا كارسال رسالة أو أخذ صفة root ... مستغلين بذلك هذه الثغرة.
2-الدراسة المعمقة: - صناعة برنامجنا الخاص الذي نتعمد الخطأ في برمجته : لاحظ هذا البرنامج و الذي هو بلغة ال C
اه ! تقول لي مابعرف السي !
عندي لك الحل، تعالى حمل هذا الكتاب، فيه شرح احترافي للسي
وكمان هو من رفي
http://www.mediafire.com/?gfjabb1zseenz2q
الفيديو صوت وصورة، وهذا الشرح الكتابي تم تطبيقه فيه :drunk:
تعالى نبدأ
:ange:
نقوم بصنع هذا البرنامج في المحرر ...
كود PHP:
# include <stdio.h> main()
{ char nom [5] ; printf ("What's your name ? : ") ; scanf ("%s",nom) ; printf ("Hi %s ", nom) ;
return 0 ;
}
يقوم هذا البرنامج بسؤال المستعمل عن اسمه .. فيكتب المستعمل اسمه .. فيرسل له البرنامج رسالة ترحيب باسمه . - برنامج ابسط مما يكون -
قم بحفظه باسم vbspiders.c و حمل برنامج Digital Mars C/C++ Compilers ستجده بهذا الموقع www.digitalmars.com .. قم بتنصيبه وفك ضغطه و ليكن في مجلد ال c تجده باسم dm
طريقة العمل بالبرنامج ضع vbspiders.c في هذا المكان c:\dm\bin
ثم اذهب الى start ثم run ثم اكتب في المربع cmd .. فيفتح معك الدوس . اكتب هذه الاوامر وراء بعض : cd\ cd dm\bin sc vbspiders.c vbspiders
تستطيع تطبيق البرنامج بكتابت vbspiders في محث اوامر الدوس فتجد رسالة من برنامجنا تقول What's your name اكتب اسمك مثلا nor15din فيرسل كما قلنا البرنامج رسالة ترحيب
"hi nor15din"
الكود المهم بالبرنامج هو
كود PHP:
char nom [5] ;
حيث قمنا بتحديد طول اسم المستخدم . ماذا لو وضعنا اسم مستخدم طويل ماذا يحدث ؟ سنضع مثلا AAAAAAAAAAAAAAAAAAAA تخرج لنا رسالة خطأ تفيد ان برنامجنا قد اتلف أو حدثت له عملية crash
الان انتهينا من صناعة برنامجنا و الذي به مشكلة سنحاول استغلالها .
2- مراقبت عمل البرنامج : نحتاج لبرنامج ال OllyDbg v1.10 ..ستجدونه بالبحث في google. نفتح برنامحنا الصغير بواسطة olly من file .. ثم open ابحث عن مكان البرنامج الصغير و افتحه .
يجب علينا اولا تشغيل التطبيق و وضع الاسم الكبير مثل : AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAA و هي 60 A ( يجب احترام هذه القيمة فلو وضعت عدد كبير جدا لن تنجح في استغلال الثغرة ) وذلك من اجل انتاج خطأ في البرنامج
يجب علينا الآن أن نبحث عن الاشياء المهمه ..و هي عنوان العوده و مكان ال60 Aالتي ادخلناها
هنا ناتي الى المرحلة المهمة .وهي وضع كود الاستغلال بعد عنوان العودة
انا الآن لن اكمل العمل ببرنامج vbspiders.exe كون استغلاله أمر مستحيل . تقولون لماذا ؟
الأمر لن ينتبه له الا من تابع معنا من البداية.. وكان له قدر :whip: من الذكاء . فأولا وقبل وضع الكود الاستغلال يجب الاشارة الى مكان بدايته في اول خانه
لكن كيف نضع العنوان هل نكتب بعد ال 16 A العنوان كالتالي : AAAAAAAAAAAAAAAA0012FF90 مثلما فعلنا مع الجمله السابقه اذكركم بها . AAAAAAAAAAAAAAAAput-your-code-here بالتاكيد لا و الف لا ... كيف اذا ؟ العنوان هو عبارة عن رموز ascii وكل رمز يقابله رمز اخر و للاسف الرمز 00 لم استطع ايجاد رمز يقابله فهو يشير الى نهاية السلسلة الحرفية .
اي لو اردت استغلال برنامج vbspiders.exe لن استطيع لاني لن اتمكن من وضع عنوان بدء تنفيد كود الاستغلال 0012FF90 كون ال00 تقابلها نهاية السلسة الحرفية التي ندخلها عند الاستغلال .
أعلم ان الامر معقد نوعا ما لكن ان لم تفهم شيئا اقرء و أعد القراءه مره اخرى فان لم تستطع ضع في ردك النقطة التي لم تفهمها و ساعيد شرحها .
و سيكون التطبيق الان على برنامج آخر و هو برنامج myprog للتحميل من هنا
و هو برنامج بسيط قمت بتعريبه و بعض التعديلات فيه اذ يقوم بنسخ ما يوجد بالملف info و الذي هو ملف نصي .
مثلا للعمل بالبرنامج اكتب vbspiders بالملف info و قم بحفظ التغيرات . ثم افتح برنامج myprog و اضغط على read file لتنسخ لك ما كتبته سايقا بالملف info
* أظن أنكم مباشرة من كود البرنامج ادركتم اننا لو نضع في الملف info نص اكبر من 10 احرف سيحدث خطأ * نفتح مباشرة البرنامج بال olly و ذلك لدراسة عنوان العوده كاتبيين في ملف ال info 32 A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ما علينا الان الا التطبيق ..و يجب عليك البحث عن برنامج ال hex workshop و ستعرف لماذا.
و لتبديل عنوان بداية الكود نقوم بفتح ملف الـ info بالhex workshop و نعدل به كالتالي : " تجدون التعديل جاهزا بملف info آخر مضغوط . "
= طريقة التعديل
= الى ان نصل الى النتيجة النهائيه
ثم قم بحفظ التعديلات على ملف info و قم بتشغيل برنامج myprog بالolly و اضغط على read file ولاحظ في ال olly ما يلي :
كما تخرج لنا رساله :surprised:
لقد نجحنا بعملنا .:na:
و في الاخير نصيحة صغيرة للتعامل ببرنامج ال Olly في كل مرة تشغلون برنامج "مثل vbspiders"ويحدث له تخريب تستطيعون مباشرة اعادة العمل به من debug ثم restart و ليس عليكم اقفال ال olly بالكامل و المباشرة بالعمل به مره اخرى.