چکیده
نشان میدهیم که نوشتن از راه دور برای سرریز بافر بدون داشتن یک کپی از هدف باینری یا کد منبع، در برابر خدماتی که پس از شکست مجدد راهاندازی میشوند ممکن است. این مسئله امکان هک خدمات اختصاصی باینری، یا سرورهای منبع باز گردآوری شده بهصورت دستی و نصب از منبع را فراهم میکند. تکنیک سنتی معمولا در یک فایل باینری خاص و توزیعشده، بهصورت یکسان عمل میکند که در آن هکر، محل ابزار مفید برای برنامهنویسی بازگشتگرا (ROP) را میداند. ROP کورکورانه (BROP)که در این مقاله ارائه شده است به جای حمله از راه دور، ابزارهای ROP کافی برای انجام یک سیستم فراخوانی Write و انتقال آسیبپذیر باینری بر روی شبکه را مییابد و پس از بهرهبرداری، میتواند با استفاده از تکنیک شناخته شدهای تکمیل شود. بنابراین با نفوذ در اطلاعات یک بیت براساس اینکه آیا یک فرایند شکست خورده است یا نه، عملیات را شروع میکند. BROP نیاز به آسیبپذیری پشته و یک سرویس دارد که پس از شکست شروع به اجرا کند. در این مقاله Braille پیادهسازی شده است، بهرهبرداری کاملا خودکار، که کمتر از 4000 درخواست (20 دقیقه) در برابر آسیبپذیری در nginx، yaSSL + MySQL و سرور اختصاصی را متحمل است. حمله در لینوکس 64 بیتی با فضای آدرسدهی تصادفی (ASLR)، بدون محفاظت از اجرای صفحه (NX) و پشته صورت میگیرد.
1. مقدمه
مهاجمان در سوءاستفاده بر روی هدف، با درجهای از اطلاعات مختلف بسیار موفق عمل کردهاند. نرمافزار متن باز دردسترس است زیرا مهاجمان میتوانند کد را برای یافتن آسیبپذیری پویش کنند. نرمافزار منبع بسته هک ممکن است برای ایجاد انگیزه در مهاجمان از طریق استفاده از تست fuzz و مهندسی معکوس به کار گرفته شود. تلاش برای درک محدودیتهای مهاجم، این سؤال را مطرح میکند که: آیا مهاجمان ممکن است تلاش خود برای رسیدن به هدف و سوء استفاده از خدمات اختصاصی را نه تنها برای منبع بلکه برای کد باینری گسترش دهند؟ در نگاه اول، ممکن است چنین به نظر برسد که دست نیافتنی است زیرا سوء استفاده به داشتن یک کپی از هدف دودویی برای استفاده در برنامهنویسی بازگشتگرا (ROP) نیاز دارد [1]. ROP لازم است، زیرا در سیستمهای مدرن، حفاظت غیراجرایی (NX) از حافظه تا حد زیادی مانع از تزریق کد حملات میشود. برای پاسخ به این سوال، با سادهترین آسیبپذیری ممکن شروع میکنیم: پشته سرریز میشود. متاسفانه این مسئله هنوز هم در نرمافزارهای محبوب (بهعنوان مثال، در nginx CVE-2013- 2028 [2]) قابل اعمال است. بنابراین تنها میتوان چنین حدس زد که باگها از نرمافزار اختصاصی دور بماند، که در آن منبع (و دودویی) تحت بررسی عمومی و دقیق متخصصان امنیت نیست. بااینحال، این امکان برای یک مهاجم فراهم است که از تست fuzz برای یافتن باگها از طریق رابطهای سرویس شناخته شده یا طراحی معکوس استفاده کند. در روش دیگر، مهاجمان میتوانند آسیبپذیریهای شناخته شده در کتابخانههای محبوب را (بهعنوان مثال، SSL یا تجزیهکننده PNG) مورد هدف قرار دهند که ممکن است در خدمات اختصاصی مورد استفاده قرار گیرند. مهمترین چالش این مسئله، توسعهی یک روش برای بهرهبرداری از این آسیبپذیریها است زمانیکه اطلاعات در مورد هدف دودویی محدود است.
یکی از مزیتهایی که اغلب حملات دارند این است که بسیاری از سرورها فرآیندهای خود را پس از یک شکست در جهت موفقیت دوباره مجددا راهاندازی میکنند. نمونههای قابل توجه عبارتند از، آپاچی، وب سرور nginx، سامبا و OpenSSH. اسکریپت Wrapper مانند mysqld_safe.sh یا daemon ها مانند systemd، این قابلیت را دارند. متعادلکنندههای بار بهطور فزایندهای شایع هستند و اغلب اتصالات را به تعداد زیادی از میزبانهابا پیکربندیهای یکسان برای اجرای فایلهای باینری برنامه توزیع میکنند. بدین ترتیب، موقعیتهای بسیاری وجود دارد که در آن یک مهاجم بهطور بالقوه برای ایجاد بهرهبرداری (تا تشخیص) بینهایت تلاش میکند.
این مقاله در نشریه آی تریپل ای منتشر شده و ترجمه آن با عنوان هک کورکورانه در سایت ای ترجمه به صورت رایگان قابل دانلود می باشد. جهت دانلود رایگان مقاله فارسی و انگلیسی روی عنوان فارسی (آبی رنگ) کلیک نمایید.
منبع: