تحليل حركة مرور الشبكة لتطبيق الهاتف المحمول على iOS. الجزء 1 - الوكلاء


هناك حالات عندما يصبح من الضروري ، عند تطوير تطبيق محمول أو اختباره ، عرض حركة مرور الشبكة للتطبيق. هل ما زلت تعرض حركة مرور تطبيقات الجوال عن طريق عرضها في وحدة تحكم IDE؟ هناك أدوات أكثر فعالية لهذه المهمة ، على سبيل المثال ، الوكلاء. في هذه المقالة ، سنحلل بروكسيات HTTP (S) الأكثر شيوعًا ، ونتعلم كيفية استخدامها في تطوير iOS ، ونقارنها وفقًا لمعايير مختلفة.


علاوة على ذلك ، سنتحدث عن استخدام الوكلاء في تطوير iOS ، ولكن العديد من الأشياء قابلة للتطبيق أيضًا في تطوير Android.


الحذر ، تحت قطع الكثير من الصور.


يمكن تقسيم أدوات تحليل حركة مرور الشبكة لتطبيق الهاتف المحمول إلى:


  1. لا يتطلب التكامل في التعليمات البرمجية المصدر للتطبيق قيد الاختبار - الوكيل:
  2. اشتراط الاندماج في شفرة المصدر للتطبيق قيد الاختبار. وهي تتضمن بشكل أساسي أطر تصحيح الأخطاء:

هذا هو الجزء الأول من المقالة الذي سننظر فيه في استخدام الوكلاء ومقارنتهم وفقًا لمعايير مختلفة. في الجزء الثاني من المقالة ، سنستعرض بدقة أطر عمل التصحيح.


Mitmproxy



Mitmproxy هو مصدر مجاني ومفتوح (~ 12000 نجمة على github) HTTP (S) -proxy ، والذي يتكون من Mitmproxy نفسه ، وهو أداة وحدة تحكم لوكلاء المرور ، mitmdump ، أداة مساعدة وحدة تحكم إضافية تقدم وظائف مشابهة لـ tcpdump ، ولكن لـ HTTP (S) حركة المرور ، وكذلك mitmweb ، واجهة الويب لـ Mitmproxy.


يمكنك تثبيت Mitmproxy باستخدام Homebrew:


brew install mitmproxy


أو قم بتنزيل النسخة المطلوبة من صفحة الإصدار من الموقع الرسمي.


بعد التثبيت بنجاح ، لتحليل حركة مرور HTTP من جهاز محاكاة أو جهاز ، تحتاج إلى تحديد وكيل في إعدادات الشبكة.


بالنسبة للمحاكي ، تحتاج إلى تنشيط بروكسيات HTTP و HTTPS في إعدادات شبكة Mac OS (تفضيلات النظام -> الشبكة -> متقدم -> الوكلاء):



نص باش صغير للتنشيط السريع / تعطيل الوكيل في إعدادات الشبكة لشبكة Wi-Fi على جهاز Mac. (بمجرد تسجيل IP ومنفذ الوكيل في الإعدادات ثم استخدام أمر تشغيل proxy on أو proxy off من وحدة التحكم).


لاعتراض حركة المرور من جهاز حقيقي ، تحتاج إلى تحديد الوكيل في إعدادات شبكة iOS ، بينما يتم تعيين عنوان IP للكمبيوتر الذي يشغل Mitmproxy كعنوان IP للوكيل والمنفذ 8080. (يمكن عرض عنوان IP للكمبيوتر في الإعدادات> الشبكة)



في هذه المرحلة ، يمكننا بالفعل اعتراض حركة مرور HTTP ، ولكن لاعتراض حركة مرور HTTPS ، تحتاج إلى تثبيت شهادات Mitmproxy على جهاز المحاكاة / الجهاز.
للقيام بذلك ، على المحاكي ، قم بما يلي (بالنسبة لجهاز حقيقي ، فإن الخطوات متشابهة):


  • تأكد من تشغيل Mitmproxy وتم تنشيط الوكيل وتسجيله في إعدادات الشبكة (للمحاكي - إعدادات macOS للجهاز - إعدادات iOS) ، كما هو موضح أعلاه. انتقل الآن إلى المتصفح على mitm.it وانقر فوق رمز Apple لتنزيل شهادة Mitmproxy. سيظهر تنبيه برسالة مفادها أن موقع الويب هذا يحاول فتح إعدادات iOS: انقر فوق سماح.


  • ثم قم بتثبيت شهادة Mitmproxy.


  • واللمسة الأخيرة - لإصدار iOS 10.3 والإصدارات الأحدث ، يجب تمكين الوصول الكامل إلى شهادة الجذر Mitmproxy. للقيام بذلك ، انتقل إلى الإعدادات> عام> حول> إعدادات الثقة بالشهادة وقم بتنشيط الوصول الكامل لشهادة Mitmproxy.


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


بعد ذلك ، يمكنك تشغيل mitmproxy من وحدة التحكم ويشعر وكأنه مخترق أو عميل ويب mitmweb.


يقابلنا عميل وحدة التحكم بواجهة أنبوبية (لعشاق واجهة المستخدم الرسومية هناك حتى دعم الماوس) ، حيث يتم عرض جميع الطلبات التي تم اعتراضها.



يمكنك عرض معلومات تفصيلية لكل طلب (معلمات الطلب ، والعناوين ، والاستجابة ، وما إلى ذلك)



لدى Mitmproxy نظام تصفية استعلام قوي مع دعم التعبيرات العادية. يمكنك تصفية الطلبات حسب الرمز ، ونص الطلب / الاستجابة ، والعناوين ، والمجال ، وما إلى ذلك. اطلب المساعدة بشأن الاختصارات المتاحة وتعبيرات التصفية بالنقر ? . على سبيل المثال ، لمسح قائمة الاستعلامات الخاصة بالجلسة الحالية ، يمكنك ببساطة الضغط على z ، ولتصفية قائمة الاستعلامات حسب عنوان URL حيث توجد كلمة "تفاحة" ، تحتاج إلى الضغط على f وكتابة تعبير عامل تصفية بواسطة URL ~u apple ، والذي يأخذ تعبيرًا عاديًا.



كما سيكون من دواعي سرور عشاق Vim دعم hjkl. نسينا تقريبًا اختصارًا مهمًا للغاية q - يعمل مثل زر "رجوع" عند التنقل بين الشاشات ، وعلى الشاشة الرئيسية مع قائمة من الاستفسارات عند النقر فوق هذا الاختصار ، سيعرض Mitmproxy الخروج من البرنامج.
على الرغم من واجهة وحدة التحكم ، فإن استخدام Mitmproxy أمر ممتع بفضل الاختصارات المريحة والضوابط البديهية البسيطة. يوجد أدناه جدول صغير مع الاختصارات الرئيسية.


اختصارالوصف
؟؟؟النجدة
ضمحو قائمة الجلسات الحالية
وتصفية الجلسة
سالعودة (الخروج على الشاشة الرئيسية)
دإزالة الطلب من قائمة الجلسات
صكرر الطلب
هحفظ الطلب في الملف
زقائمة أهم الجلسات
زفي نهاية قائمة الجلسات

إذا كنت لا تزال معارضًا متحمسًا لوحدة التحكم وتتعرف فقط على تطبيقات واجهة المستخدم الرسومية ، فإن mitmweb في عجلة من أمرنا لمساعدتنا ، وسنطلقها في الوقت الحالي أيضًا من وحدة التحكم ، وبعد ذلك يمكننا عمل اختصار إلى سطح المكتب.



لا يزال عميل الويب قيد الاختبار التجريبي ويحتوي على وظائف mitmproxy الأساسية فقط (كافية لـ 95٪ من المهام) ، والتي يتم استكمالها تدريجيًا بميزات جديدة مع كل إصدار جديد ، ولكن على الرغم من ذلك ، يمكن استخدامه الآن وهو ملائم للغاية. تعمل أيضًا بعض الاختصارات من إصدار وحدة التحكم هنا ، على سبيل المثال ، لمسح قائمة الطلبات للجلسة الحالية ، ما عليك سوى الضغط على z . يمكنك أيضًا تصفية الطلبات التي تم اعتراضها من خلال حقل "البحث" ، كما فعلنا في تطبيق وحدة التحكم عندما طبقنا مرشح ~u apple .



يدعي Mitmproxy دعم معيار Websocket ، ولكن للأسف لم يتم تنفيذ عرض إطارات Websocket في واجهة المستخدم حتى الآن ، ووفقًا للمطورين ، فإن وظيفة Websocket متاحة فقط لأداة mitmdump.


تشارلز



ربما يكون Charles هو وكيل HTTP (S) الأكثر شيوعًا لنظام التشغيل MacOS ، ولكن العيب الوحيد هو أنه يتم دفعه ، حتى وقت كتابة هذا التقرير ، يكلف الترخيص 50 دولارًا. ومع ذلك ، هناك إصدار تجريبي - يعمل لمدة 30 دقيقة ، ثم يحتاج التطبيق إلى إعادة التشغيل ، ويفقد سجل الاستعلام بالكامل. هناك أيضًا تأخيرات في بدء التشغيل لمدة خمس ثوانٍ.


بعد التثبيت والبدء الأول ، سيطلب منك Charles منح الوصول لتهيئة وكيل النظام تلقائيًا ، أو تحديد "منح الامتيازات الخاصة" ، أو تغيير إعدادات وكيل النظام يدويًا في كل مرة. وبالتالي ، سيغير تشارلز نفسه وينشط إعدادات وكيل النظام عند تشغيله - وهذا مناسب عند تصحيح الأخطاء في المحاكي ، ولكن على جهاز حقيقي ، سيتعين عليك تعيين إعدادات الخادم الوكيل للشبكة يدويًا ، حيث يحدد الخادم الوكيل عنوان IP لجهاز الكمبيوتر الذي يعمل تشارلز ، كميناء - 8888.


في هذه المرحلة ، يمكننا فقط عرض حركة مرور HTTP ، لتحليل حركة مرور HTTPS من جهاز محاكاة أو جهاز حقيقي ، نحتاج إلى تثبيت شهادة Charles عليها ، الإجراء مشابه لتثبيت شهادة Mitmproxy. تأكد من تشغيل الخادم الوكيل وتنشيطه في إعدادات شبكة iOS (لجهاز حقيقي) أو في إعدادات شبكة macOS (لمحاكاة). ثم سنذهب إلى جهاز المحاكاة / الجهاز في المتصفح على chls.pro/ssl ، سيظهر تنبيه برسالة تفيد بأن موقع الويب هذا يحاول فتح إعدادات iOS: حدد السماح. بعد ذلك ، حدد تثبيت لتثبيت الشهادة. بعد تثبيت الشهادة لإصدار iOS 10.3 والإصدارات الأحدث ، يجب تمكين الوصول الكامل إلى شهادة Charles root. للقيام بذلك ، انتقل إلى Settings> General> About> Certificate Trust Settings وقم بتفعيل الوصول الكامل لشهادة Charles.



أخيرًا ، تحتاج إلى تكوين بروكسي SSL في تشارلز ، افتراضيًا لا يقوم بفك تشفير حركة مرور HTTPS ، حتى إذا قمت بتثبيت جميع الشهادات اللازمة. لتنشيط بروكسي SSL ، انتقل إلى Proxy> SSL Proxying Setings وقم بتنشيط بروكسي SSL ، إذا تم تعطيله ، فلدينا خياران - تمكين بروكسي SSL لجميع المجالات أو فقط لنطاقات محددة. لتمكين توكيل SSL لجميع المجالات ، تحتاج إلى إضافة موقع حرف بدل: انقر فوق الزر إضافة وحدد * في جميع الحقول ، بحيث يجب أن تبدو إعدادات SSL على هذا النحو.



لتمكين بروكسي SSL لنطاقات محددة فقط ، تحتاج إلى إضافتها إلى القائمة والتأكد من تعطيل موقع حرف البدل. في هذه الحالة ، سيظل تشارلز يعترض كل حركة المرور ، ولكن لن يتم فك تشفير طلبات HTTPS للنطاقات غير الموجودة في القائمة.


عند استخدام Charles ، من الملائم استخدام فلاتر اعتراض حركة المرور ، والتي يمكن تهيئتها في قائمة Proxy> Recording Settings: يمكنك تحديد البروتوكول وعنوان URL والمنفذ.



الآن لدينا القدرة على عرض حركة مرور HTTPS.



يدعم تشارلز أيضًا بروتوكول Websocket ويعرض الرسائل بأسلوب iMessage ، يبدو مناسبًا.



يستحق الوكيل الأول من نوعه تشارلز لنظام iOS ذكرًا خاصًا - إصدار الهاتف المحمول من تشارلز ، وسعره في متجر التطبيقات وقت كتابة هذا التقرير هو 9 دولارات. يحتوي التطبيق على الوظائف الأساسية لإصدار سطح المكتب: حركة مرور HTTP (S) ، وعرض محتوى الطلبات / الاستجابات والإعداد التلقائي المريح لإعدادات الوكيل لشبكة Wi-Fi.



جناح Burp (إصدار المجتمع)



Burp Suite هو سكين سويسري من المتسللين والمتسللين ، يحتوي على كمية غير لائقة من الأدوات والوظائف. إحدى الوحدات في Burp Suite هي وكيل ، والذي سنستخدمه لتحليل حركة مرور HTTP (S). هناك إصداران من التطبيق: Professional و Community Edition. إصدار المجتمع مجاني ، ولا يحتوي على ماسح ضوئي للثغرات ، وهناك حد لعدد الطلبات لكل وحدة زمنية ، ولكن على الرغم من ذلك ، فإن الإصدار المجاني من التطبيق هو أداة اختبار كاملة.


بعد بدء التطبيق ، تحتاج إلى إضافة وتنشيط الوكيل بالانتقال إلى Proxy> Options.



ثم تحتاج إلى التأكد من إيقاف اعتراض طلب الاعتراض ، وإلا فسيتم اعتراض الطلبات والاحتفاظ بها حتى تخبره بما يجب فعله بهذا الطلب - قم بإلغائه أو إعادة توجيهه إلى الخادم. لذلك ، قم بإيقاف تشغيله ، الآن نحن لسنا بحاجة إليه.



بعد ذلك ، تحتاج إلى تثبيت شهادة Burp Suite على جهاز المحاكاة / الجهاز ، يجب أن يكون هذا الإجراء مألوفًا لنا بالفعل بعد تثبيت شهادتي Mitmproxy و Charles. أطلقنا Burp Suite ، ولا ننسى تنشيط الوكيل في إعدادات شبكة MacOS للمحاكي أو في iOS للجهاز الحقيقي (راجع قسم Mitmproxy لمعرفة كيفية القيام بذلك) ، حدد عنوان IP للكمبيوتر الذي يقوم بتشغيل Burp Suite كخادم وكيل ، كمنفذ - 8080. ثم نذهب إلى المتصفح على جهاز المحاكاة وأدخل العنوان http: // burp . بعد ذلك ، انقر فوق الزر الموجود على موقع "شهادة CA" وقم بتنزيل الشهادة.



ثم قم بتثبيت الشهادة. بعد تثبيت الشهادة للإصدار 10.3 من iOS والإصدارات الأحدث ، يجب تمكين الوصول الكامل إلى شهادة الجذر Burp Suite. للقيام بذلك ، انتقل إلى Settings> General> About> Certificate Trust Settings وقم بتنشيط الوصول الكامل لشهادة Burp Suite.



بالانتقال إلى الوكيل -> علامة التبويب محفوظات HTTP ، يمكنك عرض حركة مرور HTTP (S) من تطبيق محمول. تجدر الإشارة إلى أن الجانب السلبي هنا هو عدم وجود تنسيق JSON في نص الطلب / الاستجابة.



يمكن حل مشكلة تنسيق JSON عن طريق تثبيت المكوّن الإضافي JSON Beautifier . للتثبيت ، انتقل إلى علامة التبويب Extender> BApp Store ، وابحث عن JSON Beautifier في قائمة المكونات الإضافية وانقر فوق تثبيت.



الآن هناك علامة تبويب JSON Beautifier إضافية مع JSON الجميل.



يدعم Burp Suite بروتوكول Websocket. يمكن العثور على رسائل Websocket في علامة التبويب الخاصة وكيل> محفوظات WebSockets.



OWASP ZAP



Owasp ZAP هي من بنات أفكار مجتمع الأمن السيبراني المشهور عالمياً Owasp ، بالإضافة إلى ذلك ، فإن الوكيل مفتوح المصدر. غالبًا ما تتم مقارنة Owasp ZAP مع Burp Suite ، ولكن الأخير أقل شائعًا. Owasp ZAP مجاني تمامًا ، لا توجد إصدارات PRO مقارنة بـ Burp Suite.


بعد بدء التطبيق ، تحتاج إلى التحقق من تفضيلات إعدادات الوكيل> الوكلاء المحليين ، يجب أن تبدو الإعدادات الافتراضية مثل هذا.



ثم انتقل إلى التفضيلات> شهادات SSL الديناميكية لتصدير شهادة SSL. انقر فوق الزر حفظ وحفظ الشهادة ، على سبيل المثال ، إلى سطح المكتب.



بعد ذلك ، ما عليك سوى سحب ملف الشهادة إلى المحاكي وفتح نافذة تعرض تثبيت الشهادة ، ونحن نوافق على التثبيت. بعد تثبيت الشهادة للإصدار 10.3 من iOS والإصدارات الأحدث ، يجب تمكين الوصول الكامل إلى شهادة الجذر OWASP ZAP. للقيام بذلك ، انتقل إلى الإعدادات> عام> حول> إعدادات الثقة بالشهادة وقم بتنشيط الوصول الكامل لشهادة OWASP ZAP.



الآن لدينا القدرة على عرض حركة مرور HTTPS. للأسف ، لا يحتوي تنسيق JSON على تنسيق جميل هنا وحتى الآن لم نتمكن من إصلاح هذا الموقف ، في الحالات القصوى ، يمكنك استخدام مُنسق JSON تابع لجهة خارجية ، على سبيل المثال هذا .



يدعم OWASP ZAP بروتوكول Websocket. يمكن العثور على رسائل Websocket في علامة تبويب خاصة WebSockets ، كما أنه من الملائم تحديد "القناة" للتصفية حسب المجال.



تثبيت SSL


إذا تم تنفيذ تثبيت SSL في تطبيقك ، فلن ترى حركة مرور التطبيقات التي يتم تشغيلها عبر الخادم الوكيل ، نظرًا لأن الوكيل يستخدم شهادته الخاصة لطبقة المقابس الآمنة ، وفي هذه الحالة هناك 4 خيارات:


  1. قم بتعطيل تثبيت SSL مؤقتًا أثناء تصحيح أخطاء طلبات الشبكة باستخدام وكيل.
  2. إضافة شهادة وكيل / مفتاح عمومي إلى الشهادات / المفاتيح التي تم تصحيح أخطاءها من أجل إصدارات التصحيح.
  3. استخدم شهادة الخادم للخادم الوكيل بدلاً من الشهادة الخاصة به التي تم إنشاؤها بواسطته.
  4. بدلاً من استخدام وكيل خارجي ، استخدم إطار عمل تصحيح الأخطاء (يشار إلى قائمة الأطر في بداية المقالة) ، والتي سوف تعترض وتعرض الطلبات والإجابات مباشرة في التطبيق نفسه ، ولكن هذا يتطلب الاندماج في شفرة مصدر التطبيق الموجودة ، المزيد عن هذه الأدوات في المقالة التالية.

الملخص


لنبدأ مع تشارلز. ربما يكون أفضل وكيل لأولئك الذين يريدون أن يعمل كل شيء خارج الصندوق ويكونوا سهل الاستخدام قدر الإمكان ، على الرغم من أن تشارلز قد يفاجئ المستخدم في بعض النقاط ، فإن وظيفة الوكيل واسعة جدًا ، كما أن لديها واجهة أجمل وأجمل لنظام macOS من جميع الموصوفة في المقالة الوكيل. إذا كنت لا تمانع في طرح 50 دولارًا لمثل هذه الأداة ، فهذا هو اختيارك.


دعنا ننتقل إلى Burp Suite. الأداة الأكثر قوة ، وفقًا لوظيفة معينة وحتى سهولة الاستخدام ، في بعض الحالات تعطي بسهولة فرص تشارلز ، بالإضافة إلى وجود نظام لتوسيع الوظائف في شكل المكونات الإضافية. أثبتت Burp Suite نفسها كأداة موثوقة ودقيقة للغاية في اليد اليمنى. إذا كنت تفتقر إلى وظائف وكيلك الحالي ، أنصحك بالاهتمام بهذه الحالة.


الآن جاء دور Mitmproxy - وكيل شاب وواعد واكتسب شعبية نشطة ، والتي يتم تطويرها من قبل مجتمع المصادر المفتوحة. الأكثر إثارة للجدل من الوكلاء الذين رأيناهم ، ولكن في نفس الوقت لم يكن أقل إثارة للاهتمام. تبرز Mitmproxy عن منافسيها من خلال واجهة المستخدم سهلة الاستخدام والبسيطة والوظيفية لوحدة التحكم. من الممكن أيضًا استخدام واجهة الويب Mitmweb ، ولكنها الآن في اختبار بيتا الذي من الممكن أن يكون نادرًا ، ولكن تظهر الأخطاء ، ولا يوجد جزء من وظيفة Mitmproxy المتقدمة (يتم إكمالها تدريجيًا) ، كما أنها أدنى قليلاً من الراحة بالنسبة إلى المزيد من المنافسين الأصليين. كان دعم بروتوكول Websocket مخيبا للآمال ، كما كان ، ولكن لا يوجد عرض في واجهة المستخدم أو أننا لم نتعلم كيفية إعداده ، لأننا لم نتمكن من جعل Mitmproxy لعرض رسائل Websocket ، على الرغم من أننا لم نواجه مثل هذه المشاكل مع الوكلاء الآخرين.


والأخير في القائمة ، ولكن ليس أقل إثارة للاهتمام كان Owasp ZAP. من الإيجابيات ، هناك نظام إضافي قابل للتوسيع (شخصيًا ، رقمهم أقل من Burp Suite) ، ولكن للأسف لم نتمكن من تكوين عرض JSON جميل في نص الطلب / الاستجابة ، وهو معيار بالغ الأهمية عند اختيار وكيل لتطوير المحمول. ومع ذلك ، فإن Owasp ZAP لديه نظام متقدم لاختبار حركة مرور Websocket ، بالإضافة إلى الاسم الكبير لمطوري مجتمع Owasp ورائي ، لذلك لن أخصم هذا الأمر وأخذت في الاعتبار للحالات النادرة والمعقدة.


يوجد أدناه جدول ملخص ذاتي للوكيلات التي قمنا بتحليلها.


المعيار / الوكيلMitmproxyتشارلزالبربسويت (CE)عواصة انطلق
تنسيق JSON+++-
تحرير وتكرار الاستعلامات++++
دعم Websocket-+++
البرمجيات الحرة+-++

سننتهي هنا ، ونأمل أن تكون المقالة مفيدة ، ويسعدنا أيضًا التعليق ، وإذا شاركت خبرتك في مجال اختبار ومراقبة حركة مرور تطبيقات الهاتف المحمول.

Source: https://habr.com/ru/post/ar421493/


All Articles