الحماية للأبد -Security 4 Ever

الحماية للأبد -Security 4 Ever (https://www.sec4ever.com/home/index.php)
-   أساسيات لغة الأسمبلي (https://www.sec4ever.com/home/forumdisplay.php?f=8)
-   -   بنية الذاكرة الإفتراضية & حماية aslr (https://www.sec4ever.com/home/showthread.php?t=19522)

zero-cool 09-06-2019 06:05 AM

بنية الذاكرة الإفتراضية & حماية aslr
 
السلام عليكم ورحمة الله وبركاته

إن شاء الله تكونوا في تمام الصحة والعافية إخواني


كود high.c :

كود PHP:


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

int mulp(int a int b)
{
        
int c;
  
        
b;
 
        return 
c;
}


main(int argcchar **argv)

{

        
int x 00,  0;

        
printf("Enter the first number : "); 
        
scanf("%d", &x);

        
printf("Enter the second number : ");
        
scanf("%d", &y);

        
mulp(x,y);

        
printf("%d*%d = %d\n",xyz);

       
        exit(
0);



بنية الذاكرة الإفتراضية


*) كل عملية (process) تحمل في نفس المكان للذاكرة الإفتراضية بغض النظر عن الموقع الحقيقي للذاكرة الفعلية


*)كل عملية processتشعر وكأنها هي العملية الوحيدة في النظام ، وتتمتع بكامل الذاكرة وكأنه لايوجد عمليات أخرى

*)النظام ووحدة المعالج المركزية يشتركان مع بعضهما في الحفاظ على هذه الفكرة


http://i49.tinypic.com/w2m5px.png





تذكروا دائما أن هذه هي الذاكرة الإفتراضية (virtual memory ) وليست الذاكرة المادية (physical memory)

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





ASLR
نفتح ترمينال ونشغل السكريبت ثم نتركه هكذا :

http://i48.tinypic.com/2pysxsh.png

تركنا البرنامج هكذا ليبقى في طور التشغيل ونقدر نشوف كيف حيكون شكلو في الذاكرة الإفتراضية .
ثم نفتح ترمينال جديد ونذهب لهذا المسار وتأكد أنك بصلاحية روت .

http://i50.tinypic.com/21nmog2.png

ثم نفتح الملف maps

http://oi50.tinypic.com/jq0uo9.jpg




نلاحظ أن هذا العنوان 08048000 يمثل أسفل الذاكرة وكنت قد ذكرته في الصورة الأولى تبع الشرح .
أيضا لاحظ أن إنطلاقا من هذا العنوان تزداد قيمة عناوين الذاكرة يعني هو أسفل الذاكرة .

ملاحظة : لا تستوعب الأمور إعتمادا على الأعلى والأسفل تبع الصورة ولكن إستوعبها إعتمادا على الأعلى والأسفل تبع الذاكرة

يعني عندما تشوف صورة توضيحية تبع مكدس أو تبع عناوين الذاكرة دائما ثبت ماهو أسفل الذاكرة وماهو أعلى الذاكرة

فممكن تكون الصورة مقلوبة ومذكور فيها أن أعلى الصورة هو أسفل الذاكرة وأسفل الصورة هو أعلى الذاكرة فتبقى القواعد نفسها ... لكن أنت تظن أنها قواعد أخرى فتختلط عليك الأمور ... دائما ركز على إتجاهات الذاكرة أولا .




الآن نقوم بإيقاف البرنامج ونشغله مرة أخرى ونتبع نفس الخطوات السابقة إلى أن نعرض شكله في الذاكرة :

http://i47.tinypic.com/1538hup.png

مقارنة بالصورة السابقة

نلاحظ في الأول أن عنوان أسفل الذاكرة بقي كما هو ولكن بقية العناوين كلها تغيرت حتى عنوان المكدس أيضا تغير .

فلمذا تغيرت ؟ مالذي حصل بالظبط؟

نفتح ترمينال جديد ونذهب على هذا المسار كما في الصورة التالية ونعرض الملف randomize_va_space ونغير قيمته إلى 0

http://i46.tinypic.com/2pzwwvd.png

الآن نوقف البرنامج ونشغله ثم نذهب لعرض شكله في لذاكرة كما في الصورة التالية :

http://i48.tinypic.com/28unzmc.png


الآن نوقفه مرة أخرى ونعيد عرض شكله في الذاكرة كما في الصورة التالية :

http://i46.tinypic.com/30moajl.png

نلاحظ أن عناوين المقاطع في الذاكرة بقيت كما هي ولم تتغير وهذا بعدما أوقفنا عملية التوزيع العشوائي لمقاطع الذاكرة الإفتراضية أو (ASLR) وهي حماية للنظام من الهجمات المتعلقة بعناوين هذه المقاطع مثل هجمات البافر أوفر فلو
وجعل هذه الهجامات صعبة التحقق.

وهذا مايفسر لمذا بعض أكواد الثغرات تفشل معنا وذلك لأن العناوين متغيرة من نظام إلى نظام فيجب إيقاف هذا التوزيع العشوائي وتعديل كود الثغرة بالعناوين المناسبة .


وهذا مامعنى كل عملية تحمل في نفس المكان للذاكرة الإفتراضية بغض النظر عن الموقع الحقيقي للذاكرة الفعلية



لتحميل تعاريف إضافية




في أمان الله


الساعة الآن 07:53 PM

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.