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
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)
-
انتخاب رابط شبکه (network interface) مناسب (Ethernet, Wi-Fi, ...)
-
تنظیم گزینهها: buffer size، promiscuous mode، name resolution (در صورت نیاز خاموش کنید برای سرعت)
-
اعمال 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
(سینتکس شبیه tcpdump است).tcp port 443
✔️ 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 |
|
ضبط تمام ترافیک HTTP (پورت 80) |
|
ضبط ترافیک ورودی و خروجی مربوط به یک IP |
|
|
ضبط فقط ترافیک TCP به/از پورت 443 |
|
|
ضبط ترافیک بین دو IP مشخص |
|
|
ضبط ترافیک یک شبکه خاص |
|
توضیح |
- |
Capture Filterها قبل از ضبط اعمال میشوند؛ بستههای غیرمرتبط اصلاً ذخیره نمیشوند. |
Display Filter |
|
نمایش بستههایی که شامل آدرس IP مشخص هستند |
|
نمایش فقط درخواستهای HTTP |
|
|
نمایش بستههای TCP با فلگ SYN (شروع اتصال یا اسکن) |
|
|
نمایش بستههای دارای خطای TCP (retransmission) |
|
|
نمایش تمام بستههای مرتبط با یک جریان TCP مشخص |
|
TShark عملی |
`tshark -G fields |
less` |
|
استخراج host و URI از HTTP |
|
|
استخراج CSV شامل timestamp، src، dst، پروتکل و info |
|
|
ضبط زنده با چرخش فایلها (~100MB هر فایل) |
|
|
نمایش فقط بستههای HTTP و استخراج headerها |
|
|
استخراج SNI از handshake TLS |
|
فیلترهای متداول دیگر |
|
Capture فقط UDP به پورت 53 (DNS) |
|
Display: بستههای DNS که ارور دارند |
|
|
Display: نمایش ترافیک ARP (تشخیص ARP spoofing) |
|
|
Display: نمایش پکتهایی با خطاهای TLS |