
مرحبًا ، اسمي أندري باتوتين ، وأنا كبير مطوري iOS في DataArt ، واليوم سنقوم بتتبع حركة مرور HTTPS لجهاز iPhone الخاص بك.
FoodSniffer وما يؤكل به
خذ ، على سبيل المثال ، تطبيق iOS البسيط
FoodSniffer . وتبعا للوقت من اليوم ، تبين للمستخدم ما يأكله.

يستقبل التطبيق من خادم JSON من النموذج:
[ { "name" : "soup", "consumePeriod" : "morning" }, … ]
الخادم في هذه الحالة هو Dropbox ، ويمكن عرض JSON
هنا .
المشكلة رقم 1
جاء خطأ أنه بدلاً من عنصرين في قائمة الطعام المسموح بها في الصباح ، يظهر التطبيق عنصرًا واحدًا فقط.
تتمثل إحدى طرق التحقق من الخطأ في رؤية ملف JSON الذي يرجعه الخادم إليك.
كيفية شم حركة المرور؟
لنفترض أن جهاز الكمبيوتر الذي يعمل بنظام التشغيل MacOS وجهاز iOS متصلان بالشبكة المحلية نفسها ، والذي يبدو كالتالي:

تنتقل حركة المرور من جهاز iOS عبر جهاز توجيه إلى خادم ، بغض النظر عن حركة الكمبيوتر.
لقراءة حركة مرور جهاز iOS ، نحتاج إلى جعله يمر عبر Mac. شيء من هذا القبيل:

بالإضافة إلى ذلك ، سنحتاج إلى
خادم وكيل HTTP / S ، والذي سنشاهد / نعدل به حركة مرور جهاز iOS.
مهمة أخرى مهمة جدًا هي أن تكون قادرًا على شم حركة مرور
HTTPS . تتمثل المشكلة في أن بروتوكول HTTPS تم إنشاؤه بحيث لا يستطيع أحد قراءة ما يتم إرساله في طلبات HTTPS ، باستثناء العميل والخادم. لذلك ، يجب أن يقدم وكيل HTTPS معه
شهادة SSL ، وهي ضرورية للعمل مع حركة مرور HTTPS.
بعبارة أخرى ، نحتاج إلى تنفيذ
هجوم M
an-in-the-Middle على شبكتنا.

تطبيق وكيل تصحيح أخطاء ويب تشارلز
كما ترون ، فإن شم حركة مرور HTTPS مهمة متعددة المراحل ، لذلك ، لتبسيط حياتي قدر الإمكان ، أستخدم
Charles Proxy .
لنبدأ بالسلبيات:
- يتم دفعها ، ولكن القيد الوحيد الموجود في الإصدار التجريبي هو أن تشارلز لا يعمل أكثر من 30 دقيقة ، ثم يجب إعادة تشغيله. لا يزال هناك تأخير لمدة خمس ثوانٍ عند بدء التشغيل. إنه أمر مزعج ، ولكن يمكنك العيش.
- إذا كنت بحاجة إلى أداة اختراق حقيقية للعمل على خادم بعيد 24/7 ، وحتى مع CLI العادية ، فإن Charles ليس مناسبًا لك.
- إذا كنت تعمل على Windows ، فمن الأفضل أن تأخذ Fiddler ، وهو مجاني أيضًا.
- إذا كنت بحاجة إلى خادم وكيل لعدد كبير من الأجهزة (أكثر من جهازين أو ثلاثة) ، فإن Charles ليس مناسبًا لك.
- إذا كنت بحاجة إلى العمل مع حزم TCP / IP في شكل نقي ، خذ Wireshark .
الآن الايجابيات:
- واجهة مستخدم سهلة الاستخدام. لا يتطلب تشارلز أي معرفة خاصة للتثبيت أو التهيئة أو الاستخدام. تطبيق نافذة MacOs عادي.
- HTTPS لنظام iOS - يحتوي Charles على مجموعة من الأدوات التي تجعل HTTPS تتنشق من جهاز iOS الخاص بك أبسط ما يمكن.
- الوظيفة - يمكن لـ Charles التعرف على حركة المرور التي يمر بها ، وتعديل حركة الإنترنت البطيئة ، وجمع الإحصاءات ، واستيراد / تصدير حركة المرور بتنسيقات مختلفة.
- متاح لنظامي التشغيل Windows و Linux.
بالنسبة لي ، هذا هو أفضل حل لنسبة الوظائف وسهولة الاستخدام عند العمل مع أجهزة iOS.
إعداد تشارلز وجهاز iOS
فيما يلي وصف لإجراء الإعداد الأولي لجهاز iOS للعمل مع Charles Proxy.
1. قم بتشغيل تشارلز على الكمبيوتر:

2. تثبيت شهادة Charles Root على جهاز iOS الخاص بك:
من القائمة ، حدد Help -> SSL Proxing -> Install Charles Root Certificate على الجهاز المحمول أو المتصفح البعيد.

ستظهر النافذة التالية:

3. في إعدادات الشبكة لجهاز iOS ، حدد IP ومنفذ Charles Proxy:

اعتمادًا على بنية الشبكة الخاصة بك ، قد يختلف عنوان IP الذي يعمل عليه تشارلز.
4. افتح المتصفح على جهاز iOS واتبع الرابط -
http://chls.pro/ssl .

5. تثبيت شهادة Charles SSL على الجهاز:

6. نشير في إعدادات الجهاز إلى أننا نثق تمامًا في هذه الشهادة:

المرحلة السادسة مطلوبة للأجهزة التي تعمل بنظام iOS 10 وأعلى.
في المراحل من 5 إلى 6 ، قمنا بتثبيت شهادة SSL على جهاز Charles وأشار إلى أننا نثق بها. أي أن جميع حركة مرور HTTPS الموقعة بهذه الشهادة لن يتم حظرها الآن بواسطة
ATS .
كيفية مشاهدة حركة مرور جهاز iOS
افتح تطبيق
FoodSniffer . إذا تم إعداد الوكيل بشكل صحيح ، فمن المفترض أن ترى شاشة مثل هذه:

في Charles Proxy ، انتقل إلى Tools -> No Caching.
وأوقف التخزين المؤقت تمامًا على الخادم الوكيل.

يقوم التطبيق بتطبيق Pull-to-التحديث ، بعد تحديث قائمة المنتجات ، يجب أن تشاهد
https://www.dropbox.com في القائمة على الجانب الأيسر في Charles. انقر بزر الماوس الأيمن عليه وحدد
تمكين SSL Proxing .

بعد ذلك ، قم بتحديث قائمة المنتجات في التطبيق مرة أخرى. الآن يجب أن ترى شيئًا مثل هذا:

يمكننا الآن قراءة حركة مرور HTTPS التي تأتي من التطبيق على Dropbox لـ JSON الخاص بنا بحرية.
لكن هذا ليس كل شيء!
لا يعطي Dropbox JSON من مضيف dropbox.com مباشرة. بدلاً من ذلك ، تقوم بإرجاع 302 استجابة وإعادة توجيه إلى مضيف آخر يتم تنزيل البيانات منه.
يمكنك العثور عليه
بالاطلاع على الرد الأولي للاستعلام التالي:

في هذه الحالة -
uc9c29db95802af8490afc3afda9.dl.dropboxusercontent.com .
سيكون لديك على الأرجح مضيف مختلف قليلاً.
ثم قم
بتمكين SSL Proxing: ممكّن لذلك.
نقوم بتحديث FoodSniffer مرة أخرى.
والآن يمكننا أن نرى أخيرًا JSON الحقيقي ، الذي يظهره التطبيق!

نرى أن لدينا نوعًا واحدًا فقط من الطعام في المساء - ويسكي ، اكتب عنه لقائد فريقنا واذهب لشرب القهوة ، المشكلة ليست في صالحنا.
* يستخدم المشروع JSON المصحح بالفعل ، مع نوعين من الطعام في المساء: البيرة والويسكي.
* إذا كنت لا ترى المضيف
http://uc9c29db95802af8490afc3afda9.dl.dropboxusercontent.com أو ما شابه ذلك في القائمة الموجودة على الجانب الأيسر من النافذة ، فحاول تحديث قائمة المنتجات في التطبيق عدة مرات.
المشكلة رقم 2 ، أو كيفية تغيير حركة مرور HTTPS لجهاز iOS
قام فريق الواجهة الخلفية بإصلاح القائمة في المساء ، والآن تم تشكيل JSON بشكل صحيح. ولكن ماذا لو كان الصباح ، ولا أشعر بالانتظار حتى المساء للتحقق من الإصلاح؟
أحد الخيارات هو استخدام Charles لتغيير JSON الذي يأتي إليك من Dropbox.
في هذه الحالة ، نحتاج إلى تغيير
استهلاك الفترة من
المساء إلى
الصباح .
للقيام بذلك ، حدد
أدوات -> إعادة الكتابة من القائمة.
في نافذة
إعدادات إعادة الكتابة التي تظهر ، أضف فئة جديدة للكتابة فوق -
صندوق الإسقاط .

أضف المضيف بتحديد منفذ https في قائمة
Edit Location :

بعد ذلك نضيف قواعد إعادة الكتابة في قائمة
إعادة كتابة القاعدة كما يلي:

أي أنه الآن في كل نص استجابة من خادمنا ، سيتم استبدال كلمة
المساء بكلمة
الصباح .
إذا لزم الأمر ، يمكننا تغيير أي جزء من طلب / استجابة HTTP ، بالإضافة إلى استخدام تعبير regex لاستبدال النص.
الآن ، بعد تحديث القائمة ، يجب أن نرى أربعة أنواع من المنتجات:

الخلاصة
تشارلز بسيط للغاية ، برنامج كومبيوتري يمكن نسخه وتوزيعه ، لديه وظائف HTTPS الوكيل الغنية من وجهة نظري ، يعمل بشكل أفضل عند العمل مع أجهزة MacOS و iOS.
هذا بعيد عن الطريقة الوحيدة للتعرف على حركة المرور. بالنسبة لحركة مرور HTTP / S ،
يستخدم Fiddler أيضًا على نطاق واسع. إذا كنت بحاجة إلى التعمق أكثر في مكدس TCP / IP ، فهناك
Wireshark .
بالإضافة إلى ذلك ، هناك مشكلة في
تثبيت الشهادة . إذا تم تنفيذه في تطبيقك ، فأنت بحاجة إلى إضافة شهادة Charles SSL إلى قائمة الشهادات المسموح بها ، أو استخدام أدوات مثل
Frida لتعطيل تثبيت الشهادة بالفعل على مستوى التطبيق. آمل أن أتحدث أكثر عن هذا في المقالة التالية.
سأكون سعيدًا إذا شاركت خبرتك في مراقبة حركة المرور ، بما في ذلك HTTP / S ، والنصائح وخطوات النجاة.
ملاحظة استخدم هذه التقنية فقط لتطبيقاتك ، من فضلك. كن قراصنة أرنب أبيض!
ملاحظة 2. مؤخرا ، تم نشر القصة حول هذا باللغة
الأوكرانية ، ولكن باللغة الروسية أنشرها لأول مرة.