اکسپلویت چیست ؟ قسمت دوم


اکسپلویتها به دو دسته کاملا مجزا remote (راه دور) و local (محلی) تقسیم میشن.
همونطور که احتمالا ی دونین کار دسته remote معمولا گرفتن شل، آپلود فایل یا اجرای هر دستور دیگه از راه دور است در حالیکه local ها معمولا برای افزایش سطح اختیارات بکار میرن و باید شل موجود باشه تا بشه اونا رو اجرا کرد. در اغلب سرورهای لینوکسی local ها رو باید کامپایل کرد و این بعلت نوع فایلهای lib و نحوه تنظیمات اوناست در حالیکه معمولا در ویندوز میشه از اکسپلویت کامپایل شده هم استفاده کرد.
متاسفانه چند باری دیدم که local برای لینوکس رو تحت ویندوز کامپایل کردن! که نشون از این داره که حتی با ساه ترین مسایل هم آشنایی نداره.

اما اکسپلویتهای remote که شل interactive می دن به دو گروه کلی مستقیم و برگشتی (connect back) تقسیم میشن. در حالت مستقیم یک پورت روی سیستم هدف باز میشه و فالگوش منتظر تماس می مونه. به دلیل وجود فایروالها نوع connect back ارائه شده که شل بجای فالگوش ایستادن به IP و پورت مورد نظر متصل میشه. اگر پورت با دقت انتخاب بشه (مثلا 80 یا 21 یا 25 یا ...) فایروال ممکنه فکر کنه که از داخل شبکه داخلی کسی می خواد به سرورهای خارجی وصل بشه و احتمال رد شدن از فایروال زیاد میشه.
قسمتی که اینکارو می کنه (مستقیم یا برگشتی) payload نام داره و قسمت دیگه در واقع وظیفه سرریز بافر رو به عهده داره. با shellcode (یا همون Payload) های مختلف میشه رفتار یک اکسپلویت رو عوض کرد و اونو انعطاف پذیر نمود.
الان دیگه اکسپتویتهای remote کاملا پیچیده شدن و حتی اکسپلوتهای انعطاف پذیر هم در بازار موجودند مثل coreImapct که با استفاده از اون میشه برای باگهای مشخص انواع اکسپلویتها رو تهیه و استفاده کرد.
از اونجا که اکسپلویتهای remote بسیار اهمیت دارن IDS ها خیلی به نشونه های اونا توجه می کنن که یکی از مهمترین نشانه ها وجود NOP های زیاد است. ابزراهایی مثل کر-ایم-پکت یا کانوس یا متاسپلوست برای فرار از IDS ها NOP ها رو به رمز در میارن (encode) می کنن.
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد