تست نفوذ اپلیکیشن موبایل فرآیندی است که برای تشخیص و شناسایی ضعفها یا آسیبپذیریهای اپلیکیشنهای موبایل، به صورت دستی یا خودکار انجام میشود. این فرآیند تهدیدات و شکافهای امنیتی را قبل سواستفاده توسط مهاجمان، مورد تجزیه و تحلیل قرار میدهد.
اگر هنوز با مفهوم تست نفوذ آشنایی ندارید، این مقاله را از دست ندهید.
موبایل اپلیکیشنها، با تمام بخشهای مختلف دستگاه تلفن همراه مانند زیرساخت شبکه، سرورها و مراکز داده تعامل دارند. استفادهی گسترده از دستگاههای تلفن همراه با قابلیتهای پیشرفته، موجب گسترش سطح حمله شده است. با پیچیدگی روز افزون حملات سایبری و همچنین در نظر گرفتن جوایز برای شناسایی باگها در برنامههای موبایل، سازمانها، سرمایهگذاری در تست نفوذ برنامههای موبایل را آغاز کردهاند.
نمونههایی از نشت اطلاعات و نفوذ به اپلیکیشنهای موبایل
- Linkedin: در ژوئن 2021، Linkedin با یک نفوذ گسترده به دادهها مواجه شد که در نتیجه آن، دادههای 700 میلیون کاربر این شبکه اجتماعی در ابتدای امسال، در یک انجمن دارک وب منتشر شد و بیش از 90٪ از کاربران LinkedIn را تحت تأثیر قرار داد.
- Pixar :Pixar یک نرمافزار آنلاین رایگان و ویرایش تصاویر است که در طی یک نفوذ، دادههای 1.9 میلیون کاربر هک شد. اطلاعات هک شده شامل نام، ایمیل، رمزعبور (به صورت hash شده)، جنسیت، کشور و آدرس IP است.
- ClubHouse :ClubHouse یک برنامه اجتماعی صوتی است که در آوریل 2021 با یک نشت دادهها مواجه شد. یک پایگاه داده حاوی 1.3 میلیون رکورد کاربران ClubHouse به صورت رایگان در یک انجمن هکری معروف منتشر شد.
این نمونهها نشان میدهند که حملات نفوذ به اپلیکیشنهای موبایل و دسترسی به دادههای شخصی کاربران به شدت افزایش یافته است و بهتر است کاربران در انتخاب و استفاده از برنامهها به امنیت خود توجه کنند.
انواع مختلف برنامههای تلفن همراه در سازمانها
در صنعت برنامههای تلفن همراه، سه نوع اصلی از برنامهها وجود دارد که توسعهدهندگان یا سازمانها، از آنها برای خدمترسانی به مشتریان خود استفاده میکنند. در ادامه به شرح ویژگی انواع مختلف برنامهها میپردازیم:
1. اپلیکیشنهای موبایل بومی (Native Mobile Apps)
موبایل اپلیکیشنهای بومی آنهایی هستند که در دستگاههای تلفن همراه دانلود میشوند. این نوع برنامهها معمولاً برای یک پلتفرم خاص مانند اندروید یا iOS ایجاد میشوند. برای ساخت برنامههای بومی از زبانهای برنامهنویسی مختلفی مانند Java، Kotlin، Python، Swift، Objective-C، C++ و React استفاده میشود.
2. اپلیکیشنهای هیبریدی (Hybrid Apps)
اپلیکیشنهای هیبریدی موبایل، یک مفهوم نسبتاً جدید در توسعه تلفن همراه هستند. ایده اصلی در این نوع برنامهها، ادغام بهترین امکانات برنامههای iOS و اندروید است. آنها بر روی سیستم عامل موبایل اجرا میشوند و میتوانند از فروشگاه Google Play یا Apple App Store دانلود شوند.
فلاتر (Flutter) یک ابزار توسعه نرمافزاری برای تولید برنامههای چند پلتفرم بوده که توسط گوگل ایجاد شده است. با استفاده از فلاتر، میتوان برنامههای چندپلتفرم برای اندروید، iOS، لینوکس، مک، ویندوز، Google Fuchsia و همچنین وب را از یک مجموعه کدهای منبع واحد توسعه داد.
3. وب اپلیکیشنهای پیشرو (PWA)
برنامههای وب پیشرو یا (PWA) Progressive Web App نوعی نرمافزار مبتنی بر وب هستند که بر روی سیستم نصب میشوند. به طور خلاصه، PWA یک برنامه تحت وب است که شباهت زیادی به برنامههای معمول (بومی) تلفن همراه دارد. هدف اصلی PWA، ارائهی بهترین قابلیتهای وب به برنامههای تلفن همراه و برطرف کردن مشکلات و محدودیتهای برنامههای بومی است.
یک PWA مانند یک وبسایت معمولی عمل میکند و میتواند توسط هر مرورگری (شامل مرورگرهای تلفن همراه) باز و استفاده شود، اما تفاوت اصلی آن در این است که برنامههای PWA، میتوانند بر روی صفحه اصلی دستگاه به عنوان یک اپلیکیشن بومی اضافه شوند.
۵ خطر بزرگ امنیتی اپلیکیشنهای موبایل
1. ذخیره ناامن دادهها
ذخیره دادهها، یکی از مهمترین جنبههای هر اپلیکیشن یا دستگاه است. اگر برنامه اطلاعات حساسی را ذخیره، انتقال یا پردازش میکند، باید آنها را ایمن نگه داشت. ذخیره ناامن دادهها، معمولاً زمانی اتفاق میافتد که توسعهدهندگان تصور میکنند کاربران یا بدافزارها، نمیتوانند به فایلهای دستگاه یا سیستم آنها دسترسی داشته باشند. اگر دادههای دستگاه شما ایمن نگهداری نشوند، هکرها ممکن است به آنها دسترسی پیدا کرده و یا اطلاعات شما را دزدیده و از آن سوء استفاده کنند.
2. ورودیهای غیر قابل اعتماد
اعتبارسنجی ورودی کاربر (Input Validation)، مفهوم جدیدی نیست با این حال، اکثر توسعه دهندگان از نحوه کارکرد، مشکلاتی که ممکن است ایجاد کند و چگونگی حفاظت در برابر آن، آگاه نیستند. این امر به ویژه برای اپلیکیشنهای تلفن همراه، بسیار مهم است، زیرا بیشتر کد منبع آنها به صورت آنلاین در دسترس است و پنهان کردن آن هیچ فایدهای ندارد.
3. ارتباطات ناامن
ارتباط ناامن، تهدیدی است که هرگز نمیتوان آن را دست کم گرفت. اگر در توسعه اپلیکیشنهای موبایل دقت لازم صورت نگیرد، هکرها میتوانند به سیستمهای Back-End آنها نفوذ کنند. از آنجایی که برنامههای تلفن همراه، دادهها را از طریق بستر عمومی اینترنت منتقل میکنند، احتمال قرار گرفتن دادهها در معرض مهاجمان، توسط ارائه دهندگان شبکه موبایل زیاد است.
اگر هنوز با کاملترین تعریف امنیت سایبری آشنایی ندارید، این مقاله را از دست ندهید.
4. رمزنگاری ضعیف یا ناکافی
رمزنگاری، اصلیترین روش جهت حفظ امنیت اطلاعات است. رمزنگاری ضعیف میتواند به دلیل بسیاری از عوامل از جمله عدم آگاهی توسعهدهندگان از روش مناسب برای رمزنگاری یا عدم استفاده از رمزنگاری مناسب در نرمافزار رخ دهد.
5. کد مبهم
مبهم کردن کد، فرآیندی است که در آن، کد منبع یک برنامه نرمافزاری به گونهای تغییر میکند تا انجام مهندسی معکوس یا دیکامپایل کردن آن را سختتر کند. هکرها از مهندسی معکوس برای درک نحوه عملکرد یک برنامه استفاده میکنند تا به نقاط ضعف آن دست یابند.
تست نفوذ چگونه به ایمنسازی اپلیکیشنهای موبایل کمک میکند؟
با وجود بیش از 4.37 میلیون اپلیکیشن در فروشگاههای Google Play و App Store، هر سازمانی که دارای برنامه تلفن همراه است یا قصد ایجاد آن را دارد، باید تست نفوذ اپلیکیشن موبایل را برای امنیت اطلاعات مشتریان مد نظر قرار دهد.
تست نفوذ اپلیکیشن موبایل (Mobile penetration testing) با استفاده از تکنیکهای دستی یا خودکار، برنامهها، نرمافزارها و سیستمعاملهای موبایل را به منظور شناسایی آسیبپذیریهای امنیتی آزمایش میکند. این تکنیکها برای شناسایی نقاط ضعف امنیتی که در برنامه موبایل ممکن است رخ دهند، استفاده میشوند. هدف اصلی تست نفوذ، اطمینان حاصل کردن از عدم آسیبپذیری برنامه موبایل در برابر حملات سایبری است.
تست نفوذ تلفن همراه یک بخش حیاتی از فرآیند ارزیابی کلی است. امنیت اپلیکیشن موبایل عنصری بحرانی در امنیت هر شرکت است، چراکه دادهها به صورت محلی در دستگاه موبایل ذخیره میشوند. رمزنگاری دادهها و احراز هویت، از جمله مسائل اساسی امنیت برای سازمانهایی است که اپلیکیشنهای موبایل دارند. همچنین به دلیل اینکه این برنامهها توسط عموم مردم جهان در حال استفاده هستند، به هدف بسیار جذابی برای هکرها تبدیل شدهاند.
۵ پارامتر تاثیرگذار در تست نفوذ اپلیکیشن موبایل
- معماری، طراحی و مدلسازی تهدید: درک معماری اپلیکیشنهای موبایل در هنگام انجام تست نفوذ، یک شاخص حیاتی است. پس از درک معماری، تستهای دستی باید شامل تستهایی برای بررسی طراحی ناامن و معماری باشند.
- ارتباط شبکه: انتقال دادهها از طریق شبکههای عمومی باعث میشود هکرها به اطلاعات حساس کاربران دسترسی پیدا کنند. تست نفوذ اپلیکیشن موبایل، باید بر تبادل اطلاعات در شبکه تمرکز کند که شامل تست کردن نحوه انتقال دادهها از طریق شبکهها است.
- ذخیره سازی دادهها و حریم خصوصی: ذخیره دادههای حساس به صورت متن واضح، یک فرصت ثبت آسیبپذیری بزرگ برای هکرها یا مهاجمان است. بسیاری از برنامهها اطلاعات حساس مانند رمزهای کاربران، کلیدهای API و سایر اطلاعات محرمانه را به صورت متن واضح (clean text) ذخیره میکنند که معمولاً در فایل Strings.xml نگهداری میشود.
- احراز هویت و مدیریت نشست (session Management): تست نفوذ اپلیکیشن موبایل باید شامل تست کردن مشکلات مربوط به مدیریت نشست مانند انقضای نشست در صورت تغییر رمز عبور، کدهای پشتیبانی نادرست برای احراز هویت چند عاملی و غیره باشد.
- خطاهای ناشی از اشتباه در کد یا تنظیمات ساخت: اکثر توسعهدهندگان اپلیکیشنهای موبایل، به پیامهای خطا اهمیت چندانی نمیدهند. توسعهدهندگان برنامه تلفن همراه هنگام توسعه بایستی پیامهای مربوط به اشکالزدایی و کدهای خطا را بررسی کنند تا هیچگونه اطلاعاتی مربوط به داخل برنامه به کاربر نهایی نمایش داده نشود.
متدلوژی تست نفوذ اپلیکیشن موبایل
تست نفوذ موبایل اپلیکیشن اسکوریا، در چهار مرحله به شرح زیر انجام میشود:
1. آمادهسازی و کشف
جمعآوری اطلاعات، یک فرآیند ضروری در فرآیند تست نفوذ است. در این مرحله، چند مورد اساسی باید مد نظر قرار گیرد:
- درک طراحی و معماری برنامه.
- درک جریان داده در سطح شبکه برنامه.
- استفاده از OSINT برای جمعآوری اطلاعات.
2. تجزیه و تحلیل، پایش و ارزیابی
پس از پایان مرحله کشف، متخصصین تست نفوذ مرحله تحلیل و ارزیابی را آغاز میکنند. در این مرحله، برنامه قبل و بعد از نصب در دستگاه مشاهده میشود. برخی از تکنیکهای ارزیابی عبارتند از:
- تجزیه و تحلیل استاتیک و پویا.
- تجزیه و تحلیل معماری.
- مهندسی معکوس.
- تجزیه و تحلیل سیستم فایل.
- ارتباط میان برنامهها.
3. بهرهبرداری
مرحله بهرهبرداری (exploitation) شامل تست برنامه با حملاتی مشابه دنیای واقعی است تا عملکرد برنامه در صورت وقوع یک حمله، بهتر درک شود. اپلیکیشنهای موبایل با استفاده از payload مخرب مانند یک reverse shell یا استفاده از root exploit تست میشوند. یک تیم، تمام آسیبپذیریهای شناسایی شده توسط متخصصان تست نفوذ را با استفاده از حملاتی که به صورت سفارشی طراحی شدهاند یا به صورت عمومی در دسترس است، تست میکند.
4. گزارشگیری
پس از اتمام مرحله بهرهبرداری، تیم فنی یک گزارش مفصل از حملات انجام شده تهیه میکند. اطلاعات معمولاً شامل نقاط پایانی که تست شدهاند، میزان آسیبپذیری وارد شده، تحلیل ریسک و آسیبپذیریهای شناسایی شده به همراه مراحل بهرهبرداری و راهکارهای رفع آنها است.
تفاوت تحلیل استاتیک و دینامیک در اپلیکیشن موبایل
تحلیل استاتیک و پویا نقش مهمی در روش انجام تست نفوذ برنامههای موبایل ایفا میکنند. در جدول زیر تفاوتهای میان آنها شرح داده شده است.
تحلیل استاتیک | تحلیل پویا |
بدون اجرای برنامه در تلفن همراه انجام میشود | هنگامی انجام میشود که اپلیکیشن موبایل روی دستگاه اجرا میشود |
بر روی کد منبع دیکامپایل شده و فایلهای آن انجام میشوند | بر روی سیستم فایل محلی، ارتباط بین برنامهها و ارتباط با سرور انجام میشود |
شامل تست کیفیت کد، پیامهای اشکالزدایی، خطا و مشکلات مربوط به منطق کسب و کار میشود | شامل تست ارتباطات در سطح شبکه، فارنزیک و رمزنگاری ضعیف است. |
ابزارهای رایج متنباز برای تست نفوذ اپلیکیشن موبایل
- Mobile Security Framework :MobSF یک ابزار متن باز برای تست نفوذ اتوماتیک اندروید است که قادر است تجزیه و تحلیل را به طور استاتیک و پویا انجام دهد.
- Drozer: Drozer یک ابزار متن باز برای تست نفوذ اندروید است که توسط آزمایشگاههای F-Secure ازائه شده است و که به کاربران اجازه میدهد در برنامهها و دستگاهها به دنبال آسیبپذیریهای امنیتی بگردند.
- Clutch: Clutch یک ابزار متن باز برای رمزگشایی iOS است. Clutch از iPhone، iPod Touch، iPad و تمام نسخههای iOS، انواع معماری و اکثر باینریها پشتیبانی میکند.
- Cycript: Cycript یک ابزار متن باز برای کاوش و اصلاح برنامههای در حال اجرا در iOS و Mac OS X با استفاده از ترکیبی از سینتکس Objective-C++ و JavaScript است.
- Frida: Frida یک جعبهابزار دقیق رایگان و منبع باز برای تحلیل کد پویا است که با وارد کردن موتور جاوااسکریپت QuickJS به فرایند مورد نظر، عمل میکند.
- Radare2: Radare2 یک ابزار محبوب و منبع باز است که برای تجزیه کد، اشکالزدایی، پچگذاری و تحلیل باینریها استفاده میشود. این ابزار توانایی اجرای اسکریپتها را دارد و بسیاری از معماریها و فرمتهای فایل، از جمله برنامههای اندروید و آیاواس (iOS) پشتیبانی میکند.