آموزش ابزار ارزیابی امنیتی Drozer

فریمورک Drozer (همان ابزار Mercury قدیم)، ابزاری استاندارد برای تحلیل پویای اپلیکیشن های اندرویدی است. این فریمورک متن‌باز را آزمایشگاه MWR توسعه داده است. آدرس اینترنتی آزمایشگاه https://labs.f-secure.com است. همانطور که مشخص است این آزمایشگاه با نام تجاری f-secure مشاوره و محصولات امنیتی در سطح کاربر خانگی، شرکت ها و شرکا ارائه می کند. برای مثال برای محافظت از کاربران خانگی، ابزار F-Secure Total‌ را ارائه کرده است که قابلیت هایی مثل مدیریت پسورد و مدیریت کامپیوتر و موبایل با یک اکانت را دارد. در این نوشته قصد دارم تجربه‌ام در کار با این ابزار را با شما هم به اشتراک بگذارم به امید گسترش دانش.تصویر بالا اسکرین شاتی از مخزن گیت این فریمورک است. ۱۹۰۰ ستاره،۵۳۶ فورک و ۱۰۸۹ کامنت نشان دهنده فعال بودن این فریمورک در جامعه است. همچنین اینکه یک شرکت تجاری در کنار این پروژه است میتوان این فریمورک را قابل اعتماد دانست. البته احتمالاً اعضای این شرکت تجاری همان توسعه دهندگان مرکری و دروزر هستند!از جمله امکاناتی که این ابزار در اختیار قرار می‌دهد به شرح زیر است: • امکان بررسی آسیب پذیری ها • می توان از اکسپلویت های اندرویدی استفاده کرد • امکان استفاده برای RAT • امکان نصب بر روی هر سه سیستم عامل • دارای agent موبایلیابزار دروزر تعاملی است یعنی کاربر باید کامند وارد کند و در تعامل با ابزار، مرحله به مرحله کار ارزیابی را انجام دهد. دروزر از طریق agent‌ خود در گوشی، آن دستور را اجرا می کند. به عبارت دیگر این طور نیست که دروزر را اجرا کنیم بریم یک کافی بخوریم و برگردیم و ریزالت ها آماده باشه :)نصب و راه اندازیمراحل نصب این فریمورک که در صفحه گیت آن آمده است به صورت زیر است. هر چند ما در طی این مراحل با مشکلاتی روبرو شدیم که آن‌ها را با شما به اشتراک می‌گذاریم تا در صورت بروز آن مشکل برای شما، بتوانید در زمان کم آن را حل نمایید. مراحل زیر مراحلی است که در صفحه گیت دروزر توضیح داده شده است:پیش نیازهای نصب 1) Python2.7 2) Protobuf 2.6 or greater 3) Pyopenssl 16.2 or greater 4) Twisted 10.2 or greater 5) Java Development Kit 1.7 6) Android Debug Bridgeلازم به ذکر است که تمامی پیش نیاز ها باید نصب شوند (یعنی معمولاً موارد بالا در یک سیستم وجود ندارند!) که البته نصب آن‌ها با نکاتی همراه است که در ادامه توضیح خواهیم داد. ما این فریمورک را در اوبونتو نصب کردیم. مرحله ۱ به سادگی قابل انجام است. برای طی مراحل ۲، ۳ و ۴ پیشنهاد میکنیم ابتدا pip‌ را نصب کنید و سپس با کمک آن موارد ۲ تا ۴ را انجام دهید. • sudo apt install python-pip • pip –version • pip install protobuf • pip install pyOpenSSL • pip install Twisted(اگر در زمان نصب فریمورک، پیغام خطایی مبنی بر نیاز به protoc دریافت کردید میتوانید آن را با کمک دستور زیر نصب کنید sudo apt install protobuf-compiler)حالا نوبت به نصب JDK 1.7 مربوط به جاوا ۷ می‌رسد. از آنجایی که جاوا ۷ از ساپورت خارج شده است آن را نمی‌توان در هر مخزن نرم افزاری در لینوکس یافت. مرا حل زیر می‌تواند انجام شود:sudo apt-get install default-jresudo add-apt-repository ppa:openjdk-r/ppasudo apt-get updatesudo apt-get install openjdk-7-jdkبا طی مراحل بالا jdk1.7 نصب می‌شود اما اگر در سیستم تان jdk‌ دیگری داشته باشید (احتمالاً نسخه های جدید تر آن را ممکن است قبلاً نصب کرده باشید) باز هم در حین نصب فریمورک در مراحل بعد با مشکل مواجه می‌شوید چرا که این فریمورک فقط با jdk1.7‌ اجرا می شود. برای اینکه بدانید چه jdk هایی در سیستم تان نصب دارید از دستور زیر استفاده نماییدsudo update-java-alternatives -lپس باید jdk‌پیش فرض را عوض کنید که ساده‌ترین راه این است که در سطح سیستم این اتفاق بیفتد (البته بعد از نصب دوباره می‌توانید jdk‌ پیش‌فرض سیستم را تغییر دهید چرا که نسخه ۱.۷ نسخه مناسبی نیست). برای تغییر jdk پیش‌فرض دستور زیر را وارد نمایید:sudo update-java-alternatives -s java-1.7.0-openjdk-amd64پس از ورود این دستور، ممکن است با اروری شبیه خطای زیر مواجه شویدمهم نیست! این خطا می‌گوید برای این تبدیل نیاز دارد تا نرم افزارهایی که با جاوا قرار است کار بکنند پیشنیاز های این ورژن را داشته باشند. که البته یافتن این موارد مثل IcedTeaPlugin نسخه‌ای که با jdk 1.7 سازگار باشد هم کار ساده‌ای نیست. مشاهده می‌کنید که این تغییر ورژن پیش‌فرض سیستم انجام شده است.گام ۶ همکه نصب adb استنکته خاصی ندارد و احتمالاً به سادگی نصب خواهید کرد.نصب فریمورکپس از نصب پیش نیازها، سراغ نصب فریمورک می رویم. در گیت فریمورک روش‌های مختلفی برای نصب ارائه کرده است که ما روش زیر را انتخاب می‌کنیم:Building for Debian/Ubuntu/Mintgit clone https://github.com/mwrlabs/drozer/cd drozermake debInstalling .deb (Debian/Ubuntu/Mint)sudo dpkg -i drozer-2.x.x.debمرحله ۱ و ۲ به سادگی قابل انجام است. مرحله ۳ را انجام دهید. در صورتی که عمل make با موفقیت انجام شود می‌توانید سراغ مرحله ۴ بروید. البته به خطوط آخر خروجی دستور ۳ دقت کنید که فایل .deb ایجاد شده در چه مسیری قرار گرفته است. برای ما این فایل در دایرکتوری dist‌ در پوشه جاری (همان پوشه ای که با دستور شماره ۲ به آن وارد شدیم) قرار گرفته است. پس مرحله ۴ اینگونه انجام می شود:sudo dpkg -i dist/drozer_2.4.3.debدر صورتی که پس از اجرای این دستور با پیغام خطای زیر مبنی بر مشکل در dependency ها مواجه شدید نیاز به نصب نرم افزارهایی که می‌گوید نیست چرا که قبلاً این‌ها را نصب کرده ایم. صرفاً کافی استاز دستور زیر استفاده کنید تا مشکل dependency‌ ها حل شود.sudo apt-get install -fو سپس مرحله ۴ را مجدداً تکرار کنید. مراحل نصب تمام است. با دستور drozer‌ می‌توانید از نصب صحیح آن مطمئن شوید (خروجی مانند تصویر زیر نشان دهنده نصب موفق است).شروع به کارهمانطور که گفته شد دروزر نیاز به یک ایجنت (Agent) دارد که با کمک آن دستورات ارزیاب را در گوشی اجرا می‌کند. اپلیکیشن ایجنت برای دانلود در اینجا در دسترس است. با کمک adb‌ میتوان آن را نصب کرد:سپس ایجنت را اجرا نماییددر این مرحله نیاز است تا با کمک دستور زیر دروزر را به ایجنت متصل نماییدadb forward tcp:31415 tcp:31415 و سپس دستور زیر را وارد نمایید drozer console connectاگر با پیغام خطای زیر مواجه شدید service identity را با کمک کامند زیر نصب کنیدsudo pip install service_identityاگر دوباره پیغام خطای بالا را گرفتید دستور زیر را برای بروزرسانی service identity اجرا کنیدsudo pip upgrade service_identityدر نهایت (پس از رفع مشکل بالا) به تصویر زیر می‌رسیدdz> listلیستی از ماژول های دروزر که در این نشست می‌توانند اجرا شوند را نمایش می‌دهد.برای بدست آوردن لیست پکیج ها از دستور زیر استفاده می‌شودdz> run app.package.listهمانطور که در خروجی دستور قبل می بینید لیست پکیج ها ممکن است طولانی باشد. در این صورت برای جستجوی عنوان یک پکیج خاص از دستور زیر استفاده می‌شودdz> run app.package.list –f <SearchString>برای بدست آوردن اطلاعاتی اولیه از یک پکیج از دستور زیر استفاده می‌شودبرای بدست آوردن بردار حمله (مواردی که بتوان به کمک آن مطلع شد چطور می‌توان یک حمله را آغاز کرد)در خروجی بالا اپلیکیشن Pedometer (از اپ های موجود در کافه بازار)، دارای ۱ اکتیویتی است که exported است‌و الی آخر. البته debuggable‌ نیست (اگر می‌بود در خط انتهایی خروجی به آن اشاره می‌شد). این امکان این اجازه را می‌دهد که یک دیباگر به اپلیکیشن وصل کنیم و گام به گام هر دستوری که اجرا می‌شود را ردیابی کنیم و حتی کدهای دلخواه خودمان را اجرا کنیم.برای نمایش نام اکتیویتی های یک اپلیکیشن از دستور زیر استفاده می‌کنیمrun app.activity.info -a <PackageName>برای اجرای اکتیویتی از دستور زیر استفاده می شود.run app.activity.start --component <package name> <component name>برای مثالrun app.activity.start --component pedometer.steptracker.calorieburner.stepcounter steptracker.stepcounter.pedometer.activity.SplashActivityمثالی از اینتنت صریحrun app.activity.start --component com.android.browser com.android.browser.BrowserActivity --flag ACTIVITY_NEW_TASK --data-uri http://mrazian.comمثالی از اینتنت ضمنیrun app.activity.start --action android.intent.action.VIEW --data-uri http://mrazian.comاندروید اجازه نمی‌دهد برودکست سیستمی ارسال کنیمبرای مشاهده content provider ها می‌توان دستور زیر را وارد کرد (یک سرویس روی پورت ۸۰۸۰ فراهم می‌شود). سپس در مرورگر در آدرس localhost:8080 لیست content provider ها را مشاهده کرد.run auxiliary.webcontentresolverبا کمک دستور زیر provider‌ ها اسکن می‌شوند و از جهت وجود آسیب‌پذیری بررسی می‌شوند.run scanner.provider.injection ProvideAddressبا کمک دستور زیر می‌توان اطلاعات درون یک provider‌ (در اینجا settings/secure)‌ را مشاهده کردrun app.provider.query content://settings/secure --verticalبدین ترتیب تمامی تنظیمات بخش settings/secure را می‌توان بدست آورد.