مدونة الرووت جريس

مختصة بإدارة أنظمة لينكس\يونكس، الحوسبة السحابية والإنظمة التخيلية

تحليل بيانات الشبكة بإستخدام tcpdump و wireshark

السلام عليكم، مسائكم خير.

لي ثلاثة أيام أحاول أقنع نفسي إني أكتب بالمدونة، بس ما دري وش القصة، مالي نفس :-S

عموماً، مالكم بالطويلة، اليوم أبحكي إن شاء الله عن تحليل بيانات الشبكة الخاصة فيك عن طريق البرنامجين tcpdump و wireshark.

قبل أسترسل، وش الفائدة من إنك تحلل بيانات الشبكة الخاصة فيك؟

أوكي، الفائدة اللي راح تجنيها أكثر من مهمة، برنامج tcpdump يعتبر Packet Sniffer، يعني لاقط لبيانات الشبكة ( نقدر نقول شمام )، حيث إنك راح تعرف وش جالس يصير بالشبكة حقتك، وش يشتغل فيها من برامج، وش يشتغل فيها فايروسات وبرامج خبيثه، هل فيها أحد يتجسس في شبكتك أو لا؟

هل فيها هاكر جالس يسرح ويمرح بالشبكة، ولا لا؟

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

قبل فترة صارت لي مشكلة ما أحد حلها غير حبيب القلب tcpdump، كنت مركب Nagios عشان يراقب أداء الشبكة حقتي، ويعلمني إذا طاح سيرفر أو أحد أجهزة الشبكة من فايروول أو سويتش، المهم إنو كل ما فصلت النت عن سيرفر Nagios لقيت إنو يعطيني كل سيرفرات طايحة ما تشتغل ولاهي Reachable، مع إنها تشتغل زي اللوز:-S

وش الحل؟

شغلت tcpump، وفصلت النت عن السيرفر، وطلع لي زي ما ذكرت إنو Nagios أعتبر السيرفرات طايحة ولا هي تشتغل.

بعد ما حللت البيانات اللي جمعها tcpdump، لقيت إنو Nagios يطلع للنت لأجل يشيك على الأي بي IP حق السيرفرات اللي طالب إنه يراقبها، يعني يسوي لها Resolve، وحليت المشكلة إني طلبت من Nagios ما يسوي Resolve للأي بي، وبس !

هنا ساعدني tcpdump، وهالبرنامج واحد من أهم الأدوات والبرامج اللي لازم أدمن لينكس ويونكس يحترفها، لأنها تقريباً جزء من حل مشاكل السيرفرات!

نشوف طريقة تشغيلها

كرووت، شغلها من الشيل بالأمر tcpdump

#tcpdump

إنت الحين شغلتها بوضعها الأفتراضي، يعني ما أضفت عليها خيارات تحدد لها وش تلتقط بالظبط، راح تسوي sniffing ( أو تتشمم ) على أحد كروت الشبكة الخاصة فيك، يعني راح تلتقط الترافيك Tracffic أو البيانات حقت الشبكة حقتك بشكل عشوائي وغير محدد:


[root@j-asus ~]# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
15:34:04.098229 IP 92.48.51.133.57790 > google.navigation.opendns.com.http: F 3126607097:3126607097(0) ack 1305483288 win 14600
15:34:04.098269 IP 92.48.51.133.57789 > google.navigation.opendns.com.http: F 3105918910:3105918910(0) ack 1196845386 win 29200
15:34:04.098456 IP 92.48.51.133.57792 > google.navigation.opendns.com.http: S 3406826721:3406826721(0) win 5840
..
..
..
15:34:05.851580 IP mh-in-f101.google.com.http > 92.48.51.133.50425: . ack 1 win 65535
15:34:05.941572 IP mh-in-f101.google.com.http > 92.48.51.133.50427: S 2503931912:2503931912(0) ack 3435830781 win 65535
15:34:05.941638 IP 92.48.51.133.50427 > mh-in-f101.google.com.http: . ack 1 win 5840
15:34:05.941764 IP 92.48.51.133.50427 > mh-in-f101.google.com.http: P 1:501(500) ack 1 win 5840
15:34:06.321574 IP resolver1.opendns.com.domain > 92.48.51.133.47054: 51825 1/0/0 (80)
^C
29 packets captured
29 packets received by filter
0 packets dropped by kernel

زي ما إنتم شايفين فوق، هذي نتيجة الترافيك أو البيانات اللي طالعة وملتقطة من جهازي لما طلبت موقع قوقل السعودية www.google.com.sa

وتشوف إنهم عارضين لك الأي بي حق جهازي ( 91.48.51.133 )، – ترا الأي بي داينامك Dynamic، يعني لا أحد يستذكي :-P – ، ثم  كيف إنه راح لـ OpenDNS.Com (google.navigation.opendns.com) ، عشان يجيب الأي بي حق قوقل.

وبرضوا زي ما إنت شايف فوق، البرتوكول المستخدم هو http، يعني تفصيل كامل للترافيك اللي جالس يطلع ويدخل جهازي.

خلونا نخصص بحثنا، بحيث إنه فقط يلقط الترافيك اللي طالع من كرت الشبكة lo، اللي هو loopback، يعني الترافيك الداخلي حق جهازك وترافيك الخدمات اللي تشتغل داخل جهازك فقط ومافيه إمكانية أحد يدخلها عن طريق الشبكة، نضيف الخيار i، اللي هو من كلمة interface:

[root@j-asus ~]# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes

انا عندي سيرفرFTP بجهازي، خلوني أشبك عليه loopback وشوفوا وش بيعرض لي tcpdump:


tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
15:54:36.417605 IP j-asus.42564 > j-asus.ftp: S 1262612168:1262612168(0) win 32792
15:54:36.418101 IP j-asus.ftp > j-asus.42564: S 1261966294:1261966294(0) ack 1262612169 win 32768
15:54:36.418161 IP j-asus.42564 > j-asus.ftp: . ack 1 win 513
15:54:36.420582 IP j-asus.ftp > j-asus.42564: P 1:21(20) ack 1 win 512
15:54:36.420618 IP j-asus.42564 > j-asus.ftp: . ack 21 win 513
15:54:36.420747 IP j-asus.42564 > j-asus.ftp: P 1:7(6) ack 21 win 513
..
..
..
15:54:36.433696 IP j-asus.42564 > j-asus.ftp: . ack 309 win 513

زي ما إنتم شايفين، بدأ يعرض لي الترافيك اللي طالع واللي داخل من جهازي ( j-asus )، على برتوكول الأف تي بي.

اما إذا كنا نبغى  tcpdump يلقط الترافيك اللي رايح لسيرفر أو جهاز معين، يعني نبغى فقط نلقط الترافيك اللي رايح لموقع قوقل السعودية، www.google.com.sa، راح نضيف الخيار host ، كذا يعني:

tcpdump host www.google.com.sa

راح فقط يجيب لك الترفيك اللي طالع لموقع قوقل السعودية، اما إذا كان ودك تلقط الترافيك اللي طالع ورايح لبورت معين، مثلاً بورت 22، اللي خاص بالـSSH، نضيف الخيار port:

tcpdump port 22

وعشان نحفظ هالترافيك والبيانات في ملف، بدل ما تطلع لنا على الشاشة ، لجل نحللها برضوا في برنامج تحليل الترافيك ( wireshark ) – شرحه جاي تحت -، راح نضيف الخيار w، شوف الأمر تحت:

tcpdump -w /tmp/tcpdump01.cap

طيب كيف نقدر نلقط الترافيك اللي طالع لموقع قوقل السعودية من كرت الشبكة ppp0 الخاص بالموديم، ثم نحفظه في ملف لجل نحللها بعدين؟

سهلة:

tcpdump -i ppp0 host www.google.com.sa -w /tmp/tcpdump01.cap

أوكي، يمكن أحد منكم يعتبره طلاسم هالترافيك، عشان نفك الطلاسم هذي، راح نستخدم برنامج wireshark ( اللي كان اسمه قبل ethereal )، عشان يحللنا هالطلاسم هذي:

نثبت البرنامج:

yum -y -v install wireshark-gnome

بعد ما تثبته، رح شغل البرنامج عن طريق الشيل، وأضف بعده إمتداد الملف اللي إنت حفظت الترافيك حق tcpdump فيه، كذا:

wireshark /tmp/tcpdump01.cap

بيطلع لك برنامج الويرشارك wireshark، بيطلب منك إنك تكتب الرووت باسوورد، إنت إظغط run unprivileged ، عشان يفتح لك البرنامج بصلاحيات المستخدم الحالي مو الرووت، بيطلع لك الواجهة الرئيسية الخاصة فيه، كذا:

tcpdump

tcpdump

وعشان تبدأ تحلل البيانات، من القائمة العلوية اللي فيها File,Edit..، إختر Analyze، ثم Follow TCP stream ..

نقاط مهمة:

1- برنامج tcpdump يستخدم برضوا لإختراق، حيث إن يستخدم كأداة Sniffing تلقط كلمات المرور والبيانات الحساسة في شبكتك، والحل إنك تستخدم برتوكولات ما ترسل البيانات كـ Clear Text، مثل الأف تي بيFTP  أو التيلنت Telnet، وإستخدام برتوكولات أمنه ولا ترسل البيانات بدون تشفير، مثل SSH و SFTP.

2- لتشغيل tcpdump، لازم تكون رووت، لأنه يدخل كرت الشبكة Interface إلى Permicusue mode، اللي هو المود أو الحالة اللي يستطيع فيها كرت الشبكة إستقبال كل الترافيك اللي موجهه له.

طبعاً زي ما تعرف في الشبكات، كرت الشبكة ما يستقبل إلا الباكت Packet اللي موجهه له، اللي تحتوي الأي بي والماك أدرس تبعه، لكن في Permicusue mode، الكرت راح يقبل كل الباكتس، سوا له ولا مو له.

3-عشان تشوف هل كرت الشبكة الخاصة فيك داخل في Permicusue mode، كان في الكيرنيل القديمة ينعرض لك في نتائج الأمر ifconfig، لكن الحين تغير الوضع، لازم نفذ الأمر dmesg، اللي يعرض لك رسائل الكيرنيل والسيستم، أو، إقراء الملف/var/log/messages، مثال:

tail -f /var/log/messages

بيعرض لك أخر 10 أسطر، شوف وش طالع لنا:

Feb  5 18:15:58 j-asus kernel: device eth0 entered promiscuous mode

4- في يونكس فري بي إس دي FreeBSD، نفس الشيء مع الأمر tcpdump، لكن في إختلافات بسيطة.

موفقين،

جريس.

Posted in المصادر المفتوحة, خوادم وشبكات, لينكس | 6 Comments

6 Responses to تحليل بيانات الشبكة بإستخدام tcpdump و wireshark

  1. a|Maestro says:

    يا هلا بيك اخوي جريس
    اخيراً !!!
    اخيراً نزلت لنا موضوع بعد انقاط طويل يشيخ خاف ربك يومياً بزور موقعك لاني متعصب و عاشق لفيدورا و تقريباً قرأت كل موضوع نزلت بتدوينتك من اول تدوينه نزلتها الي اخر تدوينه للي هي ذي

    موضوع رائع رائع بل جباااار .. وفعلاً امكن قرات الموضوع في 10 دقايق وهو كلفك من الجهد والتفكير في كتابه هالموضوع ايام

    جريس .. ترددت كثيراً في كتابه تعليقي لانه هالموضوع اكبر مين قليلاً لكني استوعبت الكثير فيه خاصتاً وانا مركب Nagios علي سيرفراتي .. وفهمت فائده البرنامج و طريقه استخدامه ولكن عليه التطبيق و احتراف البرنامج

    سأتبعد قليلاً عن الموضوع … انا حالياً مبتدئ في اللينكس و بديت اعتمد علي فيدورا والاستغناء عن الويندوز لكن واجهتني الكثييييير من المشاكل والاستفسارات ولم اجد لها اجوبه ولا حتي في مجتمع اللينكس .. وبما انك من مستخدمي فيدورا كنت اتمني ان اطرح عليك استفساراتي فـ كيف يمكننني ذلك وماهو المكان المناسب لاستفساراتي ؟؟

    اتمني التواصل معاك
    اخوك .. محمد

  2. @a|Maestro ,
    هلابك والله أخوي، تسلم والله على حكيك.
    يمعليش اتأخر بالمواضيع، لكن والله الموضوع يحتاج وقت وتحضير، ويأخذ مني وقت غضب علي.
    عموماً، هلابك في فيدورا، وأحب أوضح لك نقطة أخوي:
    بما إنك مبتدئ، ترا لينكس فيدورا شويتين يبغى لها فهم وشد حيل، مقارنة مع لينكس أوبنتو.
    يعني، إذا كنت هاوي لأنظمة لينكس، والتعمق فيها، وحل المشاكل وفيهم الأوامر والشاشات السوداء، عليك بفيدورا.
    اما إذا صرت شخص ماله علاقة بالتعمق في لينكس وفهم طبيعته، فعليك بأوبنتو، أسهل لك.
    تقدر ترسلي إستسفاراتك على إيميلي:
    root@jerais.com
    وعشان تكون بالصورة، ترا أحياناً أتاخر بالرد على الإيميلات، يعني لاتظن ( والأخوان اللي يقرأون الرد هذا ) إني أطنش الإيميلات.
    اللي أرسل ميل ولا رديت عليه، ياليت يرسله من جديد، والمعذرة على السهو :-).
    الله يحيك أخوي.

  3. unary says:

    موضوع جميل أخي جريس
    و يمكن استخدام الاداة tshark ايضا في عمل دلك و تشتغل بدورها من سطر الاوامر و بعد الحصول على ملف ال cap يمكنك نقله الى جهازك عن طريق scp و فحصه ب wareshark او غيره .
    تحياتي لك و ننتظر مزيدا من متل هذه المواضيع الجميلة.

  4. @unary
    بخصوص إنك تلقط الباكتس عن طريق tshark بشكل مباشر ثم تنقلها عن طريق scp، تفاديت إني أستخدم tshark لاجل تلقط الباكتس لأنها تثبت مع الباكيج wireshark.
    والباكيج wireshark، ما تجي في السيرفر بشكل تلقائي، تلزمك إنك تثبتها مقارنة مع tcpdump.
    عموماً، تقدر تحلل الترافيك بإستخدام tcpdump فقط، عن طريق tcpdump -X
    وكل الطرق تؤدي إلى روما :-).
    هلابك عزيزي.

  5. Pingback: RJP | مدونة الرووت جريس » لتفادي إختراق موقعك، توقف عن إستخدام FTP

  6. Pingback: لتفادي إختراق موقعك، توقف عن إستخدام FTP « عالم التقنية