آموزش تحلیل Packet با Wireshark

آموزش تحلیل Packet با Wireshark

 

آموزش تحلیل Packet با Wireshark؛ از Capture تا عیب‌یابی حرفه‌ای شبکه

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

اینجاست که Wireshark وارد می‌شود.

Wireshark یکی از قدرتمندترین ابزارهای تحلیل ترافیک شبکه و Packet Capture است که به Network Engineerها و متخصصان امنیت اجازه می‌دهد Packetهای عبوری از یک Interface را مشاهده، فیلتر و تحلیل کنند.

در این آموزش یاد می‌گیریم چگونه با Wireshark یک Packet را از لایه Ethernet تا TCP و Application بررسی کنیم، مشکلات رایج شبکه را پیدا کنیم و از روی Packetها به Root Cause برسیم.

 

Wireshark چیست؟

Wireshark یک Network Protocol Analyzer متن‌باز است که برای Capture و تحلیل ترافیک شبکه استفاده می‌شود.

به زبان ساده، Wireshark به شما اجازه می‌دهد به‌جای اینکه فقط بگویید:

«شبکه مشکل دارد.»

ببینید:

«ارتباط TCP برقرار شده، اما Server به بعضی Packetها پاسخ نمی‌دهد و Retransmission اتفاق افتاده است.»

این تفاوت، همان چیزی است که Network Troubleshooting حرفه‌ای را از آزمون و خطا جدا می‌کند.

 

Wireshark می‌تواند Protocolهای مختلفی مانند موارد زیر را تحلیل کند:

  • Ethernet
  • ARP
  • IPv4 / IPv6
  • ICMP
  • TCP
  • UDP
  • DNS
  • DHCP
  • HTTP
  • TLS
  • SMB
  • و بسیاری از پروتکل‌های دیگر

 

چرا تحلیل Packet اهمیت دارد؟

فرض کنید کاربر می‌گوید:

«اینترنت من خیلی کند شده.»

این جمله به‌تنهایی اطلاعات زیادی در اختیار شما قرار نمی‌دهد.

 

ممکن است مشکل از یکی از موارد زیر باشد:

  • DNS
  • Packet Loss
  • افزایش Latency
  • TCP Retransmission
  • MTU
  • Firewall
  • Routing
  • Server
  • Application
  • یا حتی خود سیستم کاربر

Wireshark کمک می‌کند این فرضیه‌ها را یکی‌یکی بررسی کنیم.

 

Packet چیست؟

قبل از شروع کار با Wireshark باید بدانیم Packet چیست.

وقتی یک سیستم اطلاعاتی را از طریق شبکه ارسال می‌کند، داده‌ها به بخش‌های کوچک‌تری تقسیم می‌شوند و در قالب Packet یا Frame در شبکه منتقل می‌شوند.

برای مثال وقتی کاربر یک سایت را باز می‌کند، ممکن است این مسیر را داشته باشیم:

Application

↓

TCP / UDP

↓

IP

↓

Ethernet

↓

Network

هر لایه اطلاعات مخصوص خودش را به داده اضافه می‌کند.

به همین دلیل وقتی یک Packet را در Wireshark باز می‌کنیم، معمولاً با چندین لایه مواجه می‌شویم.

 

نصب Wireshark

برای شروع باید Wireshark را روی سیستم نصب کنیم.

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

برای مثال:

  • Ethernet
  • Wi-Fi
  • Loopback
  • Virtual Adapter

اگر سیستم شما از طریق کابل به شبکه متصل است، معمولاً باید Interface مربوط به Ethernet را انتخاب کنید.

اگر از Wi-Fi استفاده می‌کنید، Interface مربوط به Wireless را انتخاب کنید.

 

اولین Packet Capture در Wireshark

برای شروع:

  1. Wireshark را باز کنید.
  2. Interface فعال شبکه را انتخاب کنید.
  3. روی آن Double Click کنید.
  4. Capture آغاز می‌شود.

اکنون Wireshark شروع به دریافت Packetها می‌کند.

در نگاه اول ممکن است صفحه بسیار شلوغ به نظر برسد.

اما نگران نباشید.

قرار نیست همه Packetها را یکی‌یکی بررسی کنیم.

قدرت اصلی Wireshark در Filtering است.

 

ساختار محیط Wireshark

محیط Wireshark را می‌توان به سه قسمت اصلی تقسیم کرد.

  1. Packet List

در قسمت بالایی، Packetهای Capture شده را می‌بینیم.

معمولاً اطلاعاتی مانند این موارد نمایش داده می‌شود:

  • شماره Packet
  • زمان
  • Source
  • Destination
  • Protocol
  • Length
  • Info

مثلاً: No.   Source          Destination      Protocol

  1. 192.168.1.10    192.168.1.1      ARP
  2. 192.168.1.10    8.8.8.8         DNS
  3. 192.168.1.10    142.250.x.x     TCP

 

  1. Packet Details

با انتخاب یک Packet، اطلاعات داخلی آن نمایش داده می‌شود.

مثلاً ممکن است ساختار زیر را ببینید:

Frame

Ethernet II

Internet Protocol Version 4

Transmission Control Protocol

هر بخش را می‌توان باز کرد و جزئیات آن را دید.

 

  1. Packet Bytes

در قسمت پایین، داده خام Packet به‌صورت Hexadecimal و ASCII نمایش داده می‌شود.

برای تحلیل‌های حرفه‌ای‌تر این قسمت بسیار کاربردی است.

 

اولین قانون تحلیل Packet

یکی از مهم‌ترین نکات در Wireshark این است:

از بالا به پایین حرکت کنید.

یعنی ابتدا مشخص کنید:

Frame

↓

Ethernet

↓

IP

↓

TCP / UDP

↓

Application

و در هر لایه بپرسید:  آیا این قسمت همان چیزی است که انتظار داریم؟

 

تحلیل Ethernet Frame

اولین لایه‌ای که معمولاً مشاهده می‌کنیم Ethernet است.

در این بخش اطلاعاتی مانند:

  • Source MAC
  • Destination MAC
  • EtherType

را مشاهده می‌کنیم.

مثلاً:

Source:      AA:BB:CC:11:22:33

Destination: FF:EE:DD:44:55:66

این اطلاعات به شما می‌گوید Frame در سطح Layer 2 از کجا به کجا در حال حرکت است.

 

تحلیل IP Packet

در بخش IPv4 معمولاً موارد زیر را بررسی می‌کنیم:

  • Source IP
  • Destination IP
  • TTL
  • Protocol
  • Fragmentation

مثلاً:

Source IP:      192.168.1.20

Destination IP: 8.8.8.8

Protocol:       UDP

TTL:            64

در این مرحله باید بتوانیم به چند سؤال پاسخ دهیم:

 

  • چه کسی Packet را ارسال کرده؟
  • مقصد کجاست؟
  • Packet از چه پروتکلی استفاده می‌کند؟

 

تحلیل TCP؛ یکی از مهم‌ترین بخش‌های Wireshark

اگر با شبکه سروکار دارید، باید TCP را به‌خوبی بشناسید.

یکی از اولین چیزهایی که در یک ارتباط TCP بررسی می‌کنیم، Three-Way Handshake است.

این فرآیند معمولاً به شکل زیر انجام می‌شود:Client Server

SYN  -------------------->

<-------------------- SYN, ACK

ACK  -------------------->

اگر این فرآیند به‌درستی انجام شود، ارتباط TCP برقرار می‌شود.

اما اگر Packetها گم شوند یا Server پاسخ ندهد، Wireshark می‌تواند این مشکل را نشان دهد.

 

فیلترهای کاربردی Wireshark</span>

یکی از مهم‌ترین مهارت‌ها در Wireshark استفاده از Display Filter است.

مشاهده

 Packetهای یک IP

ip.addr == 192.168.1.10

مشاهده Packetهای خروجی از یک IP

ip.src == 192.168.1.10

مشاهده Packetهای ورودی به یک IP

ip.dst == 192.168.1.10

مشاهده TCP

tcp

مشاهده UDP

udp

مشاهده DNS

dns

مشاهده HTTP

http

مشاهده ترافیک HTTPS

tcp.port == 443

مشاهده ICMP

icmp

مشاهده TCP SYN

tcp.flags.syn == 1

این فیلترها فقط شروع کار هستند.

وقتی با Syntax فیلترهای Wireshark آشنا شوید، می‌توانید Captureهای بسیار بزرگ را در چند ثانیه محدود کنید.

 

چگونه DNS را با Wireshark تحلیل کنیم؟

یکی از بهترین تمرین‌ها، تحلیل یک DNS Query است.

فرض کنید کاربر می‌خواهد:

example.com

را باز کند.

سیستم ابتدا باید IP مربوط به Domain را پیدا کند.

در Wireshark می‌توانیم Packetهای DNS را با فیلتر زیر مشاهده کنیم:

dns

سپس بررسی کنیم:

Client

↓

DNS Query

↓

DNS Server

↓

DNS Response

↓

IP Address

اگر Query ارسال شود اما Response دریافت نشود، باید احتمال وجود مشکل در DNS، Firewall، Routing یا دسترسی به DNS Server را بررسی کنیم.

 

پیدا کردن TCP Retransmission

یکی از قابلیت‌های بسیار مهم Wireshark، نمایش TCP Retransmission است.

وقتی یک TCP Segment به مقصد نمی‌رسد یا ACK مورد انتظار دریافت نمی‌شود، فرستنده ممکن است آن Segment را دوباره ارسال کند.

Wireshark معمولاً چنین Packetهایی را به‌عنوان:

TCP Retransmission

مشخص می‌کند.

برای پیدا کردن آن‌ها می‌توان از فیلتر زیر استفاده کرد:

tcp.analysis.retransmission

اما یک نکته مهم وجود دارد:

هر Retransmission الزاماً به معنی خرابی شبکه نیست.

باید شرایط Capture، Latency، Packet Loss و رفتار TCP را در کنار یکدیگر بررسی کنیم.

 

TCP Duplicate ACK چیست؟

Duplicate ACK زمانی رخ می‌دهد که Receiver یک Segment را دریافت کند، اما منتظر Segment دیگری باشد.

در چنین شرایطی ممکن است ACK تکراری ارسال شود.

در Wireshark می‌توان آن را با:

tcp.analysis.duplicate_ack

بررسی کرد.

وجود تعداد زیادی Duplicate ACK می‌تواند نشانه‌ای از Packet Loss یا مشکلات مسیر باشد.

 

TCP Reset چیست؟

گاهی در Capture با مواردی مانند:

TCP RST

مواجه می‌شویم.

TCP Reset می‌تواند به دلایل مختلف رخ دهد.

برای مثال:

  • Application اتصال را بسته است.
  • Server اتصال را قبول نمی‌کند.
  • Firewall ارتباط را مسدود کرده است.
  • Port موردنظر باز نیست.
  • Application در سمت مقصد مشکل دارد.

بنابراین دیدن RST به‌تنهایی کافی نیست.

باید ببینیم:

چه کسی RST را ارسال کرده و دقیقاً قبل از آن چه اتفاقی افتاده است؟

 

 

پیدا کردن Packet Loss با Wireshark

Packet Loss یکی از مشکلات رایج شبکه است.

علائم آن می‌تواند شامل موارد زیر باشد:

  • کندی ارتباط
  • Retransmission
  • افزایش Latency
  • قطع و وصل شدن Connection
  • کاهش Throughput

در Wireshark می‌توان با بررسی TCP Analysis، Duplicate ACK و Retransmissionها سرنخ‌هایی از Packet Loss پیدا کرد.

اما برای تشخیص قطعی باید Capture را در نقطه مناسب شبکه انجام داد.

Follow TCP Stream؛ یکی از قابلیت‌های جذاب Wireshark

یکی از قابلیت‌های بسیار کاربردی Wireshark:

Follow TCP Stream

است.

با استفاده از آن می‌توان ارتباط یک TCP Session را به‌صورت یک جریان واحد مشاهده کرد.

این قابلیت برای بررسی ارتباط بین Client و Server بسیار مفید است.

مثلاً به‌جای اینکه صدها Packet را جداگانه بررسی کنیم، می‌توانیم یک Conversation مشخص را دنبال کنیم.

 

بررسی HTTP با Wireshark

در صورتی که ترافیک HTTP رمزنگاری نشده باشد، Wireshark می‌تواند اطلاعات قابل مشاهده‌ای از ارتباط را نمایش دهد.

برای مثال:

GET /login

Host: example.com

اما در HTTPS، محتوای Application Layer رمزنگاری می‌شود.

بنابراین نباید انتظار داشته باشیم که صرفاً با Capture کردن HTTPS بتوانیم محتوای رمزنگاری‌شده را ببینیم.

 

آیا Wireshark می‌تواند HTTPS را بخواند؟

در حالت عادی:

خیر، محتوای HTTPS رمزنگاری شده است.

اما در برخی شرایط و با در اختیار داشتن اطلاعات لازم برای Decryption می‌توان ترافیک TLS را برای تحلیل مشاهده کرد.

این موضوع برای Troubleshooting و تحلیل امنیتی بسیار مهم است.

 

تحلیل ARP با Wireshark

ARP یکی دیگر از پروتکل‌هایی است که در Troubleshooting شبکه بسیار مهم است.

برای مشاهده ARP:

arp

را در Display Filter وارد کنید.

می‌توانیم درخواست‌هایی مانند:

Who has 192.168.1.1?

و پاسخ مربوط به MAC Address را مشاهده کنیم.

اگر در شبکه رفتارهای غیرعادی ARP مشاهده شود، باید احتمال مشکلاتی مانند:

  • ARP Spoofing
  • ARP Poisoning
  • Gateway Conflict

را بررسی کرد.

 

استفاده از Wireshark برای تحلیل امنیت شبکه

Wireshark فقط ابزار Troubleshooting نیست.

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

برای مثال می‌توان به دنبال موارد زیر بود:

  • Port Scanning
  • ARP Spoofing
  • DNS Tunneling
  • ارتباطات غیرعادی
  • ارتباط با IPهای مشکوک
  • Beaconing
  • حجم غیرطبیعی Traffic
  • رفتارهای غیرعادی DNS

برای مثال اگر یک سیستم تعداد زیادی DNS Query غیرمعمول ارسال کند، بررسی دقیق‌تر Traffic می‌تواند اطلاعات ارزشمندی درباره رفتار آن سیستم در اختیار تحلیلگر قرار دهد.

 

یک سناریوی واقعی Troubleshooting

فرض کنید کاربر اعلام می‌کند:

«یک سایت برای من خیلی کند باز می‌شود، اما برای سایر کاربران مشکلی ندارد.»

به‌جای تغییر DNS یا Restart کردن سیستم، ابتدا Capture می‌گیریم.

اگر DNS سریع پاسخ دهد اما TCP Retransmission زیادی مشاهده شود، فرضیه DNS ضعیف می‌شود.

اگر TCP Handshake مدت زیادی طول بکشد، باید مسیر شبکه و Firewall را بررسی کنیم.

اگر Handshake سریع باشد اما Server دیر پاسخ دهد، احتمالاً باید Server یا Application را بررسی کنیم.

این دقیقاً همان جایی است که Wireshark از یک نرم‌افزار ساده به یک ابزار Root Cause Analysis تبدیل می‌شود.

 

اشتباهات رایج هنگام تحلیل Packet

<strong>اشتباه اول: بررسی همه Packetها</span>

Capture ممکن است شامل هزاران یا حتی میلیون‌ها Packet باشد.

بدون Filter، تحلیل بسیار دشوار می‌شود.

اشتباه دوم: تمرکز فقط روی رنگ Packetها

رنگ‌ها کمک می‌کنند، اما نباید صرفاً بر اساس رنگ تصمیم بگیریم.

باید Headerها و Flags را بررسی کنیم.

اشتباه سوم: تصور اینکه هر Retransmission مشکل جدی است

Retransmission یک Signal است، نه الزاماً Root Cause.

اشتباه چهارم: Capture از نقطه اشتباه

اگر Capture را در جای نامناسب بگیرید، ممکن است Packet Loss را در نقطه‌ای مشاهده کنید که واقعاً مشکل آنجا نیست.

محل Capture اهمیت بسیار زیادی دارد.

Wireshark در کنار FortiGate

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

برای مثال:

Client

↓

Switch

↓

FortiGate

↓

Internet

↓

Server

در چنین معماری می‌توان Capture را در نقاط مختلف انجام داد و رفتار Packet را مقایسه کرد.

مثلاً:

Packet در سمت LAN دیده می‌شود اما در سمت WAN دیده نمی‌شود.

در این شرایط باید بررسی کنیم Packet در کدام بخش مسیر Drop شده است.

این نوع تحلیل می‌تواند در Troubleshooting Firewall، Routing، NAT و Security Policy بسیار مفید باشد.

 

یک روش حرفه‌ای برای تحلیل Packet</h5>

=”color: #333333;”>هر زمان Capture می‌گیریم، این ترتیب را دنبال کنیم:

<s

trong>مرحله 1 — مشخص کردن مشکل</span>

=”color: #333333;”>مثلاً:

سایت باز نمی‌شود.

مرحله 2 — مشخص کردن Client و Server

Client IP

Server IP

Server Port

مرحله 3 — فیلتر کردن Traffic

ip.addr == CLIENT_IP

مرحله 4 — بررسی DNS

آیا Name Resolution انجام شده؟

مرحله 5 — بررسی TCP

آیا SYN ارسال شده؟

آیا SYN/ACK برگشته؟

آیا ACK ارسال شده؟

مرحله 6 — بررسی Application

آیا Server پاسخ Application را ارسال کرده؟

مرحله 7 — بررسی Retransmission

tcp.analysis.retransmission

مرحله 8 — پیدا کردن

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

مشکل دقیقاً در کدام بخش مسیر اتفاق افتاده است؟

 

Wireshark یکی از مهم‌ترین ابزارهایی است که هر Network Engineer، Security Engineer و متخصص Troubleshooting باید با آن آشنا باشد.

اما یادگیری واقعی Wireshark به معنی حفظ کردن صدها Filter نیست.

مهم‌تر از Syntax فیلترها، توانایی خواندن رفتار شبکه از روی Packetها است.

وقتی بتوانید از روی یک Capture تشخیص دهید که:

  • DNS درست کار می‌کند یا نه؛
  • TCP Handshake کامل شده یا نه؛
  • Packet Loss وجود دارد یا نه؛
  • Retransmission اتفاق افتاده یا نه؛
  • Server پاسخ می‌دهد یا نه؛
  • Firewall در مسیر چه نقشی دارد؛
  • و مشکل در کدام قسمت شبکه قرار دارد؛

در واقع قدم مهمی در مسیر تبدیل شدن به یک Network Troubleshooting حرفه‌ای برداشته‌اید.

Wireshark به شما اجازه می‌دهد به‌جای حدس زدن درباره مشکل شبکه، خود Packetها را به‌عنوان شواهد بررسی کنید.

 

پست های مرتبط
ارسال پاسخ

نشانی ایمیل شما منتشر نخواهد شد.فیلد های مورد نیاز علامت گذاری شده اند

پانزده + چهار =

برای مخفی کردن نوار مقایسه، بیرون از آن کلیک کنید
مقایسه