arrow_back

تقديم الأداة tcpdump

Sign in Join
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

تقديم الأداة tcpdump

Lab 1 hour universal_currency_alt 1 Credit show_chart Introductory
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

مقدّمة

في هذا الدرس التطبيقي، ستتعرّف على الأداة tcpdump وبعض ميزاتها. Tcpdump هي أداة لتحليل بيانات الشبكات الأساسية لمتخصّصي أمن المعلومات والشبكات. وبصفتك متخصّص دعم فني في مجال تكنولوجيا المعلومات، تُعد معرفة آلية عمل هذا التطبيق وكيفية استخدامه أمرًا ضروريًا إذا كنت تريد معرفة آلية عمل بروتوكول TCP/IP. ستساعدك الأداة Tcpdump في الاطّلاع على حركة بيانات الشبكة لتحليل البيانات وتحديد المشاكل وحلّها بطريقة أسهل.

سيكون لديك 60 دقيقة للانتهاء من هذا الدرس التطبيقي.

المهام التي ستنفِّذها

  • أساسيات الأوامر: ستتعرّف على كيفية استخدام الأداة tcpdump ومهام بعض علاماتها، بالإضافة إلى كيفية تفسير النتائج.
  • عمليّات التقاط حِزم البيانات: ستتدرّب على حفظ عمليّات التقاط حِزم البيانات في الملفات وقراءتها مرة أخرى.

ستكون هناك بعض الخطوات في هذا الدرس التطبيقي تتطلّب فتح أكثر من وحدة طرفية في آنٍ واحد، لذا احرص على إبقاء وحدة طرفية بالإضافة إلى وحدة طرفية أخرى للاتصال مفتوحتَين. وبهذه الطريقة، يمكنك اختيار SSH في جهاز افتراضي (VM) أكثر من مرة.

إعداد الدرس التطبيقي

بدء الدرس التطبيقي

عليك أولاً بدء الدرس التطبيقي لتتمكّن من الوصول إلى المواد في نظام تشغيل الجهاز الافتراضي. ولإجراء ذلك، انقر على الزر الأخضر Start Lab (بدء الدرس التطبيقي) في أعلى الشاشة.

ملاحظة: في هذا الدرس التطبيقي، ستتمكّن من الوصول إلى الجهاز الافتراضي الذي يعمل بنظام التشغيل Linux من خلال برنامج SSH المحلي، وليس من خلال Google Console (الزر Open GCP Console/فتح وحدة تحكُّم GCP غير متوفّر في هذا الدرس التطبيقي).

Start Lab (بدء الدرس التطبيقي)

بعد النقر على الزر Start Lab (بدء الدرس التطبيقي)، ستظهر لك كل تفاصيل اتصال SSH على يسار الشاشة. ومن المفترض أن تظهر الشاشة بالشكل التالي:

Connection Details (تفاصيل الاتصال)

الوصول إلى الجهاز الافتراضي

يُرجى البحث عن أحد الخيارات الثلاثة التالية وفقًا لنظام تشغيل جهازك.

ملاحظة: قد يكون العمل على منصة Qwiklabs مماثلاً لمهام متخصّصي الدعم الفني في مجال تكنولوجيا المعلومات، حيث ستتعامل مع أحدث التقنيات التي تتطلّب تنفيذ خطوات متعدّدة للوصول للموارد، ومن ثمّ عليك التحلّي بقدر كافٍ من الصبر والمثابرة. ستستخدم أيضًا SSH للانضمام إلى الدروس، وهي مهارة مُهمة للغاية في ما يتعلّق بالدعم الفني في مجال تكنولوجيا المعلومات والتي ستساعدك الدروس على تعلّمها واستخدامها.

الخيار 1: لمستخدمي نظام التشغيل Windows: الاتصال بجهازك الافتراضي

في هذا القسم، سيتم الاتصال باستخدام برنامج PuTTY Secure Shell (SSH) وعنوان IP الخارجي لجهازك الافتراضي.

تنزيل ملف مفتاح PPK

يمكنك تنزيل ملف المفتاح الخاص للجهاز الافتراضي بتنسيق PPK المتوافق مع برنامج PuTTY من خلال صفحة Start Lab (بدء الدرس التطبيقي) على منصة Qwiklabs. انقر على Download PPK(تنزيل PPK).

PPK

الاتصال بالجهاز الافتراضي باستخدام SSH وPuTTY

  1. يمكنك تنزيل Putty من هنا.

  2. في المربّع Host Name (اسم المضيف) (أو IP address/عنوان IP)، أدخِل ـusername@external_ip_address.

ملاحظة: استبدِل username (اسم المستخدم) وexternal_ip_address (عنوان IP الخارجي) واكتب بدلاً منهما القيمتين الواردتَين في الدرس التطبيقي.

Putty_1

  1. في قائمة Category (الفئة)، وسِّع SSH.

  2. انقر على Auth (المصادقة). ملاحظة: لا توسِّع هذا القسم.

  3. في المربّع Private key file for authentication (ملف المفتاح الخاص للمصادقة)، تصفَّح للوصول إلى ملف PPK الذي تم تنزيله وانقر عليه مرّتين.

  4. انقر على الزر Open (فتح).

ملاحظة: يتم استيراد ملف PPK إلى أداة PuTTY باستخدام خيار Browse (تصفُّح) المتوفّر. لن يفتح الملف مباشرة ولن يتم استخدامه إلا من خلال برنامج PuTTY.

Putty_2

  1. انقر على Yes (نعم) عندما يُطلب منك السماح بالاتصال الأول بخادم SSH البعيد. لن يُطلب منك إدخال كلمة مرور لأنك تستخدم مفتاحَي تشفير للمصادقة.

المشاكل الشائعة

إذا لم يتمكّن PuTTY من الاتصال بالجهاز الافتراضي الذي يعمل بنظام التشغيل Linux، عليك التحقّق مما يلي:

  • إدخال <اسم المستخدم>@<عنوان IP خارجي> في PuTTY.

  • تنزيل ملف PPK جديد لهذا الدرس التطبيقي من منصة Qwiklabs.

  • استخدام ملف PPK الذي تم تنزيله في PuTTY.

الخيار 2: لمستخدمي نظامَي التشغيل OSX وLinux: الاتصال بجهازك الافتراضي من خلال SSH

تنزيل ملف المفتاح الخاص للجهاز الافتراضي

يمكنك تنزيل ملف المفتاح الخاص بتنسيق PEM من خلال صفحة Start Lab (بدء الدرس التطبيقي) على منصة Qwiklabs. انقر على Download PEM (تنزيل PEM).

PEM

الاتصال بالجهاز الافتراضي باستخدام تطبيق Terminal المحلي

المحطة الطرفية هي برنامج يوفّر واجهّة تستند إلى النص لكتابة الأوامر. يتم هنا استخدام المحطة الطرفية بصفتها برنامج SSH للاتصال بالجهاز الافتراضي الذي يعمل بنظام التشغيل Linux ومتوفّر في هذا الدرس التطبيقي.

  1. افتح تطبيق Terminal.

    • لفتح المحطة الطرفية في نظام التشغيل Linux، استخدِم مفتاح الاختصار Ctrl+Alt+t.

    • لفتح المحطة الطرفية في نظام التشغيل Mac (OSX)، أدخِل cmd + مسافة وابحث عن terminal (محطة طرفية).

  2. أدخِل الأوامر التالية:

ملاحظة: استبدِل path/filename for the PEM (المسار/ اسم الملف واستخدِم محله ملف PEM) الذي تم تنزيله وusername (اسم المستخدم) وExternal IP Address(عنوان IP الخارجي).

ستجد على الأرجح ملف PEM ضمن Downloads (عمليات التنزيل). إذا لم تكن قد غيّرت إعدادات التنزيل على النظام، سيكون مسار مفتاح PEM هو ‎~/Downloads/qwikLABS-XXXXX.pem

chmod 600 ~/Downloads/qwikLABS-XXXXX.pem
ssh -i ~/Downloads/qwikLABS-XXXXX.pem username@External Ip Address

SSH

الخيار 3: لمستخدمي "نظام التشغيل Chrome": الاتصال بجهازك الافتراضي من خلال SSH

ملاحظة: تأكَّد من أن الوضع الخاص أو الدردشة المتخفية غير مفعّليَن أثناء تشغيل التطبيق.

تنزيل ملف المفتاح الخاص للجهاز الافتراضي

يمكنك تنزيل ملف المفتاح الخاص بتنسيق PEM من خلال صفحة Start Lab (بدء الدرس التطبيقي) على منصة Qwiklabs. انقر على Download PEM (تنزيل PEM).

PEM

الاتصال بجهازك الافتراضي

  1. أضِف Secure Shell من هنا إلى متصفّح Chrome.

  2. افتح تطبيق Secure Shell وانقر على [New Connection] (اتصال جديد).

    new-connection-button

  3. في قسم username (اسم المستخدم)، أدخِل اسم المستخدم المحدّد في لوحة Connection Details (تفاصيل الاتصال) الخاصة بالدرس التطبيقي. في قسم hostname (اسم المضيف)، أدخِل عنوان IP خارجيًا للجهاز الافتراضي المحدّد في لوحة Connection Details (تفاصيل الاتصال) الخاصة بالدرس التطبيقي.

    username-hostname-fields

  4. في القسم Identity (الهوية)، انقر على الزر Import…‎ (استيراد...) بجانب الحقل لاستيراد مفتاح PEM الذي تم تنزيله. اختَر مفتاح PEM وانقر على زر OPEN (فتح).

ملاحظة: إذا كان المفتاح لا يزال غير متاح بعد استيراده، عليك إعادة تحميل التطبيق واختيار المفتاح من القائمة المنسدلة Identity (الهوية).
  1. بعد تحميل المفتاح، انقر على الزر [ENTER] Connect (اتصال) أدناه.

    import-button

  2. عند ظهور أي رسائل مطالبة، اكتب yes (نعم) لمواصلة العملية.

  3. أنت الآن متصل بجهازك الافتراضي الذي يعمل بنظام التشغيل Linux.

يمكنك الآن استكمال الدرس التطبيقي.

استخدام الأداة tcpdump

ستبدأ الآن تنفيذ بعض المهام باستخدام الأداة tcpdump، بدءًا من الاستخدام الأساسي والعمل وصولاً إلى تنفيذ مهام أكثر تقدّمًا.

الاستخدام الأساسي

سنبدأ بتقديم الأداة tcpdump وتشغيلها بدون أي خيارات. تجدر الإشارة إلى أنّ الأداة tcpdump تتطلّب امتيازات الجذر أو المشرف من أجل التقاط حركة بيانات الشبكة، وبالتالي يجب أن يبدأ كل أمر بـ sudo. وكمتطلّب أدنى، عليك تحديد واجهة للاستماع عليها باستخدام العلامة ‎-i. وقد ترغب في التحقّق من اسم الواجهة الأساسية للشبكة باستخدام ip link. في هذه الحالة، سنستخدم الواجهة ens4 لجميع الأمثلة، ولكن ليس من الضروري أن تكون هذه هي الواجهة نفسها التي تستخدمها على جهازك الخاص.

لاستخدام الأداة tcpdump لبدء الاستماع إلى أي حِزم بيانات على الواجهة، أدخِل الأمر أدناه.

معلومات استرشادية: سيعمل هذا الأمر على ملء الوحدة الطرفية بتدفق مستمر للنص أثناء قراءة حِزم البيانات الجديدة. ولن يتوقف تدفق النص ما لم تضغط على Ctrl+C.

sudo tcpdump -i ens4

سيؤدّي هذا إلى إخراج بعض البيانات الأساسية حول حِزم البيانات التي يقرؤها الأمر مباشرة بصفتها إخراجًا موحَّدًا. وسيواصل الأمر هذه العملية إلى أن يتم إيقافه. ويمكنك إيقاف عمليّة تدفق البيانات في أي وقت من خلال الضغط على Ctrl+C.

بعد خروج الأداة tcpdump، يمكنك ملاحظة أنّها تطبع ملخصًا لعمليّة الالتقاط التي تم تنفيذها، والذي يعرض عدد حِزم البيانات التي تم التقاطها أو فلترتها أو إسقاطها:

e62459231285086a.png

بشكل تلقائي، ستُجري الأداة tcpdump بعض تحليلات البروتوكول الأساسية. وللحصول على تحليل أكثر تفصيلاً، يمكنك استخدام العلامة ‎-v لتوفير المزيد من النتائج التفصيلية. بشكل تلقائي، ستحاول الأداة tcpdump أيضًا إجراء عمليات بحث نظام أسماء النطاقات عكسية لحل عناوين IP إلى أسماء المضيفين، بالإضافة إلى استبدال أرقام المنافذ بأسماء الخدمات المرتبطة الشائعة. ويمكنك إيقاف هذا السلوك باستخدام العلامة ‎-n. يُنصح باستخدام هذه العلامة لتجنّب إنشاء حركة بيانات إضافية من عمليات بحث نظام أسماء النطاقات، ولتسريع عملية تحليل البيانات. لتجربة ذلك، أدخِل الأمر التالي:

معلومات استرشادية: سيعمل هذا الأمر على ملء الوحدة الطرفية بتدفق مستمر للنص أثناء قراءة حِزم البيانات الجديدة. ولن يتوقف تدفق النص ما لم تضغط على Ctrl+C.

sudo tcpdump -i ens4 -vn

يمكنك ملاحظة كيف أنّ النتائج توفّر الآن مزيدًا من التفاصيل لكل حِزمة بيانات:

e74637cc70c05cc3.png

بدون علامة النتائج التفصيلية، توفّر الأداة tcpdump ما يلي فقط:

  • بروتوكول الطبقة 3 وعنوانا المصدر والوجهة والمنافذ
  • تفاصيل بروتوكول TCP، مثل العلامات والتسلسل وأرقام ack وحجم النافذة والخيارات

باستخدام علامة النتائج التفصيلية، يمكنك أيضًا الحصول على جميع تفاصيل عنوان IP، مثل مدة البقاء، ورقم معرّف IP، وخيارات IP، وعلامات IP.

الفلترة

لنتعرّف بعد ذلك على لغة فلترة tcpdump، بالإضافة إلى تحليل البروتوكول. تستخدم الأداة Tcpdump لغة قوية لفلترة حِزم البيانات، بحيث يمكنك التقاط حركة البيانات المطلوبة أو التي تريد تحليلها فقط. تنتقل قواعد الفلترة إلى نهاية الأمر، وذلك بعد تحديد جميع العلامات الأخرى. سنستخدم الفلترة لالتقاط حركة بيانات نظام أسماء النطاقات إلى خادم نظام أسماء نطاقات محدَّد فقط. بعد ذلك، سننشئ حركة بيانات قليلة في نظام أسماء النطاقات، وذلك حتى نتمكّن من إثبات قدرة الأداة tcpdump على تفسير طلبات بحث نظام أسماء النطاقات واستجاباته.

واصِل العملية وأدخِل الأمر الآن. سيتم تشغيل الأمر إلى أن يتم إيقافه باستخدام Ctrl+C مثل الأمر السابق، لكن من المفترَض عدم ظهور أي نتائج بعد تشغيله.

sudo tcpdump -i ens4 -vn host 8.8.8.8 and port 53

لنشرح كيفية إنشاء هذا الفلتر والمهام التي ينفّذها بالتحديد. يحدّد الجزء Host 8.8.8.8 أننا نريد فقط حِزم البيانات التي يتطابق فيها عنوان IP للمصدر أو الوجهة مع ما نحدّده (8.8.8.8 في هذه الحالة). إذا كنا نريد حركة البيانات في اتّجاه واحد فقط، يمكننا أيضًا إضافة مؤهِّل اتجاه، مثل dst أو src (لعنوانَي IP للوجهة والمصدر على التوالي). ومع ذلك، فإنّ استبعاد مؤهِّل الاتجاه سيطابق حركة البيانات في أي من الاتجاهَين.

بعد ذلك، يعني الجزء port 53 أننا نريد فقط عرض حِزم البيانات التي يتطابق فيها منفذ المصدر أو الوجهة مع ما نحدّده (نظام أسماء النطاقات في هذه الحالة). يتم ضم عبارتَي الفلترة هاتَين مع عامل التشغيل المنطقي "and". وهذا يعني أنّ كلا نصفَي عبارتَي الفلترة يجب أن يكونا صحيحَين للحِزمة ليتم التقاطها بواسطة الفلتر.

الآن، واصِل الخطوات واتصِل بالوحدة الطرفية الثانية من خلال اتّباع التعليمات الواردة في القسم Accessing the virtual machine (الوصول إلى الجهاز الافتراضي). انقر على Accessing the virtual machine (الوصول إلى الجهاز الافتراضي) من مساحة الروابط على يمين الشاشة، ثم شغِّل الأمر التالي:

dig @8.8.8.8 A example.com

من المفترَض أن تظهر لك النتائج التالية على الشاشة:

e5f29bb1a837ebc6.png

يستخدم هذا الأمر الأداة المساعدة dig لطلب خادم نظام أسماء نطاقات محدَّد (8.8.8.8 في هذه الحالة)، حيث يطلب منه سجلّ A للنطاق المحدَّد ("example.com" في هذه الحالة).

بالعودة مرّة أخرى إلى الوحدة الطرفية الأصلية، من المفترَض أن تظهر لك الآن حزمتان تم التقاطهما، حيث تعمل قواعد الفلترة الخاصّة بنا على فلترة أي حركة بيانات أخرى:

b6a4cefaba5b53ef.png

حِزمة البيانات الأولى هي طلب البحث لنظام أسماء النطاقات، وهو طلبنا (من الوحدة الطرفية الثانية) الذي ينتقل إلى الخادم. وتجدر الإشارة إلى أنّ حركة البيانات في هذه الحالة هي UDP. يبدأ تحليل Tcpdump الخاص بطلب البحث لنظام أسماء النطاقات مباشرة بعد حقل checksum في UDP. يبدأ برقم معرّف نظام أسماء النطاقات، متبوعًا ببعض خيارات UDP، ثم نوع طلب البحث (A?‎ في هذه الحالة، ما يعني أننا نطلب سجلّ A). والتالي هو اسم النطاق المطلوب (example.com).

49bfc7a0a335ca52.png

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

8df52ed65c9b5f66.png

يمكنك الآن إيقاف جلسة الأداة tcpdump في الوحدة الطرفية الأصلية بالضغط على Ctrl+C. احرص على ترك نافذة الوحدة الطرفية الثانية مفتوحة، لأنّك ستحتاجها مرة أخرى قريبًا.

بعد ذلك، سنستكشف قدرة الأداة tcpdump على كتابة عمليّات التقاط حِزم البيانات في ملف، ثم قراءتها مرة أخرى من الملف.

حفظ حِزم البيانات التي يتم التقاطها

في إحدى الوحدات الطرفية لديك، شغِّل الأمر التالي:

sudo tcpdump -i ens4 port 80 -w http.pcap

يؤدّي هذا إلى بدء الالتقاط على واجهة ens4 التي تعمل على فلترة حركة بيانات بروتوكول HTTP فقط من خلال تحديد المنفذ 80. تشير العلامة ‎-w إلى أننا نريد كتابة حِزم البيانات الملتقَطة في ملف باسم http.pcap. ومثلما ذكرنا سابقًا بالنسبة إلى عمليّات الالتقاط الأخرى، سيستمر تشغيل هذا الأمر إلى أن تختار إيقافه باستخدام Ctrl+C.

بعد تشغيل هذا الأمر، انتقِل مرّة أخرى إلى الوحدة الطرفية الثانية، حيث عليك إنشاء بعض حركة بيانات بروتوكول http التي سيتم التقاطها في الوحدة الطرفية الأصلية. احرص على عدم إيقاف عمليّة الالتقاط التي بدأتها للتو من خلال تشغيل الأمر السابق (في حال كنت قد أوقفتها، يمكنك إعادة تشغيلها الآن).

في نافذة الوحدة الطرفية الثانية، نفِّذ الأمر التالي لإنشاء حركة بيانات قليلة:

curl example.com

يسترجع هذا الأمر ملف html من النطاق example.com ويطبعه على شاشتك. ومن المفترَض أن يظهر بالشكل الموضّح أدناه. (تجدر الإشارة إلى أنّ الجزء الأول فقط من النتيجة هو الذي يظهر هنا.)

d261699311c8cdba.png

بعد الانتهاء، أغلِق نافذة الوحدة الطرفية الثانية وانتقِل مرّة أخرى إلى الوحدة الطرفية الأصلية حيث يتم تشغيل عمليّة الالتقاط. ويمكنك إيقاف عمليّة الالتقاط باستخدام Ctrl+C. من المفترَض أن يتم عرض ملخص لعدد حِزم البيانات التي تم التقاطها:

aeacf2f21c2dea4f.png

سيتم أيضًا إنشاء ملف ثنائي باسم http.pcap يتضمّن حِزم البيانات التي تم التقاطها للتو. لا تحاول طباعة محتوى هذا الملف على الشاشة، حيث سيتم عرضه كمجموعة من النصوص المشوشة التي لن تتمكن من قراءتها لأنّه ملف ثنائي.

6649a448a7faef33.png

في موضع ما ضِمن هذا الملف، تتوفّر معلومات حول حِزم البيانات التي تم إنشاؤها عندما سحبتَ ملف html من النطاق example.com. يمكننا الآن القراءة من هذا الملف باستخدام الأداة tcpdump، وذلك باستخدام الأمر التالي:

tcpdump -r http.pcap -nv

5b2f12f38410cce2.png

تجدر الإشارة إلى أنّنا لسنا بحاجة إلى استخدام sudo لقراءة حِزم البيانات من الملف. وتجدر الإشارة كذلك إلى أنّ الأداة tcpdump تكتب حِزمًا كاملة في الملف، وليس فقط التحليل المستند إلى النص الذي تطبعه الأداة على الشاشة عندما تعمل بشكل عادي. على سبيل المثال، من المفترَض أن يظهر لك ضِمن النتائج ملف html الذي تم عرضه باعتباره نص طلب البحث الأصلي في الوحدة الطرفية الأخرى:

6d7bb5d7e908c6e.png

انقر على Check my progress (التحقّق من مستوى التقدّم) للتحقّق من إتمام الهدف.

كتابة حِزم في ملف

الخاتمة

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

إنهاء الميزة الاختبارية

عند الانتهاء من الميزة الاختبارية، انقر على End Lab (إنهاء الميزة الاختبارية). تزيل منصة Qwiklabs المصادر التي استخدمتها وتنظِّف الحساب نيابة عنك.

ستحصل على فرصة لتقييم تجربة الميزة الاختبارية. اختر عدد النجوم المناسب، واكتب تعليقًا، ثم انقر على Submit (إرسال).

يشير عدد النجوم إلى ما يلي:

  • نجمة واحدة = غير راضٍ تمامًا
  • نجمتان = غير راضٍ
  • 3 نجوم = محايد
  • 4 نجوم = راضٍ
  • 5 نجوم = راضٍ تمامًا

يمكنك إغلاق مربّع الحوار إذا لم ترغب في تقديم ملاحظات وآراء.

لتقديم ملاحظات وآراء أو اقتراحات أو تصحيحات، يُرجى استخدام علامة التبويب الدعم.