تطبيق CLI يقوم تلقائيًا بإعداد ملفات Android APK لفحص 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. يطبق نهجهم التصحيحات في وقت التشغيل باستخدام 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)، قد لا تتمكن من إضافة شهادة جديدة إلى الشهادات الجذرية للنظام. وفي هذه الحالات، لا يزال بإمكانك إضافة شهادة الوكيل الخاص بك مباشرةً إلى تكوين أمان الشبكة الخاص بالتطبيق، حيث سيعمل ذلك على أي جهاز. يمكنك تحقيق ذلك عن طريق تشغيل 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
.
معهد ماساتشوستس للتكنولوجيا © نيكلاس هيجي