السلام عليكم ورحمة الله تعالى وبركاته.
نوع الثغرة: Local Buffer Overflow
التاريخ: 2008/07/02
المكتشف: DATA_SNIPER
شرح الثغرة
الثغرة هي عبارة عن خطأ في معالجة Arguments الموجودة في البرنامج "Debug>arguments" حيث انه بإدخال كم كبير من الأحرف سيحدث فيض في المكدس ويتم الكتابة على عنوان العودة, لكن السائل يقول ما الفائدة من هذه الثغرة.
سيكون الجواب كالتالي عند كتابة اي Argument يقوم Olly بقرائة محتويات Ollydbg.ini و يستخرج منها معلومات و Arguments التي تم كتابتها من قبل واثناء معالجة سلسلة الأحرف الكبيرة(التي تم إدخالها من قبل) ستحدث الكارثة، فيض على مستوى المكدس مع ملاحظة انه يجب إضافة علامتي الإقتباس("") في بداية ونهاية سلسلة الأحرف (وهذا مالم اجد له تفسير لذيق الوقت و الخوف من ظهور فيروسات تستغل هذه الثغرة).
وكشفافية هذه الثغرة ليست وليدة تحليل كبير و و وو لكن كانت صدفة لكن عملية كتابة إستثمار و إكتشاف طرق الحماية و تجاوز العقبات لم يكن صدفة بل كان بالتحليل سواءا التحليل البرمجي او بالملاحظة ولاتنسى انهOlly
بعض العقبات
العقبة الكبيرة كانت في كتابة الشل كود حيث أن الشل كود بعد تحميله في الذاكرة يكون تالف بسبب تعطيله من طرف Olly سواءا بطرق الفلترة التي اظن انها مبرمجة او بسبب دوال الويندوز و الحماية المركبة فيه, لذلك وجب علي إستعمال Alphanumeric Shellcode من Metasploit لتجاوز هذه العقبة، بالإضافة إلى ان الثغرة مجربة على Windows XP SP2 FR وليست عندها توافيقية مع إصدارات أخرى مثل العربية لكنها قابلة للتطوير بسهولة فالمشكلة برمتها متعلقة بعنوان العودة وحتى هذه المشكلة يمكن تجاوزها بتخمين اماكن وجود عنوان العودة وكتابة عنوان الشل كود فيه اي RET Brute Forcing كما اسميها.
فعلى سبيل :
"AAAAAAA......AAAA(RET Win AR)(RET Win FR)(shellcode)"
و في النهاية يمكن إستعمال هذه الثغرة في الإختراق او نشر فيروسات و ذلك عن طريق طرح نسخة مطورة بمعنى اخر زعم بأنها نسخة جديدة ويتم إرفاق ملف Ollydbg.ini ملغم.
إزالة بعض الغموض:
ربما يظن البعض أن الثغرة لن تشتغل إلا بعد ان يقوم المستخدم بإختيار سلسلة الأحرف الكبيرة التي تحوي الشل كود، بل ان الشل كود سيشتغل بعد كتابة اي Argument.
بعض الحلول
إذا اردت ان تكون الخاصية الموجودة في الثغرة فوق معطلة قم بحذف Call الموجود في العنوان 0044179A.
و إلى ظهور اي إشعار حول ترقيع لا تستعمل Arguments او إبحث في قائمة Argument عن اي String غريبة مثل:
AAAAAAAAAAAAAAAAAAAAAAAAAAA......AAAOEONOJMIYJ6FWFGB7LCORORA3DCG3PRBCPRBSPRA3OBP
6O6FGP
وفي الأخير هذا الشرح و التحليل ينقصه بعض الأشياء وربما يحتوي على اخطأ لإعتمادي بشكل كبير على التخمين و الملاحظة لذلك ارجوا من الإخوة تصويبي ريثما اقوم بالتحليل الكامل،وللعلم ان الثغرة مازالت 0DAY اي لم يتم كشفها او إي إشعار عنها لذلك سيتم بإذن الله تبليغ المبرمج بهذه الثغرة وبعد ذلك نشرها في مواقع السكيورتي .
يوجد في المرفقات فيديو يوضح كيفية إستغلال الثغرة"ينقصه الشرح و التنظيم" للثغرة مع Proof Of Concept وهو عبارة عن ملف Ollydbg.ini يقوم بتشغيل calc.exe ولمن يريد معرفة فعالية الثغرة يجب عليه نسخ ملف الإعدادت"ollydbg.ini" إلى مسار Ollydbg.exe وتشغيله وكتابة اي Argument، مع العلم أن هذا الإستثمار للأنظمة Windows SP2 FR .
ماكان من خطا فمني ومن الشيطان وماكان من صواب فمن الله.
والسلام عليكم ورحمة الله تعالى وبركاته.