فصل ۱۱: تحلیل ترافیک شبکه
استفاده عمیق از Wireshark شامل capture filters و display filters، Follow TCP Stream، Export Objects، tcpdump خط فرمان، تحلیل ترافیک بدافزار و C2، تشخیص port scan و استخراج اعتبارنامه از PCAP.
چرا تحلیل ترافیک مهم است؟
تحلیل ترافیک شبکه یکی از مهارتهای بنیادین در امنیت سایبری است که در چند حوزه بهکار میآید: پاسخ به حادثه (تشخیص فعالیت بدافزار)، تست نفوذ (شناسایی اطلاعات نشتکرده)، و مانیتورینگ دفاعی (تشخیسی حملات در حال انجام). هر بستهای که در شبکه رد و بدل میشود، یک شاهد خام است که اگر درست تحلیل شود، میتواند تصویر کاملی از یک حمله ارائه دهد.
در این فصل با دو ابزار اصلی صنعت آشنا میشوید: Wireshark بهعنوان ابزار گرافیکی قدرتمند و tcpdump بهعنوان ابزار خط فرمان سبک.
Wireshark — معرفی
Wireshark آنالیزور پروتکل پیشفرض صنعت است که رابط گرافیکی غنی، فیلترهای قدرتمند و امکانات تشخیصی فراوانی دارد. این ابزار میتواند روی یک رابط شبکه (eth0، wlan0 و...) گوش دهد و تمام پکتها را در قالب PCAP ذخیره کند.
تفاوت Capture Filter و Display Filter
این دو فیلتر اغلب اشتباه گرفته میشوند اما کاملاً متفاوتند:
| ویژگی | Capture Filter | Display Filter |
|---|---|---|
| زمان اعمال | هنگام ضبط | پس از ضبط |
| سینتکس | BPF (Berkeley Packet Filter) | Wireshark Display Filter |
| مثال | host 192.168.1.10 | ip.addr == 192.168.1.10 |
| کاربرد | کاهش حجم ضبط | تحلیل انتخابی |
Capture Filter با سینتکس BPF در نوار بالایی و Display Filter در نوار میانی وارد میشود.
فیلترهای نمایش پرکاربرد
# فیلتر بر اساس IP
ip.addr == 192.168.1.10
ip.src == 192.168.1.10 && ip.dst == 8.8.8.8
# فیلتر بر اساس پورت
tcp.port == 443
tcp.port == 80 || tcp.port == 443
udp.port == 53
# فیلتر پروتکل
http
dns
tls
icmp
# درخواستهای POST در HTTP
http.request.method == "POST"
# کوئری DNS شامل کلمه خاص
dns.qry.name contains "example"
# فقط بستههای SYN (اولین بسته اتصال)
tcp.flags.syn == 1 && tcp.flags.ack == 0
# تشخیص port scan: فقط SYN بدون ACK
tcp.flags.syn == 1 && tcp.flags.ack == 0 && tcp.flags.reset == 0ترکیب فیلترها
از عملگرهای && (و)، || (یا) و ! (نقیض) میتوان برای ترکیب فیلترها استفاده کرد. پرانتز نیز برای گروهبندی قابل استفاده است. بهعنوان مثال (http || dns) && ip.addr == 192.168.1.10 تمام ترافیک HTTP یا DNS با آن IP را نشان میدهد.
Follow TCP Stream
یکی از قویترین قابلیتهای Wireshark، قابلیت Follow TCP Stream است که کل مکالمه یک اتصال TCP را بهصورت متنی پیوسته نشان میدهد. این قابلیت برای دیدن محتوای HTTP، FTP یا SMTP بسیار مفید است.
روش: روی یک بسته راستکلیک → Follow → TCP Stream
میانبر: روی بسته انتخاب شده Ctrl+Alt+Shift+TExport Objects
Wireshark میتواند اشیاء منتقلشده در پروتکلهای HTTP، SMB، DICOM و TFTP را استخراج کند:
File → Export Objects → HTTPاین قابلیت برای استخراج فایلهای دانلودشده، تصاویر یا بدافزار منتقلشده بسیار کاربردی است.
tcpdump — ضبط خط فرمان
در سرورهای بدون رابط گرافیکی یا در محیطهایی که Wireshark در دسترس نیست، tcpdump ابزار اصلی ضبط است. خروجی آن با فرمت PCAP قابل باز کردن در Wireshark است.
# ضبط همه ترافیک رابط eth0
sudo tcpdump -i eth0 -w capture.pcap
# ضبط فقط ترافیک پورت ۸۰
sudo tcpdump -i eth0 port 80
# ضبط ترافیک یک هاست خاص
sudo tcpdump -i eth0 host 192.168.1.10
# خواندن فایل PCAP بدون ضبط
sudo tcpdump -nn -r capture.pcap
# نمایش محتوای ASCII پکتها
sudo tcpdump -A -i eth0 port 80
# نمایش پکتهای SYN فقط (تشخیص scan)
sudo tcpdump -i eth0 'tcp[tcpflags] == tcp-syn'فلگ -nn از تبدیل آدرسها به نام جلوگیری میکند و سرعت خواندن را بالا میبرد. فلگ -w خروجی را در فایل ذخیره میکند و -r فایل را میخواند.
جدول فیلترهای پرکاربرد
| هدف | فیلتر |
|---|---|
| ترافیک یک IP | ip.addr == 192.168.1.10 |
| ترافیک یک پورت | tcp.port == 443 |
| درخواست HTTP | http.request |
| پاسخ HTTP با کد خطا | http.response.code >= 400 |
| کوئری DNS | dns.qry.name |
| پاسخ DNS با TTL کم | dns.answers.ttl < 10 |
| اتصال TLS | tls.handshake.type == 1 |
| سرور FTP | ftp |
| احراز هویت FTP | ftp.request.command == USER || ftp.request.command == PASS |
| ICMP unreachable | icmp.type == 3 |
| ARP spoofing | arp.duplicate-address-detected |
| SYN scan | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
تحلیل ترافیک بدافزار و C2
بدافزارهای مدرن برای ارتباط با سرور فرمان و کنترل (C2) از تکنیکهای پنهانکاری متعددی استفاده میکنند. نشانههای رایج عبارتند از:
- بازههای زمانی منظم: پکتهای beaconing در فواصل دقیق (مثلاً هر ۶۰ ثانیه).
- DNS های طولانی و تصادفی: DNS tunneling یا DGX (Domain Generation Algorithm).
- HTTPS به دامنههای تازه ثبتشده: بدافزار اغلب از دامنههای کمتر از ۳۰ روزه استفاده میکند.
- Volume بالا در یک اتصال: نشانه exfiltration داده.
- TLS با JA3 hash مشابه بدافزار شناختهشده: JA3 فینگرپرینت TLS است.
# شمارش کوئریهای DNS به هر دامنه
tshark -r capture.pcap -Y "dns.qry.name" -T fields \
-e dns.qry.name | sort | uniq -c | sort -rn | head -20
# یافتن beaconing با شمارش اتصالات به هر IP
tshark -r capture.pcap -Y "tcp.flags.syn==1 && tcp.flags.ack==0" \
-T fields -e ip.dst | sort | uniq -c | sort -rnتشخیص Port Scan
Port scanها الگوهای خاصی در ترافیک دارند. یک TCP SYN scan به پورتهای متعدد یک هاست، بدون تکمیل اتصال، نشانه واضح است.
# فیلتر Wireshark برای تشخیص SYN scan
tcp.flags.syn == 1 && tcp.flags.ack == 0
# اگر چندین پورت مقصد در مدت کوتاه به یک IP مقصد باشد، احتمالاً scan استاسکنرهایی مانند Nmap با -sS این الگو را تولید میکنند. اسکنر -sF، -sX و -sN با ارسال فلگهای عجیب (FIN، Xmas، Null) قابل تشخیص هستند.
استخراج اعتبارنامه از PCAP
پروتکلهای قدیمی مانند FTP، HTTP Basic Auth و Telnet اعتبارنامه را بهصورت متن روشن یا Base64 منتقل میکنند:
# یافتن اعتبارنامه FTP
tshark -r capture.pcap -Y "ftp.request.command == USER || ftp.request.command == PASS" \
-T fields -e ftp.request.arg
# استخراج HTTP Basic Auth (Base64)
tshark -r capture.pcap -Y "http.authorization" -T fields -e http.authorization
# یافتن POST های HTTP (احتمالاً حاوی فرم)
tshark -r capture.pcap -Y "http.request.method == POST" \
-T fields -e http.file_dataبرای رمزگشایی Base64:
echo "dXNlcjpwYXNzMTIz" | base64 -d
# خروجی: user:pass123تمرین عملی — تحلیل PCAP مشکوک
یک فایل PCAP نمونه از سایتهایی مانند Malware-Traffic-Analysis یا PCAP از HackTheBox دانلود کنید و این مراحل را دنبال کنید:
# ۱. باز کردن در Wireshark
wireshark suspicious.pcap &
# ۲. شمارش پکتها بر اساس پروتکل
tshark -r suspicious.pcap -T fields -e frame.protocols | sort | uniq -c | sort -rn
# ۳. یافتن IPهای پرترافیک
tshark -r suspicious.pcap -T fields -e ip.src | sort | uniq -c | sort -rn | head -10
# ۴. جستجوی DNS مشکوک
tshark -r suspicious.pcap -Y "dns.qry.name" -T fields -e dns.qry.name | sort -u
# ۵. استخراج فایلهای HTTP
# در Wireshark: File → Export Objects → HTTP
# ۶. تحلیل TLS با JA3
tshark -r suspicious.pcap -Y "tls.handshake.type == 1" \
-T fields -e ip.src -e tls.handshake.ja3tshark برای اتوماسیون
tshark نسخه خط فرمان Wireshark است که برای اسکریپتنویسی و اتوماسیون ایدهآل است. میتوانید با ترکیب tshark و ابزارهایی مانند jq، awk و Python، پایپلاینهای تحلیل ترافیک بسازید که هر روز PCAPهای جدید را بهصورت خودکار تحلیل کنند. مثلاً tshark -r cap.pcap -T json | jq '.[] | .layers.dns' | sort -u تمام کوئریهای DNS را بهصورت JSON استخراج میکند.
خلاصه و گام بعدی
در این فصل با تحلیل ترافیک شبکه با Wireshark و tcpdump آشنا شدید. تفاوت Capture Filter و Display Filter، فیلترهای پرکاربرد، Follow TCP Stream، Export Objects و تحلیل ترافیک بدافزار را مرور کردید. توانایی تحلیل PCAP یکی از مهمترین مهارتهای یک تستر و عضو تیم SOC است.
در فصل بعد، با گزارشنویسی و اخلاق آشنا میشوید؛ جایی که میآموزید چگونه یافتههای خود را در یک گزارش حرفهای ارائه دهید، ریسک را ارزیابی کنید و در چارچوب اخلاقی و قانونی فعالیت کنید. این فصل پایانی، نقطه اتصال همه آموختههای شماست.
این صفحه در تاریخ ۸ تیر ۱۴۰۵ بهروزرسانی شده است.