وابستگی سازمانها و کسب و کارها به ارائه خدمات برخط، روز به روز در حال فزونی است و رصد روندهای فناوری در سالهای اخیر حاکی از آن است که خدمات ارائه شده بر بستر گوشی های تلفن همراه و به ویژه اپلیکیشنهای موبایلی با سرعتی چشمگیر در حال فراگیر شدن است؛ بگونه ای که تقریباً تمامی خدمات مورد نیاز شهروندان (اعم از خدمات مالی، اجتماعی، آموزشی و قضایی) توسط اپلیکیشنهای موبایلی در دسترس قرار گرفته است.
گسترش روزافزون استفاده از اپلیکیشنهای موبایلی در زندگی روزمره کاربران واقعیتی اجتناب ناپذیر است، اما در کنار آن افزایش تهدیدات سایبری نیز موضوعی غیر قابل انکار است که باید برای محافظت در برابر آنها چاره اندیشی کرد. لذا با توجه به این فراگیری، ضرورت دارد که سازمانها از اطلاعات حیاتی خود و ذینفعانشان محافظت کنند. این محافظت جدا از جنبه های فیزیکی، نیازمند ارزیابی های جامع دیگری نیز هست تا صاحبان کسب و کارها را از بابت امنیت در برابر نفوذهای غیر قانونی، مطمئن سازد. این اطلاعات میتوانند در زمینههای مالی، تحقیق و توسعه، پرسنلی، قانونی و امنیتی باشند. یکی از انواع ارزیابیهای امنیتی، آزمون نفوذپذیری اپلیکیشنهای موبایلی میباشد که در دسترس کاربران سازمانها و ارگانهای مختلف میباشد. امنیت اپلیکیشنهای موبایلی مانند امنیت شبکه و سرویسهای پایه IT و امنیت اپلیکیشنهای تحت وب، جهت اطمینان بخشی به مشتریان و ذینفعان، حائز اهمیت ویژه ای است.
توجه به ابعاد امنیتی و پوشش مخاطرات اپلیکیشنهای موبایلی، یک ضرورت اجتناب ناپذیر است که متأسفانه از سوی مالکان و تیمهای توسعه دهنده این اپلیکیشنها کمتر مورد توجه قرار می گیرد؛ به این مفهوم که متأسفانه صاحبان و توسعه دهندگان این برنامه ها، تمرکز اصلی خود را به قابلیتهای عملیاتی برنامه معطوف کرده و کمتر به موارد امنیتی آنها توجه می کنند. اگرچه هم مالکان و هم کاربران این برنامه ها به اهمیت امنیت این برنامه ها واقف هستند، اما متأسفانه توجه صاحبان آنها متناسب با این میزان اهمیت نیست.
بسیاری از طراحان و برنامه نویسان اپلیکیشنهای موبایلی، بهویژه توسعهدهندگان حوزه اپلیکیشنهای بانکداری و پرداخت بر این باورند که با توجه به محدود بودن حجم و کد برنامه های موبایلی ایشان و انجام بسیاری از فعالیتها و فرآیندها در سمت سرور، عملا آسیبپذیری اپلیکیشن کاهش یافته و امنیت برنامه موبایل تا حد زیادی حفظ می گردد. اگرچه اطمینان از امنیت در سمت سرور یک ضرورت اجتناب ناپذیر است، این موضوع نباید منجر به ایجاد این تفکر در ذهن توسعه دهندگان گردد که برنامههای موبایلی در مقابل کلیه حملات مهاجمین مصون هستند و یا اصلا هک نمیشوند.
اپلیکیشن می تواند به عنوان یک راه نفوذ برای دستیابی و مورد مخاطره قرار دادن اطلاعات سمت سرور مورد سوءاستفاده قرار گیرد. به عنوان مثال در حملات دسته هوکینگ (Hooking) مهاجم سعی می کند عکس العملها و نوع رفتار اپلیکیشن را در مواجهه با محرک ها و حالات مختلف را بررسی نموده و با کشف نقاط ضعف احتمالی، از آن برای حمله استفاده نماید. بدین ترتیب فریم ورک های هوکینگ نظیر( Frida, Xposed) به مهاجمان این امکان را میدهند تا با دسترسی به اطلاعات حافظه و بررسی آن، رفتار و نحوه برقراری ارتباط میان کلاینت و سرور را مورد مطالعه قرار دهند. در مرحله بعدی، مهاجم می تواند با استفاده از همان فریم ورکها اقدام به تزریق و ارسال کدهای غیرمجاز به سمت سرور نماید و موجب حملات DOS شده و یا رفتاری غیرطبیعی را در آن سمت اجرا نماید.
یا اپلیکیشنهایی که درهم سازی نمی شوند و یا از رمز نگاری استفاده نمی کنند، به راحتی می توانند توسط مهاجمان دستکاری شده و نسخه غیراصل (Fake) از طرق مختلف در اختیار کاربران جدید قرار گیرد. بدین ترتیب مهاجمان می توانند کدهای دستکاری شده خود که عمدتاً حاوی بدافزارها و جاسوس افزارها (Spyware & Malware) هستند را در برنامه شما قرار داده و از این طریق به اطلاعات کاربر دست پیدا کنند.
نفوذگران بیش از همیشه به دنبال یافتن اپلیکیشنهای آسیب پذیر و سوء استفاده از آنها (با مهندسی معکوس (Reverse Engineering) برنامه و یا استفاده از آسیب پذیری های حین اجرا (Runtime)) هستند و به همین دلیل نرخ تراکنشهای تقلبی، به شدت رو به فزونی است. هر روز بد افزارهای جدیدی به بازار روانه می شود و اپلیکیشنهای بیشتری را هدف قرار می دهد. آسیب پذیرترین اپلیکیشنهای موبایلی را می توانید اینجا بررسی کنید. نتایج یک پژوهش میدانی نشان می دهد که بسیاری از اپلیکیشنهای مالی و مرتبط با صنعت پرداخت، آسیب پذیر هستند.
بصورت کلی دو دسته آسیب پذیری برای اپلیکیشنهای موبایلی شناخته شده است که توسط نفوذگران به تناوب مورد استفاده قرار می گیرد:
آسیب پذیری های ایستا (استاتیک)
در این نوع از تهدیدات، مهاجم تلاش می کند با استفاده از مهندسی معکوس و در حالت آفلاین، کد برنامه را استخراج نماید. به این ترتیب با دسترسی به متن برنامه، نفوذگر قادر خواهد بود اطلاعات حساس سازمانی یا داده های حساس مشتریان (مانند شماره ملی، شماره حساب یا کارت بانکی) را بدست آورد. این اطلاعات می تواند برای برنامه ریزی و اجرای عملیات نفوذ و تقلب (Fraud) در مراحل بعدی مورد استفاده قرار گیرد. همچنین مهاجمان با استخراج متن برنامه، می توانند نحوه عملکرد برنامه و نوآوری های آنرا شناسایی کرده و به رقبای تجاری بفروشند.
آسیب پذیری های زمان اجرا (پویا یا دینامیک)
برای پیاده سازی این نوع از تهدیدات سایبری، معمولاً در یک محیط شبیه ساز نصب شده و با بررسی نحوه عملکرد برنامه و شنود و تغییر ترافیک آن در زمان اجرا، اطلاعات مهم و حیاتی استخراج می گردد. بعنوان مثال نفوذگر ممکن است با دسترسی به ترافیک بخشی از برنامه که مسؤل بررسی صحت گواهینامه امنیتی است، وضعیت آن را تغییر داده و دسترسی های غیر مجاز را، مجاز نماید.
ارزیابی امنیتی (تست نفوذ) اپلیکیشنهای موبایلی – به ویژه قبل از انتشار آن- این فرصت را فراهم می کند که آسیب پذیری های احتمالی آنها پیش از آنکه توسط مهاجمان مورد سوء استفاده قرار گیرد، توسط تیمهای امین شناسایی شده و در فرآیند امن سازی، موارد آسیب پذیری رفع شود.
برای ارزیابی امنیتی اپلیکیشنهای موبایلی متدولوژیهای مختلفی وجود دارند که در میان آنها OWASP کاملترین گزینه است.
هدف از انجام ارزیابی اپلیکیشنهای موبایلی، بررسی وضعیت امنیتی نرم افزارهاست. در ارزیابیهای تیم آشنا ایمن تلاش میشود تمام مشکلات و آسیبپذیریهای امنیتی برنامه شناسایی شود تا راه حلهای مناسب ارائه و راهکارهای مناسب اتخاذ گردد.
برای این منظور اپلیکیشن موبایلی (که در بستر اندروید و یا iOS ارائه شده است) بصورت همه جانبه و در تمام لایهها و توسط چندین نرمافزار و اسکریپتهای تخصصی آزمایشگاه آشنا ایمن مورد ارزیابی قرار میگیرند. همچنین علاوه بر آنها، از تکنیکهای private نیز برای افزایش صحت ارزیابی استفاده میشود.
بر اساس متدولوژی OWASP تستهای اپلیکیشنهای اندرویدی در 9 زیرمجموعه به شرح زیر دسته بندی می شوند:
- معماري، طراحي و مدل سازي تهديد (Architecture, design and threat modelling)
- تست فضاي ذخيرهسازي و حريم خصوصي (Data Storage and Privacy)
- تست رمزنگاري (Cryptography)
- تست احراز هويت و مديريت نشست (Authentication and Session Management)
- تست ارتباطات تحت شبکه (Network Communication)
- تست تعامل پلت فرم (Platform Interaction)
- تست کيفيت کد و ساخت تنظيمات (Code Quality and Build Settings)
- تست مهندسی معکوس
- منطق کسب و کار
هر یک از این حوزه ها خود شامل عناوین ارزیابی های مختلفی هستند که تیم ارزیاب آنها را مورد بررسی قرار داده و نتیجه این ارزیابی ها در جدولی مشابه جدول زیر، خلاصه می شود:
ردیف | حوزه آسیبپذیری | عنوان آسیب پذیری | وضعیت | درجه اهمیت | MSTG ID |
معماري، طراحي و مدل سازي تهديد | |||||
1 | بررسی عدم امکان عملیات انگشتنگاری و شناسایی سرویسها | Passed | WSTG-INFO-02 | ||
تست فضاي ذخيرهسازي | |||||
2 | نشت اطلاعات کاربران به واسط سوم | Failed | Medium | MSTG-STORAGE-4 | |
3 | بررسی نشت اطلاعات حساس در لاگ های برنامه | Passed | — | MSTG-STORAGE-3 | |
4 | بررسی اطلاعات حساس درScreenShot های خودکار تولید شده | Passed | — | MSTG-STORAGE-9 | |
5 | نشت اطلاعات در نسخه های پشتیبان | Passed | — | MSTG-STORAGE-8 | |
6 | ذخیره اطلاعات حساس سمت کاربر | Passed | — | MSTG-STORAGE-7 | |
7 | آسیبپذیری No Database Encryption | Passed | — | MSTG-STORAGE-1 and MSTG-STORAGE-2 | |
8 | آسیبپذیری Insecure shared preferences | Failed | High | MSTG-STORAGE-1 | |
تنظيمات رمزنگاری و محرمانگی | |||||
9 | کیفیت رمز نگاری مقادیر ذخیره شده | Passed | — | MSTG-CRYPTO-1 | |
10 | بررسی کیفیت تولید مقادیر تصادفی | Passed | — | MSTG-CRYPTO-6 | |
11 | آسیبپذیری در ساز و کار رمزنگاری اطلاعات | Passed | — | MSTG-CRYPTO-2 | |
تست احراز هویت و مدیریت نشست | |||||
12 | آسیبپذیری مدیریت نشست | Not Applicable | — | MSTG-AUTH-2 | |
13 | آسيبپذيري کنترل سطح دسترسی | Passed | — | WSTG-ATHZ-03 | |
14 | بررسی فرایند احرازهویت از طریق اثرانگشت | Passed | MSTG-AUTH-8 | ||
15 | تنطیمات شناسه احرازهویت کاربران و فرایند ورود و خروج | Not Applicable | — | MSTG-AUTH-4 | |
16 | سیاستهای مناسب برای انتخاب گذرواژه | Passed | — | MSTG-AUTH-6 | |
17 | بررسی فرایند تغییر و بازنشانی گذرواژه | Passed | — | MSTG-AUTH-5 | |
18 | آسیبپذیری مکانیزم احراز هویت | Passed | — | MSTG-ARCH-2 and MSTG-AUTH-1 | |
تست ارتباطات تحت شبکه | |||||
19 | بررسی پیاده سازی و امکان دور زدن سازوکار Certificate Pinning | Not Applicable | — | MSTG-NETWORK-4 | |
20 | آسيبپذيري رمزنگاری کانال ارتباطی | Not Applicable | — | MSTG-NETWORK-3 | |
21 | آسيبپذيري منع خدمت | Not Applicable | — | WSTG-APIT-01 WSTG-INPV-11 | |
تست تعامل پلت فرم | |||||
22 | بررسی آسیب پذیری اجرا نا امن کنترل های امنیتی در Webview | Passed | — | MSTG-PLATFORM-6 | |
23 | بررسی دسترسی های برنامه | Passed | — | MSTG-PLATFORM-1 | |
24 | بررسی آسیب پذیری Cross-Site Scripting | Not Applicable | — | MSTG-PLATFORM-2 | |
25 | آسيبپذيري مدیریت مناسب خطا | Not Applicable | — | MSTG-CODE-7 | |
26 | آسیبپذیری Sql Injection | Not Applicable | — | MSTG-PLATFORM-2 | |
تست کيفيت کد و ساخت | |||||
27 | کامپوننت های آسیب پذیر | Failed | Medium | MSTG-CODE-1 | |
28 | آسیب پذیری دسترسی های غیرمجاز | Failed | Medium | MSTG-CODE-2 | |
29 | بررسی کامپوننت های آسیب پذیر | Passed | — | MSTG-CODE-3 | |
30 | آسیبپذیری Android Plugin Protection is not present | Passed | — | MSTG-CODE-5 | |
تست مهندسی معکوس | |||||
31 | بررسی شناسایی ابزارهای مهندسی معکوس | Failed | High | MSTG-RESILIENCE-4 | |
32 | بررسی شناسایی استفاده از شبیه ساز | Passed | — | MSTG-RESILIENCE-5 | |
33 | آسیب پذیری فعال بودن قابلیت Debuggable | Passed | — | MSTG-RESILIENCE-2 MSTG-CODE-2 | |
34 | بررسی Root Detection | Failed | Medium | MSTG-RESILIENCE-1 | |
35 | بررسی Obfuscation | Failed | High | MSTG-RESILIENCE-9 | |
36 | بررسی جامعیت فایل و جلوگیری از دستکاری برنامه اندرویدی | Passed | — | MSTG-RESILIENCE-3 | |
منطق کسب و کار | |||||
37 | آسیبپذیری منطق کسب و کار | Passed | — | WSTG-BUSL-01 | |
38 | آسیبپذیری برشماری کاربران | Passed | — | WSTG-IDNT-04 | |
39 | بررسی حمله جستجوی فراگیر | Not Applicable | — | MSTG-ATHN-11 | |
در نهایت پس از انجام ارزیابی امنیتی بر روی اپلیکیشن، خروجی ارزیابی تیم تست نفوذپذیری در قالب گزارشی کامل شامل خلاصه مدیریتی و همچنین جزئیات فنی ارائه می شود.
در بخش خلاصه مدیریتی علاوه بر ارائه آماری ارزیابی های انجام شده و آسیب پذیری های شناسایی شده و همچنین تحلیل این نتایج به تفکیک سطوح آسیب پذیری و حوزه های تخصص هر یک، یک امتیاز امنیتی کلی نیز به اپلیکیشن داده می شود.
این امتیاز کلی به تفکیک سطوح مختلف اهمیت آسیب پذیری ها نیز ارائه خواهد شد.
همچنین امتیاز کسب شده به تفکیک حوزه های 9 گانه ارزیابی ها در قالب نمودار دیگری ارائه می شود تا نشان دهد که فرآیند امن سازی باید بر کدام حوزه ها با تمرکز بیشتری انجام شود.
بعد از این خلاصه مدیریتی، به ازای هر آسیب پذیری شناسایی شده، جزئیات کامل آسیب پذیری شامل موارد زیر ارائه می شود:
- توصیفی از آسیب پذیری و نحوه سوء استفاده احتمالی از آن
- امتیاز دهی به آسیب پذیری بر اساس استانداردهای جهانی
- رتبه بندی آسیب پذیری
- شواهد وجود آسیب پذیری
- علت وجود آسیب پذیری
- راهکار رفع آسیب پذیری
نمونه ای از این اطلاعات برای آسیب پذیری امکان استفاده از ابزراهای مهندسی معکوس اپلیکیشن مانند جدول زیر خواهد بود:
توصیف | ||
وجود ابزارها، چارچوبها و برنامههایی که معمولاً توسط مهاجمان استفاده میشود ممکن است نشاندهنده تلاشی برای مهندسی معکوس برنامه باشد. برخی از این ابزارها فقط میتوانند بر روی یک دستگاه روت شده اجرا شوند، در حالی که برخی دیگر برنامه را مجبور میکنند به حالت اشکال زدایی یا به راهاندازی یک سرویس پسزمینه در تلفن همراه وابسته باشند. بنابراین، روشهای مختلفی وجود دارد که یک برنامه ممکن است برای شناسایی یک حمله مهندسی معکوس و واکنش به آن پیادهسازی کند، به عنوان مثال با خارج شدن از محیط برنامه و یا نمایش پیغامی مبنی بر شناسایی ابزارهای مهندسی معکوس. | ||
وضعیت | ||
Failed | ||
رتبهبندی خطر بر اساس OWASP | MSTG ID | |
High | MSTG-RESILIENCE-4 | |
رتبهبندی خطر بر اساس CVSSv3 | ||
7.9 AV:L/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N | ||
محل آسیب پذیری | ||
— | ||
علت و شواهد اثبات | ||
اپلیکیشن در دستگاه روت شده و با وجود ابزاریی مانند drozer قابل نصب و قابل اجرا می باشد. فیلم و عکسهای مربوط به اثبات آسیب پذیری در این بخش ارائه می شود. | ||
راهکارهای امنسازی | ||
می توان از ابزارهای تجاری مانند Dexguard جهت شناسایی محیط اجرای اپلیکیشن استفاده کرد. همچنین به منظور شناسايي ابزار مهندسي معکوس بايد محیط اجرای اپلیکیشن بررسی شده و وجود برنامههايی مانند موارد زير درون دستگاه اندرويد شناسايي شده و نحوه مواجهه با چنین محیطی در برنامه تعریف شود: Substrate for Android Xposed Frida Introspy-Android Drozer RootCloak Android SSL Trust Killer کد زير نمونهاي از اين آزمون را براي تشخيص برنامه Frida نشان داده است:
| ||
لینک مرجع | ||
تیم امن سازی با تکیه بر راهکارهای پیشنهادی برای رفع آسیب پذیری، قادر خواهد بود رخنههای امنیتی را مرتفع نموده و اپلیکیشن را در برابر حملات سایبری، محافظت نماید. بسیاری از این آسیب پذیری ها، با استفاده از ابزارهای امن سازی مانند DexGurad (برای پلتفرم اندروید) و iXGuard (برای پلتفرم iOS) قابل رفع هستند.
جهت آشنایی بیشتر با خدمات آشنا ایمن در حوزه امن سازی اپلیکیشنهای موبایلی به پورتال جامع امنیت برنامه های موبایلی مراجعه کنید.