یک راهنمای گام به گام تست نفوذ اندروید برای مبتدیان
یک راهنمای گام به گام تست نفوذ اندروید برای مبتدیان

اگر علاقمند به آموزش هک هستید در این مقاله قصد داریم تست نفوذ اندروید برنامه ها و خدمات موبایل بخش جدایی ناپذیری از زندگی روزمره ما چه در خانه و چه در محل کار هستند. این موضوع آن ها را به اهداف اصلی برای افراد مخرب تبدیل می کند که به دنبال اطلاعات حساس هستند.
در این راهنما، تکنیک های پایه ای تست نفوذ اندروید را هنگام انجام ارزیابی های موبایل برای بهبود امنیت یاد خواهید گرفت. ابتدا محیط را برای شروع تست آماده می کنیم و سپس عملکرد ابزارهایی را که در ارزیابی های موبایل مفید هستند بررسی خواهیم کرد.
تست نفوذ اندروید چیست؟
تست نفوذ موبایل یا اندروید با هدف شناسایی آسیب پذیری های امنیتی انجام می شود و اطمینان حاصل می کند که برنامه های موبایل در برابر حملات آسیب پذیر نیستند.
برنامه های اندروید را می توان با استفاده از ابزارهای خودکار یا به صورت دستی تحلیل کرد. در طول این فرآیند، تستر نفوذ موبایل از چندین تکنیک برای شبیه سازی حملات، یافتن نقص های امنیتی در برنامه موبایل و دسترسی به داده های حساس استفاده خواهد کرد.
چرا تست نفوذ اندروید مهم است
برنامه های اندروید مدرن برای اهداف تجاری، مراقبت های بهداشتی، بانکداری، آموزش و غیره مورد استفاده قرار می گیرند. این برنامه های موبایل علاوه بر نگهداری اطلاعات حساس، همچنین دارای آسیب پذیری های امنیتی هستند. تسترهای نفوذ و توسعه دهندگان می توانند این آسیب پذیری ها را شناسایی و برطرف کنند و ریسک های امنیتی را کاهش دهند.
در سال ۲۰۲۱، برنامه پرداخت Klarna دچار یک نقص در برنامه شد که باعث شد کاربران به صورت تصادفی وارد حساب های سایر مشتریان شوند و اطلاعات حساس شخصی و کارت اعتباری فاش شود.
ParkMobile، شرکتی که پشت یک اپلیکیشن پارکینگ بدون پول نقد در سراسر ایالات متحده است، همچنان با یک دادخواست جمعی به دلیل نقض داده ها در اپلیکیشن موبایل در سال ۲۰۲۱ مواجه است که بر ۲۱ میلیون کاربر تأثیر گذاشت.
با آسیب پذیری های جدیدی که هر روز ظاهر می شوند، تست نفوذ اندروید برای جلوگیری از حملات تقلبی، آلودگی به بدافزار و نشت داده ها ضروری است. این موضوع برای هر شرکتی که قصد دارد یک اپلیکیشن جدید را منتشر کند بدون نگرانی از مسائل قانونی یا امنیتی، حیاتی است.
تست نفوذ موبایل همچنین می تواند برای ارزیابی عملکرد تیم توسعه دهنده و بررسی پاسخ گویی تیم فناوری اطلاعات مفید باشد، زیرا این تست ها می توانند آسیب پذیری ها و پیکربندی های نادرست در سرویس های بک اند مورد استفاده اپلیکیشن را آشکار کنند.
(اگر در تست نفوذ تازه کار هستید، ابتدا پست «تست نفوذ چیست» ما را بخوانید تا با مفاهیم پایه آشنا شوید.)
ساختار فایل بسته اندروید (APK) توضیح داده شده است
یک بسته اندروید (APK) فایل بایگانی شده ای با پسوند .apk است که شامل تمام فایل ها (کد و منابع) مورد نیاز برای اجرای برنامه اندرویدی می باشد.
فایل های APK را می توان با استفاده از دستور unzip appname.apk در لینوکس از حالت فشرده خارج کرد. تصویر زیر ساختار فایل APK استخراج شده را نشان می دهد:
- METTA-INF: شامل اطلاعات احراز هویت است که هنگام امضای برنامه تولید می شود.
- MF: شامل فهرستی از نام ها/هش ها (معمولاً SHA256 به صورت Base64) برای تمام فایل های موجود در APK است.
- SF: شامل فهرستی از نام ها/هش های خطوط متناظر در فایل MANIFEST.MF است.
- RSA: این فایل شامل کلید عمومی و امضای فایل CERT.SF است.
- Assets: شامل منابعی است که توسعه دهندگان همراه با برنامه بسته بندی می کنند و می توانند توسط AssetManager بازیابی شوند. این منابع می توانند تصاویر، ویدیوها، اسناد، پایگاه های داده و غیره باشند.
- lib: شامل کتابخانه های بومی (native) با کد کامپایل شده برای معماری های مختلف دستگاه است.
- res: شامل منابع از پیش تعریف شدهٔ برنامه است، مانند فایل های XML که لیست رنگ ها، طراحی رابط کاربری، فونت ها، مقادیر و غیره را تعریف می کنند.
- xml: یک فایل مانیفست که نام بسته، اکتیویتی ها، منابع، نسخه و سایر اطلاعات مربوط به اپلیکیشن را توصیف می کند.
- dex: شامل تمام کلاس های جاوا در قالب فایل dex (Dalvik Executable) است که توسط Android Runtime اجرا می شوند.
- arsc: شامل منابع کامپایل شدهٔ از پیش آماده است. این فایل اطلاعاتی را در بر دارد که کد را به منابع متصل می کند.
با OWASP Mobile Top Ten شروع کنید تا آسیب پذیری ها را پیدا کنید
OWASP یا «پروژه امنیت برنامه های وب باز»، یک بنیاد غیرانتفاعی است که راهکارها و روش شناسی های امنیتی را عمدتاً برای برنامه های وب ارائه می دهد. در سال ۲۰۱۶، OWASP جدیدترین فهرست آسیب پذیری های برتر موبایل (Mobile Top 10) را منتشر کرد. این فهرست به تأثیر هر آسیب پذیری بر افراد و کسب وکارها اشاره دارد و روش های جلوگیری از آن ها را پیشنهاد می کند.
اگر تازه کار در تست نفوذ اندروید هستید، این آسیب پذیری ها نقطه ی شروع بسیار خوبی هستند که به شما کمک می کنند نقص ها را پیدا کرده و امنیت برنامه را ارتقا دهید:
۱. استفاده نادرست از پلتفرم (Improper Platform Usage)
این دسته شامل سوءاستفاده از ویژگی های پلتفرم مانند Intents در اندروید، مجوزهای پلتفرم، TouchID، Keychain یا عدم استفاده از کنترل های امنیتی سیستم عامل موبایل می شود. برای اینکه این آسیب پذیری مورد سوءاستفاده قرار گیرد، سازمان باید یک سرویس وب یا API قابل دسترسی از طریق اپلیکیشن موبایل ارائه داده باشد.
تأثیر آسیب پذیری: شدت تأثیر این آسیب پذیری می تواند از تغییر محتوای اپلیکیشن تا تصاحب کامل حساب کاربری متغیر باشد.
پیشگیری: باید از شیوه های امن کدنویسی و پیکربندی در سمت سرور اپلیکیشن موبایل استفاده شود.
۲. ذخیره سازی ناایمن داده ها (Insecure Data Storage)
ذخیره سازی داده های رمزنگاری نشده در حافظه محلی دستگاه یک رویه ضعیف است، چرا که ممکن است برنامه های مخرب برای استخراج اطلاعات حساس از آن تلاش کنند. مهاجمان همچنین می توانند اطلاعات را از یک دستگاه دزدیده شده مستقیماً بازیابی کنند.
تأثیر آسیب پذیری: بهره برداری از این آسیب پذیری می تواند منجر به از دست رفتن داده ها و/یا استخراج اطلاعات حساس اپلیکیشن شود. تأثیر تجاری شامل سرقت هویت، تقلب، آسیب به شهرت، نقض قوانین خارجی (مثل PCI) و خسارات مالی است.
پیشگیری: برای جلوگیری از این نوع حمله، می توانید داده های ذخیره شده را رمزنگاری کرده و/یا دسترسی به حافظه محلی را محدود کنید. طبق پیشنهاد OWASP، بسیار مهم است که دارایی های اطلاعاتی که اپلیکیشن پردازش می کند و نحوه مدیریت آن ها توسط APIها را به خوبی درک کنید.
۳. ارتباط ناایمن (Insecure Communication)
در این نوع حمله، مهاجمان از آسیب پذیری ها برای شنود داده های حساس در یک شبکه ی به خطر افتاده سوءاستفاده می کنند (مثلاً نظارت بر ترافیک شبکه یک شرکت). این نوع حملات هدفمند به راحتی قابل انجام هستند.
تأثیر آسیب پذیری: با بهره برداری از این نقص، مهاجمان می توانند داده های شخصی را افشا کرده یا حتی حساب ها و سرورها را به طور کامل تصاحب کنند. برای کسب وکارها، این می تواند منجر به نقض حریم خصوصی شود که در نهایت ممکن است به سرقت هویت، تقلب یا آسیب به شهرت برند منجر گردد.
پیشگیری
- استفاده از پروتکل SSL/TLS برای ارتباط ایمن
- تکیه بر مجموعه رمزنگاری های استاندارد صنعتی با طول کلید مناسب
- اطمینان از اینکه گواهینامه ها توسط یک مرجع معتبر (CA) امضا شده اند و خود-امضاشده نیستند
- الزام به بررسی زنجیره ی گواهینامه ها (SSL chain verification)
- اعمال یک لایه ی رمزنگاری جداگانه برای هر داده حساس قبل از ارسال از طریق کانال SSL
۴. احراز هویت ناایمن (Insecure Authentication)
مهاجمان معمولاً از ابزارهای خودکار در دسترس یا سفارشی برای بهره برداری از این آسیب پذیری استفاده می کنند. آن ها تلاش می کنند با استفاده از اطلاعات ورود پیش فرض یا دور زدن پروتکل های احراز هویت ضعیف، وارد سیستم شوند.
تأثیر آسیب پذیری: ضعف در احراز هویت می تواند منجر به آسیب به اعتبار، سرقت اطلاعات یا دسترسی غیرمجاز به داده ها شود.
پیشگیری از احراز هویت ناایمن:
- اطمینان حاصل کنید که تمام درخواست های احراز هویت در سمت سرور انجام می شوند.
- هنگام استفاده از ذخیره سازی سمت کلاینت، داده ها را رمزنگاری کنید.
- بررسی کنید که عملکرد احراز هویت ماندگار (مانند «مرا به خاطر بسپار») هرگز رمز عبور کاربر را روی دستگاه ذخیره نکند.
- مطمئن شوید که توکن های احراز هویت وابسته به دستگاه در برنامه استفاده می شوند.
- اجازه ندهید کاربران از رمز عبورهای ۴ رقمی (PIN) برای احراز هویت استفاده کنند.
۵. رمزنگاری ناکافی (Insufficient Cryptography)
داده هایی که به صورت نامناسب رمزنگاری شده اند، می توانند توسط مهاجمان با دسترسی فیزیکی به دستگاه یا از طریق برنامه های مخرب بازیابی شوند.
تأثیر آسیب پذیری: این آسیب پذیری منجر به بازیابی غیرمجاز اطلاعات حساس از دستگاه موبایل می شود. همچنین می تواند تأثیرات تجاری متعددی مانند نقض حریم خصوصی، سرقت اطلاعات، سرقت کد، سرقت مالکیت معنوی یا آسیب به شهرت شرکت داشته باشد.
پیشگیری:
- از ذخیره سازی داده های حساس در دستگاه موبایل تا حد امکان خودداری کنید.
- از استانداردهای رمزنگاری استفاده کنید که تا دست کم ۱۰ سال آینده در برابر حملات مقاوم باقی بمانند.
- از دستورالعمل های NIST در مورد الگوریتم های رمزنگاری توصیه شده پیروی کنید.
۶. مجوزدهی ناایمن (Insecure Authorization)
مهاجمان معمولاً از ابزارهای خودکار موجود یا سفارشی برای ورود به برنامه به عنوان یک کاربر معتبر استفاده می کنند. پس از ورود، می توانند حملات باینری علیه برنامه موبایل انجام دهند و سعی کنند عملکردهایی را اجرا کنند که فقط باید توسط کاربران با سطح دسترسی بالاتر قابل اجرا باشند، به ویژه زمانی که برنامه در حالت “آفلاین” قرار دارد.
تأثیر آسیب پذیری: مجوزدهی ناایمن می تواند منجر به آسیب به اعتبار، تقلب یا سرقت اطلاعات شود.
پیشگیری: برای جلوگیری از این نوع حمله، نقش ها و مجوزهای کاربر احراز هویت شده باید تنها با استفاده از اطلاعات موجود در سیستم های بک اند بررسی شوند. کد بک اند نیز باید هویت ها را به طور مستقل تأیید کند.
۷. کیفیت پایین کد (Poor Code Quality)
در این حالت، مهاجم می تواند ورودی های غیرقابل اعتماد را به فراخوانی های متدهایی که در کد موبایل انجام می شوند، منتقل کند. مشکلات ناشی از کیفیت پایین کد معمولاً از طریق بدافزار یا حملات فیشینگ مورد سوءاستفاده قرار می گیرند. انواع رایج این حملات از نشت حافظه و سرریز بافر بهره می برند.
تأثیر آسیب پذیری: مشکلات کیفیت پایین کد که منجر به اجرای کد از راه دور (Remote Code Execution) می شوند، ممکن است به سرقت اطلاعات، آسیب به اعتبار شرکت یا سرقت مالکیت فکری منجر شوند.
پیشگیری: برای جلوگیری از مشکلات کیفیت کد:
- الگوهای برنامه نویسی یکسان و مورد توافق کل تیم را رعایت کنید.
- کدی بنویسید که خوانا و دارای مستندات کامل باشد.
- همواره طول هر داده ی دریافتی در بافرها را بررسی و اعتبارسنجی کنید.
- از ابزارهای تحلیل ایستا (Static Analysis) شخص ثالث برای شناسایی نشت حافظه و سرریزهای بافر استفاده کنید.
۸. دستکاری در کد (Code Tampering)
مهاجمان می توانند با تغییر کد منبع برنامه های موجود، برنامه های مخرب جدیدی ایجاد کرده و آن ها را در فروشگاه های جانبی قرار دهند. همچنین می توانند با استفاده از تکنیک های فیشینگ، این برنامه های مخرب را به دست قربانیان برسانند.
تأثیر آسیب پذیری: دستکاری کد می تواند منجر به اضافه شدن ویژگی های غیرمجاز، سرقت هویت، تقلب، از دست رفتن درآمد به دلیل دزدی نرم افزار، و آسیب به اعتبار برند شود.
پیشگیری: برای جلوگیری از این نوع حمله، اپلیکیشن باید بتواند در زمان اجرا تشخیص دهد که کدی اضافه یا تغییر داده شده است. همچنین، از آنجا که این برنامه ها معمولاً در دستگاه های روت یا جیلبریک شده اجرا می شوند، بررسی روت یا جیلبریک بودن دستگاه نیز مفید است.
۹. مهندسی معکوس (Reverse Engineering)
مهاجمان برنامه را از فروشگاه دانلود کرده و با استفاده از ابزارهای موجود، مهندسی معکوس و تحلیل استاتیک انجام می دهند. این به آن ها امکان می دهد عملکرد برنامه را درک کنند، کد را تغییر داده و آن را دوباره کامپایل کنند.
تأثیر آسیب پذیری: مهاجمان می توانند اطلاعاتی درباره سرورهای بک اند به دست آورده و حملاتی را اجرا کنند، ثابت ها و الگوریتم های رمزنگاری را افشا کنند، و مالکیت فکری را سرقت کنند. این موضوع می تواند باعث آسیب به اعتبار شرکت و سرقت هویت مشتری شود.
پیشگیری
مبهم سازی (Obfuscation) کد یکی از راهکارهای اصلی برای کاهش آسیب پذیری در برابر مهندسی معکوس است.
۱۰. قابلیت های اضافی ناخواسته (Extraneous Functionality)
مهاجمان سعی می کنند نحوه عملکرد برنامه را تحلیل کنند تا عملکردهای سیستم بک اند را کشف کنند و سپس آن را به صورت مستقیم مورد سوءاستفاده قرار دهند.
تأثیر آسیب پذیری: تأثیر فنی این نوع حمله شامل افشای عملکرد سیستم های بک اند، اجرای عملیات های دارای سطح دسترسی بالا به صورت غیرمجاز، و همچنین سرقت مالکیت فکری و آسیب به اعتبار شرکت است.
پیشگیری
برای مقابله با این آسیب پذیری، بازبینی دستی کد منبع باید به طور دقیق انجام شود.
ابزارهای پیشنهادی برای تست نفوذ اندروید
در زیر فهرستی از ابزارهایی آمده که می توان برای انجام تست نفوذ اپلیکیشن های اندروید از آن ها استفاده کرد. برخی برای تست خودکار هستند و برخی برای تست دستی:
ابزارهای تست خودکار:
- MobSF (Mobile Security Framework): یک فریم ورک جامع و خودکار برای تحلیل استاتیک و داینامیک برنامه های موبایل (Android/iOS/Windows).
- Burp Suite: مجموعه ای از ابزارها برای تست نفوذ برنامه های وب (مناسب برای تست APIهای موبایل).
ابزارهای تست دستی و تحلیل:
- ADB (Android Debug Bridge): ابزار خط فرمان قدرتمند برای ارتباط با دستگاه اندروید.
- Dex2jar: تبدیل فایل های .dex به .class و خروجی در قالب فایل
- JD-GUI: ابزار گرافیکی برای مشاهده سورس جاوا از فایل های
- JADX: ابزار خط فرمان و گرافیکی برای استخراج کد منبع جاوا از فایل های Dex و
- APKTool: ابزار مهندسی معکوس برای آنالیز اپلیکیشن های باینری شخص ثالث.
- Frida: ابزار قدرتمند برای تزریق و آنالیز دینامیک در زمان اجرا.
- Objection: ابزار مبتنی بر Frida برای بررسی امنیت برنامه های موبایل بدون نیاز به روت یا جیلبریک.
- Ghidra: مجموعه ابزار مهندسی معکوس ساخته شده توسط
- Drozer: فریم ورک پیشرو برای تست امنیتی اپلیکیشن های اندروید.
آیا شما به دنبال کسب اطلاعات بیشتر در مورد "یک راهنمای گام به گام تست نفوذ اندروید برای مبتدیان" هستید؟ با کلیک بر روی تکنولوژی, کسب و کار ایرانی، به دنبال مطالب مرتبط با این موضوع هستید؟ با کلیک بر روی دسته بندی های مرتبط، محتواهای دیگری را کشف کنید. همچنین، ممکن است در این دسته بندی، سریال ها، فیلم ها، کتاب ها و مقالات مفیدی نیز برای شما قرار داشته باشند. بنابراین، همین حالا برای کشف دنیای جذاب و گسترده ی محتواهای مرتبط با "یک راهنمای گام به گام تست نفوذ اندروید برای مبتدیان"، کلیک کنید.