royal_tek

Buffer Overflow والنمط المحمى

6 ردود في هذا الموضوع

ان من اهم مزايا النمط المحمى هو حمايه الذاكره وعدم تداخل الذاكره

ومع ذلك يوجد Buffer Overflow ومعناه ان يدخل كود تنفيذى فى قطاع لبيانات كيف يتم هذا

ثانيا بالنسبه لبرامج trainer نفس الفكره كيف يسمح لبرنامج trainer الدخول الى مساحه ذاكره برنامج اخر

ثالثا هناك جدول gdt ويخزن فيه قطاعات توضح فيه اقسام الكود واقسام البيانات فهل معنى هذا ان كل تنفيذ لامر من الاوامر من برنامج ما يختبر المعالج ان هذا الامر يقطع تحت اى حلقه هل هو الحلقه صفر او الحلقه 3 ليتم تنفيذه

رابعا هناك امثله لانظمه تشغيل توضح ان فى جدول gdt يوجد به قسم الكود بحجم 4 جيجا وان قسم البيانات بحجم 4 جيجا ويبداو من نفس العنوان كيف هذا هل هو تداخل فى الاقسام ام ماذا هل هذا مايفسر حدوث Buffer Overflow

اعتقد ان الاجابه على هذه الاسئله هو شرح لكيفيه عمله process او بمعنى ادق كل امر من اوامر الاسمبلى وعلاقته بجدول gdt

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

في الحقيقة انت مزجت بين عدة مفاهيم وامور لا علاقة لها ببعض.

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

تم تعديل بواسطه GamingMasteR
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا اخى GamingMasteR على الرد

ولكن اعتقد ان الموضوع مشترك فى شى واحد وهو النمط المحمى واهم مزاياه تحديد جدول يوضح تقسيم القطاعات هل هو قطاع بيانات او قطاع مكدس لذا لا يتم تنفيذ كود من خلاله

ومع ذلك فان طريقه buffer overflow تعتمد على احداث فيض من البيانات ليتم تنفيذ كود موجود به مع العلم انه موجود فى قطاع المكدس او قطاع البيانات

الميزه الثانيه فى النمط المحمى هو عدم تداخل البرامج وتخصيص ذاكره معينه لكل برامج وهو ذاكره تخيليه فى لكل برنامج وعدم السماح لكل برنامج من الوصول الى المساحه المخصصه لبرنامج اخر ومع ذلك برامج الtrainer تقوم بذلك

كانه فى النمط الحقيقى

الميزه الثالثه هو تقسيم صلاحيات وهى عباره عن اربع حلاقات الحلقه صفر مخصصه لنظام التشغيل والكرنل والحلقه 3 مخصصه لبرامج المستخدم ومع ذلك توجد برامج هاكر تحدث ثغره فى النظام ويستطيع برامج المستخدم من الحصول على صلاحيه الكرنل او الحلقه صفر

اذن الجزء المشترك بينهم هو جدول GDT الذى يحدد تقسيم القطاعات هل هو قطاع كود او بيانات او مكدس وما هى صلاحياته (فعند تنفيذ لكل امر من الاوامر يفحص فى هذا الجدول هل هو فى قطاع الكود اذن ينفذه وما هو صلاحياته اى موجود فى اى حلقه

اما فى حاله وجوده فى قطاع اخر مثل البيانات او تنفيذ لامر موجود فى الحلقه 3 يريد تنفيذ لامر فى الحلقه صفر يعطى خطا ومع ذلك لا يحدث فى الامثله السابقه)

هل يوجد فى كلامى شى خطا او لبس فى الموضوع

3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

سؤال عبقري +1

جاري البحث، سأوافيك بكل ما أتوصل اليه هنا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السؤال الأول ربما تود إعادة صياغته بهذه الصيغة :

كيف أمكن تشغيل التعليمات الموجودة في المتغير shellcode (تستدعي MessageBoxA , ﻻشيء ضار | مصدره) :

/*
Title: Allwin MessageBoxA Shellcode
Date: 2010-06-11
Author: RubberDuck
Web: http://bflow.security-portal.cz
Tested on: Win 2k, Win 2003, Win XP Home SP2/SP3 CZ/ENG (32), Win Vista (32)/(64), Win 7 (32)/(64), Win 2k8 (32)
Thanks to: kernelhunter, Lodus, Vrtule, Mato, cm3l1k1, eat, st1gd3r and others
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){
unsigned char shellcode[]=
"\xFC\x33\xD2\xB2\x30\x64\xFF\x32\x5A\x8B"
"\x52\x0C\x8B\x52\x14\x8B\x72\x28\x33\xC9"
"\xB1\x18\x33\xFF\x33\xC0\xAC\x3C\x61\x7C"
"\x02\x2C\x20\xC1\xCF\x0D\x03\xF8\xE2\xF0"
"\x81\xFF\x5B\xBC\x4A\x6A\x8B\x5A\x10\x8B"
"\x12\x75\xDA\x8B\x53\x3C\x03\xD3\xFF\x72"
"\x34\x8B\x52\x78\x03\xD3\x8B\x72\x20\x03"
"\xF3\x33\xC9\x41\xAD\x03\xC3\x81\x38\x47"
"\x65\x74\x50\x75\xF4\x81\x78\x04\x72\x6F"
"\x63\x41\x75\xEB\x81\x78\x08\x64\x64\x72"
"\x65\x75\xE2\x49\x8B\x72\x24\x03\xF3\x66"
"\x8B\x0C\x4E\x8B\x72\x1C\x03\xF3\x8B\x14"
"\x8E\x03\xD3\x52\x33\xFF\x57\x68\x61\x72"
"\x79\x41\x68\x4C\x69\x62\x72\x68\x4C\x6F"
"\x61\x64\x54\x53\xFF\xD2\x68\x33\x32\x01"
"\x01\x66\x89\x7C\x24\x02\x68\x75\x73\x65"
"\x72\x54\xFF\xD0\x68\x6F\x78\x41\x01\x8B"
"\xDF\x88\x5C\x24\x03\x68\x61\x67\x65\x42"
"\x68\x4D\x65\x73\x73\x54\x50\xFF\x54\x24"
"\x2C\x57\x68\x4F\x5F\x6F\x21\x8B\xDC\x57"
"\x53\x53\x57\xFF\xD0\x68\x65\x73\x73\x01"
"\x8B\xDF\x88\x5C\x24\x03\x68\x50\x72\x6F"
"\x63\x68\x45\x78\x69\x74\x54\xFF\x74\x24"
"\x40\xFF\x54\x24\x40\x57\xFF\xD0";

printf("Size = %d\n", strlen(shellcode));

system("PAUSE");

((void (*)())shellcode)();

return 0;
}

رغم أنه موجود في قطاع البيانات؟

ربما أسطيع أن أفسر التساؤل الثاني, دوال القراءة والكتابة على الذاكرة تطلب الإذن من النواة, والنواة تتحقق من صلاحية الطلب وإذا سمحت له, فإنها تكتب على أو تقرأ له الذاكرة وترد له النواتج لأنها الوحيدة التي يُمكنها الوصول للذاكرة دون قيود وليس البرنامج نفسه الذي يقرأ أو يكتب في الذاكرة. لو حاولت قراءة ذاكرة عملية تعمل على حساب مُستخدم آخر فلن تستطيع وهذا القيد غير موجود في الأنظمة القديمة كـDOS والتي تعمل في النمط الحقيقي, فالبرامج كانت تستطيع الكتابة في أي مكان حتى في ذاكرة النظام.

التساؤل الثالث, ﻻيمكن بأي حال للتطبيقات أن تعمل في مستوى النواة لأنه ﻻيمكن حتى إستدعاء المكتبات الاساسية التي تلزم جميع تطبيقات ويندوز kernel32 و user32 من النواة. كون الحساب SYSTEM ﻻيعني أننا في مستوى النواة.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم،

الموضوع خطير جدا، و لا تتوفر عليه معلومات كثيرة في الانترنت. امضيت اكثر من 12 ساعة ابحث في الطريق الخاطئ الى ان تعرفت على مصطلح جديد غيّر و جهة بحثي. و هذا ما توصلت اليه:

المعالجات هي من اختراع الانسان، يعني هناك احتمال كبير ان تحتوي على اخطاء يمكن استغلالها. نعم "اخطاء المعالجات" –ما يسمى بالانكليزية "CPU BUGS". هذا هو المفهوم الجديد الذي يجيب على العديد من التساؤلات التي طرحتها فوق.

ولكن اعتقد ان الموضوع مشترك فى شى واحد وهو النمط المحمى واهم مزاياه تحديد جدول يوضح تقسيم القطاعات هل هو قطاع بيانات او قطاع مكدس لذا لا يتم تنفيذ كود من خلاله

ومع ذلك فان طريقه buffer overflow تعتمد على احداث فيض من البيانات ليتم تنفيذ كود موجود به مع العلم انه موجود فى قطاع المكدس او قطاع البيانات

اليك الدليل على ان سبب تنفيذ كود موجود في قطاع بيانات هو خطئ في المعالج:

Various developers are busy implimenting workarounds for serious bugs

in Intel's Core 2 cpu.

.

These processors are buggy as hell, and some of these bugs don't just

cause development/debugging problems, but will *ASSUREDLY* be

exploitable from userland code

.

- Some of these bugs are along the lines of "buffer overflow"

where a write-protect or non-execute bit for a page table entry is ignored.

Others are floating point instruction non-coherencies, or memory

corruptions -- outside of the range of permitted writing for the process -- running common instruction sequences.

- All of this is just unbelievable to many of us.

المصدر

الميزه الثانيه فى النمط المحمى هو عدم تداخل البرامج وتخصيص ذاكره معينه لكل برامج وهو ذاكره تخيليه فى لكل برنامج وعدم السماح لكل برنامج من الوصول الى المساحه المخصصه لبرنامج اخر ومع ذلك برامج الtrainer تقوم بذلك كانه فى النمط الحقيقى

اجابة الأخ Mr.B كافية. +1

الميزه الثالثه هو تقسيم صلاحيات وهى عباره عن اربع حلاقات الحلقه صفر مخصصه لنظام التشغيل والكرنل والحلقه 3 مخصصه لبرامج المستخدم ومع ذلك توجد برامج هاكر تحدث ثغره فى النظام ويستطيع برامج المستخدم من الحصول على صلاحيه الكرنل او الحلقه صفر

سبب هذا هو استغلال اخطاء المعالج

هذا والله اعلم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .