ورش عمل في Wireshark

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



قم بتثبيت Wireshark


يمكن العثور على توزيعات Wireshark لأنظمة التشغيل المختلفة هنا . لتثبيت البرنامج ، يمكنك تنزيل الملف المقابل وتثبيته. بدلاً من ذلك ، إذا كنت تستخدم توزيعات Linux استنادًا إلى Debian ، فيمكنك استخدام الأمر sudo apt install wireshark . إذا كنت ترغب في ذلك ، للعثور على أحدث إصدار من البرنامج ، يمكنك الرجوع إلى الأرشيف الشخصي لحزم wireshark-dev .

هذا ما تبدو عليه واجهة البرنامج.


واجهة Wireshark

للوهلة الأولى ، قد يبدو كل هذا معقدًا للغاية: قائمة طويلة من الحزم ، حقل غامض لإدخال نوع من الطلبات ... كيفية العمل مع Wireshark؟

تحليل ملفات PCAP


عادةً ما أستخدم Wireshark لاكتشاف أسباب مشكلات الشبكة. تسلسل الإجراءات المنفذة في سياق حل مثل هذه المشاكل يبدو كما يلي:

  1. التقط tcpdump باستخدام tcpdump (عادةً باستخدام أمر مثل sudo tcpdump port 443 -w output.pcap ).
  2. نسخ ملف pcap إلى كمبيوتر محمول يعمل ( scp host:~/output.pcap . ).
  3. فتح ملف wireshark output.pcap باستخدام Wireshark ( wireshark output.pcap ).

كما ترى ، كل شيء بسيط للغاية. ومع ذلك ، بعد فتح ملف pcap في البرنامج ، قد يكون لديك سؤال منطقي حول ما يجب القيام به مع كل هذا. لنتحدث عنه.

تحليل اتصال TCP


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

يمكنك القيام بذلك عن طريق النقر بزر الماوس الأيمن على الحزمة التي تريدها واختيار Conversation filter > TCP أمر Conversation filter > TCP في قائمة السياق.


ابدأ تحليل اتصال TCP

بعد ذلك ، سيعرض Wireshark حزمًا أخرى من نفس اتصال TCP الذي تنتمي إليه الحزمة التي نقرت عليها. في الشكل أدناه ، يمكنك مشاهدة مثال لاتصال SSL ناجح - هناك client hello ، service hello ، certificate ، وحزم server key exchange التي يتم استخدامها لإنشاء اتصالات SSL.


تحليل اتصال TCP

تقنية تحليل حزم TCP التي تمت مناقشتها هنا كان علي استخدامها في يوم كتابة هذا المقال ، في العمل. تم إسقاط بعض الاتصالات ، ولاحظت أنه بعد إرسال حزمة client hello ، أرسل client hello حزمة FIN ACK ، التي أنهت اتصال TLS. ما تمكنت من اكتشافه تبين أنه مفيد ، حيث أصبح من الواضح أن العميل وليس الخادم كانا ينهون الاتصال. ونتيجة لذلك ، اكتشفت على الفور أن المشكلة تكمن في العميل ، وأحتاج إلى الانتباه إليها.

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

فك كفريق


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

ومع ذلك ، تستخدم اتصالات HTTP أحيانًا منافذ غير عادية ، ونتيجة لذلك ، يحتاج Wireshark إلى تلميحات للتعرف عليها. يمكن إعطاء مثل هذه التلميحات للبرنامج عن طريق استدعاء قائمة سياق الحزمة واختيار أمر Decode as هناك. علاوة على ذلك ، يمكنك إخبار Wireshark بالبروتوكول المستخدم لإرسال الحزم باستخدام منفذ معين. تبسط هذه التلميحات تحليل البيانات.

عرض محتويات الحزمة


في Wireshark ، هناك ببساطة وضع ممتع لعرض معلومات تفصيلية حول حزمة ، يمكنك من خلالها فهم محتويات أي حزمة. خذ على سبيل المثال الحزمة مع رسالة client hello من المثال السابق. هذه هي الحزمة الأولى من اتصال SSL ، العميل بمساعدتها كما لو كان يقول: "مرحبًا! ها أنا ذا! "

يمنح Wireshark مسؤول الشبكة أداتين مفيدتين للغاية لفحص محتويات الحزمة. الأول هو وضع العرض حيث يمكنك توسيع الرؤوس المتوفرة للحزمة (على سبيل المثال ، رأس إيثرنت ، رأس IP ، رأس TCP) وعرض محتوياتها.


تحليل رأس الحزمة

الوضع الثاني لعرض الحزم هو معجزة حقيقية. هنا يمكنك رؤية بيانات الحزمة الأولية كتسلسل من وحدات البايت. وهو أمر جيد بشكل خاص ، إذا قمت بتمرير الماوس فوق البايت (على سبيل المثال ، في الشكل أدناه ، يكون المؤشر على البايت المضمّن في tiles.services.mozilla.com ) ، tiles.services.mozilla.com البرنامج في شريط الحالة tiles.services.mozilla.com مجال ينتمي إليه هذا البايت (في هذه الحالة هو حقل Server Name ) ، وعن اسم الرمز المستخدم بواسطة Wireshark لهذا الحقل (في هذه الحالة - ssl.handshake.extensions_server_name )


تحليل بيانات الحزمة الأولية

بحث حزمة


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

  • frame contains "mozilla" استعلام frame contains "mozilla" يسمح لك بالبحث عن خط mozilla في أي مكان في الحزمة وقائمة الحزم الموجودة.
  • يعرض طلب tcp.port == 443 الحزم باستخدام منفذ TCP 443.
  • يعرض الاستعلام dns.resp.len > 0 جميع إجابات DNS
  • يعرض ip.addr == 52.7.23.87 الحزم التي يكون عنوان IP للمصدر أو الوجهة هو 52.7.23.87.

تتمتع لغة استعلام Wireshark بقدرات أكبر بكثير من لغة استعلام tcpdump (بالإضافة إلى أنها تدعم الإكمال التلقائي بالضغط على مفتاح TAB). ونتيجة لذلك ، غالبًا ما أستخدم التسلسل التالي من الإجراءات: ألتقط كمية كبيرة من الحزم باستخدام tcpdump (على سبيل المثال ، شيء مثل جميع الحزم من المنفذ 443) ، ثم أدرسها بعناية باستخدام Wireshark.

عرض تفاصيل مدة اتصال TCP


في بعض الأحيان ، أحتاج إلى إيلاء اهتمام خاص لدراسة اتصالات TCP البطيئة. كيف يتم ذلك ، بشرط أن يوجد في ملفي سجلات لآلاف الحزم؟ كيف تجد اتصالات TCP البطيئة؟

إذا قمت بتحديد Statistics في القائمة الرئيسية للبرنامج وأمر Conversations فيه ، فسيقوم Wireshark بتزويدنا بمجموعة رائعة من المعلومات الإحصائية.


معلومات إحصائية

على وجه الخصوص ، هنا ، في عمود " Duration " ، يمكنك رؤية مدة اتصالات TCP وتحديد أطولها ودراستها بعناية. هذه ميزة مفيدة للغاية.

تحديث Wireshark


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

استخدام Wireshark لتعلم بروتوكولات الشبكة


تحتوي هذه المقالة على بعض المصطلحات التي يمكن أن تعزى إلى شيء مثل مصطلحات متخصصي الشبكات. على سبيل المثال - الإطار ، منفذ TCP (منفذ TCP) ، استجابة DNS (استجابة DNS) ، عنوان IP المصدر (عنوان IP المصدر) ، اتصالات حزمة client hello SSL (مرحبا عميل SSL). أحد أسباب استخدامها هو حقيقة أن Wireshark لا تحاول بالتأكيد حماية المستخدم من تعقيدات الهيكل الداخلي لتقنيات الشبكة. بالنسبة للمبتدئين ، قد تجعلك هذه الحالة ، في البداية ، تعتقد أن Wireshark ليس برنامجًا له ، ولكن فقط لمتخصصي الشبكات ذوي الخبرة.

ومع ذلك ، فإن تركيز Wireshark على آليات الشبكة منخفضة المستوى له ميزة إضافية. والحقيقة هي أنه باستخدام هذا البرنامج ، يمكنك تعلم شيء جديد حول بروتوكولات الشبكة. على سبيل المثال ، لا أعرف الكثير عن الآليات الداخلية لبروتوكول TLS / SSL. ومع ذلك ، عند تحليل حركة المرور في Wireshark ، لاحظت أن الحزم الأولين لاتصال SSL هي client hello server hello . ونتيجة لذلك ، فإن البروتوكول ، الذي ، إذا لم يتعمق أحد في تفاصيل عمله ، يبدو غامضًا وغير قابل للفهم ، يبدأ في اتخاذ شكل أكثر قابلية للفهم ، يتحول إلى شيء يمكن فهمه وتحليله.

الملخص


لدى Wireshark فرصًا هائلة. هنا تحدثنا فقط عن بعضها. ومع ذلك ، يتم استخدام طرق العمل التي تمت مناقشتها هنا ، وفقًا لمؤلف المادة ، في حوالي 95 ٪ من المواقف عندما تكون هناك حاجة إلى Wireshark. لذلك ، نأمل أن يكون القليل الذي تعلمته اليوم مفيدًا لك.

أعزائي القراء! هل تستخدم Wireshark؟

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


All Articles