
أداة لأتمتة العملية المملة لاستطلاع APK
أداة لأتمتة عملية الاستكشاف (recon) لملف APK.
يقبل Slicer مسارًا إلى ملف APK مستخرج، ثم يُرجع جميع الأنشطة (activities) والمستقبلات (receivers) والخدمات (services) التي تم تصديرها (exported) ولها أذونات null ويمكن استفزازها خارجيًا.
ملاحظة: يجب استخراج ملف APK باستخدام jadx أو apktool.
لماذا؟
بدأت في برنامج مكافآت الثغرات (bug bounty) منذ حوالي 3 أسابيع (في يونيو 2020) وأحاول جاهدًا مع تطبيقات الأندرويد. لكن لاحظت شيئًا واحدًا وهو أن في جميع التطبيقات هناك أمور معينة يجب علي القيام بها قبل الغوص بعمق. لذا فكرت أنه سيكون من الجيد أتمتة هذه العملية بأداة بسيطة.
لماذا ليس Drozer؟
حسنًا، Drozer وحش مختلف. على الرغم من أنه يكتشف جميع المكونات القابلة للوصول، إلا أنني سئمت من تشغيل تلك الأوامر مرارًا وتكرارًا.
لماذا لا تتم الأتمتة باستخدام Drozer؟
في الواقع، كتبت سكربت bash لتشغيل بعض أوامر Drozer حتى لا أضطر لتشغيلها يدويًا، لكن لا يزال هناك بعض الأمور المملة التي يجب القيام بها. مثل فحص ملف strings.xml لمفاتيح API المختلفة، واختبار ما إذا كانت قاعدة بيانات Firebase متاحة للجمهور، أو ما إذا كانت مفاتيح Google API تلك قد حددت أي حد أقصى للاستخدام أو أي شيء آخر، والكثير من الأمور الأخرى.
لماذا لا يتم البحث في جميع الملفات؟
أعتقد أن أداة مثل grep أو ripgrep ستكون أسرع بكثير للبحث عبر جميع الملفات. لذا إذا كان هناك شيء محدد تريد البحث عنه، فسيكون من الأفضل استخدام تلك الأدوات. ولكن إذا كنت تعتقد أن هناك شيئًا يجب فحصه في جميع ملفات الأندرويد، فلا تتردد في فتح مشكلة (issue).
android:allowbackup إلى trueandroid:debuggable إلى true.android:exported=true في أي من المكونات دون تعيين إذن.Intent-filters محددة لذلك المكون، وإذا كان الأمر كذلك، فهذا يعني أن المكون تم تصديره افتراضيًا (هذه هي القاعدة المذكورة في وثائق أندرويد)..json.
myapp.firebaseio.com فسيتم التحقق مما إذا كان https://myapp.firebaseio.com/.json يعيد شيئًا أم يمنح رفض الإذن.git clone https://github.com/mzfr/slicer
cd slicerpython3 slicer.py -hالاستخدام بسيط جدًا. الخيارات التالية متاحة:
Extract information from Manifest and strings of an APK
Usage:
slicer [OPTION] [Extracted APK directory]
Options:
-d, --dir path to jadx output directory
-o, --output Name of the output file(not implemented)
لم أقم بتطبيق علامة output بعد لأنني أعتقد أنه إذا قمت بتوجيه مخرجات Slicer إلى ملف yaml فسيكون بتنسيق مناسب.
python3 slicer.py -d path/to/extact/apk -c config.json
وحدة الاستخراج المستخدمة لاستخراج عناوين URL والمسارات مأخوذة من apkurlgrep بواسطة @ndelphit
جميع الميزات المنفذة في هذه الأداة هي أشياء تعلمتها في الأسابيع القليلة الماضية، لذا إذا كنت تعتقد أن هناك أمورًا أخرى يجب فحصها في ملف APK، فيرجى فتح مشكلة (issue) لتلك الميزة وسأكون سعيدًا بتنفيذها :)
إذا أردت، يمكنك شراء بعض القهوة لي:
strings.xml و AndroidManifest.xml./res/raw و res/xml.