امنیت

کدهای مخرب در سرورهای گوگل

یکی از استفاده هایی که از گوگل درایو می شه کرد، انتشار یک سایت استاتیکه. برای این کار باید کل فایل های مورد نیاز (html, javascript, css, etc) رو در فولدرهای مرتبط آپلود کنیم.

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

تصویری از کد مخرب

تصویری از کد مخرب

پیش از اینکه کد مخرب رو بررسی کنیم بذارید نگاهی به سایت قربانی بندازیم. در تصویر زیر می بینید که کد جاوا اسکریپتی که سورس آن در https://googledrive.com/host/{uniqueID} قرار دارد به سایت تزریق شده.

سایت قربانی

سایت قربانی

با چک کردن فایل جاوا اسکریت در سایت ویروس توتال می بینیم که از ۴۷ تست مختلف، ۱۷ تا که اکثر آنتی ویروس های معروف رو شامل می شه، کد رو مخرب تشخیص می دهند.

آنالیز کد جاوا اسکریپت

آنالیز کد جاوا اسکریپت

کدهای مخرب معمولا برای جلوگیری از شناسایی از شیوه های متفاوتی برای obfuscate یا مبهم کردن استفاده می کنند. برای بررسی کد از ابزار  Revelo (ابزاری است برای آنالیز کدهای جاوا اسکریپت) استفاده می کنیم و می تونیم پی ببریم که این کد کاربران رو به آدرس زیر منتقل می کنه:

وقتی این دامنه رو با سرویس مرورگر امن گوگل چک کنیم می بینیم که در آخرین بررسی ها ۱۲۱ اکسپلویت داشته و ۵۴ تروجان.

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

استفاده از ابزار فیدلر برای دنبال کردن مسیر هک

استفاده از ابزار فیدلر برای دنبال کردن مسیر هک

می بینید که با بازدید از صفحه www.{removed}/forum.php و فراخوانی کد جاوا اسکریپت، قربانی ابتدا به سایت توزیع کننده منتقل می شه و سپس به صفحه هایی که شامل کدهای اصلی برای هک کاربرهاست.

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

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

تزریق کد غیر قابل شناسایی

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

که با برگردوندش به کاراکترهای اصلی، به کد زیر می رسیم.

کد مخرب جدید

کد مخرب جدید

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

با بررسی بیشتر می شه فهمید که گوگل با بررسی فایل هایی که به صورت عمومی منتشر می شند و در صورت تشخیص مخرب بودن فایل، دسترسی به اون رو محدود می کنه هرچند فایل رو حذف نمی کنه.

7virus

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

این شیوه حمله از اعتماد وبمسترها به گوگل استفاده می کنه. به خاطر به کاربردن سرویس های گوگل مثل Analytics و AdSense در بسیاری از سایت ها، کمتر امکان داره که کسی به حضور کدی با آدرس گوگل در صفحه شک کنه.

منبع

استاندارد
امنیت

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

اول بگم که شاه کلید همون 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 ارائه شده وسیله گروه بلوباکس رو دانلود کنید. این نرم افزار گوشی شما رو چک میکنه و در صورت آسیب پذیر بودن بهتون اطلاع می ده. البته نرم افزارهای نصب شده رو هم چک می کنه.

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

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

منبع

استاندارد