
أداة مساعدة لتقييم روابط الـ Deeplink، و Intent، وجسر WebView في نظام أندرويد لصالح الاختراق الأخلاقي
مساعد تقييم الروابط العميقة (Deeplink) وIntent وجسر WebView لنظام Android
apk-interceptor هو ملف APK اختباري محمول لتقييم أمان التطبيقات بعد الحصول على إذن. يساعد مهندسي الأمان في التحقق من كيفية تعامل تطبيق Android مع نقاط الدخول الخارجية مثل مخططات URI المخصصة، والروابط العميقة، والأنشطة المصدرة (Exported Activities)، وجسور JavaScript في WebView.
الأداة مقيدة عمداً:
android.permission.INTERNETcontent://خلال تقييم أمان تطبيقات Android، لا تزال العديد من النتائج من التحليل الثابت تحتاج إلى دليل إثبات صغير على الجهاز قبل تأكيدها: تسجيل مخطط URI مخصص، إرسال Intent صريح، تقديم حمولة محلية عبر content://، أو التحقق مما إذا كان JavaScript يمكنه الوصول إلى جسر WebView.
بناء تطبيق اختبار مؤقت جديد لكل حالة متكرر وعرضة للخطأ. الاختلافات الصغيرة في إدخالات البيان، والسلطات (authorities)، ومنح URI، وأسماء الحزم، أو بناء Intent يمكن أن تبطئ التحقق وتجعل النتائج أصعب في التكرار.
تم إنشاء apk-interceptor لجعل خطوة التأكيد قابلة للتكرار. بدلاً من كتابة تطبيق PoC جديد لكل تقييم، تقوم ببناء هذه الأداة باستخدام المخطط المخول أو معرف التطبيق الذي تحتاجه، وتجري الاختبار على الجهاز، وتحافظ على سير العمل مقيداً بالتصميم: بدون إذن INTERNET، بدون نقل بيانات خارجي، بدون تنفيذ أوامر shell، وبدون اعتماد على الجذر.
apk-interceptor مفيد لمهام التقييم التالية:
| السيناريو | الوحدة | ما يساعد في التحقق منه |
|---|---|---|
| اختطاف مخطط URI مخصص | Interceptor | ما إذا كان تطبيق آخر يمكنه تسجيل نفس المخطط المخصص واستلام الروابط |
| معالجة معاملات الرابط العميق | Sender | ما إذا كان التطبيق المقيم يقبل معاملات غير آمنة للمسار/الاستعلام |
| كشف نشاط مصدر | Sender | ما إذا كان يمكن تشغيل نشاط مصدر مباشرة بواسطة تطبيق آخر |
كشف جسر WebView عبر content:// | Payload + Sender | ما إذا كانت حمولة HTML محلية يمكنها الوصول إلى جسر JavaScript في WebView |
| التحقق من صيغة الحمولة المحلية | Payload | ما إذا كانت حمولة HTML/JS الخاصة بك تعمل في WebView للاختبار الذاتي |
شروحات مفصلة للثغرات:
content://يحتفظ التطبيق بسجل تقييم في الذاكرة لـ Intents المرسلة، والروابط العميقة المستقبلة، واستدعاءات الجسر، ونتائج JavaScript، والأخطاء. تختفي السجلات عند إنهاء عملية التطبيق. نظراً لأن السجلات لا تستمر، التقط الأدلة باستخدام لقطات الشاشة أو تسجيل الشاشة أثناء العمل.
apk-interceptor هو أداة تأكيد، وليس إطار اكتشاف أو استغلال. يفترض أنك تعرف بالفعل ما تريد اختباره (المخطط، فئة النشاط، اسم الجسر) من التحليل الثابت، ويمنحك طريقة آمنة على الجهاز للتحقق من الوصول والتقاط الأدلة. تم بناؤه ليتم تثبيته على جهاز تقييم وحتى مشاركته مع عميل، لذلك لا يشمل إذن INTERNET، ولا تنفيذ أوامر shell، ولا تسريب بيانات، ولا يتطلب صلاحية الجذر.
أين يقع بجانب الأدوات المعتادة لنظام Android:
| أداة | الدور | كيف يختلف apk-interceptor |
|---|---|---|
| jadx / MobSF / QARK / Semgrep | العثور على نقاط الدخول الضعيفة (ثابت) | apk-interceptor لا يفحص أو يفك التجميع؛ بل يؤكد وجود نتيجة لديك بالفعل |
deep-C / NSdeepLink / adb am start | تعداد إرسال الروابط العميقة | apk-interceptor يمكنه الإرسال أيضاً، لكن ميزته الفريدة هي استلام مخطط مختطف وعرض URI والمعاملات بالضبط |
| drozer | إطار هجوم عام على الجهاز (عامل + غالباً جذر) | apk-interceptor هو APK خفيف واحد مع حواجز أمان متعمدة، ونطاق أضيق، وتوزيع أسهل وآمن للعملاء |
| Metasploit / Frida | تسليح أو خطاف (مثل addJavascriptInterface RCE) | apk-interceptor يتحقق فقط من قابلية الوصول للجسر بحمولة غير ضارة؛ لا يسرب البيانات أو ينفذ أوامر shell أبداً |
المجالان اللذان يتمتع فيهما apk-interceptor بميزة واضحة على البدائل:
adb/التحليل الثابت إظهاره.content:// → جسر WebView: مزود غير مصدر بملف واحد يتم تسليم حمولته فقط من خلال منح قراءة Intent مؤقت، بالإضافة إلى WebView محلي للاختبار الذاتي للتحقق من صيغة الحمولة أولاً.يتعامل apk-interceptor مع الإرسال والاعتراض بشكل مختلف، وهذا هو أهم شيء يجب فهمه قبل الاستخدام:
| الإجراء | الوحدة | هل يحتاج مخطط مخصص في وقت البناء؟ |
|---|---|---|
| إرسال Intent أو رابط عميق إلى تطبيق آخر | Sender | لا، اكتب أي URI أو حزمة أو نشاط في وقت التشغيل |
| اعتراض (استلام) رابط عميق لمخطط مخصص | Interceptor | نعم، يتم تثبيت المخطط في APK في وقت البناء |
لإرسال رابط عميق مصمم إلى التطبيق المقيم، لا تحتاج إلى إعادة بناء: استخدم وضع الرابط العميق الضمني (Implicit Deeplink) في علامة التبويب Sender واكتب أي URI.
لاعتراض رابط عميق، أي جعل Android يوجه مخطط مخصص إلى apk-interceptor حتى تتمكن من ملاحظة احتمال اختطاف المخطط، يجب بناء APK بهذا المخطط باستخدام --scheme. يتم تثبيت المخطط في وقت البناء عن قصد (كميزة أمان تصميمية)؛ لا يسجل apk-interceptor مخططات عشوائية في وقت التشغيل. إذا قمت بتغيير المخطط الذي تقيمه، قم بإعادة البناء وإعادة التثبيت.
adb لتثبيت الجهاز واختبار سطر الأوامر الاختياريقم ببناء APK باستخدام مخطط URI المخصص الذي لديك الإذن بتقييمه:
./build-interceptor.sh --scheme <authorized_custom_scheme>
adb install ./out/apk-interceptor-<authorized_custom_scheme>-debug.apk
علامات البناء الاختيارية:
./build-interceptor.sh \
--scheme <authorized_custom_scheme> \
--app-id <custom.application.id> \
--output ./out
--app-id يحدد معرف التطبيق المثبت (هوية الحزمة على الجهاز وسلطة content://<applicationId>.payload) في وقت البناء. الافتراضي هو com.sterrasec.apkinterceptor. قم بتجاوزه باستخدام --app-id عندما تحتاج إلى إصدارات متعددة قابلة للتثبيت بشكل منفصل لتقييمات مختلفة. المكافئ لنظام Windows هو build-interceptor.bat.
المخطط الافتراضي intercept-poc-example هو عنصر نائب غير ضار. يرفض سكريبت البناء إنتاج APK تقييم بهذا المخطط الافتراضي.
في التشغيل الأول لكل إصدار من التطبيق، يعرض apk-interceptor مربع حوار الاستخدام المأذون. بعد النقر على أنا أفهم، لا يظهر مربع الحوار مرة أخرى لنفس الإصدار. لا تزال علامة التبويب Sender تظهر تحذيراً مستمراً لأنه يمكنها إرسال Intents إلى تطبيقات أخرى.
| Sender | Payload | Interceptor |
|---|---|---|
![]() | ![]() | ![]() |
استخدم علامة التبويب هذه للتحقق من اعتراض مخطط URI المخصص.
ماذا يعرض: