فریمورک 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-jre
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo 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/Mint
git clone https://github.com/mwrlabs/drozer/
cd drozer
make deb
sudo dpkg -i drozer-2.x.x.deb
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 را میتوان بدست آورد.