اسپری هیپ تکنیکی است که توسط هکرها برای تسهیل اجرای کد دلخواه، معمولاً به عنوان بخشی از یک سوء استفاده در برابر آسیب پذیری نرم افزار، استفاده می شود. این سیستم با تخصیص ساختارهای داده "هیپ" متعدد حاوی بار مخرب عمل می کند و در نتیجه احتمال اینکه آسیب پذیری سرریز بافر، به عنوان مثال، منجر به اجرای کد مهاجم شود را افزایش می دهد.
پیدایش اسپری هیپ و اولین ذکر آن
اسپری هیپ به عنوان یک تکنیک بهره برداری ریشه در اواخر دهه 1990 و اوایل دهه 2000 دارد، زمانی که اینترنت محبوبیت گسترده ای پیدا می کرد و امنیت سایبری به اندازه امروز قوی نبود. اولین اشاره مهم آن در کار هکر اخلاقی و متخصص امنیت سایبری SkyLined بود که توضیحات و نمونه هایی جامع از این تکنیک ارائه کرد. بینش SkyLined به نشان دادن گرانش اسپری پشته به عنوان یک بردار تهدید کمک کرد و منجر به افزایش تلاشها برای کاهش اثرات آن شد.
اسپری هیپ: یک بررسی عمیق
اسپری هیپ شامل پر کردن پشته - ناحیه ای از حافظه کامپیوتر که برای تخصیص حافظه پویا استفاده می شود - با تکه هایی از داده ها حاوی یک توالی بایت خاص است که اغلب به عنوان "NOP sled" یا "NOP slide" شناخته می شود. بار واقعی اکسپلویت، معمولاً یک کد پوسته، در انتهای این دنباله قرار می گیرد. اگر آسیبپذیری اجازه کنترل اشارهگر دستورالعمل را بدهد، این ترتیب اساساً جریان اجرا را به سمت محموله هدایت میکند.
اسپری هیپ عمدتاً در حملات علیه برنامههای نرمافزاری استفاده میشود که دارای یک اشکال حافظه هستند، معمولاً یک سرریز بافر یا آسیبپذیری پس از استفاده رایگان. این باگها میتوانند به مهاجم اجازه میدهند تا آدرس حافظه را بازنویسی کند، که در صورت دستکاری دقیق، میتوان از آن برای هدایت اجرا به پشته استفاده کرد. اسپری هیپ به "آماده سازی" پشته برای این کار کمک می کند، و این احتمال را بیشتر می کند که یک اجرای هدایت شده بر روی بار مهاجم قرار گیرد.
نحوه عملکرد اسپری هیپ: روش کالبد شکافی
اسپری هیپ با پر کردن فضای پشته با کپی از یک دنباله بایت مورد نظر کار می کند. در اینجا یک دنباله ساده از روش است:
- اسپری هیپ اغلب از طریق جاوا اسکریپت در یک محیط وب فعال می شود.
- اسپری هیپ هپ را با بلوک های متعدد حافظه حاوی داده های مهاجم پر می کند.
- داده های اسپری شده با یک سورتمه NOP که منجر به بار اکسپلویت می شود، ساختار یافته است.
- اگر یک باگ قابل بهره برداری وجود داشته باشد، اجرا می تواند به یک آدرس حافظه دلخواه هدایت شود.
- با توجه به حضور گسترده داده های اسپری شده، احتمال زیادی وجود دارد که این تغییر جهت منجر به بار مهاجم شود.
- سپس محموله اجرا می شود و نتیجه مطلوب را در اختیار مهاجم قرار می دهد که اغلب سیستم را از راه دور کنترل می کند.
ویژگی های کلیدی اسپری هیپ
اسپری هیپ با چندین ویژگی کلیدی مشخص می شود:
- افزایش نرخ موفقیت حمله: اسپری هیپ شانس بهره برداری موفقیت آمیز از آسیب پذیری تخریب حافظه را افزایش می دهد.
- دستکاری حافظه: وضعیت حافظه فرآیند را برای تسهیل اجرای کد دلخواه دستکاری می کند.
- قابل بهره برداری در محیط های مختلف: اسپری هیپ را می توان در محیط های متعددی مانند مرورگرهای وب یا برنامه های سرور اجرا کرد.
- اغلب با سایر اکسپلویت ها جفت می شود: اسپری هیپ معمولاً همراه با سایر اکسپلویت های آسیب پذیری برای رسیدن به هدف مورد نظر استفاده می شود.
انواع اسپری هیپ
تکنیک های اسپری هیپ را می توان بر اساس محیط بهره برداری و ماهیت تحویل بار طبقه بندی کرد.
تایپ کنید | شرح |
---|---|
اسپری هیپ جاوا اسکریپت | جاوا اسکریپت که در حملات مبتنی بر وب استفاده می شود، برای پرکردن پشته با بارهای مخرب استفاده می شود. |
اسپری فلاش هیپ | از Adobe Flash برای انجام اسپری، معمولاً در محیط های وب استفاده می کند. |
اسپری هیپ جاوا | از اپلت های جاوا برای اسپری استفاده می کند، روش دیگری برای حملات مبتنی بر وب. |
اسپری هیپ دقیق | اشیاء خاصی را در پشته مورد هدف قرار می دهد که در سوء استفاده های پس از استفاده رایگان مفید است. |
کاربردها، چالش ها و راه حل های اسپری هیپ
اسپری هیپ عمدتاً توسط مهاجمان در دنیای سایبری برای سوء استفاده از آسیب پذیری های نرم افزار استفاده می شود. این به طور گسترده در ایجاد بدافزار پیچیده و اجرای تهدیدات پایدار پیشرفته (APT) استفاده شده است.
چالش اصلی با اسپری پشته از منظر امنیتی، تشخیص و پیشگیری از آن است. راهحلهای امنیتی مبتنی بر امضای سنتی به دلیل ماهیت پویا، برای شناسایی حملات اسپری هیپ تلاش میکنند. به این ترتیب، راهحلهای مدرن بر تشخیص مبتنی بر رفتار و استفاده از تکنیکهای کاهش بهرهبرداری مانند تصادفیسازی طرحبندی فضای آدرس (ASLR) و پیشگیری از اجرای دادهها (DEP) متکی هستند.
مقایسه ها و ویژگی ها
با مقایسه اسپری هیپ با سایر تکنیک های مشابه مانند پشته محوری و برنامه نویسی بازگشت گرا (ROP)، اسپری هیپ به دلیل سادگی و میزان موفقیت بالا متمایز است. در حالی که هر یک از این تکنیکها دارای ویژگیها و موارد استفاده منحصربهفرد هستند، همه آنها تکنیکهایی برای سوءاستفاده از آسیبپذیریهای تخریب حافظه برای اجرای کد دلخواه هستند.
تکنیک | مشخصات |
---|---|
اسپری هیپ | ساده، برای افزایش میزان موفقیت سوء استفاده های تخریب حافظه استفاده می شود. |
Stack Pivoting | پیچیده، نشانگرهای پشته را به مکان دیگری هدایت می کند که اغلب در حملات سرریز بافر استفاده می شود. |
ROP | پیچیده، از قطعات کد موجود ("گجت ها") در حافظه استفاده می کند و برخی از کاهش های بهره برداری را دور می زند. |
چشم اندازها و فناوری های آینده
با اجرای تکنیکهای تصادفیسازی حافظه و پیشگیری از اجرا، اثربخشی اسپری پشته در طول زمان کاهش یافته است. با این حال، مهاجمان به تکامل روشهای خود ادامه میدهند و تکنیکهای پیچیدهتر و دقیقتر اسپری پشته را برای دور زدن این حفاظتها ایجاد میکنند. به عنوان مثال، پاشش به موقع (JIT) تکنیکی بود که برای دور زدن DEP با دستکاری کدهای کامپایل شده توسط JIT در حافظه ایجاد شد.
سرورهای پروکسی و اسپری هیپ
سرورهای پروکسی را می توان در زمینه حمله اسپری هیپ برای پنهان کردن منشأ حمله استفاده کرد و ردیابی منبع حمله را برای محققان دشوارتر می کند. از سوی دیگر، سرورهای پروکسی ایمن نیز میتوانند به عنوان یک لایه دفاعی عمل کنند، ترافیک مخرب شناخته شده را مسدود کرده یا سیستمهای کلاینت را از قرار گرفتن مستقیم در معرض محتوای بالقوه مضر جدا کنند.