راهنمای تست امنیت برنامههای کاربردی موبایل
در این مقاله به تشریح عناوین زیر می پردازیم.
- انگیزه ایجاد راهنمای تست امنیت موبایل
- راهنمای تست امنیت موبایل (MSTG)
- خلاصه
چشم انداز تهدیدات فعلی موبایل
چالشها
بررسی اجمالی
جمع آوری اطلاعات، مدلسازی تهدید و تحلیل آسیب پذیری در موارد خاص
ابزارها و مثالها
چشم انداز تهدید برنامه موبایل
مستقل از موقعیت مکانی (موبایل)
"همیشه آنلاین" و قابل ردیابی
مصرفکنندگی (Consumerization) – دستگاهها برای استفاده شخصی ساخته شدهاند
تمرکز بر عملکرد و طراحی، به جای تمرکز بر امنیت
افزایش موارد کاربری (use cases) حساس برای برنامه های کاربردی
افزایش 163 درصدی نرم افزارهای مخرب (malware) موبایل در سال 2012
موارد تجاری "پنهان" برای برنامه های کاربردی رایگان
وضعیت تست امنیت موبایل
برنامه های کاربردی موبایل دارای برخی از ویژگیهای خاص در مورد تست نفوذ میباشند.
راهنماهای سفارشی در دسترس نیست.
سیستمهای پیام (msg)، تصمیم به توسعه راهنما (MSTG) با کمک دانشگاه علوم کاربردی مونیخ گرفتند.
راهنماهای مشابه توسط OWASP منتشر شده است: تست امنیت موبایل OWASP
چالش های تست امنیت موبایل
شناسایی تفاوتها با استفاده از تستهای نفوذ رایج
پیش شرطهای انعطافپذیر
امنیت برنامه کاربردی، به امنیت دستگاه (jailbreak، پلتفرمهای مختلف، نسخه ها، واسطها، MDM، و غیره) بستگی دارد.
مهاجمان مختلف (داخلی، خارجی، دسترسی به شبکه یا دستگاه، جعبه سفید/ جعبه سیاه، و غیره)
نتیجه: فرایند کلی (اجباری) و پشتیبانی از ابزارها و شیوه ها (اختیاری)
نمای کلی راهنمای تست امنیت موبایل
جمع آوری اطلاعات
سعی کنید تا جایی که ممکن است، اطلاعات مربوط به برنامه را بدست آورید
این امر شامل دو نوع تحلیل است
تفاوتها با فرآیند سنتی
تمرکز اصلی بر روی بخش معماری/ فنی
در نظر نگرفتن نیازمندیهای خاص موبایل
تحلیل محیط
تمرکز برروی شرکت تولید کننده برنامه کاربردی و مورد کسب و کار آنها و ذینفعان مربوطه
تحلیل فرآیندها و ساختارهای داخلی
تحلیل معماری
برنامه کاربردی (واسطهای شبکه، داده های مورد استفاده، ارتباط با سایر منابع، مدیریت نشست (Session)، تشخیص jailbreak/rooting، ...)
محیط زمان اجرا (MDM، jailbreak/rooting، نسخه os)
سرویسهای Backend (سرور برنامه کاربردی، پایگاه داده، فایروال، ...)
جمع آوری اطلاعات-مثال
مثالهایی از جمع آوری اطلاعات از طریق تحلیل معماری برنامه کاربردی CRM
برنامه کاربردی
Session کاربر تا زمانی که بصورت دستی log offکند، باقی میماند.
شامل تراکنشهای مالی نمیشود.
برروی یک دستگاه jailbroken اجرا و منجر می شود به عدم تشخیص jailbroken.
عملیات را بر روی اطلاعات CRM سمت سرور، جهت ایجاد، خواندن، به روزرسانی، حذف تماسها، موردها، فراخوانیها و غیره فراهم میسازد.
تحلیل زمان اجرای محیط مناسب نیست چرا که برنامه کاربردی توسط تستر بر روی یک دستگاه اجرا میشود.
سرویسهای Backend
جزئیات در مورد نسخه سرویس در حال اجرای CRM
مدل سازی تهدید
شناسایی تهدیدهای برنامه کاربردی - تهدیدات خاص یا آماده (مانند OWASP Top 10)
باید از قبل در مرحله توسعه انجام شود
نرخ ریسک- مانند نرخ ریسک OWASP
توسعه اقدامات مخالف- به عنوان مثال، با بهترین شیوه ها یا راهنماییهای توسعهدهندگان
تفاوتها با فرآیند سنتی
بیشتر فرآیندهای تست نرم افزاری شامل مدلسازی تهدید نیستند
مدلسازی تهدید، فرآیند کلی را برای همه شرکتکنندگان قابل ردیابیتر و کارآمدتر میسازد
مدلسازی تهدید- مثال
مثال فرایند مدل سازی تهدید برای برنامه کاربردی CRM
آگاهی از طریق جمع آوری اطلاعات
برنامه کاربردی، عملیاتی بر روی اطلاعات CRM در سمت سرور انجام میدهد
تهدید خاص
خواندن غیرمجاز اطلااعات CRM بر روی ترافیک شبکه در هنگام برقراری ارتباط با پسزمینه CRM
در رابطه با اقدام مخالف
پیادهسازی حفاظت امن لایه انتقال (transport) (مانند SSL، TLS)
در رابطه با مورد آزمون
سعی کنید ترافیک شبکه میان برنامه کاربردی CRM و backend را بخوانید
تحلیل آسیب پذیری
شناسایی آسیب پذیریهای برنامه کاربردی با موارد آزمون از قبل ایجاد شده
اجرای موارد آزمون با سه نوع تکنیک مختلف
تفاوتها با فرآیند سنتی
اکثر فرآیندهای تست نرم افزار شامل بسیاری از روشهای تست نیستند
روشهای ایستا
مهندسی معکوس
تحلیل کد منبع به صورت خودکار و دستی
گشت و گذار: ابزارهایی برای روشهای ایستا
مهندسی معکوس
اندروید: dex2jar، JD-GUI
iOS: otool، class-dump-z
تحلیل کد منبع به طور خودکار و دستی
اندروید: Androwarn، Andrubis، ApkAnalyser
iOS: Flawfinder، Clang Static Analyzer
روشهای پویا
تحلیل و مانیتورینگ منفعل (passive) شبکه
تحلیل ترافیک شبکه در مکانهای مختلف شبکه (در دستگاه، دروازه (gateway) و یا در خود VPN)
ضبط و دستکاری فعال (Active) شبکه (wifi و cellular)
مشکلات
برنامه های کاربردی بومی همیشه از تنظیمات پروکسی دستگاه استفاده نمیکنند.
اتصالات SSL رمزگذاری شده.
راهکارها
برنامه های ویژه ای که از تنظیمات پروکسی دستگاه استفاده میکنند یا اینکه اتصالات رمزگذاری شده SSL را قطع میکنند (عمدتا برای دستگاههای jailbroken یا rooted)
تحلیل زمان اجرا
با تحلیل فرآیند ارتباطاتی اجزای داخلی(اندروید: Intents و:iOS objc_msg calls)
دستکاری زمان اجرا
فراخوانی یا دستکاری توابع خاص
خواندن و نوشتن مقادیر متغیر
تحلیل فعالیت فایل
تحلیل تغییرات سیستم فایل در طی زمان اجرا
روشهای پویا-مثال برنامه کاربردی CRM
تحلیل ترافیک شبکه، استفاده از HTTP و ارسال داده های حساس فاقد رمزگذاری (شناسه session، نام کاربری و رمز عبور) را آشکار میسازد.
ابزارها: Wireshark، BurpSuite و ...
تأیید هویت کاربر میتواند از طریق دستکاری در زمان اجرا دور زده شود.
ابزارهای iOS: GNU debugger، Snoop-it، Cycript و ...
ابزارهای اندروید: Mercury، Intent Sniffer، Intent Fuzzer و ...
تحلیل فعالیت فایل نشان میدهد که اعتبار کاربر (نام کاربری و رمز عبور) در Keychain iOS ذخیره شده و از طریق آن نیز مورد استفاده قرار میگیرد.
ابزارهای iOS: filemon.iOS، Snoop-it
ابزارهای اندروید: androidAuditTools
روشهای قانونی
تحلیل TimeLine
تحلیل timestamp های ایجاد شده توسط سیستم فایل
تحلیل انواع مختلف فایلها
پایگاهدادههای SQLite
فایلهای log
کوکیها
Screenshotها (iOS)
کَش صفحه کلید (iOS)
SharedPreferences (اندروید)
Keychain (iOS)
روشهای قانونی - مثال برنامه کاربردی CRM
تحلیل TimeLine نشان میدهد که برنامه کاربردی در طی زمان اجرای خود، چندین فایل را به روز رسانی میکند (فایل *.plist و پایگاه داده)
ابزارها: mac-robber، mactime
تحلیل فایلهای شناسایی شده و انواع فایلهای استاندارد، نشان میدهد که اعتبار کاربر به صورت متن ساده در keychain iOS ذخیره میشود.
ابزارها: Keychain dumper، keychain viewer و ...
خلاصه:
راهنمای تست امنیت موبایل ...
ویژگیهای موبایل را در نظر می گیرد، اما مستقل از فناوری است.
به بهبود شفافیت و تکرارپذیری تست نفوذ موبایل کمک میکند.
یک رویکرد جامع با انعطاف پذیری مناسب است.
و در نهایت به بهبود امنیت برنامه کاربردی موبایل کمک میکند.
نویسنده : شرکت مهندس پیشگان آزمون افزار یاس
مراجع
[1]-Florian Stahl and Johannes Ströher, Security Testing Guidelines for mobile Apps