
🤖 تطبيق سطر أوامر يقوم تلقائيًا بتحضير ملفات APK لنظام أندرويد لفحص HTTPS
تطبيق CLI يُعد تلقائياً ملفات APK الخاصة بنظام Android لفحص HTTPS
فحص حركة HTTPS الخاصة بتطبيق جوال باستخدام وكيل هو على الأرجح أسهل طريقة لمعرفة كيفية عمله. ومع ذلك، مع إعدادات أمان الشبكة المُقدمة في Android 7 ومطورو التطبيقات الذين يحاولون منع هجمات MITM باستخدام تثبيت الشهادة، أصبح جعل التطبيق يعمل مع وكيل HTTPS أمراً شاقاً جداً.
apk-mitm يؤتمت العملية بأكملها. كل ما عليك فعله هو إعطائه ملف APK وسيقوم apk-mitm بـ:
يمكنك أيضاً استخدام apk-mitm لتصحيح التطبيقات باستخدام Android App Bundle وتجذير هاتفك ليس مطلوباً.
تعديل السلوك العادي لتطبيق ما للتحايل على ميزات الأمان مثل تثبيت الشهادة يتطلب إما تعديل كود المصدر للتطبيق قبل تشغيله أو "ربط" التطبيق أثناء تشغيله لاعتراض استدعاءات الدوال.
apk-mitm يتبع حالياً النهج الأول بتعديل كود التطبيق عن طريق أولاً "تفكيك" التطبيق باستخدام Apktool، وإجراء تغييرات على عدة ملفات، ثم تجميعه مرة أخرى (مرة أخرى باستخدام Apktool).
هذا النهج له فائدة أنه لا يتطلب جهازاً مُجذراً ولكن له أيضاً عدة عيوب. أكبر مشكلة هي أن التطبيقات ليست مُصممة حقاً ليتم تفكيكها. يحاول Apktool تحقيق ذلك على أي حال، ولكن، خاصة مع التطبيقات الكبيرة والمعقدة، غالباً ما يواجه مشاكل.
مشكلة أخرى مع هذا النهج هي أن بعض طرق تثبيت الشهادة، مثل الفحوصات التي تتم داخل الثنائيات الأصلية (كما هو الحال مع أطر العمل مثل Flutter)، إما صعبة جداً أو مستحيلة التحايل عليها. لهذا السبب، قد يكون من المفيد تجربة مناهج أخرى للتطبيقات الأكثر صعوبة.
على وجه التحديد، أود تسليط الضوء على مشروع android-unpinner الخاص بـ mitmproxy والبرامج النصية frida-interception-and-unpinning الأساسية من HTTP Toolkit. نهجهم يطبق التصحيحات في وقت التشغيل باستخدام Frida، وهو أكثر قوة بكثير ولكنه يعني أيضاً أنه إما لا يمكن استخدامه أو يصعب استخدامه بدون جهاز مُجذر.
إذا كان لديك إصدار محدّث من Node.js (14+) وJava (8+)، يمكنك تنصيب apk-mitm عن طريق تشغيل:
npm install -g apk-mitm
بمجرد التنصيب، يمكنك تشغيل هذا الأمر لتصحيح تطبيق:
apk-mitm <path-to-apk>
قد يبدو تصحيح ملف APK يُدعى example.apk مثل هذا:
$ apk-mitm example.apk
✔ Decoding APK file
✔ Modifying app manifest
✔ Replacing network security config
✔ Disabling certificate pinning
✔ Encoding patched APK file
✔ Signing patched APK file
Done! Patched APK: ./example-patched.apk
يمكنك الآن تنصيب ملف example-patched.apk على جهاز Android الخاص بك واستخدام وكيل مثل Charles أو mitmproxy للنظر في حركة التطبيق.
يمكنك أيضاً تصحيح التطبيقات باستخدام Android App Bundle مع apk-mitm بتزويده بملف *.xapk (مثلاً من APKPure) أو ملف *.apks (يمكنك تصديره بنفسك باستخدام SAI). إذا كنت تفعل هذا على Linux، تأكد من أن كلاً من zip و unzip مثبتان.
أحياناً ستحتاج إلى إجراء تغييرات يدوية على تطبيق لجعله يعمل. في هذه الحالات، خيار --wait هو ما تحتاجه. تفعيله سيجعل apk-mitm ينتظر قبل إعادة ترميز التطبيق، مما يسمح لك بإجراء تغييرات على الملفات في المجلد المؤقت.
إذا كنت ترغب في تجربة تغييرات مختلفة على APK، فإن استخدام --wait ربما ليس الخيار الأكثر ملاءمة لأنه يجبرك على البدء من الصفر في كل مرة تستخدمه. في هذه الحالة قد ترغب في إلقاء نظرة على APKLab. إنه بيئة عمل لعكس هندسة Android مبنية على VS Code وتأتي مع دعم apk-mitm ويجب أن تسمح لك بالتكرار بسرعة أكبر.
على بعض الأجهزة (مثل Android TVs) قد لا تتمكن من إضافة شهادة جديدة إلى شهادات الجذر للنظام. في تلك الحالات، لا يزال بإمكانك إضافة شهادة الوكيل الخاص بك مباشرة إلى إعدادات أمان الشبكة للتطبيق لأن ذلك سيعمل على أي جهاز. يمكنك تحقيق ذلك بتشغيل apk-mitm مع العلم --certificate مضبوطاً على مسار الشهادة (ملف .pem أو .der) المستخدمة بواسطة وكيلك.
إذا كان التطبيق يستخدم خرائط Google وكانت الخريطة معطلة بعد التصحيح، فمن المحتمل أن مفتاح API للتطبيق مقيد بشهادة المطور. ستحتاج إلى إنشاء مفتاح API خاص بك بدون قيود وتشغيل apk-mitm مع خيار --wait لتتمكن من استبدال قيمة com.google.android.geo.API_KEY في ملف AndroidManifest.xml للتطبيق.
إذا تعطل apk-mitm أثناء فك التشفير أو التشفير، فمن المحتمل أن المشكلة تتعلق بـ Apktool. تحقق من مشكلاتهم على GitHub للعثور على حلول بديلة محتملة. إذا صادفت إصداراً من Apktool غير متأثر بالمشكلة، يمكنك توجيه apk-mitm لاستخدامه عن طريق تحديد مسار ملف JAR الخاص به من خلال خيار --apktool.
MIT © Niklas Higi