امنیت

ضعف امنیتی شاه کلید اندروید

اول بگم که شاه کلید همون master key خودمونه 🙂

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

اگر دستی در برنامه نویسی اندروید (و یا جاوا) داشته باشید می دونید که فایلهای apk در واقع یه سری فایل و فولدره که به صورت فشرده شده در اختیار کاربر قرار می گیره. شما می تونید با نرم افزارهایی مثل winrar و winzip محتویات پکیج رو ببینید.

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

با یک مثال جلو می ریم. فرض کنید اپلیکیشنی به اسم MyFirstApp.apk رو روی شبیه ساز اندروید نصب می کنیم (می تونه هر نرم افزاری باشه).

نصب اپ روی امولاتور

نصب اپ روی امولاتور

این نرم افزار مثالی روکه با نرم افزارهای آرشیو باز بکنیم، چیزی مثل عکس زیر رو خواهیم دید:

محتویات فایل apk

محتویات فایل apk

همونطور که توی عکس بالا می بینید، درون پکیج یک فولدر به اسم META-INF وجود داره که درون اون چکسام های امضا شده کلیه فایل های پکیج موجوده. فایل مانیفست در فولدر اصلی هم اسم فایل های موجود در پکیج و اطلاعات خلاصه اونها رو در خودش داره. اگر هر کدوم از فایل های پکیج رو تغیر بدید، اندروید از نصب شدن اپ جلوگیری می کنه. اندروید برای این کار از کتابخونه آرشیو جاوا برای گسترش فایل apk و سپس مقایسه و تایید چکسام کلیه فایل های بسته استفاده می کنه.

محتویات فولدر متا اینف

محتویات فولدر متا اینف

خب برای مثال بریم و تصویر موجود در فولدر MyFirstApp.zip\res\drawable-hdpi که آیکن نرم افزاره رو تغییر بدیم و بعد سعی کنیم که نصبش کنیم.

جلوگیری اندروید از نصب شدن اپ

جلوگیری اندروید از نصب شدن اپ

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

فایل های هم نام در یک فولدر

فایل های هم نام در یک فولدر

حالا این فایل apk رو روی سیستم نصب می کنیم. می تونیم ببینیم که بدون مشکل نصب می شه و حتی آیکن نرم افزار نصب شده هم همون فایل جدیدیه که هکر وارد پکیج کرده.

نرم افزار هک شده که با موفقیت نصب شده

نرم افزار هک شده که با موفقیت نصب شده

چطور این اتفاق افتاد؟
مشکل اینجاست که اندروید ورژن قدیمی فایل رو چک می کنه و امضاش رو تایید می کنه ولی نصاب جدیدترین فایل رو نصب می کنه. بنابراین فایل سالم وسیله اندروید چک می شه و اپ تایید می شه ولی زمان نصب، فایلی که هکر وارد کرده نصب می شه.

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

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

تغییرنام کرنل

تغییرنام کرنل

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

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

همچنین می تونید از گوگل پلی نرم افزار Blue Box Security Scanner ارائه شده وسیله گروه بلوباکس رو دانلود کنید. این نرم افزار گوشی شما رو چک میکنه و در صورت آسیب پذیر بودن بهتون اطلاع می ده. البته نرم افزارهای نصب شده رو هم چک می کنه.

چک سیستم برای این ضعف امنیتی

چک سیستم برای این ضعف امنیتی

منبع

Standard