Wireshark ile Paket Analizi: Başlangıç Rehberi

Ağ trafiğini görmek, bir sistem yöneticisi olarak sana inanılmaz bir güç veriyor. Kullanıcı “internet yavaş” dediğinde, sunucu “bağlanamıyorum” hatası verdiğinde ya da gece yarısı garip bir trafik fark ettiğinde, Wireshark’ı açıp pakete bakabilmek ile kör körüne tahmin yürütmek arasındaki fark bir gecede öğrenilmiyor. Bu rehberde Wireshark’ı sıfırdan öğrenmek isteyen sysadmin’ler için gerçek dünya senaryolarıyla pratik bir yol çiziyorum.

Wireshark Nedir ve Neden Kullanmalısın?

Wireshark, açık kaynaklı bir ağ protokol analizörüdür. Kısaca söylemek gerekirse: ağ arayüzünden geçen tüm paketleri yakalar, saklar ve analiz etmeni sağlar. Tcpdump’ın komut satırı gücünü grafiksel arayüzle birleştiren bu araç, bugün dünya genelinde hem güvenlik uzmanları hem de sysadmin’ler tarafından standart araç olarak kullanılıyor.

Neden Wireshark öğrenmelisin?

  • Gerçek zamanlı sorun teşhisi: DNS sorgusu neden çözülmüyor, TCP handshake neden tamamlanmıyor, hemen görürsün.
  • Güvenlik analizi: Şüpheli bir istemci ne gönderiyor, hangi IP’ye bağlanıyor, paketleri inceleyerek anlarsın.
  • Uygulama davranışı: Bir uygulamanın arka planda ne yaptığını, hangi sunuculara veri gönderdiğini tespit edersin.
  • Performans sorunları: Yeniden iletim (retransmission) oranı yüksek mi, TCP pencere boyutu düşük mü, bunları Wireshark sana gösterir.

Kurulum

Linux’ta Kurulum

Ubuntu/Debian tabanlı sistemlerde kurulum oldukça basit:

sudo apt update
sudo apt install wireshark -y

Kurulum sırasında “Should non-superusers be able to capture packets?” sorusuna Yes dersen, kullanıcını wireshark grubuna eklemeniz gerekir:

sudo usermod -aG wireshark $USER
newgrp wireshark

RHEL/CentOS/Rocky Linux için:

sudo dnf install wireshark wireshark-qt -y
sudo usermod -aG wireshark $USER

Windows’ta Kurulum

Windows’ta [wireshark.org](https://www.wireshark.org) adresinden indirip kurabilirsin. Kurulum sırasında Npcap bileşenini yüklemeyi unutma, bu bileşen olmadan paket yakalama çalışmaz. WinPcap artık aktif olarak geliştirilmiyor, Npcap’i tercih et.

Komut Satırı Alternatifi: tshark

Wireshark’ın terminal versiyonu olan tshark, GUI olmayan sunucularda hayat kurtarır. Wireshark kurulduğunda tshark da gelir. Uzak sunucuda yakalama yapıp sonuçları yerel makinene analiz için aktarabilirsin:

# Uzak sunucuda 60 saniye yakalama yap, dosyaya kaydet
tshark -i eth0 -a duration:60 -w /tmp/capture.pcap

# Sonra bu dosyayı kendi makinene çek
scp user@sunucu:/tmp/capture.pcap ./analiz.pcap

Arayüzü Tanımak

Wireshark’ı ilk açtığında seni üç panel karşılar:

  • Paket Listesi (üst panel): Yakalanan paketlerin özeti. Kaynak IP, hedef IP, protokol, zaman ve kısa bilgi burada görünür.
  • Paket Detayları (orta panel): Seçilen paketin katman katman detayları. Ethernet, IP, TCP/UDP, uygulama katmanı bilgileri burada açılır.
  • Paket Baytları (alt panel): Paketin ham halini hexadecimal ve ASCII olarak gösterir.

Renk kodlaması da önemli: TCP paketleri açık mavi, UDP açık mavi-mor, hata paketleri kırmızı, uyarılar sarı renkte görünür. Bu renk şemasını özelleştirebilirsin ama varsayılan renkler zamanla sezgisel hale geliyor.

İlk Yakalamayı Başlatmak

Wireshark’ı açınca karşılama ekranında aktif ağ arayüzlerini görürsün. Dalga animasyonu olan arayüzler üzerinde trafik olduğunu gösterir. Analiz etmek istediğin arayüze çift tıkla, yakalama başlar.

Yakalamayı durdurmak için kırmızı kare butona bas ya da Ctrl+E kısayolunu kullan.

Yakalama Filtresi (Capture Filter) Ayarlamak

Yoğun trafik olan bir sistemde her şeyi yakalamak hem diske hem RAM’e yük bindirir. Yakalamadan önce bir filtre belirleyebilirsin:

# Sadece belirli bir IP'nin trafiğini yakala
host 192.168.1.100

# Sadece HTTP/HTTPS trafiğini yakala
port 80 or port 443

# Belirli bir ağdan gelen trafiği yakala
net 10.0.0.0/24

# Sadece gelen trafiği yakala
dst host 192.168.1.50

Bu filtreler BPF (Berkeley Packet Filter) sözdizimiyle yazılır ve yakalama başlamadan önce belirlenir. Yakalama başladıktan sonra bu filtreyi değiştiremezsin, bunun için görüntüleme filtresini kullanırsın.

Görüntüleme Filtreleri: Asıl Gücün Kaynağı

Görüntüleme filtreleri (display filters), yakaladıktan sonra paketi eleyerek ihtiyacın olan trafiği bulmana yarar. Wireshark filtre sözdizimi oldukça zengin:

# Sadece HTTP trafiğini göster
http

# Belirli bir IP'ye giden trafiği göster
ip.dst == 192.168.1.1

# Kaynak veya hedef IP'si belirli olan trafiği göster
ip.addr == 10.0.0.5

# TCP RST paketlerini göster (bağlantı kopmaları)
tcp.flags.reset == 1

# HTTP 200 OK yanıtlarını filtrele
http.response.code == 200

# DNS sorgularını göster
dns.flags.response == 0

# Belirli bir porta giden TCP trafiğini göster
tcp.dstport == 8080

# İki IP arasındaki trafiği izole et
ip.addr == 192.168.1.10 && ip.addr == 192.168.1.20

Bu filtreleri filtre çubuğuna yazarken Wireshark otomatik tamamlama önerir. Filtre geçerliyse çubuk yeşile döner, geçersizse kırmızıya. Bu küçük detay çok işe yarar.

Gerçek Dünya Senaryosu 1: DNS Sorunu Teşhisi

Bir kullanıcı “bazı siteler açılmıyor ama bazıları açılıyor” diye şikayet ediyor. İlk şüphelenilen yer DNS. Wireshark’ı açıp şu filtreyle başlayalım:

dns

Şimdi kullanıcının sorunlu siteye gitmeye çalışmasını isteyin. DNS sorgusunu ve yanıtını görmen gerekiyor.

Sağlıklı bir DNS akışında şunu görürsün:

  • Kaynak IP’den UDP port 53’e bir sorgu paketi gider
  • DNS sunucusu kısa sürede yanıt döner (genellikle 1-50ms)
  • Yanıtta bir A veya AAAA kaydı bulunur

Sorunlu durumda ise:

  • Sorgu gider ama yanıt hiç gelmez (DNS sunucusu erişilemez ya da paket drop ediliyor)
  • Yanıt gelir ama “NXDOMAIN” (alan adı yok) hatası içerir
  • Yanıt gelir ama yanlış IP döner (DNS spoofing şüphesi)

tshark ile aynı analizi komut satırından yapmak için:

tshark -i eth0 -f "udp port 53" -T fields -e frame.time -e ip.src -e ip.dst -e dns.qry.name -e dns.resp.addr

Bu komut DNS sorgularını ve yanıtlarını tablo formatında döker. Script içinde otomatik log almak için idealdir.

Gerçek Dünya Senaryosu 2: Yavaş Uygulama Performansı

Bir web uygulaması bazen çok yavaş açılıyor. Uygulama geliştiricisi “sunucu tarafında sorun yok” diyor, ağ ekibi “ağ sorun değil” diyor. Ortada kalmak yerine Wireshark aç ve kontrol et.

İlk olarak şüpheli sunucuya olan trafiği izole et:

ip.addr == 10.0.1.50 && tcp

TCP akışına sağ tıklayıp “Follow TCP Stream” seçeneğini kullan. Bu, o bağlantıya ait tüm paketleri sıralı şekilde gösterir.

Dikkat etmen gerekenler:

  • TCP Retransmission: Kırmızı renkli paketler. Paket gönderilmiş ama onay (ACK) gelmediği için yeniden gönderilmiş. Ağda paket kaybı var demektir.
  • TCP ZeroWindow: Alıcının tamponu dolmuş, daha fazla veri kabul edemiyor. Uygulama veya sistem kaynak sorunu işareti.
  • Yüksek RTT: İstek gönderildikten sonra yanıt ne kadar sürede geliyor? Wireshark bunu her TCP akışı için hesaplar. tcp.analysis.ack_rtt filtresiyle bakabilirsin.
# Yüksek gecikme olan paketleri bul (100ms üzeri)
tcp.analysis.ack_rtt > 0.1

# Yeniden iletim paketlerini göster
tcp.analysis.retransmission

# TCP sorunlarının tamamını bir arada göster
tcp.analysis.flags

Gerçek Dünya Senaryosu 3: Şüpheli Ağ Trafiği Tespiti

Gece 02:00’de bir sunucudan garip bir dış trafiğin farkına varıyorsun. IDS alarmı vermiş, kıdemli mühendis seni aradı. Paniklemeden Wireshark ya da tshark ile yakalamaya başla.

Önce genel trafik profilini çıkar. Hangi IP’lerle konuşuluyor:

tshark -i eth0 -a duration:120 -w /tmp/suspicious.pcap

Sonra bu pcap dosyasını analiz et:

# En çok konuşulan hedef IP'leri listele
tshark -r /tmp/suspicious.pcap -T fields -e ip.dst | sort | uniq -c | sort -rn | head -20

# Hangi portlara bağlantı kurulmuş
tshark -r /tmp/suspicious.pcap -T fields -e tcp.dstport | sort | uniq -c | sort -rn

# HTTP isteklerinde User-Agent bilgisine bak (zararlı yazılım genellikle garip UA kullanır)
tshark -r /tmp/suspicious.pcap -Y http.request -T fields -e http.user_agent | sort | uniq -c

Wireshark arayüzünde Statistics > Conversations menüsü, hangi IP çiftleri arasında en çok trafik geçtiğini sana hızlıca gösterir. Şüpheli bir dış IP sürekli yüksek bant genişliği kullanıyorsa, o IP’ye ait akışı Follow TCP/UDP Stream ile incele.

Statistics Menüsü: Göz Ardı Edilen Hazine

Wireshark’ın Statistics menüsü çok güçlü ama birçok kişi sadece paket listesine odaklanır. Önemli özellikler:

  • Protocol Hierarchy: Toplam trafiğin yüzde kaçı TCP, UDP, HTTP, DNS vs. Bu menü bana bir bakışta trafik kompozisyonunu gösterir.
  • IO Graphs: Zaman içinde bant genişliği kullanımını grafik olarak gösterir. Trafik patlamaları burada net görünür.
  • Flow Graph: TCP akışlarını görsel olarak zaman çizgisinde gösterir.
  • Expert Information: Wireshark’ın otomatik olarak tespit ettiği sorunları listeler (retransmission, RST, duplicate ACK vs.).

Expert Information için kısayol: Analyze > Expert Information ya da doğrudan filtre çubuğunun solundaki renkli noktaya tıkla.

Pcap Dosyaları ile Çalışmak

Yakaladığın paketleri .pcap formatında kaydetmek ve ileride analiz etmek çok önemli bir alışkanlık. Özellikle bir olayı incelerken kanıt niteliği taşıyan verileri kaybetmemen gerekir.

# Belirli bir süre yakalayıp otomatik kaydet
tshark -i eth0 -a duration:300 -w /var/log/captures/$(date +%Y%m%d_%H%M%S).pcap

# Dosya boyutuna göre otomatik rotasyon (her 100MB yeni dosya)
tshark -i eth0 -b filesize:102400 -w /var/log/captures/capture.pcap

# Mevcut pcap dosyasından sadece belirli trafiği filtrele ve kaydet
tshark -r input.pcap -Y "ip.addr == 192.168.1.100" -w output_filtered.pcap

Pcap dosyaları evrensel formattır. Wireshark, tshark, tcpdump, Zeek, Suricata gibi araçların hepsi bu formatı okuyabilir. Bir olayda yakaladığın pcap’i farklı araçlarla çok boyutlu analiz edebilirsin.

SSL/TLS Trafiğini Çözümlemek

Modern web trafiğinin büyük kısmı şifreli. HTTPS trafiğini görürsün ama içini okuyamazsın, normal şartlarda. Ancak eğer istemci tarafında kontrolün varsa, TLS oturum anahtarlarını yakalayabilirsin.

Tarayıcıda SSLKEYLOGFILE ortam değişkenini ayarla:

# Linux/Mac
export SSLKEYLOGFILE=/tmp/ssl_keys.log
google-chrome &
# veya
firefox &

Sonra Wireshark’ta bu dosyayı tanıt: Edit > Preferences > Protocols > TLS > (Pre)-Master-Secret log filename

Artık yakaladığın HTTPS trafiğini Wireshark otomatik olarak çözümler ve HTTP içeriğini görebilirsin. Bu yöntemi sadece kendi sistemlerinde ve yasal izin çerçevesinde kullan.

Komut Satırı ile İleri Seviye Analizler

Rutin ağ izleme için Wireshark arayüzünü her gün açmak pratik değil. tshark ile bazı analizleri otomatik hale getirebilirsin:

# Her 5 dakikada bir yakalama yap ve analiz et
#!/bin/bash
INTERFACE="eth0"
OUTPUT_DIR="/var/log/netcapture"
DURATION=300

mkdir -p $OUTPUT_DIR
FILENAME="$OUTPUT_DIR/capture_$(date +%Y%m%d_%H%M%S).pcap"

tshark -i $INTERFACE -a duration:$DURATION -w $FILENAME

# Yakalamadan şüpheli DNS sorgularını raporla
echo "=== DNS Sorgu Raporu ===" >> $OUTPUT_DIR/report.log
tshark -r $FILENAME -Y "dns.flags.response == 0" 
  -T fields -e frame.time -e ip.src -e dns.qry.name 
  >> $OUTPUT_DIR/report.log 2>/dev/null
# Belirli bir IP'nin açtığı bağlantıları say
tshark -r capture.pcap -Y "ip.src == 192.168.1.55 && tcp.flags.syn == 1 && tcp.flags.ack == 0" 
  -T fields -e tcp.dstport | sort | uniq -c | sort -rn

Bu tür scriptler crontab’a eklenerek otomatik ağ izleme sistemi kurulabilir.

Pratik Kısayollar ve İpuçları

Günlük kullanımda zaman kazandıran bazı kısayollar:

  • Ctrl+F: Paket içeriğinde arama yap
  • Ctrl+G: Belirli paket numarasına git
  • Ctrl+Alt+Shift+T: TCP akışını takip et
  • Ctrl+E: Yakalamayı başlat/durdur
  • Ctrl+Shift+D: Tüm yakalamayı temizle

Filtreleme ipuçları:

  • Herhangi bir alana sağ tıklayıp “Apply as Filter” seçeneğiyle o değeri hızlıca filtre olarak ekleyebilirsin.
  • Birden fazla filtreyi kaydetmek için filtre çubuğunun yanındaki + butonunu kullan.
  • contains operatörüyle paket içeriğinde metin arayabilirsin: http contains "password" (test ortamı için)

Dikkat Edilmesi Gereken Yasal ve Etik Konular

Paket analizi yaparken bazı temel kuralları hiç aklından çıkarma:

  • Yalnızca kendi sistemlerinde ya da açık yetki verilmiş ortamlarda paket yakala.
  • Kurumsal ağlarda yakalama yapmadan önce mutlaka yazılı yetki al.
  • Kişisel veri içerebilecek pcap dosyalarını güvenli şekilde sakla ve gerektiğinde imha et.
  • Yakaladığın trafik içinde başkasının şifreleri veya kişisel bilgileri olabilir, bu verileri yetkisiz amaçlarla kullanamazsın.

GDPR ve Türkiye’deki KVKK kapsamında ağ trafiği kişisel veri içerebileceğinden, kurumsal ortamlarda veri gizliliği politikalarına uygun hareket etmek zorunlu.

Sonuç

Wireshark öğrenmek bir gecede tamamlanmıyor ama temelleri kavradıktan sonra her problem biraz daha anlamlı hale geliyor. DNS sorununu gördüğünde “sunucu ping’e cevap vermiyor ama DNS sorgusu hiç gitmiyor” diyebilmek, TCP bağlantısını incelerken “el sıkışma tamamlanmış ama sunucu RST gönderiyor” farkını anlamak, zamanla gelişen bir beceri.

Pratik önerin şu olsun: her hafta 15-20 dakika kendi ağ trafiğini incelemek için Wireshark aç. Normali öğrendikten sonra anormal ne zaman göreceğini de bilirsin. Bir sitenin DNS çözümlemesi nasıl görünüyor, SSH bağlantısı nasıl başlıyor, DHCP süreci nasıl işliyor; bunları gözlemle.

Zamanla Statistics menüsüne daha fazla zaman ayırmaya başlarsın, tshark scriptlerini otomatikleştirirsin ve bir gün “acaba bu trafik normal mi?” sorusuna artık “bakalım” diyerek cevap verirsin. O noktaya ulaştığında, Wireshark seni bağımsız bir ağ sorun gidericiye dönüştürmüş demektir.

Yorum yapın