İçeriğe geç
academia.sh

Ders 07 / 13

Paket Yakalama

Yakalamanın eleme gücünün ölçülmesi: süzgeçsiz yakalama 14400 satır üretip 6 aday eliyor ve tanıyı bitirmiyor, tek satırlık bir bağlantı denemesi 7 aday eliyor ve bitiriyor; satır başına eleme 0,0004'e karşı 7,0000 çıkıyor.

İçindekiler

Önceki ders erişilebilirlik sınamalarının bir duvara tosladığını gösterdi: üç yankı ve bir bağlantı denemesi birlikte bile iki aday çiftini ayıramıyordu. Böyle bir tıkanmada akla gelen sonraki adım genellikle aynıdır — özetlere değil, hattan geçen trafiğin kendisine bakmak. Paket yakalama bunu yapar ve bu yüzden araç kutusunun en ayrıntılı aracı sayılır.

Bu ders o beklentiyi ölçer. Yakalamanın ürettiği satır sayısı ile elediği aday neden sayısı yan yana konur ve ikisinin oranı hesaplanır. Sonuç kursun ikinci iddiasının en sert biçimidir: daha çok çıktı daha iyi tanı demek değildir. Dersin ikinci yarısı da aynı ölçüden çıkan bir sınırı yazar: yakalama bir tanı aracıdır ve bu kursta tanının dışına çıkan hiçbir kullanımı anlatılmaz.

Yakalamanın Gördüğü ile Söylediği

Yakalama, bir arayüzden geçen çerçeveleri kaydeder. Gördüğü şey gerçekten çoktur: her çerçevenin zamanı, boyutu, yönü ve başlık alanları. Söylediği şey ise tanının kullanabildiği kadarıdır ve operatör bu binlerce satırı tek bir yargıya indirger: trafik hangi yönlerde akıyor.

Ortak tanımın sekiz sınamasına dokunulmaz; yakalama bu derste dokuzuncu bir sınama olarak eklenir (SG10). Yakalama yerel arayüzde ve yalnız tanı konusu akış üzerinde yapılır; yanıtı üç değere indirgenir (SG11): paket-yok, giden-var-donen-yok, iki-yonlu. Yakalanan her çerçeve bir satır üretir (SG12). Altı yüz saniyelik pencerede arayüzden geçen çerçevelerin dağılımı kurgudur ve toplamı 14400’dür (SG13). Süzgeç yakalanan satır sayısını azaltır ama yanıtı değiştirmez (SG14); en dar okuma akışın ilk altı çerçevesidir (SG15). Yakalama, arıza başlamadan önce çalışır durumdadır (SG16).

Üç yanıtın karşılıkları doğrudan sağlam durumdan türer. Arayüz kapalıysa, adres yoksa ya da rota eksikse yerel yığın çerçeve üretemez ve kayıt boştur. Ağ geçidi yanlışsa ya da güvenlik duvarı düşürüyorsa çerçeveler çıkar, karşılık gelmez. Kalan durumlarda iki yönlü trafik görünür. Protokol başlıklarının anlamı ve el sıkışma Bilgisayar Ağları müfredatının konusudur ve burada açılmaz.

# ornek dokum , calistirilmis degildir
$ tcpdump -i <arayuz> -n -c 200 host <hedef> and port <bag-noktasi>
$ tcpdump -i <arayuz> -n -w /tmp/tani.pcap host <hedef> and port <bag-noktasi>
$ tcpdump -r /tmp/tani.pcap -n | wc -l
SAGLAM = {"arayuz_acik": True, "adres_var": True, "ag_gecidi_dogru": True,
          "rota_var": True, "cozumleyici_yanit": True, "servis_dinliyor": True,
          "guvenlik_duvari_gecirir": True, "yol_bozulmadan": True}
ARIZA = {
    "arayuz-kapali":      {"arayuz_acik": False, "adres_var": False},
    "adres-yok":          {"adres_var": False},
    "ag-gecidi-yanlis":   {"ag_gecidi_dogru": False},
    "rota-eksik":         {"rota_var": False},
    "cozumleyici-sessiz": {"cozumleyici_yanit": False},
    "servis-dinlemiyor":  {"servis_dinliyor": False},
    "guvenlik-duvari-dusuruyor": {"guvenlik_duvari_gecirir": False},
    "buyuk-paket-dusuyor": {"yol_bozulmadan": False},
}
ADAYLAR = tuple(ARIZA)


def durum(a=None):
    d = dict(SAGLAM)
    if a:
        d.update(ARIZA[a])
    return d


def yol(d):
    return (d["arayuz_acik"] and d["adres_var"]
            and d["ag_gecidi_dogru"] and d["rota_var"])


SINAMA = {
    "arayuz": lambda d: ("acik-adresli" if d["arayuz_acik"] and d["adres_var"]
                         else "acik-adressiz" if d["arayuz_acik"] else "kapali"),
    "baglanti": lambda d: ("ulasilamaz" if not yol(d)
                           else "zaman-asimi" if not d["guvenlik_duvari_gecirir"]
                           else "reddedildi" if not d["servis_dinliyor"]
                           else "kuruldu"),
    # SG10: ortak tanimin sekiz sinamasina dokunulmaz , yakalama DOKUZUNCU sinama
    "yakalama": lambda d: (
        "paket-yok" if not (d["arayuz_acik"] and d["adres_var"] and d["rota_var"])
        else "giden-var-donen-yok" if not (d["ag_gecidi_dogru"]
                                           and d["guvenlik_duvari_gecirir"])
        else "iki-yonlu"),
}

TRAFIK = {                       # SG13: 600 saniyelik pencerede kurgu cerceve sayilari
    "ilgisiz-komsu": 9000, "ad-sorgusu": 1800, "yonetim": 2400,
    "hedef-diger-bag-noktasi": 1080, "hedef-akis": 120,
}
SUZGEC = {                       # SG14: suzgec satiri azaltir , YANITI degistirmez
    "suzgec yok": list(TRAFIK),
    "hedef adres": ["hedef-diger-bag-noktasi", "hedef-akis"],
    "hedef adres + bag noktasi": ["hedef-akis"],
}


def satir(ad):
    return sum(TRAFIK[k] for k in SUZGEC[ad])


def obekler(kume, adaylar=ADAYLAR):
    o = {}
    for a in adaylar:
        o.setdefault(tuple(SINAMA[s](durum(a)) for s in kume), []).append(a)
    return o


def eledigi(kume, gercek, adaylar=ADAYLAR):
    desen = tuple(SINAMA[s](durum(gercek)) for s in kume)
    kalan = obekler(kume, adaylar)[desen]
    return len(adaylar) - len(kalan), len(kalan)


KAHIN = "guvenlik-duvari-dusuruyor"
print("ariza                       yakalama             baglanti")
for a in ADAYLAR:
    print(f"  {a:26s}{SINAMA['yakalama'](durum(a)):21s}{SINAMA['baglanti'](durum(a))}")
print()
print("kahin:", KAHIN)
for s in ("yakalama", "baglanti", "arayuz"):
    e, k = eledigi([s], KAHIN)
    print(f"  {s:9s} yanit {SINAMA[s](durum(KAHIN)):20s} elenen {e}  kalan {k}")
print()
print("satir sayisi ve satir basina elenen aday (kahin sabit)")
for ad in SUZGEC:
    n = satir(ad)
    e, _ = eledigi(["yakalama"], KAHIN)
    print(f"  yakalama / {ad:26s} satir {n:6d}  elenen {e}  satir basina {e / n:.4f}")
ILK = 6                          # SG15: akisin ilk 6 cercevesi
e, _ = eledigi(["yakalama"], KAHIN)
print(f"  yakalama / {'akisin ilk cerceveleri':26s} satir {ILK:6d}  elenen {e}"
      f"  satir basina {e / ILK:.4f}")
eb, _ = eledigi(["baglanti"], KAHIN)
print(f"  baglanti denemesi{'':20s} satir {1:6d}  elenen {eb}  satir basina {eb / 1:.4f}")
print()
print("sinama kumesi              obek  ayrilamayan  tekil  en buyuk obek")
for kume in (["yakalama"], ["baglanti"], ["arayuz"],
             ["baglanti", "yakalama"], ["baglanti", "arayuz"]):
    o = obekler(kume)
    print(f"  {'+'.join(kume):25s} {len(o):4d} {len([v for v in o.values() if len(v) > 1]):12d}"
          f" {len([v for v in o.values() if len(v) == 1]):6d} {max(len(v) for v in o.values()):14d}")
print()
print("aday kumesi supurmesi: yakalama ile baglantinin eledigi (kume buyurken)")
kume = [KAHIN]
for a in ADAYLAR:
    if a not in kume:
        kume.append(a)
        ey, ky = eledigi(["yakalama"], KAHIN, tuple(kume))
        eb, kb = eledigi(["baglanti"], KAHIN, tuple(kume))
        print(f"  aday {len(kume)}  yakalama elenen {ey} kalan {ky}"
              f"   baglanti elenen {eb} kalan {kb}")
ariza                       yakalama             baglanti
  arayuz-kapali             paket-yok            ulasilamaz
  adres-yok                 paket-yok            ulasilamaz
  ag-gecidi-yanlis          giden-var-donen-yok  ulasilamaz
  rota-eksik                paket-yok            ulasilamaz
  cozumleyici-sessiz        iki-yonlu            kuruldu
  servis-dinlemiyor         iki-yonlu            reddedildi
  guvenlik-duvari-dusuruyor giden-var-donen-yok  zaman-asimi
  buyuk-paket-dusuyor       iki-yonlu            kuruldu

kahin: guvenlik-duvari-dusuruyor
  yakalama  yanit giden-var-donen-yok  elenen 6  kalan 2
  baglanti  yanit zaman-asimi          elenen 7  kalan 1
  arayuz    yanit acik-adresli         elenen 2  kalan 6

satir sayisi ve satir basina elenen aday (kahin sabit)
  yakalama / suzgec yok                 satir  14400  elenen 6  satir basina 0.0004
  yakalama / hedef adres                satir   1200  elenen 6  satir basina 0.0050
  yakalama / hedef adres + bag noktasi  satir    120  elenen 6  satir basina 0.0500
  yakalama / akisin ilk cerceveleri     satir      6  elenen 6  satir basina 1.0000
  baglanti denemesi                     satir      1  elenen 7  satir basina 7.0000

sinama kumesi              obek  ayrilamayan  tekil  en buyuk obek
  yakalama                     3            3      0              3
  baglanti                     4            2      2              4
  arayuz                       3            1      2              6
  baglanti+yakalama            5            2      3              3
  baglanti+arayuz              6            2      4              2

aday kumesi supurmesi: yakalama ile baglantinin eledigi (kume buyurken)
  aday 2  yakalama elenen 1 kalan 1   baglanti elenen 1 kalan 1
  aday 3  yakalama elenen 2 kalan 1   baglanti elenen 2 kalan 1
  aday 4  yakalama elenen 2 kalan 2   baglanti elenen 3 kalan 1
  aday 5  yakalama elenen 3 kalan 2   baglanti elenen 4 kalan 1
  aday 6  yakalama elenen 4 kalan 2   baglanti elenen 5 kalan 1
  aday 7  yakalama elenen 5 kalan 2   baglanti elenen 6 kalan 1
  aday 8  yakalama elenen 6 kalan 2   baglanti elenen 7 kalan 1

Kâhin, Sınama, Elenen Aday

Üç sayı yan yana durur. Kâhin: gerçek arıza guvenlik-duvari-dusuruyor. Sınama: süzgeçsiz yakalama giden-var-donen-yok yanıtını veriyor. Elenen aday: bu yanıt 6 adayı eliyor ve geriye 2 aday bırakıyor; tanı bitmiyor.

Aynı kâhin altında tek satırlık bir bağlantı denemesi zaman-asimi yanıtını verir, 7 aday eler ve geriye 1 aday bırakır; tanı biter. Fark tek bir adaydır ama o adayın adı ag-gecidi-yanlistır ve yakalama onu son ana kadar taşır. Sebep basittir: yakalamanın gördüğü şey “çıktı, dönmedi” olgusudur; dönmemenin nedenini göremez. Ağ geçidinin yanlış olmasıyla güvenlik duvarının düşürmesi, arayüzden bakan bir gözlemci için aynı görünür.

Tablonun öteki ucunda da aynı körlük vardır. iki-yonlu yanıtı üç adaya birden uyar: çözücü sessizken de, servis dinlemiyorken de, büyük paket düşerken de arayüzde iki yönlü trafik görünür. Kayda bakan operatör “trafik akıyor” der ve bu doğrudur; yine de kullanıcı hizmete erişemez. Yakalamanın söyleyebildiği şey çerçevelerin varlığıdır, alışverişin başarısı değildir. Aynı üç aday, dört değerli bağlantı denemesinde iki ayrı yanıta dağılır.

Öbek tablosu bunu tek başına özetler. Yakalama sekiz adayı 3 öbeğe ayırır ve hiçbir öbekte tek aday kalmaz: yakalama tek başına hiçbir arızayı belirleyemez. Bağlantı denemesi 4 öbek üretir ve bunların 2’si tek adaylıdır. Tek satırlık bir yanıt, on dört bin satırlık bir kaydın yapamadığını yapar.

Satır Başına Eleme

Satır sayısı sütunu asıl karşılaştırmayı verir. Süzgeçsiz yakalama 14400 satır üretir ve 6 aday eler: satır başına 0,0004 aday. Hedef adrese göre süzülünce satır 1200’e, hedef adres ve bağlantı noktasına göre süzülünce 120’ye iner; elenen aday değişmez ve satır başına oran 0,0050 ile 0,0500 olur. Akışın yalnız ilk altı çerçevesi okunduğunda oran 1,0000’a çıkar. Bağlantı denemesinin satır başına oranı ise 7,0000’dir.

İki okuma çıkar. Birincisi doğrudan iddianın kendisidir: satır sayısını altıdan 14400’e, yani 2400 kat büyütmek eleme gücünü hiç artırmaz. Yakalamanın 14400 satırından çıkarılan bilgi, aynı yakalamanın ilk altı satırından çıkarılan bilgiyle aynıdır. Fazla satırlar yeni aday elemez; yalnız okuma süresini, dosya boyutunu ve yanlış bir kalıba takılma olasılığını artırır.

Fazla satırın bir bedeli daha vardır ve ölçünün dışında kalır. Yakalama, kaydettiği her çerçeveyi işlemek zorundadır; hız yükseldiğinde kaydın kendisi çerçeve düşürmeye başlar. En çok çıktı üreten araç, tam da yükün en yüksek olduğu anda kanıt kaybedebilen araçtır ve düşen çerçeve kayıtta bir boşluk olarak değil, hiç olmamış bir olay olarak görünür. Dar süzgeç bu riski de azaltır: kaydedilecek çerçeve az olduğunda düşme olasılığı düşer. Yani süzgeç yalnız okumayı kolaylaştırmaz, kaydın eksiksizliğini de korur.

İkincisi süzgecin ne yaptığıdır. Süzgeç eleme gücünü yükseltmez, çabayı düşürür (SG14). Bu ayrım tanıda sık karışır: dar süzgeçle bakan operatör daha çabuk sonuca varır, ama vardığı sonuç geniş süzgeçle varacağı sonuçtan daha kesin değildir. Süzgeç bir tanı kararı değil, bir okuma kolaylığıdır. Süzgecin gerçek riski ters yöndedir: yanlış kurulmuş bir süzgeç, arızanın tek kanıtı olan çerçeveleri dışarıda bırakabilir ve kayıt “hiç paket yok” der. Bu, paket-yok yanıtını üreten dördüncü bir nedendir ve aday kümesinde yoktur.

Yakalamanın Gerçekten İşe Yaradığı Yer

Ölçü yakalamayı gereksiz göstermez; yerini gösterir. Bağlantı denemesiyle birlikte kullanıldığında öbek sayısı 4’ten 5’e, tek adaylı öbek sayısı 2’den 3’e çıkar. Yakalama, bağlantı denemesinin ayıramadığı bir yeri ayırır: ulasilamaz yanıtı altındaki dört adaydan ag-gecidi-yanlis olanını, çerçevelerin gerçekten çıktığını göstererek işaretler.

Ne var ki aynı işi çok daha ucuz yapan bir sınama vardır. Bağlantı denemesine tek satırlık bir arayüz okuması eklendiğinde öbek sayısı 6, tek adaylı öbek sayısı 4 olur ve en büyük öbek 3’ten 2’ye iner. Yani 14400 satırlık yakalama yerine iki satırlık bir yapılandırma okuması, aynı noktada daha çok aday eler. Yakalamanın hakkı, kalan belirsizlik çerçevelerin varlığına dairse ortaya çıkar; belirsizlik yapılandırmaya dairse yapılandırmayı okumak gerekir.

Yakalamanın ikinci gerçek işlevi ölçüde görünmez: zamanlama. Çerçevelerin arasındaki süre, yeniden deneme aralıkları ve dönüşün ne kadar geciktiği başka hiçbir sınamada yoktur. Bu bilgi aday elemez ama süreyi anlatır; aralıklı arızada tek kanıt odur ve bu, sonraki dersin konusudur.

Yakalamanın Sınırı

Yakalama bu kursta bir tanı aracıdır ve tanının dışına çıkan hiçbir kullanımı anlatılmaz. Başkasının trafiğini ele geçirme, kimlik taklidi ve denetim atlatma yordamları hiçbir derste yazılmaz; bunlar Siber Güvenlik müfredatının konusudur ve orada da yordam olarak değil, savunulacak yüzey olarak ele alınır.

Sınırın kendisi de ölçüden çıkar. Tanı için gereken satır sayısı altıdır; kayıt bundan fazlasını topluyorsa fazlası tanıya bir şey katmaz. Bu yüzden yakalamanın doğru kurulumu dardır: tek arayüz, tek hedef, tek bağlantı noktası, sayılı çerçeve. Geniş kurulum yalnız verimsiz değildir; ilgisiz akışların içeriğini de kaydeder ve o içerik kimsenin tanısına ait değildir.

Üç işletim kuralı buradan doğrudan çıkar. Kayıt kapsamla sınırlanır: süzgeç, tanı konusu akıştır. Kayıt süreyle sınırlanır: çerçeve sayısı ya da süre önceden belirlenir. Kayıt dosyası saklama politikasına bağlanır; sistem yönetimi kursunda günlükler için ölçülen saklama sorusu, yakalama dosyası için de aynen geçerlidir ve dosya bir kanıt olduğu kadar bir yüktür.

Aday Kümesi Süpürmesi

Süpürme iki sınamayı aday kümesi büyürken yan yana koyar. İki adaylı kümede ikisi de 1 aday eler ve ikisi de tanıyı bitirir; farkları görünmez. Dördüncü aday eklendiğinde yollar ayrılır: bağlantı denemesi 3 eler ve kalan 1’de kalır, yakalama 2 eler ve kalan 2’ye çıkar. Sekizinci adaya kadar bu fark korunur; yakalama her adımda tam olarak bir aday geride kalır.

Buradan çıkan sonuç, ölçünün kurguya bağlılığını da sınırlar. Yakalamanın zayıflığı satır sayısından ya da seçilen çerçeve dağılımından gelmiyor; yanıt uzayının darlığından geliyor. Üç değerli bir yanıt, sekiz adayı en iyi durumda 3 öbeğe ayırır ve öbeklerin en küçüğü bile birden büyük kalabilir. Aday sayısı arttıkça bu darlık büyür: dört değerli bağlantı denemesi ile üç değerli yakalama arasındaki bir adaylık fark, daha geniş bir listede daha da açılır. Listeye eklenen her yeni aday, yanıt uzayı dar olan sınamanın elediği oranı düşürür.

Özet

  • Yakalama süzgeçsiz 14400 satır üretir, 6 aday eler ve geriye 2 aday bırakarak tanıyı bitirmez; tek satırlık bağlantı denemesi 7 aday eler ve bitirir.
  • Satır başına elenen aday: süzgeçsiz yakalamada 0,0004, bağlantı denemesinde 7,0000. Satır sayısını büyütmek eleme gücünü artırmaz.
  • Yakalama tek başına hiçbir arızayı tek adaya indirmez; bağlantı denemesi 2, arayüz okuması 2 arızayı tek adaya indirir.
  • Süzgeç eleme gücünü değil çabayı düşürür; yanlış kurulmuş bir süzgeç arızanın tek kanıtını dışarıda bırakabilir.
  • Yakalamanın hakkı çerçevelerin varlığına ve zamanlamasına dair belirsizliktedir; yapılandırmaya dair belirsizlikte iki satırlık bir okuma daha çok aday eler.
  • Yakalama bir tanı aracıdır: kapsam, süre ve saklama ile sınırlanır; tanı dışı kullanımı bu kursta anlatılmaz.

Sonraki Adım

Bu dersin bütün ölçüsü tek bir varsayıma yaslandı: yakalama arıza başlamadan önce çalışır durumdaydı (SG16). Varsayım kaldırıldığında sayılar çöker, çünkü kaydı olmayan bir olay hiç olmamış gibi görünür. Sonraki ders yaygın arıza kalıplarını imzalarıyla ele alır ve üçüncü iddiayı öder: aralıklı bir arıza altı yüz saniyelik pencerede 84 saniye sürerken kayıt 300. saniyede başlarsa olayların yarısı, 500. saniyede başlarsa altıda birinden azı görülür; düşürülen paketin izi ise kayıt kapalıyken sıfır satırdır.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat