بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

همانطور که می دانید، کد اجرا شده در enclave به طور جدی در عملکرد آن محدود است. نمی تواند تماس های سیستمی برقرار کند. نمی تواند عملیات I/O را انجام دهد. آدرس پایه بخش کد برنامه میزبان را نمی داند. نمی تواند jmp یا کد برنامه میزبان را فراخوانی کند. هیچ ایده ای در مورد ساختار فضای آدرس که بر برنامه میزبان حاکم است (برای مثال، کدام صفحات نقشه برداری شده اند یا چه نوع داده ای در آن صفحات قرار دارد) ندارد. نمی تواند از سیستم عامل بخواهد که بخشی از حافظه برنامه میزبان را به آن نگاشت کند (مثلاً از طریق /proc/pid/maps). تلاش های ساده لوحانه برای خواندن کورکورانه یک منطقه حافظه دلخواه برنامه میزبان، نه به ذکر تلاش برای نوشتن، دیر یا زود (به احتمال زیاد اولی) منجر به خاتمه اجباری برنامه محصور می شود. این زمانی اتفاق می افتد که منطقه فضای آدرس مجازی درخواست شده توسط enclave برای برنامه میزبان غیرقابل دسترسی باشد.

با توجه به چنین واقعیت های خشن، آیا یک ویروس نویس می تواند از SGX برای دستیابی به اهداف مخرب خود استفاده کند؟

- هک برای بررسی آدرس ها برای دیدن اینکه آیا می توان آنها را خواند
- هک کردن آدرس ها برای قابلیت نوشتن
- هک برای تغییر مسیر جریان کنترل
– سه هک ذکر شده در بالا چه چیزی به شرور می دهد؟
- چگونه شرور از این هک ها برای ایجاد ranzowari استفاده می کند

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

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

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

ما چند هک را به شما نشان خواهیم داد که مهاجمان برای غلبه بر محدودیت‌های توضیح داده شده در بالا برای استفاده از SGX برای اهداف مخرب خود استفاده می‌کنند: حملات ROP. یا برای اجرای کد دلخواه پنهان شده به عنوان یک فرآیند برنامه میزبان (شبیه به فرآیند توخالی، که اغلب توسط بدافزار استفاده می شود)، یا برای پنهان کردن یک بدافزار آماده (برای نجات بدافزار آن از آزار و اذیت آنتی ویروس ها و سایر مکانیسم های دفاعی).

هک برای بررسی آدرس ها برای دیدن اینکه آیا می توان آنها را خواند

از آنجایی که Enclave نمی داند کدام محدوده از فضای آدرس مجازی برای برنامه میزبان قابل دسترسی است، و از آنجایی که enclave هنگام تلاش برای خواندن یک آدرس غیرقابل دسترس مجبور به پایان می شود، مهاجم با وظیفه پیدا کردن راهی برای خطا مواجه می شود. فضای آدرس را با تساهل اسکن کنید. راهی برای ترسیم آدرس های مجازی موجود پیدا کنید. شرور این مشکل را با استفاده نادرست از فناوری TSX اینتل حل می کند. از یکی از عوارض جانبی TSX استفاده می کند: اگر تابع دسترسی به حافظه در یک تراکنش TSX قرار گیرد، استثناهای ناشی از دسترسی به آدرس های نامعتبر توسط TSX بدون دسترسی به سیستم عامل سرکوب می شوند. اگر تلاشی برای دسترسی به یک آدرس حافظه نامعتبر انجام شود، فقط تراکنش فعلی لغو می شود، نه کل برنامه محصور. که TSX به یک منطقه اجازه می دهد تا به طور ایمن به هر آدرسی از داخل یک تراکنش دسترسی داشته باشد - بدون خطر سقوط.

اگر آدرس مشخص شده موجود است برنامه میزبان، تراکنش TSX اغلب موفق است. در موارد نادر، ممکن است به دلیل تأثیرات خارجی مانند وقفه‌ها (مانند وقفه‌های زمان‌بندی)، حذف حافظه پنهان، یا تغییر همزمان یک مکان حافظه توسط چندین فرآیند، از کار بیفتد. در این موارد نادر، TSX یک کد خطا را برمی‌گرداند که نشان می‌دهد خرابی موقتی است. در این موارد، فقط باید تراکنش را مجدداً راه اندازی کنید.

اگر آدرس مشخص شده در دسترس نیست برنامه میزبان، TSX استثنایی را که رخ داده است سرکوب می کند (سیستم عامل اطلاع داده نمی شود) و تراکنش را لغو می کند. یک کد خطا به کد enclave برگردانده می شود تا بتواند به این واقعیت که تراکنش لغو شده است واکنش نشان دهد. این کدهای خطا نشان می دهد که آدرس مورد نظر برای برنامه میزبان در دسترس نیست.

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

این دستکاری TSX از داخل محصور یک ویژگی خوب برای شرور دارد: از آنجایی که اکثر شمارنده های عملکرد سخت افزار در زمان اجرای کد enclave به روز نمی شوند، ردیابی تراکنش های TSX اجرا شده در داخل محصور غیرممکن است. بنابراین، دستکاری مخرب TSX برای سیستم عامل کاملاً نامرئی باقی می ماند.

علاوه بر این، از آنجایی که هک فوق متکی به هیچ تماس سیستمی نیست، نه می توان آن را شناسایی کرد و نه تنها با مسدود کردن تماس های سیستمی از آن جلوگیری کرد. که معمولا در مبارزه با شکار تخم مرغ نتیجه مثبت می دهد.

شرور از هک توضیح داده شده در بالا برای جستجوی کد برنامه میزبان برای ابزارهای مناسب برای تشکیل زنجیره ROP استفاده می کند. در عین حال، او نیازی به بررسی هر آدرسی ندارد. کافی است از هر صفحه از فضای آدرس مجازی یک آدرس را بررسی کنید. بررسی تمام 16 گیگابایت حافظه حدود 45 دقیقه طول می کشد (در i7-6700K اینتل). در نتیجه، شرور لیستی از صفحات اجرایی را دریافت می کند که برای ساخت زنجیره ROP مناسب هستند.

هک برای جستجوی آدرس ها برای قابلیت نوشتن

برای انجام یک نسخه محصور از یک حمله ROP، مهاجم باید بتواند مناطق حافظه بلااستفاده قابل نوشتن برنامه میزبان را جستجو کند. مهاجم از این مکان های حافظه برای تزریق یک قاب پشته جعلی و تزریق یک بار (شل کد) استفاده می کند. نکته پایانی این است که یک enclave مخرب نمی‌تواند از برنامه میزبان بخواهد تا حافظه را برای خود اختصاص دهد، اما در عوض می‌تواند از حافظه‌ای که قبلاً توسط برنامه میزبان تخصیص داده شده است سوء استفاده کند. البته اگر او بتواند چنین مناطقی را بدون فروپاشی منطقه بیابد.

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

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

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

این دستکاری TSX دارای ویژگی دیگری است که برای شرور خوب است (علاوه بر عدم امکان ردیابی از طریق شمارنده های عملکرد سخت افزار): از آنجایی که تمام دستورات نوشتن حافظه فقط در صورت موفقیت آمیز بودن تراکنش انجام می شوند، وادار کردن تراکنش به تکمیل، تضمین می کند که سلول حافظه کاوش شده بدون تغییر باقی می ماند.

هک برای تغییر مسیر جریان کنترل

هنگام انجام یک حمله ROP از یک محیط محصور - بر خلاف حملات ROP سنتی - مهاجم می تواند کنترل RIP را بدون سوء استفاده از هرگونه باگ در برنامه مورد حمله (سرریز بافر یا چیزی شبیه به آن) به دست آورد. یک مهاجم می تواند مستقیماً مقدار RIP ثبات ذخیره شده در پشته را بازنویسی کند. به ویژه، می تواند ارزش این ثبات را با زنجیره ROP خود جایگزین کند.

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

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

سه هک ذکر شده در بالا چه چیزی به شرور می دهد؟

(1) اول، از طریق محاصره مخرب هک برای بررسی آدرس ها برای دیدن اینکه آیا می توان آنها را خواند، – برنامه میزبان را برای ابزارهای ROP قابل سوء استفاده جستجو می کند.

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

(2) سپس توسط هک برای جستجوی آدرس ها برای قابلیت نوشتن، - یک محصور مخرب مناطقی را در حافظه برنامه میزبان شناسایی می کند که برای تزریق بار مناسب هستند.

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

(3) سپس، Enclave یک زنجیره ROP از ابزارهای کشف شده در مرحله (1) ایجاد می کند و این زنجیره را به پشته برنامه میزبان تزریق می کند.

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

(4) در نهایت، هنگامی که برنامه میزبان با زنجیره ROP ایجاد شده در مرحله قبل مواجه می شود، بارگذاری مخرب شروع به اجرا می کند - با امتیازات برنامه میزبان و توانایی برقراری تماس های سیستمی.

چگونه یک شرور از این هک ها برای ایجاد ranzowari استفاده می کند

پس از اینکه برنامه میزبان کنترل را از طریق یکی از ECALL ها به محصور منتقل می کند (بدون شک به مخرب بودن این enclave)، محصور مخرب فضای خالی را در حافظه برنامه میزبان برای تزریق کد جستجو می کند (به عنوان فضاهای آزاد آن توالی سلول ها را در نظر می گیرد. که با صفر پر شده است). سپس از طریق هک برای بررسی آدرس ها برای دیدن اینکه آیا می توان آنها را خواند, – Enclave صفحات اجرایی را در برنامه میزبان جستجو می کند و یک زنجیره ROP ایجاد می کند که یک فایل جدید به نام "RANSOM" در فهرست فعلی ایجاد می کند (در یک حمله واقعی، Enclave فایل های کاربر موجود را رمزگذاری می کند) و یک پیام باج را نمایش می دهد. در همان زمان، برنامه میزبان ساده لوحانه معتقد است که محصور به سادگی دو عدد را اضافه می کند. این در کد چگونه به نظر می رسد؟

برای سهولت درک، اجازه دهید برخی از یادداشت ها را از طریق تعاریف معرفی کنیم:

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

ما مقادیر اصلی رجیسترهای RSP و RBP را ذخیره می‌کنیم تا عملیات عادی برنامه میزبان را پس از اجرای بارگذاری بازیابی کنیم:

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

ما به دنبال یک قاب پشته مناسب هستیم (به کد بخش "هک برای تغییر مسیر جریان کنترل" مراجعه کنید).

پیدا کردن ابزارهای ROP مناسب:

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

پیدا کردن مکانی برای تزریق محموله:

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

ما یک زنجیره ROP می سازیم:

بدافزار SGX: چگونه تبهکاران از فناوری جدید اینتل برای اهدافی غیر از آنچه که برای آن طراحی شده است سوء استفاده می کنند

اینگونه است که فناوری SGX اینتل که برای مقابله با برنامه های مخرب طراحی شده است، توسط شرورها برای دستیابی به اهداف مخالف مورد سوء استفاده قرار می گیرد.

منبع: www.habr.com

اضافه کردن نظر