خانه - نرم افزار
نصب و استفاده از tcpdump. هوا را فیلتر کنید! ما ترافیک شبکه را با استفاده از tcpdump Tcpdump بررسی می کنیم که چگونه پس از یک زمان مشخص متوقف شود

برای همین تصمیم گرفتم شیت تقلب خودم را بسازم تا ... چون بدون tcpdump بیش از یک ادمین غیر ادمین هستند.

معرفی

خیلی اوقات برای یافتن مشکلات در شبکه از آنها استفاده می کنند تحلیلگرهای ترافیک شبکه . tcpdumpیکی از نمایندگان این دسته از برنامه ها است، به شما امکان می دهد به گوش دادن (نمایش / ذخیره) و تجزیه و تحلیل عملکرد شبکه در سطح بسته های شبکه ارسال شده، فریم ها و سایر واحدهای انتقال ترافیک شبکه بپردازید. بسته به پیکربندی شبکه، tcpdump می تواند گوش کندنه تنها بسته هایی که برای یک آدرس MAC معین تعیین می شوند، بلکه بسته های پخش نیز هستند. شنود شبکه شنود بسته ها بر اساس حالت "بی بند و باری".عملکرد آداپتور شبکه

بسته به تجهیزات شبکه ای که برای اتصال کامپیوترها استفاده می شود شبکه های اترنتموارد زیر وجود دارد قابلیت شنیدن ترافیک:

  • مبتنی بر آنلاین متمرکز کننده هاتمام ترافیک از هاب برای هر میزبان شبکه در دسترس است.
  • در شبکه های مبتنی بر سوئیچ ها(سوئیچ می کند) میزبان شبکه فقط به ترافیک خود و همچنین کلیه ترافیک پخش این بخش دسترسی دارد.
  • برخی از سوئیچ های مدیریت شده عملکرد کپی کردن ترافیک یک پورت معین را به درگاه نظارت دارند ("Mirroring"، نظارت پورت).
  • هنگام استفاده از وسایل ویژه (کوپلر) موجود در شکاف اتصال شبکهو با ارسال ترافیک اتصال به پورت مجزا، امکان گوش دادن در پورت مربوطه وجود دارد.
  • "ترفند" با هاب این است که پورت سوئیچ که باید به ترافیک آن گوش داده شود، از طریق هاب روشن می شود، همچنین یک گره مانیتور را به هاب متصل می کند (در این مورد، در بیشتر موارد، عملکرد اتصال شبکه است. کاهش).

بنابراین، ابزار tcpdumpدر اکثر توزیع های یونیکس گنجانده شده است و به شما امکان می دهد ترافیک شبکه را در یک فایل رهگیری و نمایش/ذخیره کنید. ابزار استفاده می کند کتابخانه libpcap. همچنین یک پورت برای ویندوز وجود دارد. برای کارکردن ابزار ضروری است. به عنوان مثال، در دبیان با استفاده از دستور نصب می شود:

دبیان:~# apt-get install tcpdump

ابزارهای کمکی برای عملکرد ضروری هستند (از آنجایی که تنظیمات رابط شبکه تغییر کرده است - به حالت "بی بند و باری" تغییر می کند). به طور کلی فرمت دستور tcpdumpدارای فرم زیر است:

دبیان:~# tcpdump<опции> <фильтр>

گزینه های ابزار tcpdump

رابط -i

رابطی را مشخص می کند که ترافیک باید از آن تجزیه و تحلیل شود (بدون تعیین رابط - تجزیه و تحلیل "اولین موردی که ظاهر می شود").

ترجمه IP به را غیرفعال می کند نام های دامنه. اگر -nn مشخص شده باشد، تبدیل شماره پورت به نام پروتکل ممنوع است.

رایج ترین گزینه های فیلتر برای دستور tcpdump عبارتند از:

میزبان dst

بررسی می کند که آیا آدرس مقصد یک بسته IP با مقدار مشخص شده مطابقت دارد یا خیر. امکان تنظیم IP، Subnet در فرمت 10.0.0.1/24 و نام میزبان وجود دارد.

میزبان src

بررسی می کند که آیا آدرس منبع یک بسته IP با مقدار مشخص شده مطابقت دارد یا خیر. امکان تنظیم IP، Subnet در فرمت 10.0.0.1/24 و نام میزبان وجود دارد.

میزبان میزبان

بررسی می کند که آیا آدرس فرستنده یا گیرنده با مقدار مشخص شده مطابقت دارد یا خیر. امکان تنظیم IP، Subnet در فرمت 10.0.0.1/24 و نام میزبان وجود دارد.

net network_name

بررسی می کند که آیا آدرس فرستنده/گیرنده در شبکه مشخص شده است یا خیر. می توان شبکه را با فرمت CIDR مشخص کرد (مثلاً 10.0.0.1/22)، یا نام شبکه مشخص شده در را مشخص کرد.

آی پی | arp | rap | tcp | udp | icmp [میزبان]

بررسی می کند که آیا بسته به یکی از پروتکل های مشخص شده تعلق دارد یا خیر و هنگام تعیین آدرس میزبان، بررسی می کند که آیا آدرس فرستنده/گیرنده با آدرس مشخص شده مطابقت دارد یا خیر. امکان تنظیم IP، Subnet در فرمت 10.0.0.1/24 و نام میزبان وجود دارد.

پورت dst port_number

بررسی می شود که آیا بسته به پروتکل TCP/UDP تعلق دارد و آیا پورت مقصد با پورت مشخص شده برابر است یا خیر. می توانید شماره پورت یا نام مشخص شده در فایل /etc/services را مشخص کنید.

پورت src port_number

بررسی می شود که آیا بسته به پروتکل TCP/UDP تعلق دارد و آیا پورت منبع برابر با مشخص شده است یا خیر. می توانید شماره پورت یا نام مشخص شده در فایل /etc/services را مشخص کنید.

پورت_شماره پورت

بررسی می شود که آیا بسته به پروتکل TCP/UDP تعلق دارد و آیا مقصد یا پورت مبدا برابر با مشخص شده است یا خیر. می توانید شماره پورت یا نام مشخص شده در فایل /etc/services را مشخص کنید.

پخش آی پی

بررسی می کند که آیا بسته IP یک بسته پخش است یا خیر.

اتر ( src | dst | میزبان ) MAC_address

بررسی می کند که آیا بسته شبکه متعلق به منبع، مقصد، منبع یا مقصدی است که آدرس MAC_ داده شده را دارد.

پخش اتر

بررسی می کند که آیا بسته ARP یک بسته پخش است یا خیر.

نمونه هایی از استفاده از دستور tcpdump

تجزیه و تحلیل ترافیک در سطح شبکه (ARP، ICMP) با استفاده از tcpdump

فرض کنید 2 هاست داریم. هاست 1 با رابط eth0 و پارامترهای زیر:

Host1:~# ip addr show dev eth0 5: eth0: mtu 1500 qdisc pfifo_fast state ناشناخته qlen 1000 link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.56.1/24 brd fee 192.250th inet 192.158.1655. :800:27ff:fe00:0/64 پیوند دامنه valid_lft برای همیشه ترجیح داده_lft برای همیشه

و همچنین host2 با رابط eth1

Host2:~# ip addr show dev eth1 3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:fd:e5:aa brd ff:ff:ff:ff:ff:ff inet 192.168.56.33/24 scope global eth1 inet6 fe80:aff لینک دامنه :fefd:e5aa/64 valid_lft forever preferred_lft forever

فرض کنید تا کنون تبادل اطلاعات شبکه بین هاست ها صورت نگرفته است و اگر دستور ip neigh show را روی هاست 2 اجرا کنید، مشاهده می کنید که هیچ ورودی در جدول ARP وجود ندارد. بیایید یک آزمایش کوچک انجام دهیم. بیایید ابزار tcpdump را روی یکی از رابط های مجازی host1 اجرا کنیم:

Host1:~# tcpdump -ne -i eth0 tcpdump: خروجی پرمخاطب سرکوب شده است، از -v یا -vv برای شنیدن رمزگشایی کامل پروتکل در eth0، نوع پیوند EN10 مگابایت (اترنت)، اندازه ضبط 65535 بایت استفاده کنید.

Host1:~# ping -c 1 192.168.56.33 PING 192.168.56.33 (192.168.56.33) 56 (84) بایت داده. 64 بایت از 192.168.56.33: icmp_req=1 ttl=64 time=1.06 ms --- 192.168.56.33 آمار پینگ --- 1 بسته ارسال شده، 1 بسته، 0% از دست دادن بسته، زمان 0ms rtt min/mdev/ = 1.067/1.067/1.067/0.000 ms

پس از این، یک ورودی در مورد آدرس IP host2 در جدول ARP سیستم host1 ظاهر شد:

Host1:~# ip neigh show dev eth0 192.168.56.33 lladdr 01:00:27:77:e5:00 HOST2

در کنسول مجازی tcpdump اطلاعات زیر را برای ما نمایش می دهد:

Host1:~# tcpdump -ne -i eth0 tcpdump: خروجی پرمخاطب سرکوب شده است، از -v یا -vv برای شنیدن رمزگشایی کامل پروتکل در eth0، نوع پیوند EN10 مگابایت (اترنت)، اندازه ضبط 65535 بایت 12:16:29.40a:5700 استفاده کنید. :27:00:00:00 > ff:ff:ff:ff:ff:ff، Ethertype ARP (0x0806)، طول 42: درخواست who-has 192.168.56.33 به 192.168.56.1، طول 28 12:16:2704 بگویید. :00:27:77:e5:00 > 0a:00:27:00:00:00، Ethertype ARP (0x0806)، طول 42: پاسخ 192.168.56.33 is-at 01:00:27:77:e5:00 , طول 28 12:16:29.466815 0a:00:27:00:00:00 > 01:00:27:77:e5:00، اترتیپ IPv4 (0x0800)، طول 98: 192.168.56.1.1 مگاپیکسل: 3819. درخواست echo، id 5284، دنباله 1، طول 64 12:16:29.467934 01:00:27:77:e5:00 > 0a:00:27:00:00:00، اترتیپ IPv4 (0x0800)، طول 98:98: 0.56.33 > 192.168.56.1: ICMP echo reply، شناسه 5284، دنباله 1، طول 64 ^C 4 بسته گرفته شده، 4 بسته دریافت شده توسط فیلتر، 0 بسته توسط هسته رها شده است

هر رکورد بسته شبکه در این فرمت شامل زمان رهگیری بسته، آدرس های MAC مبدا و مقصد، نوع پروتکل، طول بسته و اطلاعاتی در مورد محتویات بسته است. اولین ضبطیک درخواست پخش ARP از آدرس MAC رابط eth0 میزبان سیستم 1 را توصیف می کند (" کسی که آدرس 192.168.56.33 رو داره میگه 192.168.56.1"). ورودی دوم- پاسخ از آدرس MAC host2 به آدرس MAC host1 (" 192.168.56.33 دارای آدرس MAC 01:00:27:77:e5:00 است."). ورودی های سوم و چهارم (درخواست ICMPو پاسخ ICMP) نتیجه دستور ping اجرا شده در host1 هستند. سپس tcpdump قطع شد. قبل از خاموش شدن، tcpdump آمار عملیات را چاپ می کند: تعداد بسته های رهگیری، دریافت شده توسط فیلتر، و دور انداخته شده توسط هسته

بنابراین، سیستم host1 برای ارسال یک درخواست اکو استاندارد به ماشین میزبان 2، ابتدا آدرس‌های MAC ماشین میزبان2 را با استفاده از پروتکل ARP دریافت کرده و آن را به آدرس IP در جدول ARP خود وارد می‌کند.

تجزیه و تحلیل ترافیک در لایه حمل و نقل (TCP، UDP) با استفاده از tcpdump

بیایید فرض کنیم که یک وب سرور خاص روی سیستم host2 نصب شده است. بیایید سعی کنیم با استفاده از مرورگر کنسول lynx صفحه ای از این وب سرور در دستگاه host1 باز کنیم:

میزبان 1:~# lynx 192.168.56.33

در یک کنسول دیگر، ابتدا tcpdump را با پارامترهای فیلتر اجرا کنید:

Host1:~# tcpdump -n -i eth0 host 192.168.56.33 و پورت 80 tcpdump: خروجی پرمخاطب سرکوب شده است، از -v یا -vv برای رمزگشایی کامل پروتکل گوش دادن در eth0، نوع پیوند EN10 مگابایت (اترنت)، اندازه ضبط 35 در 655 استفاده کنید. :44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80 IP: Flags [S]، دنباله 1209026235، برد 5840، گزینه‌ها، طول 0 15:434:34 >26.81.8 2 .168.56.1.41533: Flags, SEQ 370041518, ACK 1209026236, Win 5792, Options, Length 0 15: 44: 37.838157 IP 192.168.41533> 192.168.56.33، انگلیسی، 192.168.56.33. 15:44 :37.839254 IP 192.168.56.1.41533 > 192.168.56.33.80: Flags , seq 1:222, ack 1, win 46, options , طول 221 15:44:37.81921 > 15:44:37.83921 8.56.1.41533 : پرچم ها [.], ack 222, win 1716, options , length 0 15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags , seq 1:442, ack 125, ack 1:442, ack 125 :44:37.848156 IP 192.168.56.1.41533 > 192.168.56.33.80: Flags [.], ack 446, win 54, options , طول 0 15:44:37.8497238 > 15:44:37.8497238 > .385.19 . .1. 41533 : Flags , seq 446, ack 222, win 1716, options , length 0 15:44:37.850366 IP 192.168.56.1.41533 > 192.168.56.33.80: Flags 2, Seq 4, Seq 2, Seq 2 :44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags [.], ack 223, win 1716, options , طول 0 ...

که در در این مثالمشتری (192.168.56.1) از پورت TCP 41533 با سرور (192.168.56.33) در حال گوش دادن به پورت 80 ارتباط برقرار می کند، درخواست می دهد، داده های لازم را دریافت می کند و اتصال به پایان می رسد.

هدر بخش TCP، علاوه بر شماره پورت گیرنده و فرستندهشامل تعدادی پارامتر است:

  • شماره ترتیب(دنباله). ترتیب بایت های موجود در جریان ارسال شده به شبکه را تعیین می کند (تغییر اولین بایت در بخش نسبت به ابتدای جریان داده).
  • شماره تایید شده(ACK). حداکثر تعداد بایت در بخش دریافتی 1 افزایش می یابد. تأییدیه های ارسال شده به فرستنده به طور همزمان به عنوان یک درخواست برای بخش جدیدی از داده ها عمل می کنند.
  • پرچم ها را کنترل کنید(SYN - S، ACK، FIN -F، RST - R، PSH - P، URG)
  • پنجره(برنده) - تعداد بایت های داده مورد انتظار توسط فرستنده داده ها، از بایتی که تعداد آن در فیلد ack نشان داده شده است شروع می شود. برای بهینه‌سازی انتقال، فرستنده منتظر تایید برای هر بخش ارسال شده نمی‌ماند، بلکه می‌تواند گروهی را به شبکه به بخش ارسال کند (اما در بایت‌هایی که بزرگ‌تر از اندازه پنجره نیست). اگر کیفیت کانال ضعیف باشد (بسیاری از درخواست‌ها برای ارسال مجدد، تأیید از بین می‌رود)، پنجره کاهش می‌یابد، اگر خوب باشد، پنجره افزایش می‌یابد.
  • گزینه ها. برای حل مشکلات کمکی استفاده می شود. به عنوان مثال، MSS (حداکثر اندازه بخش) منتقل می شود - حداکثر اندازه بخش.

فرآیند ایجاد یک اتصال TCP دو طرفه در سه ورودی tcpdump اول منعکس شده است:

  • مشتری یک بخش TCP را با مجموعه پرچم SYN، شماره "تصادفی" اولیه (1209026235) برای سرور ارسال می کند، که از آن بایت های جریانی که ارسال می کند شماره گذاری می شود، حداکثر اندازه پنجره مقداری است که سرور مجاز به انجام آن است. ارسال بدون تایید مشتری (5840): 15: 44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80: پرچم‌ها [S]، دنباله 1209026235، طول انتخاب‌ها 5840
  • سرور یک بخش TCP با مجموعه پرچم‌های SYN و ACK، یک عدد "تصادفی" شروع (370041518) که از آن بایت‌های جریانی که ارسال می‌کند شماره‌گذاری می‌شود و حداکثر اندازه پنجره برای مشتری (5792) برای مشتری ارسال می‌کند. این بخش همچنین دریافت درخواست اتصال از مشتری را تأیید می کند: 15:44:37.838118 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags , seq 370041518, ack 257, ack 1236, long 1209, ack 257, win 1209
  • کلاینت یک قطعه TCP را با مجموعه پرچم ACK به سرور ارسال می کند که تاییدیه دریافت سگمنت از سرور است (از این پس tcpdump مقادیر نسبی seq و ask را نمایش می دهد): 15:44:37.838157 IP 192.168.56.1 .41533 > 192.168.56.33.80: پرچم‌ها [. ]، ack 1، برنده 46، گزینه‌ها، طول

بعد از آن اتصال برقرار شده در نظر گرفته می شود.

در جفت رکوردهای بعدی، مشتری یک درخواست پروتکل لایه برنامه (221 بایت) را به سرور در بخش داده های بخش ارسال می کند و تأییدیه دریافت آن را از سرور دریافت می کند:

15:44:37.839254 IP 192.168.56.1.41533 > 192.168.56.33.80: Flags , seq 1:222, ack 1, win 46, options , طول 221 15:434:59 >221 15:434 > 221 15:439 > 221 . 2.168. 56.1 0.41533: پرچم‌ها [.]، ack 222، برد 1716، گزینه‌ها، طول 0

در این حالت از پرچم PSH (P) برای اعلام آمادگی طرف گیرنده برای دریافت داده ها به طرف فرستنده استفاده می شود. در مرحله بعد، سرور داده ها را به مشتری (445 بایت) ارسال می کند و تاییدیه دریافت را از آن دریافت می کند:

15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533: IP، دنباله 1:446، ack 222، برد 1716، گزینه‌ها، طول 445 15.444.15.15.441.15.15.15.15.15.15.15.15.15.15.15.15.15.15.15.15.15 33 > 192.168. 56.33 .80: پرچم‌ها [.]، ack 446، برد 54، گزینه‌ها، طول 0

سپس به ابتکار سرور، اتصال قطع می شود. سرور یک بسته با مجموعه پرچم FIN ارسال می کند:

15:44:37.849738 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags , seq 446, ack 222, win 1716, options , طول 0

مشتری همچنین با ارسال بسته ای با مجموعه پرچم FIN پاسخ می دهد؛ این بسته همچنین تأییدیه دریافت درخواست قطع اتصال از سرور است:

15:44:37.850366 IP 192.168.56.1.41533 > 192.168.56.33.80: Flags , seq 222, ack 447, win 54, option , طول 0

سرور فقط می تواند دریافت بخش FIN از مشتری را تأیید کند:

15:44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533: Flags [.], ack 223, win 1716, options , طول 0

واکنش tcpdump به تلاش برای اتصال به پورت بسته 23/tcp:

21:56:14.381091 IP 192.168.56.1.54040 > 192.168.56.33.23: Flags [S]، دنباله 2956835311، برد 5840، گزینه‌ها، طول 0 21:513 > 0 21:516.33.26.1. 1 92.168.56.1. 54040 : پرچم ها، دنباله 0، ack 2956835312، برد 0، طول 0

در این مثال، تلاشی از سیستم 192.168.56.1 برای اتصال به یک سرویس TCP غیر موجود در گره 192.168.56.33 انجام شده است. سیستم راه دور با ارسال یک بخش با مجموعه پرچم RST (بازنشانی) پاسخ می دهد.

پاسخ tcpdump به ارسال یک دیتاگرام UDP به پورت بسته 53/udp:

21:55:16.925906 IP 192.168.56.1.41979 > 192.168.56.33.53: 6561+ A? www.tut.by. (28) 21:55:16.926615 IP 192.168.56.33 > 192.168.56.1: ICMP 192.168.56.33 پورت udp 53 غیرقابل دسترسی، طول 64

این مثال سعی می کند یک دیتاگرام UDP را به یک پورت غیر موجود در یک سیستم راه دور ارسال کند. پروتکل UDPمعمولاً با ارسال یک پیام ICMP به میزبان منبع پاسخ می دهد که می گوید پورت غیرقابل دسترسی است.

نمونه های دیگر استفاده از دستور tcpdump:

# tcpdump -n -i ppp0 ether src 11:20:b3:d8:d8:2c

نمایش آمار شبکه از رابط ppp0 (-i ppp0) بدون تبدیل IP به DNS (-n) برای فریم هایی که آدرس MAC منبع آنها 11:20:b3:d8:d8:2c است.

# tcpdump -n -e -i vlan0 پخش اتر

خروجی ترافیک پخش از رابط vlan0.

# tcpdump -n -i eth0 src 192.168.66.1

فیلتر شده بسته های شبکه، که در هدر آن آدرس IP 192.168.66.1 در قسمت منبع مشخص شده است.

میزبان # tcpdump -n -i eth0 192.168.66.1

بسته هایی که در آنها این آدرس IP به عنوان مبدا یا مقصد بسته مشخص شده است فیلتر می شوند.

# tcpdump -n -i eth0 src net 10.0.0.0 mask 255.0.0.0

بسته هایی که منبع آنها گره های شبکه 10.0.0.0/8 را نشان می دهد فیلتر می شوند.

# tcpdump -n -i eth0 icmp

فقط بسته های ICMP را از رابط eth0 خروجی می دهد.

با این، فکر می کنم مقاله فعلی را به پایان می برم. با ظاهر شدن نمونه های جدید، مقاله را به روز می کنم. امیدوارم مطالب نه تنها برای من مفید باشد

در این مقاله از مثال‌ها و مطالبی از سخنرانی‌های شهودی استفاده شد.

با احترام، مک سیم!

19 دسامبر 2011 توسط هنری ون استین
در HOW-TOs

ضبط بسته ها یکی از قدرتمندترین روش ها برای تجزیه و تحلیل فرآیندهای شبکه است. شما می توانید با رهگیری و بررسی داده های خامی که در یک شبکه اتفاق می افتد چیزهای زیادی بیاموزید. اتصالات شبکه. ابزارهای مدرن تجزیه و تحلیل ترافیک به شما این امکان را می دهند که جریان های داده را به سبکی قابل خواندن توسط انسان ضبط، تفسیر و توصیف کنید.

tcpdump یک ابزار ضروری برای گوش دادن به ترافیک یا sniffing است، قابلیت های تجزیه و تحلیل بسیاری را فراهم می کند و حتی می تواند فیلدهای بسته تفسیر شده را به برنامه های دیگر صادر کند.

اگر فکر می کنید ابزارهایی مانند tcpdump با ظهور ابزارهای گرافیکی مانند Wireshark ارزش خود را از دست می دهند، دوباره فکر کنید. Wireshark یک برنامه عالی است، اما یک ابزار جهانی برای مطلقاً همه موقعیت ها نیست. به عنوان یک راه حل سبک وزن جهانی برای کاربردهای مختلف (مانند Unix tools cat, less و hexdump)، tcpdump بسیار سردتر به نظر می رسد. و قابل توجه ترین ویژگی آن سهولت استفاده آن است. به عنوان یک سبک رفتاری، از تقریبی مفهوم "فرمان یک خطی" پیروی می کند تا پاسخ های سریع و یک مرحله ای به دست آید. علاوه بر این، می توان از آن در یک جلسه ssh بدون نیاز به گرافیک استفاده کرد. با پشتیبانی از قراردادهای نحوی خط فرمان(به عنوان مثال، خروجی یک جریان داده به خروجی استاندارد که می تواند تغییر مسیر دهد) tcpdump را می توان در انواع خطوط لوله برای ساخت برنامه های کاربردی جالب و مفید استفاده کرد.

در این مقاله، من به برخی از اصول اولیه استفاده از tcpdump و اصول نحو آن نگاه خواهم کرد.

مبانی

قبل از اینکه در استفاده از tcpdump استاد شوید، مفاهیم اساسی وجود دارد که باید بدانید. اولاً، گرفتن بسته یک فرآیند غیرفعال است، به هیچ وجه ترافیک را تغییر نمی دهد و چیزی را از خود به شبکه پخش نمی کند. در مرحله دوم، شما فقط می توانید بسته هایی را که سیستم شما دریافت می کند، ضبط کنید. اگر هر دو میزبان بسته‌ها را مستقیماً مبادله کنند و آن ترافیک رایانه شما را دور بزند، بدون در نظر گرفتن ابزار نظارت، چیزی نمی‌بینید. سوم، شما فقط می‌توانید بسته‌هایی را که برای سیستم شما تعیین شده‌اند، ضبط کنید، مگر اینکه رابط شبکه در حالت بی‌وقفه قرار گیرد.

از آنجایی که فرض بر این است که شما به چیزی بیش از بسته های سیستم خود علاقه مند هستید، tcpdump اولین رابط را در سیستم (مگر اینکه رابط دیگری به صراحت مشخص شده باشد) به طور خودکار در حالت غیرقانونی قرار می دهد. این عملیات به امتیازات superuser نیاز دارد.

آناتومی دستورات tcpdump

دستور tcpdump از دو بخش تشکیل شده است: گزینه ها و یک عبارت فیلتر (شکل 1).

شکل 1. مثال دستور tcpdump

عبارت فیلتر تعیین می‌کند که کدام بسته‌ها باید ضبط شوند، و گزینه‌ها - کدام یک از آنها در خروجی نشان داده شود؛ گزینه‌ها همچنین رفتار ابزار را تعیین می‌کنند.

گزینه ها

گزینه های Tcpdump از قراردادهای خط فرمان استاندارد پیروی می کنند، بنابراین فرمت گزینه flag-value است. برخی از پرچم ها هیچ مقدار پارامتری ندارند زیرا خود سوئیچ هستند. به عنوان مثال، -i با نام رابط دنبال می شود، و -n وضوح نام را از طریق DNS غیرفعال می کند.

صفحه مرد گزینه‌های زیادی را توضیح می‌دهد، اما چند مورد وجود دارد که نمی‌توانید بدون آن‌ها انجام دهید:

رابط I: رابطی که tcpdump در آن به ترافیک گوش می دهد.

V, -vv, -vvv: پرحرفی خروجی;

س: حالت آرام؛

E: چاپ هدر قاب لایه پیوند (اترنت)؛

N: نام دامنه هاست را حل کنید.

T: مهر زمانی چاپ نکنید.

N: نام دامنه هاست را حل نکنید.

S0 (یا -s 0): حداکثر جذب، کل بسته ها گرفته می شوند. V آخرین نسخه ها tcpdump رفتار پیش فرض است.

هیچ یک از گزینه ها مورد نیاز نیست. مقادیر تعریف شده توسط کاربر فقط رفتار پیش‌فرض برنامه را تغییر می‌دهند، یعنی گرفتن در اولین رابط و چاپ اطلاعات بسته در یک خط.

عبارات فیلتر
عبارات فیلتر معیارهای بولی (بله/خیر) برای ارزیابی مطابقت یک بسته با یک الگو هستند. تمام بسته هایی که شرایط مشخص شده را ندارند نادیده گرفته می شوند.

نحو فیلتر بسته قدرتمند و شفاف است. در ابتدا حاوی کلمات کلیدی به نام "اولیه" است که معیارهای مختلفی برای بسته ها هستند، اینها می توانند پروتکل، آدرس، پورت یا جهت باشند. آنها را می توان با استفاده از عملگرها به صورت زنجیره ای به یکدیگر متصل کرد و/یا با قوانین وراثت گروه بندی و ترکیب کرد و با استفاده از نفی مرتب شد.

به لطف نام معیارهای خود توضیحی، عبارات فیلتر معمولاً خود توضیحی به نظر می رسند و ساخت و درک آنها را نسبتاً آسان می کند. نحو کامل در صفحه pcap-filter man توضیح داده شده است و چند نمونه در اینجا ارائه شده است:

ARP یک پروتکل ساده است که برای حل آدرس های IP به آدرس های MAC استفاده می شود کارت های شبکه. همانطور که در بالا می بینید، tcpdump این بسته ها را به شیوه ای نسبتا ابتدایی توصیف می کند. از سوی دیگر، بسته های DNS کمی متفاوت توصیف می شوند:

IP 10.0.0.2.50435 > 10.0.0.1.53: 19+ A? linuxjournal.com. (34) IP 10.0.0.1.53 > 10.0.0.2.50435: 19 1/0/0 A 76.74.252.198 (50)

این ممکن است در ابتدا به اندازه کافی واضح به نظر نرسد، اما با یادگیری نحوه عملکرد لایه های مختلف پروتکل ها، منطقی تر خواهد بود. DNS پروتکل بسیار پیچیده تری نسبت به ARP است، اما در سطح بالاتری نیز عمل می کند. این بدان معنی است که بسته های پروتکل زیربنایی نیز در خروجی ظاهر می شوند. برخلاف ARP که بین بخش‌های مختلف شبکه فیزیکی هدایت نمی‌شود، DNS یک پروتکل سراسری اینترنت است. لایه IP برای مسیریابی این بسته ها استفاده می شود و UDP برای انتقال استفاده می شود. این باعث می شود DNS یک پروتکل لایه 5 باشد (IP لایه 3 است، UDP لایه 4 است).

اطلاعات لایه UDP/IP حاوی آدرس منبع و پورت در سمت چپ خط و اطلاعات خاص DNS در سمت راست نمایش داده می شود. اگرچه نحو کاملاً فشرده است، اما برای تعریف عناصر اصلی DNS کافی است. بسته اول یک درخواست آدرس برای linuxjournal.com است، بسته دوم پاسخی است که آدرس 76.74.252.198 را می دهد. این یک دنباله معمولی برای پرس و جوهای ساده DNS است.

برای توضیح کامل همه فرمت‌های خروجی وابسته به پروتکل، بخش «فرمت خروجی» را در صفحه tcpdump man ببینید. بسته های برخی از پروتکل ها در خروجی بهتر قابل مشاهده هستند، برخی دیگر بدتر، اما اطلاعات مهممعمولا به راحتی پیدا می شود

خروجی را به فایل ضبط کنید
علاوه بر حالت معمول با خروجی به کنسول (خروجی استاندارد)، tcpdump از حالتی برای نوشتن خروجی روی یک فایل نیز پشتیبانی می کند. حالت با گزینه -w فعال می شود که مسیر فایل را مشخص می کند.

هنگام نوشتن روی یک فایل، tcpdump از فرمت متفاوتی نسبت به خروجی روی صفحه استفاده می کند. این به اصطلاح خروجی خام است، تجزیه و تحلیل اولیه بسته را انجام نمی دهد. سپس می توان از این فایل ها استفاده کرد برنامه های شخص ثالث Wireshark را تایپ کنید، زیرا فرمت رکوردهای موجود در فایل با فرمت جهانی "pcap" مطابقت دارد (چنین فایلی را می توان با استفاده از گزینه -r به ورودی tcpdump ارائه کرد). این ویژگی به ما این امکان را می‌دهد که بسته‌ها را روی یک ماشین ضبط کنیم و آن‌ها را روی دستگاه دیگری تجزیه و تحلیل کنیم. به عنوان مثال، Wireshark را روی لپ تاپ خود دارید. برای اسکن یک فایل ضبط شده قبلی، نیازی به اتصال آن به شبکه در حال تجزیه و تحلیل ندارید.

تجزیه و تحلیل پروتکل های مبتنی بر TCP
tcpdump یک تحلیلگر بسته است، بنابراین با پروتکل های مبتنی بر بسته مانند IP، UDP، DHCP، DNS و ICMP به خوبی کار می کند. اگر یک "جریان" یا دنباله ای از بسته ها برای ایجاد یک اتصال وجود داشته باشد، tcpdump نمی تواند مستقیماً این جریان ها و سناریوهای اتصال را تجزیه و تحلیل کند. پروتکل هایی مانند HTTP، SMTP و IMAP از نظر شبکهبیشتر شبیه برنامه های کاربردی تعاملی است تا پروتکل های دسته ای.

TCP تمام جزئیات سطح پایین مورد نیاز برای جلسات ارتباطی در پروتکل های جلسه را به طور شفاف برای کاربر مدیریت می کند. این جایی است که داده های جریان گرا در بسته ها (بخش ها) کپسوله می شوند که می توانند از طریق شبکه ارسال شوند. همه این جزئیات در زیر لایه برنامه پنهان هستند. بنابراین، مراحل اضافی برای گرفتن بسته های پروتکل اتصال گرا مورد نیاز است. از آنجایی که هر بخش TCP قطعه ای از داده های سطح برنامه است، نمی توان از اطلاعات مربوط به آن به طور مستقیم استفاده کرد. برای اینکه این کار منطقی باشد، باید جلسه TCP (جریان) را به طور کامل از دنباله بازیابی کنید بسته های فردی. tcpdump این ویژگی را ندارد. برای تجزیه و تحلیل پروتکل های جلسه، می توانید از چیزی که من "ترفند رشته ای" می نامم استفاده کنید.

ترفند رشته ای
معمولاً هنگام ضبط ترافیک، منظور من از تجزیه و تحلیل علل برخی از خطاها است. برای درک دلایل وقوع هر حادثه، لازم نیست داده ها کامل باشند. در چنین مواردی سرعت درک مهمتر از هر چیز دیگری است. ترفند بعدی یکی از تکنیک های tcpdump مورد علاقه من است. این کار می کند زیرا:

بخش های TCP معمولاً به ترتیب زمانی هستند.
- پروتکل های کاربردی مبتنی بر متن بسته هایی را با بار متن تولید می کنند.
- داده های اطراف بارگذاری متن (به عنوان مثال، سرصفحه های بسته) متن نیستند.
- ابزارهای یونیکس می توانند متن را از خروجی باینری برنامه ذخیره کنند.
- اگر tcpdump را با گزینه -w - اجرا کنید، اطلاعات خام را به خروجی استاندارد تولید می کند.

با کنار هم قرار دادن همه چیز، ابزاری برای گرفتن داده های جلسه HTTP دریافت می کنیم.

علاوه بر این، باید توجه داشته باشید که خروجی ممکن است حاوی مقداری زباله باشد. مازاد را می توان با استفاده از گزینه strings utility قطع کرد، که طول خروجی رشته را محدود می کند (رجوع کنید به رشته های man).

این ترفند برای هر پروتکل مبتنی بر متن به خوبی کار می کند.

آنالیز HTTP و SMTP
ترفند رشته‌ای از بخش قبل می‌تواند به جمع‌آوری داده‌های جلسه HTTP، علی‌رغم عدم وجود تحلیلگر جریان داخلی، کمک کند. داده های به دست آمده را می توان «تجزیه و تحلیل» کرد و سپس به روش های مختلف.

به عنوان مثال، ممکن است بخواهید در دسترس بودن همه سایت‌هایی را که «davepc» به نام خود دارند، به صورت بلادرنگ بررسی کنید. دستور زیر که روی فایروال اجرا می شود کمک خواهد کرد (با فرض اینکه رابط داخلی eth1 باشد):

فقط دو تاست مثال های سادهبرای نشان دادن احتمالات می توانید تا آنجا پیش بروید که مثلاً یک اسکریپت Perl بنویسید تا رشته های دریافتی را با عمق بیشتری تجزیه و تحلیل کنید.

بنابراین قدرت واقعی tcpdump زمانی به دست می‌آید که می‌خواهید بدون تلاش زیاد به سرعت پاسخ برخی از سوالات را دریافت کنید. این امر به ویژه هنگام اشکال زدایی برنامه های شبکه مهم است.

اشکال زدایی مسیریابی و اتصالات VPN
tcpdump می تواند کمک بزرگی در هنگام اشکال زدایی مواردی مانند اتصالات VPN باشد. تنها چیزی که نیاز دارید این است که بفهمید روی کدام هاست ها کدام بسته ها ظاهر می شوند و در کدام ها نیستند.

بیایید یک طرح استاندارد برای اتصال دو شبکه از طریق اتصال VPN در نظر بگیریم. شبکه های 10.0.50.0/24 و 192.168.5.0/24 (شکل 2).

شکل 2. نمونه توپولوژی VPN

اگر این کار به درستی انجام شود، میزبان ها در شبکه های مختلف باید یکدیگر را پینگ کنند. اگر پینگ‌ها پاسخ نمی‌دهند (در این مورد، فرض کنید از D به میزبان A نمی‌آیند)، می‌توانیم از tcpdump برای پیدا کردن جایی که چیزها گم می‌شوند استفاده کنیم.

اگر بسته های درخواستی به میزبان C بروند ( دروازه راه دور)، اما نه در D، این نشان می دهد که اتصال VPNکار می کند، اما مشکلات مسیریابی وجود دارد. اگر میزبان D درخواست ها را دریافت کند اما پاسخی ارسال نکند، ممکن است نشان دهنده مسدود شدن ICMP باشد. اگر پاسخ‌ها ارسال شود اما به C نرسد، ممکن است دروازه پیش‌فرض در D به درستی پیکربندی نشده باشد.

چرا TCPDUMP؟

Tcpdump - ابزار اصلیتجزیه و تحلیل شبکه برای متخصصان نرم افزار امنیت اطلاعات. برای کسانی که می خواهند درک کاملی از TCP/IP کسب کنند، داشتن درک کافی از این برنامه مهم ضروری است. بسیاری از مردم ترجیح می دهند از ابزارهای سطح بالاتر مانند Wireshark استفاده کنند، اما من فکر می کنم این یک اشتباه است.

وقتی از ابزاری استفاده می‌کنید که ترافیک شبکه را به روشی طبیعی (ساده)تر نمایش می‌دهد، پیچیدگی تجزیه و تحلیل مستقیماً بر روی شخص قرار می‌گیرد، نه بر روی برنامه. این رویکرد درک مجموعه TCP/IP را توسعه می دهد، به همین دلیل است که من به شدت توصیه می کنم در صورت امکان به جای ابزارهای دیگر از tcpdump استفاده کنید.

15:31:34.079416 IP (tos 0x0، ttl 64، id 20244، offset 0، flags , proto: TCP (6)، طول: 60) source.35970 > dest.80: S، cksum 0x0ac1 (درست)، 222147: 2647022145(0) برد 5840 0x0000: 4500 003c 4f14 4006 7417 0afb 0257 E.. 0x0010: 4815 222a 8c82 006050 004c. x0020: a002 16d0 0ac1 0000 0204 05b4 0402 080a................0x0030: 14b4 1555 0000 0000 0103 0302

مبانی

در زیر چندین گزینه وجود دارد که می توانید هنگام پیکربندی tcpdump از آنها استفاده کنید. آنها را می توان به راحتی فراموش کرد و/یا با انواع دیگر فیلترها مانند Wireshark اشتباه گرفت، بنابراین این صفحه می تواند به عنوان مرجع برای شما باشد. در اینجا موارد اصلی وجود دارد که من دوست دارم بسته به آنچه که تماشا می کنم، آنها را در نظر داشته باشم.

گزینه ها

  • -i any: به همه رابط ها گوش دهید تا ببینید آیا ترافیکی می بینید یا خیر.
  • -i eth0: گوش دادن به رابط eth0.
  • -D: نمایش لیست رابط های موجود
  • -n: نشانی های IP را به جای نام هاست نمایش دهید.
  • -nn: نشانی IP و شماره پورت را به جای نام میزبان و نام پروتکل نمایش می دهد.
  • -q: حداقل اطلاعات مربوط به بسته را نشان می دهد.
  • -t: مهر زمانی را در هر خط نشان ندهید.
  • -tttt: خروجی مُهرهای زمانی را در قالب پیش‌فرض برای هر خط تنظیم می‌کند.
  • -X: نمایش محتویات بسته به دو صورت هگز و اسکی.
  • -XX: مانند -X، اما هدر اترنت را نیز نشان می دهد.
  • -v, -vv, -vvv: مقدار اطلاعات بسته برگشتی را افزایش می دهد.
  • -c: فقط x تعداد بسته را دریافت کنید و سپس متوقف کنید.
  • -s: طول (اندازه) عکس برداری را بر حسب بایت تعریف کنید. از -s0 برای به دست آوردن همه چیز استفاده کنید، مگر اینکه عمداً مقدار کمتری را برداشته باشید.
  • -S: چاپ اعداد دنباله مطلق.
  • -e: هدر اترنت را دریافت کنید.
  • -q: نمایش حداقل اطلاعات بسته.
  • -E: با ارائه کلید رمزگذاری، ترافیک IPSEC را رمزگشایی کنید.
[snaplength پیش‌فرض برای tcpdump 4.0 از 68 به 96 بایت تغییر کرده است. در حالی که این به شما امکان می دهد اطلاعات بیشتری در مورد بسته مشاهده کنید، اما این همه اطلاعات نخواهد بود. برای دریافت پوشش کامل از -s1514 یا -s0 استفاده کنید]

اصطلاحات

در tcpdump، عبارات به شما اجازه می دهند که برش دهید انواع مختلفترافیک و دقیقا همان چیزی که به دنبال آن هستید را پیدا کنید. تسلط بر عبارات و توانایی ترکیب خلاقانه آنها چیزی است که tcpdump را واقعاً قدرتمند می کند.

سه نوع عبارات اصلی وجود دارد: type، dir و proto.

انواع گزینه: میزبان، شبکه و پورت.

دایرکتوری ها به شما امکان می دهند src، dst و ترکیبی از آنها را انجام دهید.

این پروتکل به شما اجازه می دهد تا تعریف کنید: tcp، udp، icmp، ah و بسیاری دیگر.

مثال ها

بنابراین اکنون که دیدیم چه گزینه هایی داریم، بیایید به نمونه هایی در دنیای واقعی نگاه کنیم که احتمالاً در کارهای روزمره خود می بینیم.

پیام کلیدی

فقط با نگاه کردن به تمام رابط ها ببینید چه اتفاقی می افتد.

# tcpdump -i any

اینترفیس خاص

درک اولیه از آنچه در یک رابط خاص اتفاق می افتد.

# tcpdump -i eth0

ارائه خروجی خام

خروجی پرمخاطب بدون حل نام میزبان یا شماره پورت، اعداد توالی مطلق، یا مهرهای زمانی قابل خواندن توسط انسان.

# tcpdump -ttttnnvvS

ترافیک را با IP پیدا کنید

یکی از رایج‌ترین درخواست‌ها، این است که ترافیک را از 1.2.3.4 به شما نشان می‌دهد، چه مبدا یا مقصد.

میزبان # tcpdump 1.2.3.4

اطلاعات بیشتر در مورد بسته خروجی HEX را ببینید

خروجی هگزا دسیمال زمانی مفید است که می‌خواهید محتویات بسته‌های مورد نظر را ببینید، و اغلب زمانی که چندین نامزد را برای بررسی دقیق‌تر جدا می‌کنید، بهترین استفاده است.

# tcpdump -nnvXSs 0 -c1 icmp tcpdump: گوش دادن در eth0، نوع پیوند EN10MB (اترنت)، 23:11:10.370321 IP (tos 0x20، ttl 48، شناسه 34859، آفست 34859، طول افست 0.4:29، 0.29، پرچم‌های 0.6:29. > 72.21.34.42: icmp 64: درخواست اکو دنباله 0 0x0000: 4520 0054 882b 0000 3001 7cf5 45fe d52b E..T.+..0.|.E..2+ 0x0010 0 000 25ff d744 H .. "..50"...%..D 0x0020: ae5e 0500 0809 0a0b 0c0d 0e0f 1011 1213 .^.............. 0x0030: 1415 1617 1819 1a1b 1e11f 220. . ..........!"# 0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&"()*+,-./0123 0x0050: 3435 3637 4567 بسته بسته فیلتر شده توسط 1 بسته بسته بندی شده 0 بسته توسط هسته رها شده است

فیلتر کردن بر اساس منبع و مقصد

جداسازی ترافیک بر اساس مبدا یا مقصد با استفاده از src و dst بسیار ساده است.

# tcpdump src 2.3.4.5 tcpdump dst 3.4.5.6

جستجوی بسته ها در شبکه

برای یافتن بسته هایی که به یا از آن می روند شبکه خاص، از گزینه net استفاده کنید. می توانید این را با گزینه های src یا dst ترکیب کنید.

# tcpdump net 1.2.3.0/24

نمایش ترافیک مرتبط با یک بندر خاص

با استفاده از گزینه پورت و سپس شماره پورت می توانید یک پورت ترافیک خاص را پیدا کنید.

# پورت tcpdump 3389 پورت tcpdump src 1025

نمایش ترافیک یک پروتکل

اگر به دنبال نوع خاصی از ترافیک هستید، می توانید از tcp، udp، icmp و بسیاری دیگر استفاده کنید.

# tcpdump icmp

فقط IP6 ترافیک را نشان دهید

شما همچنین می توانید تمام ترافیک IP6 را با استفاده از گزینه پروتکل پیدا کنید.

با استفاده از باندهای بندری ترافیک را پیدا کنید

همچنین می توانید از محدوده پورت برای یافتن ترافیک استفاده کنید.

# tcpdump portrange 21-23

ترافیک را بر اساس اندازه بسته پیدا کنید

اگر به دنبال بسته هایی با اندازه خاص هستید، می توانید از این گزینه ها استفاده کنید. می توانید از نمادهای کوچک، بزرگ یا نمادهای مربوط به آنها که از ریاضیات انتظار دارید استفاده کنید.

# tcpdump کمتر 32 tcpdump بیشتر 64 tcpdump<= 128

نوشته های فایل

اغلب مفید است که نتیجه دسته ها را در یک فایل برای تجزیه و تحلیل آینده ذخیره کنید. این فایل‌ها با نام فایل‌های PCAP (PEE-cap) شناخته می‌شوند و می‌توانند توسط صدها برنامه مختلف از جمله تحلیلگرهای شبکه، سیستم‌های تشخیص نفوذ و البته خود tcpdump پردازش شوند. در اینجا با استفاده از سوئیچ -w فایلی به نام capture_file می نویسیم.

# پورت tcpdump 80 -w capture_file

خواندن فایل های PCAP

شما می توانید فایل های PCAP را با استفاده از سوئیچ -r بخوانید. توجه داشته باشید که هنگام خواندن فایل می توانید از تمام دستورات معمولی در tcpdump استفاده کنید. شما فقط با این واقعیت محدود شده‌اید که نمی‌توانید چیزی را که در فایل وجود ندارد ضبط و پردازش کنید.

# tcpdump -r capture_file

پیشرفته

اکنون که دیدیم با چند مثال می توانیم با اصول اولیه چه کاری انجام دهیم، اجازه دهید به موارد پیشرفته تر نگاه کنیم.

همه چیز در مورد ترکیبات است

فردی کردن این چیزهای مختلف یک توانایی قدرتمند است، اما جادوی واقعی tcpdump از توانایی ترکیب گزینه‌ها به روش‌های خلاقانه برای جدا کردن دقیقاً همان چیزی است که به دنبال آن هستید. سه راه برای ساخت ترکیب وجود دارد و اگر اصلا برنامه نویسی خوانده باشید، برای شما بسیار آشنا خواهند بود.

و
و یا &&

یا
یا یا ||

بجز
نه یا!

در اینجا چند نمونه از دستورات ترکیبی آورده شده است.

از یک IP خاص و اختصاص داده شده به یک پورت خاص

بیایید تمام ترافیک از 10.5.2.3 به هر میزبانی در پورت 3389 را پیدا کنیم.

Tcpdump -nnvvS src 10.5.2.3 و پورت dst 3389

از یک شبکه به شبکه دیگر

بیایید به تمام ترافیکی که از 192.168.x.x می آید و به شبکه های 10.x یا 172.16.x.x می رود نگاه کنیم، و خروجی هگزا دسیمال را بدون نام میزبان و یک سطح از جزئیات بیشتر نشان خواهیم داد.

Tcpdump -nvX src net 192.168.0.0/16 و dst net 10.0.0.0/8 or172.16.0.0/16

ترافیک غیر ICMP که به یک IP خاص می رود

این همه ترافیکی را که به 192.168.0.2 می رود که ICMP نیست را به ما نشان می دهد.

Tcpdump dst 192.168.0.2 و src net و نه icmp

ترافیک از میزبانی که در یک بندر خاص نیست

این همه ترافیک هاست را که ترافیک SSH نیست (با فرض استفاده از پورت پیش فرض) به ما نشان می دهد.

Tcpdump -vv src mars و نه dst port 22

همانطور که می بینید، می توانید پرس و جو ایجاد کنید تا تقریباً هر چیزی را که نیاز دارید پیدا کنید. نکته کلیدی این است که ابتدا دقیقاً آنچه را که به دنبال آن هستید مشخص کنید و سپس دستوری برای جداسازی نوع خاصی از ترافیک ایجاد کنید.

گروه بندی پیچیده و شخصیت های خاص

همچنین به خاطر داشته باشید که هنگام ایجاد پرس و جوهای پیچیده، ممکن است مجبور شوید پارامترهای خود را با استفاده از نقل قول های تک گروه بندی کنید. نقل‌قول‌های منفرد برای اینکه به tcpdump می‌گویند برخی از کاراکترهای خاص را نادیده بگیرد استفاده می‌شود - در این مورد، یکی در براکت‌های "()". از همین روش می توان برای گروه بندی با استفاده از عبارات دیگر مانند میزبان، پورت، شبکه و غیره استفاده کرد. به دستور زیر نگاه کنید.

# ترافیکی که از 10.0.2.4 است و برای پورت های 3389 یا 22 (نادرست) tcpdump src 10.0.2.4 و (درگاه dst 3389 یا 22) است.

اگر سعی کردید این دستور بسیار مفید را در حالت دیگری اجرا کنید، به دلیل وجود پرانتز با خطا مواجه می شوید. می‌توانید این مشکل را با فرار از پرانتز (قرار دادن یک \ جلوی هر یک) یا با قرار دادن کل دستور در یک نقل قول برطرف کنید:

# ترافیکی که از 10.0.2.4 و برای پورت های 3389 یا 22 (درست) # tcpdump "src 10.0.2.4 و (dst port 3389 or 22)" است.

جداسازی پرچم های خاص TCP

همچنین می توانید ترافیک را بر اساس پرچم(های) خاص TCP ضبط کنید.

[توجه: فیلترهای زیر این بسته‌های مختلف را پیدا می‌کنند، زیرا tcp در سرآیند TCP تعدیل 13 را نشان می‌دهد، عدد نشان‌دهنده مکان بایت است، آه! = 0 به این معنی است که این پرچم روی 1 تنظیم شده است. روشن است ]

نمایش همه بسته های URGENT (URG)...

# tcpdump "tcp & 32!=0"

نمایش تمام بسته های ACKNOWLEDGE (ACK) ...

# tcpdump "tcp & 16!=0"

نمایش تمام بسته های PUSH (PSH) ...

# tcpdump "tcp & 8!=0"

نمایش تمام بسته های RESET (RST) ...

# tcpdump "tcp & 4!=0"

نمایش همه بسته های SYNCHRONIZE (SYN) ...

# tcpdump "tcp & 2!=0"

نمایش تمام بسته های FINISH (FIN)...

# tcpdump "tcp & 1!=0"

نمایش همه بسته های SYNCHRONIZE / ACKNOWLEDGE (SYNACK) ...

# tcpdump "tcp=18" [توجه: فقط پرچم‌های PSH، RST، SYN و FIN در خروجی فیلد tcpdump ظاهر می‌شوند. URG و ACK نشان داده شده‌اند، اما در مکان متفاوتی در خروجی نسبت به قسمت پرچم‌ها نشان داده می‌شوند. ]

با این حال، مانند قوی ترین ابزارها، راه های زیادی برای انجام کارهایی که باید انجام دهید وجود دارد. مثال زیر راه دیگری را برای گرفتن بسته ها با مجموعه خاصی از پرچم های TCP نشان می دهد.

# tcpdump "tcp == tcp-syn"

با استفاده از پارامتر tcpflags پرچم های RST را پاک کنید...

# tcpdump "tcp == tcp-rst"

با استفاده از پارامتر tcpflags... پرچم های FIN را پاک کنید

# tcpdump "tcp == tcp-fin" [توجه: همین روش را می توان برای سایر پرچم ها استفاده کرد. آنها به خاطر منافع فضا حذف شده اند. ]

شناسایی ترافیک قابل توجه

در نهایت، چند دستور العمل سریع وجود دارد که باید به خاطر بسپارید تا ترافیک خاص و تخصصی را به دست آورید، مانند بسته های بد/احتمالاً مخرب.

بسته‌هایی با کیت‌های RST و SYN معمولی (این نباید باشد)

# tcpdump "tcp = 6"

HTTP PLAINTEXT را پیدا کنید و درخواست را دریافت کنید

# tcpdump "tcp = 0x47455420"

پیدا کردن اتصالات SSH به هر پورت (از طریق بنر)

# tcpdump "tcp[(tcp>>2):4] = 0x5353482D"

بسته های با TTL کمتر از 10 (معمولاً مشکل را نشان می دهند یا از TRACEROUTE استفاده می کنند)

# tcpdump "IP< 10"

بسته های با نصب EVIL BIT

# tcpdump "ip & 128 != 0"

نتیجه

tcpdump یک ابزار ارزشمند برای هر کسی است که به دنبال ورود به امنیت شبکه یا اطلاعات است.
نحوه تعامل غیرمعمول آن با ترافیک، همراه با دقتی که هنگام بازرسی بسته ها ارائه می دهد، آن را به بهترین ابزار برای یادگیری TCP/IP تبدیل می کند.
آنالایزرهای پروتکل مانند Wireshark عالی هستند، اما اگر می خواهید واقعاً به بسته ها مسلط شوید، ابتدا باید به tcpdump مسلط شوید.
به طور کلی، این آموزش باید به شما کمک کند تا قوی شوید، اما صفحه مرد همیشه باید برای پیشرفته ترین و یکبار استفاده ترین موارد دوستانه باشد. من صمیمانه امیدوارم که این برای شما مفید بوده باشد و در صورت داشتن هرگونه سوال با من تماس بگیرید.

  • ما یک برنامه و کتاب درسی اثبات شده از کارشناسان آکادمی شبکه سیسکو و موسسه حرفه ای لینوکس، مدرسان معتبر و یک مربی شخصی ارائه می دهیم.
  • ما به شما در یافتن شغل و ایجاد شغل کمک خواهیم کرد. 100 درصد فارغ التحصیلان ما شاغل هستند.
  • آموزش چگونه پیش می رود؟

    • ما سخنرانی های آنلاین عصرگاهی را در پلت فرم خود برگزار می کنیم یا شخصاً در دفتر کیف مطالعه می کنیم.
    • ما از شما در مورد زمان مناسب برای تمرین و تنظیم سوال خواهیم کرد: ما درک می کنیم که زمان کمی برای مطالعه وجود دارد.
    • اگر یک برنامه زمانی فردی می خواهید، آن را مورد بحث و اجرا قرار می دهیم.
    • ما ضرب الاجل های روشنی را برای خودسازماندهی تعیین خواهیم کرد. یک سرپرست شخصی برای پاسخ به سوالات، مشاوره و ایجاد انگیزه برای رعایت مهلت های امتحانی در تماس خواهد بود.

    ما همچنین به شما کمک خواهیم کرد:

    ابزار tcpdump یک ابزار بسیار قدرتمند و محبوب برای رهگیری و تجزیه و تحلیل بسته های شبکه است. این به شما امکان می دهد تمام بسته های ورودی و خروجی را از یک رابط خاص مشاهده کنید و در خط فرمان کار می کند. البته، می توانید از Wirshark برای تجزیه و تحلیل بسته های شبکه استفاده کنید، این یک ابزار گرافیکی است، اما گاهی اوقات شرایطی وجود دارد که شما نیاز دارید فقط در ترمینال کار کنید.

    Tcpdump بدتر از Wireshark نیست و تمام قابلیت های لازم برای تجزیه و تحلیل بسته ها را دارد، علاوه بر این، می توانید تمام بسته های رهگیری شده را در یک فایل ذخیره کنید تا بعداً با استفاده از همان Wireshark آنها را تجزیه و تحلیل کنید. در این مقاله نحوه استفاده از tcpdump برای رهگیری بسته های شبکه را بررسی خواهیم کرد.

    بسیاری از توزیع ها به طور پیش فرض با دستور tcpdump ارائه می شوند، اما اگر توزیع شما آن را ندارد، می توانید به راحتی آن را از مخازن رسمی نصب کنید. به عنوان مثال، در اوبونتو/دبیان:

    sudo apt نصب tcpdum p

    در فدورا/Red Hat/CentOS:

    sudo yum tcpdump را نصب کنید

    پس از اتمام نصب، می توانید به کار ادامه دهید.

    دستور tcpdump

    قبل از رفتن به نمونه هایی از کار با ابزار، بیایید به نحو و گزینه های اصلی آن نگاه کنیم. دستور دارای نحو زیر است:

    $ tcpdump options -i فیلترهای رابط

    هنگام تماس، باید رابطی را که نظارت خواهید کرد، پاس کنید. اگر رابط مشخص نشده باشد، اولین مورد در لیست استفاده خواهد شد. گزینه‌ها نمایشگر و قابلیت‌های اساسی ابزار را پیکربندی می‌کنند و فیلترها به شما امکان می‌دهند بسته‌های غیرضروری را فیلتر کنید. حالا بیایید به گزینه های اصلی نگاه کنیم:

    • - خروجی تمام بسته ها در فرمت ASCII.
    • - برنامه را پس از رهگیری تعداد n بسته بسته ببندید.
    • -C- هنگام نوشتن بسته ها در یک فایل، اندازه فایل را بررسی کنید و اگر بزرگتر از مقدار مشخص شده است، یک فایل جدید ایجاد کنید.
    • -دی- نمایش لیستی از رابط های شبکه موجود؛
    • -e- نمایش اطلاعات سطح اتصال برای هر بسته، این می تواند مفید باشد، به عنوان مثال، برای نمایش آدرس MAC.
    • - نمایش نام دامنه برای آدرس های IP.
    • -اف- خواندن بسته ها از یک فایل، نه از یک رابط.
    • -جی- ایجاد یک فایل لاگ جدید پس از یک دوره زمانی مشخص.
    • -اچ- شناسایی هدرهای 802.11s.
    • -من- نام رابط برای رهگیری بسته ها. شما می توانید بسته ها را از تمام رابط ها ضبط کنید؛ برای انجام این کار، هر یک را مشخص کنید.
    • -من- تغییر رابط به حالت مانیتور برای گرفتن تمام بسته های عبور.
    • -j- تنظیم قالب Timestamp برای ضبط بسته ها.
    • -جی- مشاهده مُهرهای زمانی موجود.
    • - جمع های چک بسته را بررسی نکنید.
    • -l- پشتیبانی از اسکرول را به خروجی اضافه کنید.
    • - نمایش پروتکل های اتصال پشتیبانی شده برای رابط؛
    • -n- نام دامنه نمایش داده نشود.
    • -r- خواندن بسته ها از یک فایل ایجاد شده با -w.
    • -v، -vv، -vvv- خروجی دقیق تر؛
    • -q- نمایش حداقل اطلاعات؛
    • -w- خروجی را در یک فایل بنویسید.
    • -Z- کاربری که فایل ها از طرف او ایجاد می شود.

    اینها همه گزینه ها نیستند، اما برای حل اکثر مشکلات برای شما کافی خواهند بود. ما بیشتر از فیلترها استفاده خواهیم کرد. با استفاده از فیلترها، می توانید تنها انواع بسته هایی را که می خواهید ببینید فیلتر کنید. شما می توانید بر اساس آدرس IP، پروتکل، شبکه، رابط و بسیاری از پارامترهای دیگر فیلتر کنید. اما فیلترهای tcpdump را با استفاده از مثال‌ها بررسی می‌کنیم.

    نحوه استفاده از tcpdump

    قبل از اینکه به استفاده از tcpdump بپردازید، باید ببینید از چه رابط های شبکه ای می توانید استفاده کنید. برای انجام این کار، دستور را با گزینه -D اجرا کنید:

    بیایید با گرفتن ترافیک در رابط eth0 شروع به بررسی نمونه های tcpdump کنیم؛ برای من، این رابط اصلی است که به اینترنت متصل است. این برنامه برای اجرا به حقوق superuser نیاز دارد، بنابراین استفاده از sudo را فراموش نکنید:

    sudo tcpdump -i eth0

    برای توقف فرمان، Ctrl+C را فشار دهید. در خروجی بلافاصله تمام بسته های رهگیری شده را خواهید دید. فرمت رکورد برای هر بسته به شکل زیر خواهد بود:

    13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881> 192.168.1.2.52055 : Flags [.]، دنباله 640160396:640161844، ack 436677393، win 2050، گزینه ها، طول 1448

    این قالب برای بسته های داده معمولی است؛ بسته به پروتکل، متن هایلایت شده با رنگ سیاه متفاوت خواهد بود. ابتدا مهر زمان می آید، سپس پروتکل، سپس آدرس IP فرستنده سبز است و آدرس گیرنده، در این مورد، رایانه ما، آبی است. بعدی بیایید اضافی پارامترهای tcpو در نهایت اندازه بسته به بایت. جزئیات خروجی را می توان با استفاده از گزینه های -v کنترل کرد. به عنوان مثال:

    sudo tcpdump -v -i eth0

    اطلاعات مربوط به پروتکل IP قبلاً در اینجا ظاهر می شود:

    IP (tos 0x0، ttl 64، id 50309، offset 0، flags، proto TCP (6)، طول 64)

    ما می توانیم اطلاعاتی در مورد طول عمر بسته TTL، نسخه پروتکل TCP و طول فیلد هدر پیدا کنیم. گزینه -vv در برخی موارد تأیید و محتویات بسته را خروجی می دهد.

    بعد از گزینه ها می توانید فیلترهایی را برای بسته ها مشخص کنید. در اینجا پارامترهای اصلی وجود دارد که می توانید بسته ها را فیلتر کنید:

    • میزبان- نام میزبان؛
    • آی پی- آدرس آی پی؛
    • پروتو- پروتکل؛
    • خالص- آدرس شبکه یا زیرشبکه؛
    • بندر- آدرس پورت؛
    • src- پارامتر مربوط به فرستنده؛
    • dst- پارامتر مربوط به گیرنده؛
    • پروتکل های زیر در دسترس هستند: اتر، fddi، tr، wlan، ip، ip6، arp، rarp، decnet، tcpو udp.

    می توانید همه اینها را با یکدیگر ترکیب کنید تا به نتیجه دلخواه برسید. بیایید با استفاده از مثال ها با جزئیات بیشتری نگاه کنیم. بیایید فقط بسته های خطاب به رایانه خود را فیلتر کنیم:

    sudo tcpdump -i eth0 ip dst 192.168.1.2

    ما همچنین می توانیم بسته های ارسال شده به یک گره خاص را انتخاب کنیم:

    sudo tcpdump -i eth0 dst host google-public-dns-a.google.com

    همانطور که می بینید، اینها بسته های DNS هستند و به جای پرچم های TCP در آنها وجود دارد اطلاعات مفید، آدرس IP میزبان را درخواست کنید. همچنین می توانید بسته های پاسخ را از یک میزبان خاص انتخاب کنید:

    میزبان sudo tcpdump -i eth0 src google-public-dns-a.google.com

    این محتویات کامل بسته نیست، اگر می خواهید آن را دریافت کنید باید از گزینه -v یا -vv استفاده کنید:

    sudo tcpdump -vv -i eth0 میزبان dst google-public-dns-a.google.com

    با عملگر و می توانید چندین فیلتر را در یک فیلتر ترکیب کنید:

    میزبان sudo tcpdump -i eth0 dst google-public-dns-a.google.com و میزبان src google-public-dns-a.google.com

    عملیات ادغام موجود عبارتند از و و یا، و همچنین می توانید از پرانتز برای نشان دادن اولویت استفاده کنید. شما مجبور نیستید هاست را مشخص کنید، در بسیاری از موارد src یا dst کافی است، خود برنامه متوجه خواهد شد که منظور چیست. دقیقاً از همین طرح می توان برای پورت ها استفاده کرد. برای مثال، می‌توانیم تمام درخواست‌ها یا پاسخ‌های DNS (در پورت 53) را فیلتر کنیم:

    sudo tcpdump -vv -i eth0 پورت 53

    دقیقاً همین کار را می توان برای http (پورت 80) انجام داد:

    پورت sudo tcpdump -vv -i eth0 80

    به طور طبیعی، dst و src نیز می توانند در اینجا برای نتایج خاص تر استفاده شوند. شما می توانید نه تنها یک پورت، بلکه طیف وسیعی از پورت ها را فیلتر کنید:

    sudo tcpdump portrange 21-23

    اگر یکی از پروتکل ها را مشخص کنید، فقط بسته هایی را از آن پروتکل فیلتر می کنید، مانند tcp، udp یا arp:

    sudo tcpdump -vv arp

    به همین ترتیب، می توانید تمام بسته های udp را انتخاب کنید:

    sudo tcpdump -vv udp

    یک فیلتر بر اساس تعیین شبکه نیز موجود است:

    sudo tcpdump net 129.168.1.1/24

    علاوه بر این، می توانید بسته ها را بر اساس اندازه آنها فیلتر کنید، به عنوان مثال کمتر از 32 بایت:

    sudo tcpdump کمتر از 32

    یا بیشتر از 128:

    tcpdump بزرگتر از 128

    sudo tcpdump -i eth0 -w file.pcap

    این فایل را می توان با استفاده از هر برنامه ای برای خواندن چنین فایل هایی مانند Wireshark باز کرد. برای باز کردن بسته های ذخیره شده در یک فایل، از گزینه -r استفاده کنید:

    sudo tcpdump -r file.pcap

    یک نکته دیگر وجود دارد که ارزش توجه به آن را دارد. این فرمتی برای نمایش محتویات بسته ها است. با استفاده از گزینه -A می توانید محتویات بسته را با فرمت ASCII خروجی بگیرید:

    sudo tcpdump -A -i eth0

    همچنین می توانید محتوا را با فرمت HEX و ASCII نمایش دهید، برای این کار از -XX استفاده کنید:

    sudo tcpdump -XX -i eth0

    نتیجه گیری

    در این مقاله نحوه استفاده از tcpdump را بررسی کردیم. این یک تحلیلگر شبکه بسیار قدرتمند است که فقط از طریق خط فرمان کار می کند. امیدوارم این اطلاعات برای شما و هم اکنون مفید بوده باشد با استفاده از tcpdumpخیلی راحت تر خواهد بود، اگر سوالی دارید، در نظرات بپرسید!

    برای پایان دادن به ویدیو با یک سخنرانی در مورد tcpdump:

    tcpdump یک تحلیلگر خط فرمان قدرتمند و Libpcap، یک کتابخانه قابل حمل برای ضبط ترافیک شبکه است. Tcpdump شرحی از محتویات بسته ها را در یک رابط شبکه چاپ می کند که مطابقت دارند بیان منطقی. همچنین می‌توان آن را با سوئیچ -w اجرا کرد که باعث می‌شود داده‌های دسته‌ای را در فایلی برای تجزیه و تحلیل بعدی ذخیره کند، و/یا با پرچم -r که باعث می‌شود از فایل دسته‌ای ذخیره‌شده بخواند. با استفاده از این ابزار، می توانید ترافیک شبکه ای را که از طریق رایانه شخصی که این برنامه در آن اجرا می شود عبور می کند، رهگیری و تجزیه و تحلیل کنید.

    من می خواهم در این مبحث "نصب و استفاده از tcpdump" در مورد نصب tcpdump و همچنین نحوه استفاده از آن و موارد مورد نیاز صحبت کنم.

    با tcpdump می توانید:

    • می توانید برنامه های شبکه را اشکال زدایی کنید.
    • می توانید شبکه یا تجهیزات شبکه را به طور کلی اشکال زدایی کنید.

    برای نصب tcpdump در debian/ubuntu/linux mint باید اجرا کنید:

    # sudo apt-get install tcpdump

    برای نصب tcpdump در RedHat/CentOS/Fedora از:

    # sudo yum tcpdump را نصب کنید

    برای نصب tcpdump در MacOS استفاده کنید.

    # brew نصب tcpdump

    با استفاده از tcpdump

    برای بررسی اینکه آیا tcpdump برای ما کار می کند، می توانید دستور را اجرا کنید:

    # tcpdump -i eth0 پورت 80

    تعداد زیادی سوئیچ برای استفاده از خود ابزار tcpdump وجود دارد، در اینجا لیستی از موارد رایج وجود دارد:

    اگر می خواهید بدانید که چه بسته هایی بین 21 سرور رد و بدل می شوند (به عنوان مثال، your_server_1 و your_server_2)، از دستور برای این کار استفاده کنید:

    # tcpdump میزبان your_server_1 و your_server_2 است

    اگر فقط نیاز به نظارت بر بسته های خروجی از میزبان دارید، سپس اجرا کنید:

    # tcpdump src میزبان سرور شماست

    اگر فقط نیاز به نظارت بر بسته های دریافتی از میزبان دارید، اجرا کنید:

    # tcpdump dst میزبان شما_سرور است

    همچنین می توانید به بسته های خروجی یا ورودی از سرور و در یک پورت خاص گوش دهید، برای انجام این کار، به سادگی پورتی را که می خواهید به آن گوش دهید اضافه کنید (بیشتر از 80، 8080 استفاده می شود).

    لیست رابط هایی را که می توانید به tcpdumt گوش دهید را مشاهده کنید:

    # tcpdump -D

    گوش دادن به رابط eth0:

    # tcpdump -i eth0

    در هر رابط موجود گوش کنید (نیاز به هسته لینوکس نسخه 2.2 یا بالاتر):

    # tcpdump -i any

    نمایش همه چیز روی صفحه (هر چیزی که توسط برنامه اجرا می شود):

    # tcpdump -v

    نمایش بسیاری از چیزها بر روی صفحه نمایش (هر چیزی که توسط برنامه اجرا می شود):

    # tcpdump -vv

    بسیاری از چیزها را به صفحه نمایش می دهد (هر چیزی که توسط برنامه اجرا می شود):

    # tcpdump -vvv

    هنگام ضبط بسته ها اطلاعات زیادی را نمایش نمی دهد (نه مانند نمونه استاندارد):

    # tcpdump -q

    محدود کردن ضبط بسته به 100:

    # tcpdump -c 100

    تمام داده ها (بسته های ضبط شده) را در فایلی به نام capture.cap بنویسید:

    # tcpdump -w capture.cap

    تمام داده ها (بسته های ضبط شده) را در فایلی به نام capture.cap بنویسید و آن را در زمان واقعی روی صفحه نمایش دهید:

    # tcpdump -v -w capture.cap

    خروجی بسته ها از فایل capture.cap:

    # tcpdump -r capture.cap

    بسته های خروجی را از فایل capture.cap با استفاده از اطلاعات تا حد ممکن:

    # tcpdump -vvv -r capture.cap

    IP خروجی و پورت‌ها به جای دامنه‌ها، ضبط بسته است:

    # tcpdump -n

    هر بسته ای را که میزبان مقصد 192.138.1.1 است، ضبط کنید. نمایش IP و پورت ها روی صفحه:

    # tcpdump -n میزبان dst 192.138.1.1

    میزبان # tcpdump -n src 192.138.1.1

    هر بسته ای را از میزبان 192.138.1.1 ضبط کنید. نمایش IP و پورت ها روی صفحه:

    میزبان # tcpdump -n 192.138.1.1

    بسته هایی را در جایی که شبکه 192.138.1.0/24 است ضبط کنید. نمایش IP و پورت ها روی صفحه:

    # tcpdump -n dst net 192.138.1.0/24

    # tcpdump -n src net 192.138.1.0/24

    گرفتن بسته ها از شبکه 192.138.1.0/24. نمایش IP و پورت ها روی صفحه:

    # tcpdump -n net 192.138.1.0/24

    گرفتن بسته ها از پورت 23. نمایش IP و پورت ها روی صفحه:

    # tcpdump -n پورت dst 23

    گرفتن بسته ها از پورت های 1 تا 1023. نمایش IP و پورت ها روی صفحه:

    # tcpdump -n dst portrange 1-1023

    فقط بسته های TCP را با مقصد در پورت های 1 تا 1023 ضبط کنید. IP و پورت ها را روی صفحه نمایش دهید:

    # tcpdump -n tcp dst portrange 1-1023

    فقط بسته های UDP را با مقصد در پورت های 1 تا 1023 ضبط کنید. IP و پورت ها را روی صفحه نمایش دهید:

    # tcpdump -n udp dst portrange 1-1023

    بسته ها را از مقصدی که IP 192.138.1.1 و پورت مقصد 23 است، بگیرید. نمایش روی صفحه:

    # tcpdump -n "dst host 192.138.1.1 و dst port 23"

    بسته ها را از مقصدی که IP آن 192.138.1.1 است و مقصد از طریق پورت های 80 یا 443 ضبط کنید. نمایش:

    # tcpdump -n "dst host 192.138.1.1 و (dst port 80 یا dst port 443)"

    هر بسته ICMP را ضبط کنید:

    # tcpdump -v icmp

    هر بسته ARP را ضبط کنید:

    # tcpdump -v arp

    هر بسته ICMP یا ARP را ضبط کنید:

    # tcpdump -v "icmp or arp"

    هر بسته پخش یا چندپخشی را ضبط کنید:

    # tcpdump -n "پخش یا چندپخشی"

    بسته های بزرگ (500 بایت) را به جای استاندارد 68b بگیرید:

    # tcpdump -s 500

    تمام بایت های داده را در یک بسته ضبط کنید:

    # tcpdump -s 0

    مشاهده "بسته های سنگین":

    # tcpdump -nnvvXSs 1514

    گرفتن بسته های ICMP با پینگ و پنگ:

    # tcpdump -nnvXSs 0 -c2 icmp

    نتیجه گیری بدون گزینه های زیاد:

    # tcpdump -nS

    ارتباطات اولیه (بسیار حالت پرحرف، می توانید حجم خوبی از ترافیک را با پرحرفی مشاهده کنید:

    # tcpdump -nnvvS

    نگاهی عمیق به ترافیک، اضافه کردن -X برای محموله:

    # tcpdump -nnvvXS

    یک بسته سنگین را مشاهده کنید و طول آن را افزایش دهید و کل بسته را بگیرید:

    # tcpdump -nnvvXSs 1514

    همچنین می‌توانید بر اساس بخش‌های خاصی از بسته فیلتر کنید، و همچنین شرایط چندگانه را گروه‌بندی کنید. به عنوان مثال، هنگامی که فقط برای SYN یا PCT جستجو می کنید، و مورد دوم برای جداسازی ترافیک حتی پیشرفته تر، مفید است.

    همه بسته های URGENT (URG) را به من نشان دهید:

    # tcpdump "tcp & 32!=0"

    همه بسته های ACKNOWLEDGE (ACK) را به من نشان دهید:

    # tcpdump "tcp & 16!=0"

    همه بسته های PUSH (PSH) را به من نشان دهید:

    # tcpdump "tcp & 8!=0"

    همه بسته‌های RESET (RST) را به من نشان دهید:

    # tcpdump "tcp & 4!=0"

    همه بسته‌های SYNCHRONIZE (SYN) را به من نشان دهید:

    # tcpdump "tcp & 2!=0"

    همه بسته‌های FINISH (FIN) را به من نشان دهید:

    # tcpdump "tcp & 1!=0"

    همه بسته‌های SYNCHRONIZE/ACKNOWLEDGE (SYNACK) را به من نشان دهید:

    # tcpdump "tcp=18"

    گرفتن پرچم های TCP با استفاده از tcpflag:

    # tcpdump "tcp & & tcp-syn != 0"

    بسته های دارای پرچم RST و SYN (بررسی کنید):

    # tcpdump "tcp = 6"

    ترافیک از «بیت شیطانی» (بررسی):

    # tcpdump "ip & 128 != 0"

    اینجاست که مقاله خود را با عنوان "نصب و استفاده از tcpdump" کامل می کنم، امیدوارم همه چیز واضح و قابل درک باشد.



     


    خواندن:



    برهم نهی توابع جبر منطقی توابع بولی یکنواخت

    برهم نهی توابع جبر منطقی توابع بولی یکنواخت

    تناظر G بین مجموعه های A و B را زیر مجموعه می گویند. اگر، آنگاه می گویند b با a مطابقت دارد. بسیاری از موارد مرتبط ...

    سیستم اطلاعاتی چیست؟

    سیستم اطلاعاتی چیست؟

    پورتال های دولتی، وب سایت های ESIA. سیستم یکپارچه شناسایی و احراز هویت - esia.gosuslugi.ru EPGU. پورتال واحد خدمات عمومی...

    انتقال از یک عبارت منطقی به یک مدار منطقی و بالعکس

    انتقال از یک عبارت منطقی به یک مدار منطقی و بالعکس

    کار آزمایشگاهی شماره 4. اجرای مدار عناصر منطقی ساخت مدارهای منطقی بخش نظری پردازش بر اساس ...

    خجالت نیژنی نووگورود از پست روسیه

    خجالت نیژنی نووگورود از پست روسیه

    پس از معرفی سیستم عامل جدید EAS OPS که 890 میلیون روبل هزینه داشت، زمان خدمات رسانی به مشتریان در دفاتر پست در منطقه...

    فید-تصویر RSS