سلسلة تعلم tcpdump: الجزء الثاني

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

ذكرنا أن المعامل d يقوم بعرض محوّلات الشبكة الموصولة بالحاسوب، لاستخدام محول نستخدم المعامل i ويعني interface

tcpdump -i eth0 

الأمر أعلاه سوف يقوم بالاستماع (شمّ) الشبكة على المحول eth0. سوف تبدأ النتائج بعد ذلك بالظهور على الشاشة بشكل متواصل (على فرض أنّ هناك حركة بيانات على الشبكة). لإيقاف الأمر اضغط ctrl+c

بالإضافة لإظهار البيانات على الشاشة يمكن حفظها في ملف من أجل تحليلها لاحقاً باستخدم المعامل w وتعني write كالتالي:

tcpdump -i eth0 -w data-captured.dat


طبعاً كما هو واضح أعلاه نريد من tcpdump الاستماع على المحول eht0 وحفظ النتيجة على ملف اسمه data-captured.dat

ملاحظة: امتداد الملف هنا غير مهم.

اذا أردت حفظ النتائج في ملف وأيضاً في نفس الوقت مشاهدتها على الشاشة يمكنك اخراج النتائج باستخدام المعامل l (حرف اللام بالانجليزية) واستخدام الأمر tee للحفظ في ملف كالتالي

 tcpdump -l | tee data-captured.dat 

المعروف أن نتائج الأمر tcpdump كبيرة وعند تخزينها في ملف فسوف تأخذ مساحة كبيرة تبعاً لمقدار حركة البيانات لديك على الشبكة. tcpdump يدعم خاصية حفظ او التقاط عدد معين من الحزم باستخدام المعامل c كالتالي

tcpdump -c 1000

هنا سوف يقوم tcpdump بالتقاط ألف حزمة وبعدها ينهي عمله.

هناك معامل هام جدّاً في نظري يدعمه tcpdump وهو n ويعني لا تقم بمحاولة تحويل الاسم (من Ip إلى اسم) يمكنك حل الاسم في ما بعد (مثلاً باستخدام الأمر host) ولكن حتى تكون النتائج مخرجة بشكل أفضل وأيضاً لتوفير بعض العمليات (من خلال عدم اجراء name resolution) يفضل أن تستخدم هذا المعامل، عني شخصياً استخدمه باستمرار سواء مع tcpdump أو مع غيره من البرامج التي تدعم هذه الخاصية.

استخدامات متقدّمة أكثر

tcpdump لا يقوم بجمع الحزمة جميعها، وإنّما يقوم بجمع جزء من الحزمة لاجباره على جمع الحزمة كاملة يمكنك استخدام المعامل s ويعني size هكذا

tcpdump -s 0

إذا أردت فقط مقدار محدد من الحزمة مثلاً أول 1400 بايت من الحزمة يمكنك استخدام

tcpdump -s 1400

الآن دعنا نتصور السيناريو الآتي: لديك أكثر من 20 حاسوب موصولون على الشبكة وأنت مهتم فقط بحاسوب معين من بين هذه الحواسيب. tcpdump سوف يساعد في القيام بذلك من خلال المفتاح host كالتالي

tcpdump -i eth0 -n host 10.10.120.50

يمكنك باستخدام المفتاح host تحديد رقم محول الشبكة أيضاً (عنوان MAC) مسبوقاً بالمفتاح ether كالتالي:

tcpdump -i eth0 ether host aa:bb:cc:dd:ee:ff:11

يمكنك أيضاً استخدامه في الاستماع (التقاط حزم) من شبكة بعينها باستخدام المفتاح net

tcpdump -i eth0 -n net 10.10.120

أو

tcpdump -i eth0 -n net 10.10.120.0 mask 255.255.0.0

اذا أردت الاستماع على على منفذ معين يمكنك استخدام المفتاح port

tcpdump -i eth0 -n port 21

من الخصائص القوية جدّاً ل tcpdump هو امكانية استخدام العوامل مثل or و and و not مثلاً لمراقبة حاسوبان على الشبكة بدلاً من واحد يمكن استخدام الأمر التالي

tcpdump -i eth0 -n host 10.10.120.50 or 10.10.120.60

في هذه التّدوينة تعرّفنا على العديد من امكانيّات tcpdump مثل: الاستماع على محوّل معيّن، الكتابة على ملف، التقاط عدد معيّن من الحزم، مراقبة حاسوب معيّن او شبكة معيّنة أو منفذ معيّن، المعاملات AND و OR و NOT. امكانيّات tcpdump حقيقة كثيرة جدّا وقويّة جداً جداً. وسنتعرّف على العديد منها إن شاء الله في الجزء الثالث والاخير من هذه السّلسلة ولكن الان اترككم مع هذا الأمر للتفكير فيه 😉

tcpdump -n -vvv -XX dst port 21 and not src net 10.10.120.0 mask 255.255.0.0
نبذة عن الكاتب

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

التعليقات:

اترك تعليقاً | عدد التعليقات: (3)

  1. يقول Hit-Man:

    السلام عليكم
    أخي بشار بارك الله فيك على الدروسك
    بالنسبة لهدا الامر
    tcpdump -i eth0 -n host 10.10.120.50
    10.10.120.50 :هنا نكتب أي ايبي كمبوتر نريد التعامل معه في الشبكة .صح أخي ؟
    وشكرا لك أخي
    Hit-Man

  2. يقول Eslam Mamdouh El Husseiny:

    بارك الله فيك اخى
    بالنسبة للامر الاخر
    فالمقصود منه ان نلتقط الحزم التى ستذهب للمنفذ 21 و يشترط الا تكون ذاهبة للشبكة 10.10.120.0/24
    اما -xx فالمقصود منها انها تطبع الحزم فى صيغة hex بالاضافة الى link level header
    فما المقصود ب “link level header ”
    سؤال اخر :
    فى الامر المتضمن or ما الهدف من انى اضع or فى الامر “لم افهم لماذا or -قد يكون انه لو احدهما غير متاح يذهب للجهاز الثانى-“

  3. يقول B!n@ry:

    عاشت ايدك بشار على هذه السلسلة … مميزة جداً ومفيدة لنا جميعاً …

    سؤال: بخصوص الأمر الأخير الذي سألت عنه، ألا يجب ان يكون هكذا:
    tcpdump -n -vvv -XX dst port 21 and not src net 10.10.0.0 mask 255.255.0.0

    او هكذا:
    tcpdump -n -vvv -XX dst port 21 and not src net 10.10.255.255 mask 255.255.0.0

    أو إنه ال mask فيه الخطأ المطبعي والمفروض يكون 255.255.255.0 وليس 255.255.0.0 …

    لأن الأمر الذي وضعته حين تنفذه يعطيك خطأ بإنه لم تقم بتحديد بتات الشبكة ! هل هو خطأ مطبعي أم انا عندي مشكلة؟

    وشكراً …

أكتب تعليق