مقدمات توسعه اکسپلوییت

منتشر شده در دسته : متااسپلوییت پیشرفته

برای شروع توسعه اکسپلوییت یکسری مفاهیم اولیه وجود دارد . در این بخش مقدمات توسعه اکسپلوییت را به شما معرفی می کنیم .

توسعه اکسپلوییت

در این مجموعه آموزش ها شما مقدمات مهارت ایجاد اکسپلوییت های خود و توسعه اکسپلوییت  را بدست می آورید . همانطور که می‌دانید به محض اینکه یک اکسپلوییت در دنیای واقعی یافت می‌شود ، توسعه دهندگان نرم‌افزار شروع به ایجاد پچ های نرم افزاری می‌کنند تا حفره های موجود و آسیب‌پذیری های نرم‌افزار را برطرف سازند . پس از پچ شدن نرم‌افزار اکسپلوییت دیگر کار نخواهد کرد . به جز در شرایطی که سیستم‌ها به صورت پچ نشده باقی بمانند . بسیاری از شرکت ها این پچ ها را بر روی سیستم خود اجرا نمی‌کنند . چرا ؟ به این دلیل که می‌ترسند پچ ها و بروزرسانی های امنیتی یک سیستم سالم تجاری را با مشکل مواجه کند . به همین دلیل میلیون‌ها سیستم پچ نشده موجود است !

علاوه بر این بلافاصله پس از اینکه یک اکسپلوییت توسعه یافت ، توسعه دهندگان نرم افزارهای آنتی ویروس امضاهایی را برای اکسپلوییت ها ایجاد کرده و ارسال و اجرای اکسپلوییت بر روی سیستم قربانی با مشکل مواجه می‌شود (مشکل دار ولی نه غیر ممکن) .

کلید غلبه بر این مشکلات تنها به دست یک متخصص برطرف می‌شود . چگونه ؟ با ایجاد اکسپلوییت های ساعت صفر توسط خودتان . این مهارت برای مبتدی ها نیست ولی ما گام به گام پروسه را شروع کرده تا توانایی‌های لازم را به مرور پیدا کنید . در اینجا شما خواهید آموخت چگونه اکسپلوییت سرریز بافر مبتنی بر پشته را توسعه دهید . این کار مستلزم سرریز یک متغیر در پشته حافظه و نوشتن بر روی نواحی مجاور حافظه .
به این منظور با یکسری مفاهیم مقدماتی و واژگان کار خود را آغاز می‌کنیم .

سرریز بافر

در بسیاری از آزمایش های انجام شده شما قادر به دسترسی به یک شل یا مترپرتر بر روی سیستم هدف بودید . در اصطلاح حرفه‌ای به آن اجرای خودسرانه ریموت کد (remote arbitrary code execution) اطلاق می‌شود . آنچه در اکثر این موارد کارآمد است ، سرریز بافر می‌باشد .
سرریز بافر موقعیتی است که یک متغیر با داده‌هایی به صورت خودسرانه پر و سرریز می‌شود . این کد می‌تواند هر چیزی باشد ولی نتیجه آن بازگشت یک شل به شما و کنترل سیستم هدف خواهد بود .

سرریز بافر خطرناک ترین و مخرب‌ترین آسیب‌پذیری های موجود در اپلیکیشن ها یا سیستم عامل ها به شمار می‌روند . در ساده‌ترین شکل یک آسیب‌پذیری سرریز بافر متغیری است که قبل از قبول مقدار ورودی آن را اعتبار سنجی و بررسی نمی‌کند و زمانی که داده‌های زیادی ارسال می‌شود ، مهاجم خواهد توانست تا کد مخرب خود را در فضای آدرس حافظه اجرا کند .

مقدمات توسعه اکسپلوییت

مقدمات حافظه

به منظور درک درست سرریز بافر بایستی کمی درباره حافظه بیشتر بدانید . فرض کنید که حافظه مثل یک کلاسور است . زمانی که یک برنامه جدید اجرا می‌شود ، حافظه شروع می‌کند و صفحات را (Stack) از بالا به پایین پر می‌کند تا تکمیل شود . زمانی که اجرای برنامه شروع شد نیاز است تا اطلاعات موقتی به سرعت استفاده و دورانداخته شوند .
در نتیجه این داده‌ها را می‌توان از پایین به بالا وارد کرد (heap) .
مکان حافظه ای بلافاصله پس از فراخوانی برنامه را stack یا پشته و مکان حافظه ای در پایان حافظه را heap می نامند . در صورتی که فضای حافظه به اندازه کافی بزرگ باشد درنتیجه این دو هرگز با هم برخورد نخواهند کرد .

حافظه stack و heap

stack به عبارتی حافظه کوتاه مدت است که اندازه ثابتی دارد و به منظور ذخیره سازی آرگومان های توابع ، متغیرهای محلی و … استفاده می‌شود .
در مقابل آن heap حافظه بلند مدت است و متغیرهای پویا را نگهدای می‌کند .

رجیسترهای چند منظوره

پردازشگرهای مبتنی بر اینتل (در ویندوز و مک) چندین رجیستر چندمنظور وجود دارند که به منظور ذخیره سازی داده‌ها مورد استفاده قرار می‌گیرند این رجیسترها عبارتند از :

EIP (Intruction Pointer)
ESP (Stack Pointer)
EBP (Base Pointer)
ESI (Source Index)
EDI (Destination Index)
EAX (Accumulator)
EBX (Base)
ECX (Counter)
EDX (Data)

NOP Sled اسلاید نوپ یا توالی نو اپریشن ها

یک NOP یا همان No Operation دستوری است که به برنامه می‌گوید هیچ کاری نکن . اکنون Nop Sled توالی از این دستورها می‌باشد که در‌واقع به این معنی است که کاری نکن و ما را به ناحیه دلخواه از رجیسترهای حافظه هدایت کن . بسیاری از اکسپلوییت ها از Nop Sled به منظور هدایت EIP به کد مخرب استفاده می‌کنند .

مقدمات توسعه اکسپلوییت

تا اینجای کار یکسری مفاهیم مقدماتی و واژگان را آموختید . درک درست این مفاهیم قبل شروع کار و ایجاد اکسپلوییت ها ضروری است پس اطمینان حاصل کنید که درک درستی از این مفاهیم پیدا کرده‌اید .

صاحب امتیاز نت آموز : نویسنده , مدرس و متخصص در زمینه امنیت شبکه های رایانه ای

نظرات غیرمرتبط با موضوع این مطلب تایید نخواهند شد. این سوالات را می توانید از بخش پشتیبانی آموزشی مطرح کنید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *