تکنولوژی

Wireshark چیست؟ | راهنمای کامل تحلیل بسته‌های شبکه، نصب، فیلترها و کاربردهای حرفه‌ای

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

Wireshark  پرکاربردترین ابزار تحلیل پروتکل شبکه و بررسی بسته‌ها (packet analyzer) است که در عیب‌یابی شبکه، تحلیل ترافیک، بررسی حملات و آموزش شبکه استفاده می‌شود. این ابزار open source است، از صدها پروتکل پشتیبانی می‌کند و هم رابط گرافیکی (GUI) هم نسخه ی خط فرمانی (TShark) دارد. بنابراین برای مهندسان شبکه، تحلیل‌گران امنیت، و توسعه‌دهندگان شبکه ابزارِ ضروری است. در این مقاله از سلام دیجی به معرفی جامع این ابزار می پردازیم.

1 . Wireshark چیست؟

Wireshark یک تحلیل‌گر پروتکل شبکه (network protocol analyzer) متن‌باز است که به شما اجازه می‌دهد ترافیک شبکه را capture  و بسته‌به‌بسته بازبینی و تحلیل کنید. Wireshark  امکان بازخوانی صدها فرمت capture را دارد و می‌تواند ترافیک روی Ethernet، Wi-Fi، Bluetooth، USB و رسانه‌های دیگر را بخواند (وابسته به سخت‌افزار و درایور).

2 . تاریخچه کوتاه و بنیاد Wireshark

✔️ آغاز پروژه:  این ابزار ابتدا در سال 1998 توسط Gerald Combs  طراحی شد. نام اولیه آن Ethereal  بود.

✔️ تغییر نام: در سال 2006، به دلیل مسائل مربوط به حق نام تجاری (Trademark)، توسعه‌دهنده اصلی تصمیم گرفت نام نرم‌افزار را تغییر دهد. از آن زمان، نام Wireshark برای همیشه با آن گره خورد.

✔️ معنای نام: واژه wire به معنی «سیم» و shark  به معنی «کوسه» است. انتخاب این نام نمادین بود: کوسه‌ای که در اعماق شبکه (سیم‌ها) به شکار بسته‌ها می‌پردازد! همین استعاره باعث شده کاربران فنی با نام نرم‌افزار به‌راحتی ارتباط برقرار کنند.

رشد و اهمیت Wireshark

Wireshark ✔️یک پروژه Open Source است و تحت GNU GPL عرضه می‌شود.

✔️ با حمایت گسترده جامعه توسعه‌دهندگان و متخصصان شبکه، این ابزار به‌سرعت رشد کرد و امروزه به استاندارد جهانی در Packet Analysis تبدیل شده است.

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

چرا Wireshark این‌قدر محبوب است؟

✔️ رابط کاربری گرافیکی ساده و کاربرپسند (GUI) همراه با قدرت بالا در فیلتر و جستجو.

✔️ پشتیبانی از صدها پروتکل شبکه، از لایه‌های پایین (Ethernet, ARP, ICMP) تا لایه‌های بالا (HTTP, TLS, DNS) .

✔️ امکان ضبط زنده و هم‌زمان تحلیل آفلاین از فایل‌های pcap .

✔️ جامعه کاربری فعال و هزاران مستند، آموزش و پلاگین که یادگیری و توسعه را ساده می‌کند.

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

3 . نصب و راه‌اندازی Wireshark (نکات عملی و امنیتی)

📥 دانلود و منابع رسمی

✔️ همیشه Wireshark را فقط از وب‌سایت رسمی wireshark.org دانلود کنید.

✔️ از دانلود نسخه‌های غیررسمی یا منابع ناشناخته خودداری کنید، زیرا ممکن است شامل بدافزار یا نسخه‌های دستکاری‌شده باشند.

💻  نصب روی سیستم‌عامل‌ها

Windows

✔️ فایل installer  را از وب‌سایت رسمی دریافت کنید.

✔️ در طول نصب می‌توانید Npcap  را اضافه کنید (گزینه پیش‌فرض توصیه می‌شود). Npcap نسخهی جدید WinPcap است و قابلیت‌های بیشتری دارد مانند پشتیبانی از loopback traffic  و capture  در حالت monitor روی Wi-Fi.

✔️ پیشنهاد می‌شود Npcap را به‌طور جداگانه و همیشه به آخرین نسخه ارتقا دهید.

Linux (Ubuntu, Debian, CentOS, Fedora و)

✔️ اغلب توزیع‌ها Wireshark را در مخازن رسمی دارند. برای مثال در Ubuntu :

<>osudo apt update

<>osudo apt install wireshark

✔️ در طول نصب پرسیده می‌شود آیا کاربران غیر root بتوانند بسته‌ها را capture کنند یا خیر. برای امنیت بهتر، تنها به گروه کاربری خاصی (مثلاً wireshark) دسترسی دهید:

<>osudo usermod -aG wireshark <username>

✔️ در صورت نیاز به آخرین نسخه، می‌توانید از PPA رسمی Wireshark یا کامپایل مستقیم سورس استفاده کنید.

macOS

✔️ نصب به‌سادگی از طریق dmg installer  در سایت رسمی یا با Homebrew امکان‌پذیر است:

<>obrew install --cask wireshark

✔️ برای capture نیاز به نصب ChmodBPF دارید تا دسترسی به رابط‌ها بدون root فراهم شود.

⚠️  نکات امنیتی مهم

✔️ اجرای Wireshark با دسترسی administrator/root می‌تواند خطرناک باشد، چون اگر نرم‌افزار آسیب‌پذیر باشد، امکان سوءاستفاده وجود دارد.

✔️ راهکار: استفاده از dumpcap یا Npcap/Libpcap برای capture با دسترسی محدود و بازکردن فایل‌های .pcap در Wireshark بدون نیاز به دسترسی بالا.

✔️ همیشه Release Notes و CVEها را بررسی کنید. در گذشته چندین آسیب‌پذیری جدی در Wireshark کشف شده که امکان اجرای کد از راه دور (RCE) یا DoS را ایجاد می‌کردند. برای محیط‌های حساس حتماً نسخه را به‌روز نگه دارید.

✔️ توصیه می‌شود در محیط‌های عملیاتی (production) Wireshark فقط روی سرورهای مانیتورینگ یا لپ‌تاپ‌های امن اجرا شود و نه روی سیستم‌های اصلی تولید.

4. اصول پایه: چگونه بسته بگیریم (capture)  

  1. انتخاب رابط شبکه (network interface) مناسب (Ethernet, Wi-Fi, ...)

  2. تنظیم گزینه‌ها:  buffer size، promiscuous mode، name resolution (در صورت نیاز خاموش کنید برای سرعت)

  3. اعمال Capture filter  برای کاهش ترافیک ضبط‌شده (مثلاً host 10.0.0.5 یا port 80) . استفاده از capture filter بسیار کارآمدتر از فیلتر نمایش برای بار زیاد شبکه است.

5. تفاوت Capture filter و Display filter بهمراه مثال

✔️ Capture filter (فیلتر هنگام ضبط): با libpcap/tcpdump syntax کار می‌کند؛ مقداردهی قبل از capture انجام می‌شود و بسته‌های غیرمرتبط ضبط نمی‌شوند. مثال:

  • host 192.168.1.10
  • tcp port 443
    (سینتکس شبیه tcpdump است).

✔️ Display filter (فیلتر هنگام نمایش): در GUI یا هنگام خواندن فایل استفاده می‌شود؛ تحلیل دقیق‌تری ممکن می‌سازد (http.request.method == "GET" یا ip.addr == 10.0.0.5). نمایش فیلترها انعطاف‌پذیرتر ولی هنگام ضبطِ زنده (live) سنگین‌تر است و ممکن است باعث از دست رفتن بسته‌ها شود.

مثال عملی:

  • ضبط تمام ترافیک به/از یک IP: host 203.0.113.5 (capture filter)
  • سپس در Wireshark نمایش فقط درخواست‌های HTTP: http.request (display filter)

6. آنالیز پروتکل‌ها و دیسِکتورها

✔️ Wireshark دیسِکتور (dissector) برای هر پروتکل دارد که بسته را باز می‌کند و فیلدها را نمایش می‌دهد. مجموعه ی دیسِکتورها مرتب آپدیت می‌شود و نسخه‌های جدید پروتکل یا اصلاحات به تدریج اضافه می‌شوند. برای دیدن لیست فیلدها و نام‌های قابل فیلتر می‌توانید از tshark -G fields استفاده کنید.

✔️ Wireshark توانایی «بازپخش» (play streams) برای پروتکل‌هایی مثل RTP، HTTP و سایر پروتکل‌های صوت/ویدئو را هم دارد.

7.  TShark . نسخه ی خط فرمان

TShark، معادل خط فرمان Wireshark است. برای اسکریپت‌نویسی، پردازش دسته‌ای فایل‌ها و محیط‌های سروری عالی است. برخی مثال‌ها:

✔️ لیست فیلدها: tshark -G fields

✔️ استخراج پکت‌ها با display filter: tshark -r capture.pcap -Y "http.request" -T fields -e http.host -e http.request.uri
توجه: هنگام ضبط زنده اگر از display filter استفاده کنید کارایی پایین می‌آید. از capture filter  در ضبط استفاده کنید و پردازش را بعداً با tshark انجام دهید.

8. موارد استفاده رایج

✔️ عیب‌یابی شبکه (latency, retransmission, packet loss)

✔️ تحلیل کارایی پروتکل‌ها و برنامه‌ها

✔️ تشخیص حملات شبکه (DDoS، scans، brute force، ARP spoofing)

✔️ جرم‌شناسی دیجیتال و تحلیل بدافزار (جمع‌آوری شواهد ترافیکی)

✔️ توسعه پروتکل و تست پیاده‌سازی‌ها
هر مورد را می‌توان با مثال‌های عملی و بازنمایی فیلدها پیاده‌سازی کرد. برخی منابع آموزشی و راهنماهای عملی منتشر شده‌اند که گام‌به‌گام capture و تحلیل را نشان می‌دهند.

9.نکات پیشرفته و bset practice

✔️ همیشه از منبع رسمی دانلود و نسخه‌ها را پیگیری کنید (release notes و CVEها)

✔️ در شبکه‌های بزرگ از capture filter و mirror/SPAN با دقت استفاده کنید. برای تجمیع ترافیک از حافظه کافی و file rotation بهره ببرید.

✔️ اگر نیاز به آنالیز در سطح اپلیکیشن دارید، از قابلیت‌های "Follow TCP Stream" یا "Follow HTTP stream" استفاده کنید.

✔️ برای اتوماسیون و پردازش دسته‌ای از TShark یا pyshark (پکیج پایتون) استفاده کنید.

✔️ نام‌گذاری و زمان‌بندی فایل‌های pcap با timezone و timestamps دقیق (UTC) برای جرم‌شناسی حیاتی است.

10. مسائل قانونی، اخلاق و حریم خصوصی

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

✔️ مجوز صریح مالک شبکه یا کاربران را بگیرید.

✔️ در سازمان‌ها از سیاست‌های privacy و logging پیروی کنید.

✔️ برای محیط‌های آموزشی از ترافیک شبیه‌سازی‌شده استفاده کنید.
هرگونه استفاده غیرقانونی از Wireshark می‌تواند تبعات حقوقی داشته باشد. مسئولیت اخلاقی و قانونی با کاربر است.

11. مشکلات رایج و راه‌حل‌ها هنگام استفاده از Wireshark

 ✔️ از دست رفتن بسته‌ها در capture زنده: از capture filter استفاده کرده و buffer را افزایش دهید.

✔️ نیاز به دسترسی root/administrator : برخی رابط‌ها نیاز به دسترسی خاص دارند. برای امنیت فقط زمانی elevate کنید که لازم است.

✔️ عدم نمایش برخی پروتکل‌ها/فیلدها: ممکن است dissector مربوطه غیر فعال باشد یا نسخهWireshark قدیمی باشد. نسخه را ارتقا دهید.

فیلترها و دستورات عملی آماده (قابل کپی/پیست)

در ادامه مجموعه ی فیلترها و دستورات ساده، کاربردی و آمادهی استفاده را برای Wireshark و TShark قرار داده ایم. همراه با توضیح کوتاه و نکات عملی.

یادآوری:

✔️ Capture filter هنگام ضبط اعمال می‌شود (libpcap/tcpdump syntax). برای کاهش بار و جلوگیری از ضبط بسته‌های غیرضروری استفاده کن.

✔️ Display filter  بعداً موقع مشاهده یا هنگام خواندن فایل کاربرد دارد Wireshark syntax. انعطاف‌پذیرتر و دقیق‌تر است.

جدول فیلترها و دستورات Wireshark

🔹 نوع

🔹 مثال

🔹 توضیح

Capture Filter

tcp port 80

ضبط تمام ترافیک HTTP (پورت 80)

 

host 10.0.0.5

ضبط ترافیک ورودی و خروجی مربوط به یک IP

 

tcp port 443

ضبط فقط ترافیک TCP به/از پورت 443

 

host 10.0.0.5 and host 192.168.1.10

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

 

net 192.168.0.0/24

ضبط ترافیک یک شبکه خاص

توضیح

-

Capture Filterها قبل از ضبط اعمال می‌شوند؛ بسته‌های غیرمرتبط اصلاً ذخیره نمی‌شوند.

Display Filter

ip.addr == 10.0.0.5

نمایش بسته‌هایی که شامل آدرس IP مشخص هستند

 

http.request

نمایش فقط درخواست‌های HTTP

 

tcp.flags.syn == 1 and tcp.flags.ack == 0

نمایش بسته‌های TCP با فلگ SYN (شروع اتصال یا اسکن)

 

tcp.analysis.retransmission

نمایش بسته‌های دارای خطای TCP (retransmission)

 

ip.addr == 10.0.0.5 and tcp.port == 443

نمایش تمام بسته‌های مرتبط با یک جریان TCP مشخص

TShark عملی

`tshark -G fields

less`

 

tshark -r capture.pcap -Y "http.request" -T fields -e http.host -e http.request.uri

استخراج host و URI از HTTP

 

tshark -r capture.pcap -T fields -E header=y -E separator=, -e frame.time_epoch -e ip.src -e ip.dst -e frame.protocols -e _ws.col.Info > output.csv

استخراج CSV شامل timestamp، src، dst، پروتکل و info

 

tshark -i eth0 -b filesize:102400 -w capture.pcap

ضبط زنده با چرخش فایل‌ها (~100MB هر فایل)

 

tshark -r capture.pcap -Y "http" -T fields -e frame.number -e http.host -e http.user_agent -e http.request.method

نمایش فقط بسته‌های HTTP و استخراج headerها

 

tshark -r capture.pcap -Y "tls.handshake.extensions_server_name" -T fields -e tls.handshake.extensions_server_name

استخراج SNI از handshake TLS

فیلترهای متداول دیگر

udp port 53

Capture فقط UDP به پورت 53 (DNS)

 

dns.flags.rcode != 0

Display: بسته‌های DNS که ارور دارند

 

arp

Display: نمایش ترافیک ARP (تشخیص ARP spoofing)

 

tls.alert_message.level == 2

Display: نمایش پکت‌هایی با خطاهای TLS

 

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد