IT
OmnvertGörsel • Belge • Ağ

Wireshark olmadan pcap dosyası okuma: başlıklar, akışlar, TLS

5 dakika okuma
Beyaz zeminde kıvrılmış sarı Cat 5e ağ kablosu; önde iki RJ45 konnektör.

Bir yakalama dosyası, sıralı çerçevelerin önüne birkaç bayt başlık eklenmiş halidir. Biçimi bilirseniz protokol ağacına ihtiyaç duymadan da dosyadan anlamlı bir özet çıkarırsınız.

Bir yakalama dosyasında aslında ne var

Bir pcap dosyası, arayüzden geçen çerçevelerin sıralı bir kaydıdır. Sihir yoktur: dosyanın başında tek bir global başlık, ardından her paket için küçük bir başlık ve onun hemen arkasında paketin ham baytları durur. Wireshark'ın gösterdiği protokol ağacı dosyada saklı değildir; her açışta bu baytlardan yeniden üretilir. Bu yüzden aynı dosyayı farklı bir çözümleyiciyle okumak bilgi kaybı yaratmaz.

Global başlık

Klasik libpcap dosyası 24 baytlık bir başlıkla açılır. İlk dört bayt sihirli sayıdır: 0xa1b2c3d4 mikrosaniye çözünürlüklü bir dosyayı, 0xa1b2cd34 nanosaniye çözünürlüklüsünü gösterir. Aynı sayının ters sırada görünmesi dosyanın farklı bayt sıralamalı bir makinede yazıldığı anlamına gelir ve okuyucunun tüm sayısal alanları çevirmesi gerekir. Sonra sürüm numaraları (pratikte hep 2.4), saat dilimi ve hassasiyet alanları, ardından iki önemli alan gelir: snaplen ve network. Snaplen, paket başına kaydedilen azami bayt sayısıdır. Network alanı ise bağlantı katmanı türünü verir ve dosyanın tamamı için geçerlidir.

Paket başlıkları ve snaplen tuzağı

Her paketin önünde 16 baytlık bir kayıt bulunur: saniye, saniye kesri, caplen ve len. Bu son iki alan farklı şeylerdir ve aradaki farkı gözden kaçırmak analizi sessizce bozar. len paketin telde kaç bayt olduğunu, caplen ise dosyaya kaçının yazıldığını söyler. caplen küçükse paket kırpılmıştır.

Kırpma genelde yakalama sırasında -s ile küçük bir snaplen verilmesinden gelir. 96 baytlık bir snaplen, Ethernet başlığı, IP başlığı ve TCP başlığından sonra yük için neredeyse hiçbir şey bırakmaz. Bu dosyada akış istatistikleri doğru çıkar, çünkü len alanı gerçek boyutu taşır; ama HTTP başlıklarını, DNS cevaplarını veya TLS sunucu adını göremezsiniz. Bir dosyayı açar açmaz caplen < len olan paket oranına bakın: yüksekse içerik aramayı bırakın, elinizde yalnızca meta veri vardır.

Bağlantı katmanı türü

Paket baytlarının nasıl yorumlanacağını link type belirler. En yaygını LINKTYPE_ETHERNET (değer 1): paket 14 baytlık Ethernet başlığıyla başlar. Bir VPN veya tünel arayüzünden yapılan yakalamalarda LINKTYPE_RAW (101) görürsünüz ve paket doğrudan IP başlığıyla başlar; Ethernet varsayan bir okuyucu burada anlamsız sonuçlar üretir. Linux'ta any arayüzünü dinlediğinizde LINKTYPE_LINUX_SLL (113) çıkar, sahte bir 16 baytlık başlıkla. Kablosuz monitör modunda ise 802.11 çerçeveleri ve sıklıkla bir radiotap başlığı gelir. Bir dosyanın neden "bozuk" göründüğünün en sık sebebi budur: dosya bozuk değildir, link type farklıdır.

pcap ile pcapng farkı

Modern Wireshark varsayılan olarak pcapng yazar ve uzantı çoğu zaman yine .pcap kalır, bu yüzden karışıklık olağandır. pcapng tek bir global başlık yerine bloklardan oluşur: Section Header Block ile başlar, her arayüz için bir Interface Description Block gelir, paketler Enhanced Packet Block olarak yazılır. Kazanç somuttur. Tek dosyada birden fazla arayüz olabilir ve her birinin kendi link type ve snaplen değeri vardır; zaman çözünürlüğü arayüz başına tanımlanır; paketlere ve bölümlere yorum eklenebilir; ad çözümleme blokları saklanır. Sihirli sayı da farklıdır, pcapng 0x0a0d0d0a ile başlar. Bir çözümleyici "desteklenmeyen biçim" diyorsa ilk bakılacak yer burasıdır.

Paketlerden akışlara

Paket listesi okumak nadiren doğru başlangıçtır. Otuz bin satırın içinde gözle örüntü aramak yerine, önce toplayın. İki temel özet vardır ve ikisi de basit gruplamalardan ibarettir.

  • Akış: beşli demete (kaynak IP, kaynak port, hedef IP, hedef port, protokol) göre gruplama. Her akış için paket sayısı, bayt sayısı, ilk ve son görülme zamanı çıkar.
  • Uç nokta: yalnızca adrese göre gruplama. Kim çok konuştu, kim yalnızca dinledi, hangi adres tek bir paket gönderip sustu.

Bu iki tablo çoğu sorunun cevabını verir. Uzun süren bir bağlantı mı arıyorsunuz, akış süresine göre sıralayın. Büyük bir dışa aktarım mı, gönderilen bayta göre. Tarama mı, tek pakete düşen çok sayıda hedefe göre. Bu işleri pcap'ten akış çıkaran araç ve uç nokta özeti ile yapabilirsiniz; paketleri alan bazında görmek isterseniz pcap'ten JSON çıktısını JSON görüntüleyicide açmak, filtreyi kendi diliniz yerine tanıdık bir veri yapısıyla kurmanızı sağlar.

Bu üç araç dosyayı çözümlemek için sunucuya yükler; tarayıcıda çalışmaz. Yakalama dosyanız hassas bir ağdan geliyorsa bunu bilerek karar verin.

Trafik şifreliyken ne görürsünüz

Bir yakalamanın büyük kısmı bugün TLS'tir ve "şifreli, demek ki görünmez" doğru değildir. El sıkışmanın bir bölümü açıktır ve zarf bilgisi zaten açıktır.

  • IP adresleri ve portlar: her zaman açık. Yönlendirme bunu gerektirir.
  • SNI: istemcinin ClientHello içinde gönderdiği sunucu adı uzantısı açıktır. Aynı IP üzerinde barındırılan yüzlerce siteden hangisinin istendiğini bu alan söyler. Encrypted Client Hello kullanılmıyorsa görünür.
  • Sunucu sertifikası: TLS 1.2 ve öncesinde sunucunun sertifikası el sıkışmada açık gider, yani alan adı ve veren kuruluş okunur. TLS 1.3'te sertifika el sıkışmanın şifreli bölümündedir ve göremezsiniz.
  • Boyut ve zamanlama: paket uzunlukları, yön ve aralar açıktır. İçeriği vermez ama davranışı verir: periyodik ve eşit boyutlu küçük paketler bir yoklama döngüsüne, uzun tek yönlü akış bir indirmeye benzer.

Göremedikleriniz nettir: gövde, başlıklar, çerezler, kimlik bilgileri, sorgu dizeleri. Anahtar günlüğü olmadan bunları çözemezsiniz ve o günlük yalnızca istemciyi siz kontrol ediyorsanız vardır. Bir sunucunun hangi TLS sürümünü ve sertifikayı sunduğunu yakalamadan bağımsız olarak doğrulamak isterseniz TLS kontrolü daha doğrudan bir yoldur. Karşı taraftaki adresleri anlamlandırmak için IP konumu ve whois sorguları işe yarar.

DNS: en çok bilgi veren açık protokol

Şifrelenmemiş DNS hâlâ yaygındır ve bir yakalamadaki en zengin bağlamdır. Sorgu adları, hangi IP'nin hangi isme karşılık geldiğini söyler ve akış tablosundaki anlamsız adresler birden okunur hale gelir. DNS over HTTPS kullanılan ağlarda bu bağlam kaybolur; geriye SNI ve ters çözümleme kalır.

Mavi ışıkla aydınlanmış sunucu dolaplarının cam duvarı önünde açık dizüstü bilgisayarını tutan bir kadın; yansıması camda.
Yakalama çoğunlukla böyle bir makinede alınır; bu yüzden dosyada yalnızca incelediğiniz istek değil, o arayüzden geçen her şey bulunur.

Yakalama dosyaları ağır belgelerdir

Bir pcap, bir günlük dosyasından çok daha fazlasını taşır. Şifrelenmemiş protokollerde oturum çerezleri, API anahtarları, e-posta içerikleri ve form verileri düz metin olarak dosyadadır. Şifreli trafikte bile iç ağ topolojisi, makine adları, kullanıcı ajanı dizeleri ve ziyaret edilen alan adları kalır. Bir hata ayıklama yakalaması, farkında olmadan kişisel veri toplamış olabilir.

  • Yakalamayı hedefe daraltarak alın: ilgilendiğiniz konak ve port için bir filtre, tüm arayüzü kaydetmekten hem küçük hem temizdir.
  • Paylaşmadan önce gereksiz akışları düşürün ve dosyayı yalnızca ilgili zaman aralığına kırpın.
  • Dosyayı işin bitiminde silin ve nerede kopyası kaldığını takip edin.
  • Üçüncü taraf bir servise yüklemeden önce, o dosyanın kimin verisini içerdiğini sorun.

Bir yakalamada gördüğünüz istemci dizesini ayrıştırmak için user agent ayrıştırıcı işinizi kolaylaştırır. Trafikte yakaladığınız bir yetkilendirme başlığı varsa, onu kopyalayıp bir çözücüye yapıştırmadan önce JWT incelemesinin kurallarını okuyun. Ağdan indirilen bir çalıştırılabilir dosyayı incelemeniz gerekirse PE başlıklarını okumak aynı triyaj mantığının dosya tarafıdır.

Sık sorulanlar

Dosyam .pcap uzantılı ama araç açamıyor, neden?

Büyük olasılıkla dosya aslında pcapng biçiminde. Modern Wireshark varsayılan olarak pcapng yazar ve uzantı çoğu zaman değişmez. İlk dört baytı kontrol edin: 0x0a0d0d0a pcapng, 0xa1b2c3d4 veya 0xa1b2cd34 klasik libpcap dosyasıdır.

Snaplen küçükse ne kaybederim?

Paket yükünü kaybedersiniz, sayıları değil. Paket başlığındaki len alanı gerçek boyutu taşıdığı için akış ve bayt istatistikleri doğru kalır; ama HTTP başlıkları, DNS cevapları ve TLS sunucu adı gibi içerik alanları kırpılmış olabilir. caplen ile len farklı olan paketlerin oranına bakarak bunu hemen anlarsınız.

Şifreli trafikte hangi siteye gidildiğini görebilir miyim?

Genelde evet. ClientHello içindeki SNI uzantısı açık gider ve istenen sunucu adını verir. TLS 1.2 ve öncesinde sunucu sertifikası da açık gider. TLS 1.3'te sertifika şifreli bölümdedir ve Encrypted Client Hello kullanılıyorsa SNI de görünmez.

Yakalamadan bir parolayı okuyabilir miyim?

Protokol şifreli değilse evet, ve bu tam olarak pcap dosyalarını hassas kılan şeydir. TLS içindeki kimlik bilgileri ise anahtar günlüğü olmadan çözülemez; o da yalnızca istemciyi siz kontrol ediyorsanız üretilir.

pcap araçları dosyayı tarayıcıda mı işliyor?

Hayır. Buradaki pcap araçları dosyayı çözümlemek için sunucuya yükler. Hassas bir ağdan gelen yakalamalarda dosyayı önce ilgilendiğiniz akışlara daraltmak ve gereksiz trafiği çıkarmak doğru yaklaşımdır.

Yazıda kullanılan araçlar

Kaynaklar

YöntemGörsel kaynakları