بخشی از مقاله
چکیده
اندروید یکی از محبوبترین سیستم عاملهای تلفن همراه در جهان بشمار میرود. یکی از بزرگترین مزایای اندروید که به عنوان بزرگترین عیب آن نیز شناخته میشود، متنباز بودن این سیستم عامل است. سیستمعامل اندروید با چالشهای امنیتی مواجه است که میتواند مشکلاتی را برای کاربران به وجود بیاورد. یکی از این چالشها وجود تعداد زیادی برنامه مخرب است که می تواند به هر سیستمعاملی از جمله اندروید اسیب برساند. اولین راهکار برای مقابله با این نوع چالش، سفارشی سازی و ایجاد تغیراتی در نسخه رسمی اندروید به منظور افزایش امنیت است که به دلایلی که گفته میشود از آن صرفه نظر کردیم. در این مقاله ما راهکارهای مختلف دیگری مانند معماری امنیتی اندروید، سیاست امنیت پیشرفته لینوکس، نحوه تحلیل و تشخیص بدافزارها در برنامههای کاربردی به منظور مقابله با چالشها مورد بررسی قرار میدهیم.
کلمات کلیدی:اندروید، امنیت اندروید، برنامههای مخرب، تحلیل بدافزار
-1 مقدمه
گوشیهای موبایل در جهان امروز تقرباًیبه یک ضرور ت در زندگی روزمره تبدیل شدهاند. اگرچه هدف اولیه استفاده از تلفن همراه ارسال و دریافت تماس صوتی و پیام کوتاه بود اما با توجه به توسعه گوشیهای هوشمند این موارد کافی نیست. ویژگیهایی مانند صفحهنمایش با وضوحبالا، پردازندههای چندهستهای باسرعتِزیاد، دوربینهای باکیفیت از قابلیتهای معمول گوشیهای همراه بشمار میرود. در دسترس بودن اینترنت پرسرعت، گوشیهای همراه را وارد عرصههای جدیدی از فناوری کرده است. بااینحال، توجه به امنیت این دستگاهها از اهمیت بالایی برخوردار است.گوشی های هوشمند امروزی هردو جنبه اطلاعات و ارتباطات را به صورت بسیار مناسبی پوشش میدهند، بنابراین به منظور تامین امنیت آنها باید دو جنبه امنیت ارتباطات و اطلاعات مورد توجه قرار گیرد.
سادهترین راه برای دستیابی به اهداف ذکرشده، استفاده از یک سیستمعامل است که به صورت امن سفارشیسازی شده باشد. با اینحال، پیادهسازی روش فوق اغلب به دلیل طراحی این سیستمها برای دستگاههای خاص و در نتیجه هزینه بالای آنها، برای آحاد مردم از نظر اقتصادی به صرفه نیست.در این مقاله ما به بررسی نرمافزارهای مخربِ سیستمعامل اندروید میپردازیم و راهکارهای بهبود امنیت این سیستم عامل را در مقابل آن نرمافزارها بیان میکنیم. به منظور بهبود امنیت اندروید چند سناریو در نظر گرفته میشود؛ اولین سناریو سفارشیسازی و تغییراتی ناچیز در سیستمعامل رسمی اندروید به منظور افزایش امنیت بود که به دلایلی که در بالا گفته شد از آن صرفه نظر کردیم، در سناریوهای بعدی، معماری امنیتی اندروید، سیاست امنیت پیشرفته لینوکس و تجزیه و تحلیل برنامهها که منجر به بهبود امنیت سیستم عامل میشوند را معرفی میکنیم.
-2 نرمافزارهای مخرب
به هر برنامهای که وظیفهاش تخریب دادهها، سرقت اطلاعات یا دسترسی غیر مجاز به منابع سیستم است نرمافزار مخرب، گفته میشود..[5]کلمه بدافزار1 شامل همه طبقات نرمافزارهای مخرب مانند ویروس، تروجان، کرمها و جاسوسافزارها است. در این بخش، مهمترین نرمافزارهای مخرب را طبقهبندی کرده و از تعریف نرمافزارهای مخرب رایج مانند تروجان، کرم2، باتنت 3 - رباتی که با یک سری دستورات شبکه را کنترل میکند - صرف نظر میکنیم .
-1-2 ابزارهای مخرب تبلیغاتی
به نرمافزارهایی که با هدف نمایش تبلیغات روی انواع سیستم عاملها طراحی شدهاند گفته میشود. این برنامهها برای نمایش تبلیغات، مسیر جستجوهای اینترنتی را پس از جمع آوری دادههای بازاریابی در مورد فرد تغییر داده و او را به این سایتها متصل میکند. این نوع ابزارها شاید در ظاهر بی خطر بنظر رسند اما میتواند سرعت و کارایی پردازنده را کم و باعث کند شدن سیستم عامل شود.[7]علاوه بر این، نرمافزارهای مخرب شایعتری از این دسته وجود دارد، مانند باجاافزار4، بدافزاری که دستگاه یک کاربر را تا زمانی که کاربر پولی برای باز کردن دستگاه خود پرداخت نکرده، قفل میکند. نمونهای از این نوع ابزار مخرب، برنامه ScarePackage هست.
Chargeware -2-2
یک نوع از نرمافزارهای مخرب مورد استفاده برای کامپیوترهای رومیزی و دستگاه های تلفن همراه است. هدف این نوع برنامهها دستکاری دادههای کاربر بدون اطلاع آنها است که میتواند منجر به شرایط نامعلومی شود. این برنامهها اغلب با تصاویر مستهجن همراه هستند MSCapers .[8] نمونهای از چنین برنامههایی است. نکته مهم این است که اکثر برنامههای مخرب توسط فروشگاههای کاربردی کوچک تولید میشوند و از فروشگاه رسمی گوگل5 هیچگونه برنامه مخربی انتشار داده نمیشود.
-3-2 تهدیدهای پیشرفته مداوم
تهدیدهای پیشرفته مداوم، یک حمله سایبری است که توسط یک گروه هکرهای حرفهای راه اندازی شده و تعیین حمله و هماهنگکننده حمله به صورت شبکه ای برای یک دوره طولانی، مدیریت میکند. چنین حملاتی بیشتر برای دسترسی به هدف های داخلی سیستم به منظور سرقت اطلاعات، اسناد و مدارک با ارزش است. اقدامات امنیتی سنتی مانند فایرول ها می تواند جلوی نرم افزارهای مخرب قبلی را بگیرد اما توانایی متوقف کردن چنین حملاتی را ندارد.[1]
-3 راهکارهای مقابله
به منظور جلوگیری از اهدافی که برنامه های مخرب به دنبال دستیابی به آن هستند، راهکارهایی وجود دارد که در ادامه به برخی از آنها خواهیم پرداخت
-1-3 معماری امنیتی اندروید
سیستم عامل اندروید از یک نوع روش جعبه شن6 برای اجرای برنامههای خود استفاده میکند. هر نرمافزار در این سیستم عامل به یک کاربر جدا متصل شده و دارای یک شناسه منحصربهفرد برای کاربران و گروه مرتبط با آن است. به بیان دیگر معماری امنیتی این سیستم عامل، در درجه اول متکی به کنترل دسترسی اختیاری7 است درحالیکه تعیین کنترل دسترسی به دادهها در اختیار صاحب دادهها است. بنابراین، مدل امنیتی اندروید بر اساس کاربرد جعبه شن و محصورسازی است که توسط هسته لینوکس و از طریق شناسایی کاربر و گروهها انجام میشود.[2]یک برنامه در حوزه کاربری مشخص مربوط به خود اجرا میشود و یک منطقه جدا از فضای ذخیرهسازی عمومی برای ذخیره دادههای خصوصی خود در نظر میگیرد.
در کنار استفاده از جعبه شن ارائهشده توسط هسته لینوکس، سیستمعامل نیز از یک مدل مجوزدهی بخصوصی استفاده میکند. این مدل اطمینان حاصل میکند که تنها برنامههای کاربردی با مجوزهای لازم میتوانند از منابع حیاتی سیستم و منابع دیگر برنامهها استفاده کنند. منابع سیستم مانند دوربین، GPS، Wi-Fi جز منابع حیاتی بشمار میرود و یک برنامه کاربردی برای استفاده از این منابع نیاز به مجوزهای لازم دارد. بهطور مثال، زمانی که یک برنامه قصد دسترسی به منابع دیگر برنامهها را دارد، باید مجوزهای لازم برای این کار را داشته باشد.معماری اندروید رویههایی تعریف میکند که یک برنامه میتواند با دیگر برنامهها در خارج از جعبه شن ارتباط برقرار کند. این ارتباط امن، بین برنامههای کاربردی با استفاده از رویه ارتباط بین فرآیند8 انجام میشود. رویه اصلی ارتباط بین فرآیندها از طریق اهداف9 و فراخوانی از راه دور10 است.
یکی از مسائل اصلی درمورد مجوزدهی اندروید، بدین صورت است که یک کاربر قبل از نصب نرمافزار باید مجوزهایی را که نرمافزار درخواست میکند، تأیید کند. در حال حاضر، انتخاب بهصورت تأیید یا رد مجوزهای خاص برنامههای کاربردی حداقل در نسخه اصلی و رسمی اندروید ممکن نیست. همچنین برنامههای کاربردی نمیتوانند مجوزهای اضافی را در زمانی بعد درخواست کنند، بنابراین توسعهدهندگان نرمافزار انتخاب دیگری جز درخواست تمام مجوزهای لازم در طول نصب را ندارند. البته این امر باعث میشود حتی برنامههای قانونی نیز مشکوک به نظر رسند، چراکه آنها گاهی اوقات نیاز غیرمنتظرهای به مجوزها دارند و این امر برای کاربران دشوار است که برنامههای کاربردی مخرب را قبل از نصب شناسایی کنند.
6 Sandboxing - محیطی امن که برنامه را از دستیابی یا تغییر حافظه یا فضای دیسک خارج از مجوزهای خاص آن حفاظت میکند - بهعنوانمثال، یک بازی ممکن است به اطلاعات تماس کاربر درخواست دسترسی کند؛ این درخواست میتواند برای کاربری که میخواهد این بازی را نصب کند بسیار مشکوک به نظر رسد، اما در واقع توسعهدهنده بازی از این مجوز برای یافتن دوستانی که بازی را انجام میدهند استفاده و پیشنهاد کرده که با یکدیگر بازی کنند. کاربر نمیتواند مطمئن شود که بازی این اطلاعات را برای یکی از ویژگیهای قانونی در اینترنت و یا برای به اشتراکگذاری در اینترنت نیاز دارد. روش بهتر این است که در طول نصب، تنها مجوزهای عمومی مورد نیاز درخواست شده و سایر مجوزها، زمانی که قصد استفاده از آنها وجود دارد، درخواست شوند.
-2-3 سیاست امنیت پیشرفته لینوکس برای اندروید
امنیت پیشرفته لینوکس برای اندروید یک پروژه است که توسط آژانس امنیت ملی امریکا1 بهمنظور شناسایی و رفع شکافهای مهم در امنیت این سیستم عامل آغاز شد. طرح اولیه این پروژه، استفاده از امنیت پیشرفته لینوکس 2 در اندروید بود، اما چندین توسعه خاص در طول زمان به این سیستم سیستم عامل اضافه شد. امنیت پیشرفته لینوکس بر کنترل دسترسی اجباری3 معرفیشده که بر اساس یک سیستم گسترده امنیتی عمل میکند.[3]اینیک سیاست امنیتی است که تمام فرایندهای در حال اجرا، حتی فرآیندهای با دسترسی ریشه4 را وادار میکند که از این سیاست پیروی کنند. به صورت پیشفرض امنیت پیشرفته لینوکس کلیه دسترسیها را ممنوع فرض میکند به این معنی که تمامی موارد به صراحت مجاز نبوده و بهطور خودکار اجازه دسترسی نمیدهد.[3]
امنیت پیشرفته لینوکس در اندروید 4.3 سیاست لغو وارد شده اما اجرا نمیشدند. در اندروید 4.4 در مجموعهای از حوزههای بسیار مهم اجرا شده و درنهایت، با شروع اندروید 5.0 امنیت پیشرفته لینوکس در تمامی حوزهها اجرا شد.[4] یکی از مهمترین مزایای امنیت پیشرفته لینوکس در اندروید محصورسازی قوی و جعبه شن برنامهها است، بدین معنی که برنامه های مخربی که کاربران ممکن است روی دستگاههای خود نصب کنند، آسیب کمتری به دیگر برنامهها، یا به خود سیستم عامل میرساند. بااینحال، به آن معنا هم نیست که برنامهها نمیتوانند از مجوزی که به آنها اعطاشده سو استفاده کنند. در زیر به برخی از برنامه هایی که ازاین نوع امنیت استفاده میکنند میپردازیم.
-1-2-3 برنامه AppOps
برنامهای که به کاربران اجازه میدهد بهصورت انتخابی مجوزدهی نرمافزار را کنترل کنند نرمافزار AppOps است که در اندروید 4.3 منتشر شد. AppOps برنامهای مخفی بوده که به کاربران اجازه لغو مجوزهای دسترسی به برنامههای نصبشده را میدهد.چند تصویر از برنامه AppOps در شکل 1 نشان داده شده است. اولین تصویر نشان دهنده این است چه برنامههایی از مجوز Messaging استفاده میکنند، در دومین تصویر مجوزهای برنامه Messenger نشان داده شده که به کاربران اجازه میدهد، بهصورت انتخابی دسترسی به هرکدام از مجوزها را لغو کنند. تصویر سوم مربوط به اجرا با دسترسی ریشه، بروزرسانی و یا حذف برنامه AppOps است.
EnterpriseOps -2-2-3
یک فایل پیکربندی برای امنیت پیشرفته لینوکس است که اجازه اقدامات مهمی همچون کنترل مجوزدهی به برنامهها را میدهد. به بیان دیگر EOPS یک فایل پیکربندی برای تعریف یک سیاست است که به طور صریح میتواند مجوز خاصی که به یک گروه از برنامههای نصبشده داده شده را لغو کند.این فایل پیکربندی متکی بر کدهای توسعهیافته برنامه AppOps بوده و مشکل اصلی آن ناقص بودن کدهای AppOps است. هنگامیکه یک مجوز لغو میشود، یک مجموعه از دادههای خالی میبایست به تماسگیرنده بازگشته تا اطمینان حاصل شود که برنامههای کاربردی همچنان بهدرستی کار میکنند. اندروید کد - بخشی که مجوزها را مدیریت میکند - در حال حاضر نمیتواند یک مجموعه داده خالی را پشتیبانی کند؛ به همین دلیل، ممکن است برخی از برنامهها متوقف شوند.
-3-2-3 سیاستهای سفارشی
بهطورپیشفرض سیاست امنیت پیشرفته لینوکس بر روی دستگاهی با سیستمعامل اندروید وجود دارد، اما میتوان سیاستهایی ایجاد و با استفاده از ابزار SEAdmin بهعنوان بخشی از پروژه امنیت پیشرفت اندروید به دستگاه اضافه کرد. برای قرار دادن یک سیاست جدید به یک دستگاه، کافی است فایل بستهای نوشته شده به کارت حافظه دستگاه کپی شود و برنامه SEAdmin را اجرا کرد. پسازآن، نرمافزار سیاست جدید را شناسایی و نصب میکند.[3]