Ders 06 / 18
Paket Yakalama ve Çözümleme
Yakalanan trafiğin kanıt değerinin ölçülmesi: 24 kurgu paketten çıkan 10 akış, üç yakalama noktasında 18, 44 ve 85 iddia adayı, çekirdek aynada 85 adayın 50'sinin kanıt ve 7'sinin sahtelenebilir çıkması, düşük değerli iddiaların 20/20'si kanıtlanırken yüksek değerlilerin yalnız 10/25'inin kanıtlanması ve pasif yakalamanın hedefte sıfır kayıt bırakıp bir yapılandırma değişikliği istemesi.
İçindekiler
Önceki konu dışarıdan görünen envanteri çıkardı ve adayları saydı; kapanışta kalan soru şuydu — bir adayın gerçekten açık olup olmadığını hiçbir keşif adımı söyleyemez, bunun için trafiğe ve isteğe bakmak gerekir. Bu konu oraya bakan araçları ele alır ve hepsini tek bir ölçüyle sınar: ürettikleri aday ile geriye kalan kanıtlanmış bulgu arasındaki fark.
İlk araç sınıfı paket yakalayıcıdır: ağdan geçen çerçeveleri bir noktada kaydeder. Protokollerin nasıl çalıştığı Bilgisayar Ağları müfredatındaki Ağ Modelleri kursunda kuruldu ve burada tekrarlanmaz. Burada sorulan tek soru şudur: kaydedilen bu yığından hangi alan doğrudan kanıt sayılır, hangisi yalnız bir çıkarım, hangisi de karşı tarafın serbestçe yazabildiği bir beyandır. Yetkilendirilmiş bir değerlendirmede bile başka bir kuruma ait trafiğin yazılı yetki ve tanımlı kapsam olmadan kaydedilmesi hem yasadışı hem meslek dışıdır.
Alanın Sınıfı Üretenine Bağlıdır
Bir paketteki her alanı aynı gözle okumak, çözümlemenin en yaygın hatasıdır. Alanların bir bölümünü yakalama noktasının kendisi üretir: kaydın zamanı, çerçevenin hangi bacaktan girdiği, yön, boyut, sayı. Bunlar gönderenin beyanı değildir; ölçüm aracının gözlemidir ve gönderen tarafından değiştirilemez. Bir bölümünü başlıklar taşır: adresler, bağlantı noktası numarası, sunucu adı alanı. Bunlar ağ yolu boyunca tutarlı olmak zorundadır, dolayısıyla tümüyle serbest değildir, ama gözlem de değildir — çıkarımdır. Kalan bölümü yük taşır: kullanıcı adı, sayaç kimliği, istemci saati. Bunları yazan taraf gönderendir ve kriptografik olarak bağlanmadıkça istediğini yazabilir.
Dördüncü bir sınıf vardır: imza. Yük içindeki bir alan kriptografik olarak bağlıysa, o alan gönderenin beyanı olmaktan çıkıp sınanabilir bir kanıta dönüşür — ancak akış şifreliyse yakalama noktası imzayı da göremez.
- AA1. Paket kümesi, hizmet tablosu, yakalama noktaları ve iddia listesi modeldir; gerçek bir yakalama yapılmadı. Gerçek adres, ana bilgisayar adı ve kurum yazılmaz.
- AA2. Akış (flow), aynı kaynak, hedef ve hizmet üçlüsünü taşıyan paketlerin kümesidir.
- AA3. Bir alanın sınıfı üretenine bağlıdır: nokta gözlemi ve imza kanıt, başlık alanı çıkarım, yük alanı sahtelenebilir.
- AA4. Şifreli akışta yük alanları ve imza görünmez; sunucu adı alanı görünür sayılır.
- AA5. İddia, yakalanan trafikten çıkarılan bir önermedir. Dayanaklarından en az biri görünüyorsa iddia bir adaydır; sınıfı, görünen en güçlü dayanağın sınıfıdır.
- AA6. Her iddiaya bir değer verilir: raporda ne kadar iş taşıdığı. Değer elle atandı.
- AA7. Yakalama pasiftir; hedef sistemlerde kayıt üretmez.
// pak/akis.mjs — kurgu paket kumesi, akis cikarma ve alan siniflandirmasi MODELIDIR. // Gercek bir yakalama yok; gercek adres, ana bilgisayar adi ve kurum yazilmaz. // Bir alanin sinifi, o alani kimin urettigine baglidir. export const ALAN = { 'yakalama-zamani': 'nokta', 'giris-bacagi': 'nokta', 'yon': 'nokta', 'cerceve-boyutu': 'nokta', 'paket-sayisi': 'nokta', 'duz-metin-varligi': 'nokta', 'kaynak-adresi': 'baslik', 'hedef-adresi': 'baslik', 'baglanti-noktasi': 'baslik', 'sunucu-adi-alani': 'baslik', 'imza-dogrulamasi': 'imza', 'kullanici-adi': 'yuk', 'parola-alani': 'yuk', 'sayac-kimligi': 'yuk', 'okuma-degeri': 'yuk', 'abone-no': 'yuk', 'oturum-belirteci': 'yuk', 'istemci-saati': 'yuk', 'cihaz-kimligi': 'yuk', 'islem-kimligi': 'yuk', }; export const SINIF = { nokta: 'kanit', imza: 'kanit', baslik: 'cikarim', yuk: 'sahte' }; export const GUC = { kanit: 3, cikarim: 2, sahte: 1 }; // Hizmet: sifreli mi, yuku imzali mi, yukte hangi alanlar tasiniyor. export const HIZMET = { 'olcum-toplama': { sifreli: false, imzali: true, yuk: ['sayac-kimligi', 'okuma-degeri', 'istemci-saati'] }, 'dogrulama-cagri': { sifreli: true, imzali: true, yuk: ['islem-kimligi', 'abone-no'] }, 'portal-oturumu': { sifreli: true, imzali: false, yuk: ['oturum-belirteci', 'kullanici-adi'] }, 'saha-senkron': { sifreli: false, imzali: false, yuk: ['kullanici-adi', 'cihaz-kimligi'] }, 'yonetim-erisimi': { sifreli: false, imzali: false, yuk: ['kullanici-adi', 'parola-alani'] }, 'dis-bildirim': { sifreli: true, imzali: false, yuk: ['abone-no'] }, }; // Yakalama noktasi: hangi bacaklardan gecen paketi goruyor. export const NOKTA = { 'sube-bacagi': ['sube-1'], 'cekirdek-ayna': ['sube-1', 'sube-2', 'merkez', 'dis'], 'toplayici-ucu': ['merkez'], }; // satir: zaman(sn) | bacak | kaynak | hedef | hizmet | boyut(bayt) export const PAKET = ` 0 sube-1 s1-ucu toplayici olcum-toplama 420 1 sube-1 s1-ucu toplayici olcum-toplama 418 2 sube-1 s1-ucu toplayici olcum-toplama 421 3 sube-2 s2-ucu toplayici olcum-toplama 419 4 sube-2 s2-ucu toplayici olcum-toplama 420 5 merkez toplayici dogrulayici dogrulama-cagri 1180 6 merkez toplayici dogrulayici dogrulama-cagri 1174 7 merkez toplayici dogrulayici dogrulama-cagri 1190 8 dis abone-ucu portal portal-oturumu 2240 9 dis abone-ucu portal portal-oturumu 2180 10 dis abone-ucu portal portal-oturumu 2260 11 sube-1 saha-uc saha-svc saha-senkron 960 12 sube-1 saha-uc saha-svc saha-senkron 955 13 sube-2 saha-uc saha-svc saha-senkron 962 14 merkez yonetim toplayici yonetim-erisimi 310 15 merkez yonetim toplayici yonetim-erisimi 305 16 merkez yonetim dogrulayici yonetim-erisimi 308 17 dis fatura dis-uc dis-bildirim 1420 18 dis fatura dis-uc dis-bildirim 1415 19 sube-1 s1-ucu toplayici olcum-toplama 417 20 merkez toplayici fatura dogrulama-cagri 1160 21 merkez toplayici fatura dogrulama-cagri 1168 22 sube-2 s2-ucu toplayici olcum-toplama 422 23 merkez yonetim saha-svc yonetim-erisimi 312 `.trim().split('\n').map((r) => { const [t, bacak, kaynak, hedef, hizmet, boyut] = r.trim().split(/\s+/); return { t: +t, bacak, kaynak, hedef, hizmet, boyut: +boyut }; }); // Akis: ayni (kaynak, hedef, hizmet) uclusunu tasiyan paketler. export function akislar(paketler) { const m = new Map(); for (const p of paketler) { const k = `${p.kaynak}>${p.hedef}/${p.hizmet}`; if (!m.has(k)) m.set(k, { ad: k, hizmet: p.hizmet, bacak: new Set(), paket: 0, bayt: 0 }); const a = m.get(k); a.bacak.add(p.bacak); a.paket += 1; a.bayt += p.boyut; } return [...m.values()]; } // Bir akista gorunen alanlar: nokta ve baslik alanlari her zaman, // yuk alanlari ile imza yalniz sifresiz akista. export function gorunurAlan(a) { const h = HIZMET[a.hizmet]; const g = ['yakalama-zamani', 'giris-bacagi', 'yon', 'cerceve-boyutu', 'paket-sayisi', 'kaynak-adresi', 'hedef-adresi', 'baglanti-noktasi']; if (h.sifreli) g.push('sunucu-adi-alani'); else { g.push('duz-metin-varligi', ...h.yuk.filter((f) => ALAN[f])); if (h.imzali) g.push('imza-dogrulamasi'); } return g; } // Iddia: yakalanan trafikten cikarilan onerme. Dayanak alanlarindan en az biri gorunuyorsa // iddia bir ADAY olur; iddianin sinifi, gorunen en guclu dayanagin sinifidir. export const IDDIA = [ { ad: 'akis-var', deger: 'dusuk', dayanak: ['yon', 'cerceve-boyutu'] }, { ad: 'hacim-ve-zamanlama', deger: 'dusuk', dayanak: ['paket-sayisi', 'yakalama-zamani'] }, { ad: 'islemin-zamani', deger: 'orta', dayanak: ['istemci-saati', 'yakalama-zamani'] }, { ad: 'trafik-su-bacaktan', deger: 'orta', dayanak: ['giris-bacagi'] }, { ad: 'konusulan-servis', deger: 'orta', dayanak: ['baglanti-noktasi'] }, { ad: 'karsi-uc-kimligi', deger: 'orta', dayanak: ['hedef-adresi', 'sunucu-adi-alani'] }, { ad: 'alanlar-duz-metinde', deger: 'yuksek', dayanak: ['duz-metin-varligi'] }, { ad: 'gonderen-uc-kimligi', deger: 'yuksek', dayanak: ['kaynak-adresi', 'imza-dogrulamasi'] }, { ad: 'okunan-sayac-degeri', deger: 'yuksek', dayanak: ['okuma-degeri', 'sayac-kimligi', 'imza-dogrulamasi'] }, { ad: 'kimlik-alani-icerigi', deger: 'yuksek', dayanak: ['parola-alani', 'oturum-belirteci'] }, { ad: 'islemi-yapan-kisi', deger: 'yuksek', dayanak: ['kullanici-adi', 'cihaz-kimligi'] }, ]; export function iddiaSinifi(iddia, gorunen) { const v = iddia.dayanak.filter((f) => gorunen.includes(f)); if (v.length === 0) return null; return v.map((f) => SINIF[ALAN[f]]).sort((x, y) => GUC[y] - GUC[x])[0]; } export function noktaOlc(nokta) { const bacaklar = NOKTA[nokta]; const p = PAKET.filter((x) => bacaklar.includes(x.bacak)); const s = { paket: p.length, bayt: p.reduce((t, x) => t + x.boyut, 0), akis: 0, aday: 0, kanit: 0, cikarim: 0, sahte: 0 }; for (const a of akislar(p)) { s.akis += 1; const g = gorunurAlan(a); for (const i of IDDIA) { const c = iddiaSinifi(i, g); if (c) { s.aday += 1; s[c] += 1; } } } return s; }
Üç Yakalama Noktası
// pak/olc.mjs — ayni paket kumesi uc yakalama noktasindan olculur. import { PAKET, NOKTA, IDDIA, HIZMET, akislar, gorunurAlan, iddiaSinifi, noktaOlc } from './akis.mjs'; const y = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join('').trimEnd()); console.log(`${PAKET.length} paket -> ${akislar(PAKET).length} akis, ` + `${Object.keys(HIZMET).length} hizmet, ${IDDIA.length} iddia turu`); const A = [-22, -17, 7, 7, 9, 8, 6]; console.log('\n1. akis basina gorunur alan'); y(A, 'akis', 'hizmet', 'paket', 'bayt', 'sifreli', 'imzali', 'alan'); for (const a of akislar(PAKET)) { const h = HIZMET[a.hizmet]; y(A, a.ad.split('/')[0], a.hizmet, a.paket, a.bayt, h.sifreli ? 'evet' : 'hayir', h.imzali ? 'evet' : 'hayir', gorunurAlan(a).length); } const B = [-16, 8, 7, 7, 8, 9, 16]; console.log('\n2. yakalama noktasi basina iddia'); y(B, 'nokta', 'paket', 'akis', 'aday', 'kanit', 'cikarim', 'sahtelenebilir'); for (const n of Object.keys(NOKTA)) { const s = noktaOlc(n); y(B, n, s.paket, s.akis, s.aday, s.kanit, s.cikarim, s.sahte); } const C = [-22, 9, 8, 9, 16]; console.log('\n3. cekirdek aynada iddia turu basina sinif dagilimi'); y(C, 'iddia', 'deger', 'kanit', 'cikarim', 'sahtelenebilir'); const ag = akislar(PAKET).map(gorunurAlan); const kutu = { dusuk: [0, 0], orta: [0, 0], yuksek: [0, 0] }; for (const i of IDDIA) { const c = { kanit: 0, cikarim: 0, sahte: 0 }; for (const g of ag) { const s = iddiaSinifi(i, g); if (s) c[s] += 1; } y(C, i.ad, i.deger, c.kanit, c.cikarim, c.sahte); kutu[i.deger][0] += c.kanit; kutu[i.deger][1] += c.kanit + c.cikarim + c.sahte; } console.log('\n4. iddia degeri ile kanit orani'); for (const d of ['dusuk', 'orta', 'yuksek']) console.log(` ${d.padEnd(8)} kanit ${String(kutu[d][0]).padStart(3)} / ${kutu[d][1]}`); const t = noktaOlc('cekirdek-ayna'); console.log(`\nhedef sistemlerde uretilen kayit 0`); console.log(`yakalama icin gereken yapilandirma degisikligi 1 (ayna bacagi, yazili onay)`); console.log(`incelenen hacim ${t.bayt} bayt`); console.log(`sube bacagindan gorulemeyen akis ${t.akis - noktaOlc('sube-bacagi').akis} / ${t.akis}`);
24 paket -> 10 akis, 6 hizmet, 11 iddia turu 1. akis basina gorunur alan akis hizmet paket bayt sifreli imzali alan s1-ucu>toplayici olcum-toplama 4 1676 hayir evet 13 s2-ucu>toplayici olcum-toplama 3 1261 hayir evet 13 toplayici>dogrulayici dogrulama-cagri 3 3544 evet evet 9 abone-ucu>portal portal-oturumu 3 6680 evet hayir 9 saha-uc>saha-svc saha-senkron 3 2877 hayir hayir 11 yonetim>toplayici yonetim-erisimi 2 615 hayir hayir 11 yonetim>dogrulayici yonetim-erisimi 1 308 hayir hayir 11 fatura>dis-uc dis-bildirim 2 2835 evet hayir 9 toplayici>fatura dogrulama-cagri 2 2328 evet evet 9 yonetim>saha-svc yonetim-erisimi 1 312 hayir hayir 11 2. yakalama noktasi basina iddia nokta paket akis aday kanit cikarim sahtelenebilir sube-bacagi 6 2 18 12 5 1 cekirdek-ayna 24 10 85 50 28 7 toplayici-ucu 9 5 44 23 15 6 3. cekirdek aynada iddia turu basina sinif dagilimi iddia deger kanit cikarim sahtelenebilir akis-var dusuk 10 0 0 hacim-ve-zamanlama dusuk 10 0 0 islemin-zamani orta 10 0 0 trafik-su-bacaktan orta 10 0 0 konusulan-servis orta 0 10 0 karsi-uc-kimligi orta 0 10 0 alanlar-duz-metinde yuksek 6 0 0 gonderen-uc-kimligi yuksek 2 8 0 okunan-sayac-degeri yuksek 2 0 0 kimlik-alani-icerigi yuksek 0 0 3 islemi-yapan-kisi yuksek 0 0 4 4. iddia degeri ile kanit orani dusuk kanit 20 / 20 orta kanit 20 / 40 yuksek kanit 10 / 25 hedef sistemlerde uretilen kayit 0 yakalama icin gereken yapilandirma degisikligi 1 (ayna bacagi, yazili onay) incelenen hacim 22436 bayt sube bacagindan gorulemeyen akis 8 / 10
Kanıt Ucuz, Değerli İddia Pahalı
Dördüncü tablo bu dersin sonucudur. Düşük değerli iddiaların 20’sinin 20’si kanıt sınıfında. “Bu iki uç arasında akış var”, “şu kadar paket şu saatte geçti” — hepsi doğrudur, hiçbiri tartışılamaz ve hiçbiri bir rapor satırı etmez. Orta değerlilerde oran yarıya iner: bacak ve zaman kanıttır, konuşulan servis ile karşı ucun kimliği başlıktan okunur ve çıkarımdır. Yüksek değerli iddiaların ise yalnız 10’u 25’ten kanıt sınıfına girer.
Bu ters orantı bir kusur değil, yöntemin yapısıdır. Yakalama noktası ne kadar çok şey gözlemliyorsa o gözlem o kadar az şey söyler; gerçekten bir şey söyleyen alanları ise gönderen üretir ve gönderen her zaman şüphelidir. Ölçüm hattında bunun üç somut karşılığı var.
Kimlik alanı içeriği ve işlemi yapan kişi hiçbir akışta kanıt olmuyor; yedi kez aday olarak üretiliyor ve yedisi de yalnız yük alanına dayanıyor. Bir yakalamada bir kullanıcı adı görülmesi, o işlemi o kişinin yaptığını göstermez — yalnız o adın o alana yazıldığını gösterir. Rapora “kullanıcı X şu işlemi yaptı” diye giren satır, kanıtlanmamış bir adaydır ve düzeltme bütçesini yanlış yere harcatır.
Gönderen uç kimliği on adayın ikisinde kanıt, sekizinde çıkarım. İki kanıt, yükü imzalı ve şifresiz olan ölçüm toplama akışlarından geliyor: imza görülüyor ve doğrulanabiliyor. Kalan sekizde elde yalnız kaynak adresi var. Şifreli akışlarda imza da yükün içinde kaldığı için görünmez — şifreleme doğru karardır, ama kanıt olabilecek alanı çözümleyiciden de saklar.
Alanlar düz metinde altı akışta kanıt sınıfında ve bu, kurgu ağdaki en sağlam bulgudur. Yönetim erişiminin üç akışı ile saha eşitlemesinin akışı, alanlarını şifresiz taşıyor. Burada ayrım önemlidir: alanların düz metinde taşındığı yakalama noktasının gözlemidir ve kanıttır; o alanların ne dediği gönderenin beyanıdır ve değildir.
Noktanın Konumu ve Bırakılan İz
İkinci tablo yakalayıcının nereye konduğunun ölçüsüdür. Şube bacağında 6 paket, 2 akış ve 18 aday var; çekirdek aynada 24 paket, 10 akış ve 85 aday. Şube bacağından bakan bir çözümleyici on akışın sekizini hiç görmez ve görmediği akış hakkında hiçbir şey söyleyemez. Toplayıcı ucu ortadadır: merkez trafiğini görür, şube bacaklarını görmez, ama gördüğü akışların altısı şifresiz olduğu için sahtelenebilir aday oranı en yüksek noktadır — 44 adayın 6’sı.
Bedel sütunu iki kalemden oluşuyor ve ikisi de küçüktür. İncelenen hacim 22.436 bayt; gerçek bir değerlendirmede bu sayı çok daha büyüktür ve çözümleme süresini belirleyen asıl kalemdir. Savunmada bırakılan iz ise sıfır kayıttır: yakalama pasiftir, hedef sistemlere hiçbir istek gitmez, hiçbir günlük satırı üretilmez. Bu, kursta göreceğimiz en düşük izli adımdır.
Sıfır olmayan tek kalem, yakalamanın mümkün kılınmasıdır. Ayna bacağı açmak bir yapılandırma değişikliğidir; bir değişiklik kaydı üretir, ağ ekibinin onayını ve kapsam belgesinde açık bir satırı gerektirir. Trafiğin içinde abone verisi geçtiği için kaydın nerede saklanacağı ve ne zaman silineceği de aynı belgede yazılıdır. Pasif olan yakalamanın kendisidir; ona erişim izni pasif değildir.
Özet
- Yirmi dört kurgu paketten 10 akış çıkar; akış başına görünen alan sayısı şifreli akışlarda 9, şifresiz akışlarda 11 ile 13 arasındadır.
- Bir alanın kanıt değeri üretenine bağlıdır: yakalama noktasının gözlemi ve kriptografik imza kanıt, başlık alanı çıkarım, yük alanı sahtelenebilir beyandır.
- Çekirdek aynada 85 iddia adayının 50’si kanıt, 28’i çıkarım, 7’si sahtelenebilir sınıftadır; bir iddianın sınıfı, görünen en güçlü dayanağının sınıfıdır.
- Kanıt oranı iddianın değeriyle ters gider: düşük değerli iddiaların 20/20’si kanıtlanır, yüksek değerlilerin yalnız 10/25’i. Kullanıcıyı işleme bağlayan yedi adayın hiçbiri kanıt değildir.
- Yakalama noktasının konumu görülen akışı belirler: şube bacağı 10 akışın 8’ini hiç görmez.
- Pasif yakalama hedefte sıfır kayıt bırakır; tek iz, ayna bacağı için gereken bir yapılandırma değişikliği ve ona bağlı yazılı onaydır.
Sonraki Adım
Bu derste alanlar tek tek sınıflandırıldı ama şifreli akışlar tek bir satırla geçildi: yük görünmez, sunucu adı alanı görünür. Kurgu ağdaki on akışın dördü şifreli ve bu dördü tam olarak en çok iş taşıyan akışlar — abone portalı oturumu, doğrulama çağrısı, dış bildirim. Çözümlemenin bu akışlarda eli boş kaldığı doğru değildir; eli başka türlü doludur.
Sonraki ders uygulama katmanı incelemesini görünürlük cinsinden ölçer. Aynı akış kümesi bir protokol çözümleyiciden geçirilir ve iki sütun ayrı sayılır: şifresiz akışta kaç alan okunabiliyor, şifreli akışta kaç alan yalnız meta veri olarak kalıyor. Meta verinin ne kadar iddia taşıdığı, şifre çözmenin hangi kapsam ve gizlilik kalemini gerektirdiği ve çözümleyicinin kendi yorumunun ne zaman bir çıkarım olduğu ölçülür.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.