Yakalama ve görüntüleme filtreleri
- Trafiği doğru noktadan yakalamayı, BPF yakalama filtresini Wireshark görüntüleme filtresinden ayırmayı ve tcpdump ile tshark kullanmayı öğren.
- İki filtrenin söz dizimi farklıdır: yakalama BPF kullanır, görüntüleme Wireshark'ın kendi alan tabanlı dilini kullanır.
- Bu derste yakalama noktasını seçecek, iki filtreyi ayıracak ve aynı işi tcpdump, dumpcap ve tshark ile komut satırından yapacaksın.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Bir ağ arayüzü saniyede binlerce paket görebilir. Hepsini kaydetmek diski hızla doldurur ve aradığını bulmayı zorlaştırır. Bu yüzden trafik analizi üç soruyla başlar: trafiği nereden yakalayacaksın, neyi kaydedeceksin, kaydı nasıl süzeceksin. Wireshark son iki soruya iki ayrı filtreyle cevap verir.
Yakalama filtresi (capture filter) paket diske yazılmadan önce çalışır ve eşleşmeyen paketi hiç kaydetmez. Görüntüleme filtresi (display filter) kaydedilmiş paketler arasında arar; hiçbir paketi silmez, yalnız ekranda gizler. Önceki modülde her başlık alanını elle okudun. Bu modülde aynı alanları filtre kutusuna yazıp işi çok daha hızlı yapacaksın.
Trafiği nereden yakalarsın
Anahtar (switch) her paketi yalnız hedefin bağlı olduğu porta iletir. Bu yüzden dizüstü bilgisayarını boş bir porta takıp Wireshark'ı açman başkalarının trafiğini göstermez. Yalnız kendi trafiğini, yayın (broadcast) ve çoklu yayın (multicast) paketlerini görürsün.
Başka makinelerin trafiğini görmenin üç yolu vardır. En basiti uç noktada, yani incelediğin makinenin kendisinde yakalamaktır. Ek donanım gerekmez ama yalnız o makinenin konuşmalarını görürsün.
İkincisi port yansıtmadır (SPAN, port mirroring): yönetilebilir anahtar, seçtiğin portların ya da VLAN'ların kopyasını bir izleme portuna gönderir. Üçüncüsü ağ musluğudur (TAP). TAP, kablonun arasına takılan fiziksel bir cihazdır ve hattın iki yönünü ayrı ayrı kopyalar.
Her yöntemin bir kör noktası vardır ve analize başlamadan bunu bilmen gerekir. SPAN portu hatalı, çok kısa ya da çok uzun çerçeveleri iletmez; bozuk paket arıyorsan onları kayıtta göremezsin. Anahtar birçok portu tek izleme portuna yansıttığında toplam trafik o portun hızını aşabilir. O zaman anahtar kopyaları sessizce düşürür ve kayıtta boşluklar oluşur.
Bazı anahtarlar yansıtırken VLAN etiketini de siler, paketin hangi VLAN'dan geldiğini kaybedersin. TAP bu sorunların çoğunu çözer, çünkü bozuk çerçeveyi de kopyalar ve iki yönü iki ayrı çıkıştan verir. Karşılığında bu iki çıkışı birleştirmen ya da iki arayüzden birlikte yakalaman gerekir.
Yakalama noktası kadar arayüzün modu de önemlidir. Karışık mod (promiscuous mode) ağ kartının donanım süzgecini kapatır. Kart, hedef MAC adresi kendisi olmasa da gördüğü her çerçeveyi işletim sistemine verir. SPAN ya da TAP'a bağlı bir sensör bu mod olmadan yansıtılan trafiğin çoğunu atar.
Kablosuz ağda karışık mod yalnız bağlı olduğun ağın veri çerçevelerini gösterir. İzleme modu (monitor mode) ise havadaki bütün 802.11 çerçevelerini, yönetim çerçeveleri ve başka ağların trafiği dahil, yakalar. tcpdump'ta -I bayrağı izleme modunu açar ama her kablosuz kart bu modu desteklemez.
Kurumsal bir ağda sensörün yeri, neyi göreceğini belirler. İnternet çıkışındaki sensör dışarıya giden trafiği görür ama bir iş istasyonundan dosya sunucusuna geçen yanal hareketi göremez. DMZ'deki sensör dışarıya açık servislere gelen istekleri izler. Çekirdek anahtara bağlı sensör bölütler arasındaki trafiği yakalar.
Tam paket yakalamanın bedelini de hesapla. Tam dolu 1 Gbps'lik bir hat saniyede 125 megabayt taşır, bir günde yaklaşık 10,8 terabayt eder. Bu yüzden kurumlar tam paketi birkaç gün, akış özetlerini aylarca saklar. Arkime gibi açık kaynak araçlar tam paketi dizinler ve aranabilir kılar.
Paket yakalama kişisel veri işler. Bir HTTP akışında ad, e-posta ve parola, bir DNS kaydında kimin hangi siteye girdiği bulunur. 6698 sayılı Kişisel Verilerin Korunması Kanunu verinin amaçla bağlantılı, sınırlı ve ölçülü işlenmesini, gerekli süre kadar saklanmasını ister (madde 4). Veri sorumlusu hukuka aykırı erişimi önleyecek teknik ve idari tedbirleri de almalıdır (madde 12).
Pratikte bu üç kural demektir. Yakalamadan önce yazılı yetki al ve kapsamı belirle. Kaydı erişimi kısıtlı bir yerde, şifreli sakla.
Saklama süresini baştan yaz ve süre dolunca kaydı sil. Kendi laboratuvarın dışında izinsiz yakalama yapma.
Etkinlik 1 / 8
Bir anahtarın SPAN portundan yakalama yapıyorsun. Kaydında hangi sorunlar görülebilir? Doğru olanların hepsini seç.
Yakalama filtresi: BPF ile kaydı baştan daralt
Yakalama filtresi BPF (Berkeley Packet Filter) söz dizimini kullanır. tcpdump, dumpcap ve Wireshark'ın yakalama kutusu aynı dili paylaşır. Temel yapı taşları host, net, port ve protokol adlarıdır (tcp, udp, icmp). "host 203.0.113.10" yalnız o adresle ilgili trafiği tutar.
"tcp port 443" HTTPS trafiğini seçer. "net 192.168.1.0/24" bütün bir alt ağı kapsar. Bu anahtar kelimelerin önüne src ya da dst koyarak yönü de sınırlarsın.
Koşulları and, or ve not ile birleştirirsin. Karmaşık ifadede parantez kullan ve bütün ifadeyi tek tırnak içine al. Tırnak olmazsa kabuk parantezleri ve köşeli ayraçları kendisi yorumlamaya çalışır.
host 203.0.113.10 src net 192.168.1.0/24 and dst port 53 tcp port 443 and not host 192.168.1.1 tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn
İlk satır 203.0.113.10 ile iki yöndeki bütün trafiği tutar. İkinci satır iç ağdan çıkan DNS sorgularını seçer. Üçüncü satır HTTPS trafiğini alır ama ağ geçidiyle yapılan konuşmayı dışarıda bırakır. Son satır BPF'nin asıl gücünü gösterir.
tcp[tcpflags] ifadesi TCP başlığındaki bayrak baytını okur; tcp[13] yazmakla aynı yere bakar. Bayt SYN ve ACK bitleriyle maskelenir, sonuç yalnız SYN ise paket geçer. Böylece yalnız bağlantı açma denemelerini, yani bir port taramasının ilk paketlerini kaydedersin.
Yakalama filtresinin sınırı da buradadır: kayıttan sonra değiştirilemez. Yanlış yazarsan aradığın paket diske hiç düşmez. Emin olmadığında geniş bir filtreyle yakala, daraltmayı görüntüleme filtresine bırak.
Derinleş:BPF nereden geliyor
BPF, Lawrence Berkeley Laboratuvarı'ndan Steven McCanne ve Van Jacobson'ın 1993 USENIX kış konferansında sunduğu makaleyle tanındı. Fikir basitti: süzgeç kullanıcı alanında değil, çekirdeğin içindeki küçük bir sanal makinede çalışır. Eşleşmeyen paket kullanıcı alanına hiç kopyalanmaz, yoğun hatlarda bu büyük hız kazancı demektir. Yazdığın ifade önce bu sanal makinenin komutlarına derlenir ve tcpdump -d bayrağı derlenmiş hâli gösterir.
"host 203.0.113.10 and tcp" için çıkan kodda ilk komut Ethernet başlığındaki tür alanını okur ve paketin IPv4 olup olmadığına bakar. Sonraki komutlar 26. ve 30. bayttaki kaynak ve hedef adresi 0xcb00710a ile, yani 203.0.113.10'un onaltılık karşılığıyla karşılaştırır.
Ardından 23. bayttaki protokol numarasının 6 (TCP) olup olmadığına bakılır. Paket geçerse ret #262144 komutuyla snaplen kadar kopyalanır, geçmezse ret #0 ile atılır.
Linux sonradan bu sanal makineyi genişletti. eBPF adını alan yapı bugün paket süzmenin çok ötesinde, izleme ve güvenlik araçlarında da kullanılır.
Etkinlik 2 / 8
Bir analist yalnız 203.0.113.10 adresiyle ilgili trafiği yakalamak istiyor ve diskte yer sorunu yaşıyor. Hangi filtre türünü kullanmalı?
Görüntüleme filtresi: kaydın içinde arama
Görüntüleme filtresi farklı bir dil konuşur. Söz dizimi alan.altalan==değer biçimindedir: ip.addr==203.0.113.10, tcp.port==443, http.request.method=="GET". Karşılaştırma operatörleri ==, !=, >, <, >= ve <= şeklindedir; eq, ne, gt, lt gibi İngilizce adlar da çalışır. contains bir metnin alanın içinde geçtiğini arar.
matches düzenli ifadeyle eşleştirir ve büyük küçük harf ayırmaz. Koşulları and, or, not ya da &&, ||, ! ile birleştirirsin. Filtre kutusunun yeşil zemini geçerli filtreyi, kırmızı zemini söz dizimi hatasını gösterir. Alan adları önceki derste okuduğun başlık alanlarıyla örtüşür ve Wireshark'ın kendi ayrıştırıcısından gelir.
dns.qry.name contains "example" http.request.method == "POST" tcp.flags.syn == 1 && tcp.flags.ack == 0 ip.src == 192.0.2.5 && !(tcp.port == 443) tcp.analysis.retransmission
İlk filtre, sorgulanan adında example geçen DNS paketlerini listeler; şüpheli bir alan adının izini sürerken işe yarar. İkincisi yalnız POST isteklerini gösterir, oturum açma formları ve dosya yüklemeleri çoğu zaman bu yöntemle gider. Üçüncüsü SYN bayrağı bir, ACK bayrağı sıfır olan paketleri seçer. Yakalama filtresindeki tcp[tcpflags] örneği de aynı soruyu sorar.
Dördüncüsü 192.0.2.5 kaynaklı ama 443 dışındaki trafiği bulur ve beklenmeyen bir servisle konuşan makineyi yakalar. Sonuncusu yalnız bir alan adıdır. Değer yazmadan alan adı yazmak "bu alan pakette var mı" diye sorar ve Wireshark'ın yeniden iletim olarak işaretlediği paketleri getirir.
ip.addr her iki yönü de tarar. Yalnız kaynağı sınırlamak istersen ip.src, yalnız hedefi istersen ip.dst yazarsın. Aynı ayrım port için de geçerlidir: tcp.srcport ve tcp.dstport.
Yalnız sunucudan gelen cevapları görmek istediğinde ip.src==203.0.113.10 and tcp.srcport==443 yazarsın. UDP alanları da aynı kalıbı izler: udp.port, udp.srcport, udp.dstport. Alan adlarını ezberlemen gerekmez. Paket ayrıntısında bir alana sağ tıklayıp Apply as Filter seçtiğinde Wireshark doğru alan adını ve değeri kutuya kendisi yazar.
Etkinlik 3 / 8
Görüntüleme filtresini anlamıyla eşleştir.
Etkinlik 4 / 8
Güncel bir Wireshark sürümünde (4.x) aşağıdaki filtre bu üç paketten hangilerini gösterir?
Önce kodu oku, sonra çıktıyı seç.
Paket 1: 192.168.1.20 -> 203.0.113.10 Paket 2: 203.0.113.10 -> 192.168.1.20 Paket 3: 192.168.1.20 -> 198.51.100.7 Filtre: ip.addr != 203.0.113.10
Komut satırında yakalama: tcpdump ve dumpcap
Sunucularda çoğu zaman grafik arayüz yoktur, yakalamayı komut satırından yaparsın. Aşağıdaki ilk komut eth0 arayüzünden 203.0.113.10 ile yapılan HTTPS trafiğini yakalar, 200 paketten sonra durur ve kaydı kayit.pcap dosyasına yazar. sudo gerekir, çünkü ham paket okumak yönetici yetkisi ister.
-nn adres ve port adlarını çözmez; ekranda https değil 443 görürsün ve gereksiz DNS sorgusu üretmezsin. -w paketleri ekrana basmaz, dosyaya yazar; kaydı okumak için -r kullanırsın. Paketin tamamını saklamak da zorunlu değildir.
-s bayrağı (snaplen) paketin ilk kaç baytının kaydedileceğini seçer, varsayılan 262144 bayttır. -s 128 başlıkları tutar, yükün çoğunu atar. Disk yavaş dolar ve kayıtta parola gibi kişisel veri kalmaz, ama içerik analizi de yapamazsın.
$ sudo tcpdump -i eth0 -nn -c 200 -w kayit.pcap 'host 203.0.113.10 and tcp port 443' tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 200 packets captured 214 packets received by filter 0 packets dropped by kernel $ tcpdump -nn -r kayit.pcap -c 3 reading from file kayit.pcap, link-type EN10MB (Ethernet) 10:15:02.123456 IP 192.168.1.20.51514 > 203.0.113.10.443: Flags [S], seq 3405691582, win 64240, options [mss 1460,sackOK,TS val 1234 ecr 0,nop,wscale 7], length 0 10:15:02.145012 IP 203.0.113.10.443 > 192.168.1.20.51514: Flags [S.], seq 1789012345, ack 3405691583, win 65160, options [mss 1460,sackOK,TS val 9876 ecr 1234,nop,wscale 7], length 0 10:15:02.145101 IP 192.168.1.20.51514 > 203.0.113.10.443: Flags [.], ack 1, win 502, options [nop,nop,TS val 1256 ecr 9876], length 0
Satırı soldan sağa oku. 10:15:02.123456 mikro saniyeli zaman damgasıdır. IP, katman 3 protokolünü söyler.
192.168.1.20.51514 adresin sonuna eklenmiş portu gösterir: istemci 51514 numaralı geçici porttan bağlanıyor, > işareti yönü verir. Flags [S] yalnız SYN demektir; [S.] SYN ile ACK'i, tek başına [.] yalnız ACK'i gösterir. seq ve ack sıra numaralarıdır.
Üçüncü satırdaki ack 1, tcpdump'ın el sıkışmadan sonra göreli numaraya geçtiğini gösterir. win pencere boyutu, options TCP seçenekleridir. length 0 ise yük taşınmadığını söyler.
Yakalama bitince basılan üç sayıya da bak. packets dropped by kernel sıfır değilse çekirdeğin tamponu dolmuş ve paket kaçırmışsındır.
Saatlerce süren yakalamada tek büyük dosya hem yavaş açılır hem de diski doldurabilir. dumpcap, Wireshark'ın yakalama motorudur ve halka tampon (ring buffer) modunu destekler. Aşağıdaki komut her 100000 kilobaytta, yani yaklaşık 100 megabaytta yeni dosyaya geçer ve en fazla on dosya tutar. Onuncudan sonra en eskisini siler, disk kullanımı yaklaşık bir gigabaytta sabit kalır.
Kayıt elindeyken önce capinfos ile özetine bak. Paket sayısı, süre, ilk ve son paket zamanı, ortalama hız ve SHA256 özeti tek ekranda gelir. Özet, kaydın delil olarak bütünlüğünü de belgeler. editcap -A ve -B ile bir zaman aralığı kesersin, mergecap iki kaydı zaman sırasına göre birleştirir.
$ dumpcap -i eth0 -b filesize:100000 -b files:10 -w halka.pcapng $ capinfos olay.pcap File name: olay.pcap Number of packets: 121 Capture duration: 7.005000 seconds Earliest packet time: 2026-09-13 10:15:02.000000 Latest packet time: 2026-09-13 10:15:09.005000 Data byte rate: 10 kBps Average packet size: 582.51 bytes SHA256: 1b2c27e356efb82b83316df44846de17685702ccb700396807230ab285c20bcf $ editcap -A "2026-09-13 10:15:03" -B "2026-09-13 10:15:05" olay.pcap aralik.pcap $ mergecap -w birlesik.pcapng sensor1.pcapng sensor2.pcapng
Etkinlik 5 / 8
Bu dört komuttan hangisi hata verir? Hatalı satırı bul.
Etkinlik 6 / 8
203.0.113.10 adresiyle ilgili yalnız TCP trafiğini yakalama filtresiyle canlı arayüzden topla.
tshark ile süzmek ve alan çıkarmak
tshark, Wireshark'ın komut satırı sürümüdür ve iki filtreyi ayrı bayraklarla alır. -f bayrağı yakalama filtresini taşır ve yalnız canlı yakalamada çalışır. -Y bayrağı görüntüleme filtresini taşır; hem canlı yakalamada hem kaydedilmiş bir dosyayı -r ile okurken çalışır. İkisi aynı komutta bulunabilir: -f neyin kaydedileceğini, -Y ekranda neyin görüneceğini seçer.
Sık kullanılan bir kalıp, kayıttan tek bir alanı çekip düz metne dökmektir. -T fields çıktıyı alan tabanlı sütunlara çevirir, her -e bir sütun ekler. Çıktı sekmeyle ayrılır ve grep, sort, awk gibi araçlara doğrudan bağlanır.
$ tshark -r olay.pcap -Y 'dns.flags.rcode == 3' -T fields -e ip.src -e dns.qry.name 192.168.1.20 yok1.altaykargo.example 192.168.1.20 yok2.altaykargo.example
Örnekte filtre, cevap kodu 3 olan DNS paketlerini seçer. Bu kod NXDOMAIN, yani "böyle bir ad yok" demektir.
İki -e bayrağı istemci adresini ve sorgulanan adı iki sütuna döker. Aynı makineden gelen yüzlerce NXDOMAIN, rastgele üretilmiş alan adlarını deneyen bir zararlının belirtisi olabilir; yanlış yazılmış bir yapılandırma da aynı izi bırakır. Aynı alan adını önce Wireshark'ta filtrede denemek, sonra -e ile sütuna çevirmek en hızlı yoldur.
Etkinlik 7 / 8
Doğru mu, yanlış mı?
tshark'ta -Y bayrağı, kaydedilmiş bir pcap dosyasını okurken de çalışır.
Etkinlik 8 / 8
tshark çıktısını yalnız seçtiğin alanlara indiren bayrak -T ____ biçimindedir; her alan ayrıca -e ile eklenir.
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.
- Etkinlik 1· Trafiği nereden yakalarsın
- Etkinlik 2· Yakalama filtresi: BPF ile kaydı baştan daralt
- Etkinlik 3· Görüntüleme filtresi: kaydın içinde arama
- Etkinlik 4· Görüntüleme filtresi: kaydın içinde arama
- Etkinlik 5· Komut satırında yakalama: tcpdump ve dumpcap
- Etkinlik 6· Komut satırında yakalama: tcpdump ve dumpcap
- Etkinlik 7· tshark ile süzmek ve alan çıkarmak
- Etkinlik 8· tshark ile süzmek ve alan çıkarmak