İçeriğe atla
0 XP 0
15 dkderinleşmeyle 16 dk50 XP7 etkinlik

Ethernet ve ARP çerçeveleri

Bu derste
  • Ethernet çerçevesini, MAC adresinin yapısını ve ARP akışını okuyup ARP zehirlenmesini Wireshark kayıtlarında yapılandırma hatasından ayırmayı öğren.
  • Ethernet çerçevesinin her alanı ayrı bir iş görür; ARP ise IP'yi MAC'e bağlayan köprüdür.
  • Bu derste çerçeve alanlarını, anahtarın MAC tablosunu ve ARP önbelleğini okuyacak, zehirlenmenin izini sürüp savunmasını kuracaksı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.

Altay Kargo deposunda sevkiyat bilgisayarı bir sabah ağır çalışmaya başladı. Ağ ekibi IP ayarlarına baktı ve bir sorun bulamadı.

Sorun bir alt katmandaydı: bilgisayar, ağ geçidine giden çerçeveleri yanlış MAC adresine yolluyordu. Bu tür sorunu çözmek için bağlantı katmanını okuyabilmen gerekir. Bir paket hedefine varana kadar her katman kendi başlığını ekler.

En altta duran bağlantı katmanı, veriyi IP adresiyle değil fiziksel MAC adresiyle taşır. Aynı anahtara (switch) bağlı iki cihaz birbirini yalnız MAC adresiyle bulur. IP adresi yol haritasını çizer, MAC adresi ise son adımı yürütür. Bu derste çerçeveyi, anahtarın tablosunu ve ARP'ı sırayla açacaksın.

Ethernet çerçevesinin alanları

Ethernet çerçevesi beş temel alan taşır. Hedef MAC adresi çerçevenin kime gideceğini yazar. Kaynak MAC adresi gönderenin kimliğini taşır.

EtherType alanı yükün hangi üst katman protokolüne ait olduğunu söyler. Yük alanı asıl veriyi taşır ve 46 ile 1500 bayt arasındadır. FCS (Frame Check Sequence) çerçevenin sonunda durur ve bit hatasını yakalar.

Her MAC adresi 48 bittir ve altı onaltılık grupla yazılır. Bütün bitleri 1 olan ff:ff:ff:ff:ff:ff adresi yayın (broadcast) adresidir; bu çerçeveyi segmentteki her cihaz okur. Ağ kartı FCS'yi çoğu zaman yakalamadan önce atar, bu yüzden Wireshark'ta onu nadiren görürsün. En küçük çerçeve FCS dahil 64, en büyüğü 1518 bayttır.

EtherType iki baytlık bir numaradır ve IEEE kayıt otoritesi bu numaraları dağıtır. 0x0800 IPv4'ü, 0x0806 ARP'ı, 0x86DD IPv6'yı gösterir. 0x8100 ise özel bir değerdir: arkasından bir VLAN etiketi geldiğini söyler. 802.1Q etiketli çerçevede kaynak MAC ile EtherType arasına dört bayt girer.

İlk iki bayt 0x8100 değerini taşır. Kalan iki bayt öncelik (PCP, 3 bit), DEI (1 bit) ve VLAN kimliği (VID, 12 bit) alanlarını içerir. 12 bit 4096 değer verir; 0 ve 4095 ayrılmış olduğu için 4094 VLAN kullanılabilir. Etiket eklenince en büyük çerçeve 1522 bayta çıkar.

UygulamaHTTP, DNSTaşımaTCP, UDPAğIP, ICMPBağlantıEthernet, ARP
TCP/IP katmanları. Bağlantı katmanı en altta durur ve yalnız yerel segmentte anlam taşır.

Şemadaki en alt katman Ethernet ve ARP'ın yaşadığı yerdir. Üstündeki ağ katmanı IP adresiyle çalışır ve yönlendiriciler arasında anlam taşır. Bağlantı katmanı bunun tam tersidir: bir yönlendiriciyi geçer geçmez eski çerçeve atılır, yeni bir çerçeve kurulur.

Yönlendirici yeni çerçeveye kaynak olarak kendi MAC adresini yazar. Bu yüzden MAC adresi uçtan uca değil, tek atlamada (hop) geçerlidir. İnternetten gelen bir paketin kaynak MAC adresi, uzaktaki sunucunun değil senin ağ geçidinin adresidir.

Etkinlik 1 / 7

Ethernet çerçevesindeki alanı görevle eşleştir.

Soldan bir tane seç, sağdan eşini seç. Kullanılmış bir seçeneği yeniden seçersen yeni öğeye taşınır.

MAC adresinin yapısı ve anahtarın tablosu

MAC adresinin ilk üç baytı OUI'dir (Organizationally Unique Identifier). IEEE bu öneki üreticilere dağıtır, son üç baytı üretici kendisi atar. Wireshark bu yüzden birçok adresin yanında üretici adını gösterir.

İlk baytın son iki biti ayrıca anlam taşır. En sağdaki bit I/G bitidir: 0 ise adres tek bir cihaza, 1 ise bir gruba gider. Yayın ve çoklu yayın (multicast) adresleri bu yüzden grup adresidir.

Soldaki komşusu U/L bitidir: 0 ise adresi üretici atamıştır, 1 ise adres yerel olarak yönetilir. Önce I/G bitine bak, 0 çıkarsa U/L bitine geç. Pratik kural şudur: ikinci onaltılık hane 2, 6, A ya da E ise adres yerel yönetilen tekil bir adrestir.

Ethernet II, Src: 02:5c:aa:10:20:30, Dst: 00:1a:2b:3c:4d:5e
    Destination: 00:1a:2b:3c:4d:5e
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: 02:5c:aa:10:20:30
        .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: ARP (0x0806)
Wireshark ayrıntı panelinde bir çerçevenin Ethernet II katmanı. Kaynak adresin LG biti 1'dir.

Çıktıda hedef adres 00:1a:2b:3c:4d:5e üretici atamalıdır, LG biti 0'dır. Kaynak adres 02:5c:aa:10:20:30 ise yerel yönetilir, çünkü ilk bayt 0x02'dir. Yerel yönetilen adres tek başına saldırı kanıtı değildir.

Güncel Android ve iOS sürümleri her Wi-Fi ağı için varsayılan olarak rastgele MAC kullanır. Sanal makineler de sık sık yerel adres alır. Bu durum envanteri zorlaştırır: aynı telefon her ağda başka bir adresle görünür, eski MAC listeleri eşleşmez.

Kablolu depo ağında ise sabit cihazların çoğu üretici adresi taşır. Orada ağ geçidi adına konuşan yerel yönetilen bir adres dikkat ister.

Anahtar, her çerçevenin kaynak MAC adresini ve geldiği portu bir tabloya yazar. Bu tabloya MAC tablosu ya da CAM tablosu denir. Anahtar hedefi tabloda bulursa çerçeveyi yalnız ilgili porta yollar. Bulamazsa gelen port dışındaki bütün portlara yayar (flooding).

Kullanılmayan kayıt bir eskime süresinden sonra silinir; birçok anahtarda bu süre varsayılan olarak 300 saniyedir. Tablonun kapasitesi sınırlıdır. MAC taşkını (MAC flooding) saldırısında saldırgan binlerce sahte kaynak adresle tabloyu doldurur.

Dolan tablo yeni adres öğrenemez ve anahtar trafiği her porta yaymaya başlar. Saldırgan böylece normalde göremeyeceği çerçeveleri görür. Savunma karşılığı port güvenliğidir (port security): bir porttaki MAC sayısını sınırlar; sınır aşılınca portu kapatır ya da fazladan gelen adresleri düşürür.

Etkinlik 2 / 7

Her MAC adresini ilk baytının I/G ve U/L bitlerine göre doğru gruba koy.

Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.

0/6 seçenek yerleşti.

ARP nasıl çalışır

IP adresini bilip MAC adresini bilmeyen bir cihaz çerçeveyi kime yazacağını çıkaramaz. ARP (Address Resolution Protocol) bu boşluğu doldurur, RFC 826 protokolü tanımlar. Sevkiyat bilgisayarı 192.168.1.1'e bir paket yollamak istesin. Önce kendi ARP önbelleğine (cache) bakar.

Kayıt yoksa segmentin tamamına yayın olarak bir ARP isteği yollar: 192.168.1.1 kimde, 192.168.1.20'ye söyle. Segmentteki herkes isteği okur ama yalnız o IP'nin sahibi cevap verir. Cevap doğrudan istemciye tekil (unicast) gider. İstemci eşleşmeyi önbelleğe yazar ve bir süre aynı soruyu sormaz.

Ethernet II, Src: 00:1a:2b:3c:4d:5e, Dst: ff:ff:ff:ff:ff:ff
Address Resolution Protocol (request)
    Hardware type: Ethernet (1)
    Protocol type: IPv4 (0x0800)
    Hardware size: 6
    Protocol size: 4
    Opcode: request (1)
    Sender MAC address: 00:1a:2b:3c:4d:5e
    Sender IP address: 192.168.1.20
    Target MAC address: 00:00:00:00:00:00
    Target IP address: 192.168.1.1
Sevkiyat bilgisayarının ARP isteği, Wireshark ayrıntı panelinde.

Paneli yukarıdan aşağı oku. Hardware type 1 Ethernet'i, Protocol type 0x0800 çözülen adresin IPv4 olduğunu söyler. Opcode 1 isteği gösterir, cevapta bu değer 2 olur. Ardından iki adres çifti gelir: gönderenin MAC ve IP adresi, hedefin MAC ve IP adresi.

İstekte hedef MAC alanı 00:00:00:00:00:00 kalır, çünkü sorulan şey tam olarak budur. Bunu Ethernet başlığındaki hedefle karıştırma. Çerçeve ff:ff:ff:ff:ff:ff adresine yayın olarak gider, ARP paketinin içindeki alan ise sıfır kalır. Cevapta ağ geçidi kendi MAC adresini gönderen alanına yazar.

Önbellekteki kaydın bir yaşam döngüsü vardır. Linux bu kayıtları komşu tablosunda tutar ve her birine bir durum verir. REACHABLE, eşleşmenin kısa süre önce doğrulandığını söyler; varsayılan ayarda bu durum 15 ile 45 saniye arasında sürer.

Süre dolunca kayıt STALE olur. STALE kayıt kullanılmaya devam eder ama ilk kullanımda yeniden doğrulanır. Bu ara adımlar DELAY ve PROBE durumlarıdır.

Hiç cevap gelmezse kayıt FAILED olur. PERMANENT ise elle yazılmış statik kayıttır. Windows'ta arp -a komutu benzer bir tablo verir. Type sütunundaki dynamic öğrenilmiş kaydı, static sabitlenmiş kaydı gösterir.

$ ip neigh show
192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
192.168.1.30 dev eth0 lladdr 00:1a:2b:3c:4d:77 STALE
192.168.1.40 dev eth0 FAILED

C:\> arp -a
Interface: 192.168.1.20 --- 0xb
  Internet Address      Physical Address      Type
  192.168.1.1           00-11-22-33-44-55     dynamic
  192.168.1.255         ff-ff-ff-ff-ff-ff     static
Üstte depodaki bir Linux sunucusunun komşu tablosu, altta sevkiyat bilgisayarının ARP tablosu.

İlk satırda ağ geçidinin eşleşmesi taze ve doğrulanmıştır. İkinci satırdaki etiket yazıcısı bir süredir konuşmamıştır; kayıt STALE durumdadır ama adres bilgisi durur.

Üçüncü satırda lladdr alanı hiç yoktur ve durum FAILED'dır. Sunucu 192.168.1.40'ı sormuş, cevap alamamıştır. Bu cihaz kapalı olabilir, başka bir VLAN'da olabilir ya da adres hiç kullanılmıyor olabilir.

Windows çıktısında ağ geçidi dynamic olarak öğrenilmiştir. Yayın adresi 192.168.1.255 ise static görünür, çünkü sistem onu kendisi sabitler. Olay anında bu tabloyu kaydetmek değerlidir: ağ geçidi satırındaki MAC, sahte bir eşleşmeyi doğrudan gösterir.

Derinleş:1982'nin güven modeli

RFC 826 Kasım 1982'de yayımlandı. O dönemin yerel ağları küçüktü ve kullanıcılar birbirini tanıyordu. Protokol bu yüzden sade bir kabulle yazıldı: segmentteki her cihaz doğruyu söyler. Belgedeki algoritmaya göre alıcı, gelen paketteki gönderen eşleşmesi tablosunda varsa onu hemen günceller.

Paketin hedefi kendisiyse yeni kayıt da ekler. Bu kural verimlilik için konmuştu, ikinci bir soru turunu gereksiz kılıyordu. Aynı kural bugün zehirlenmenin kapısıdır. ARP'a kimlik doğrulama eklemek için sonradan öneriler geldi ama hiçbiri yaygınlaşmadı.

Sektör sorunu protokolün içinde değil, anahtarda çözdü. DAI ve DHCP snooping, anahtarın doğru eşleşmeyi bildiği varsayımına dayanır. IPv6 tarafında da benzer bir öykü yaşandı: SEND (RFC 3971) komşu keşfine kriptografik imza ekledi ama geniş destek görmedi.

Etkinlik 3 / 7

Doğru mu, yanlış mı?

ARP isteği ff:ff:ff:ff:ff:ff hedef MAC adresiyle segmente yayın olarak gider, cevabı ise IP'nin sahibi unicast olarak döner.

Etkinlik 4 / 7

Bir Linux sunucusunda şu çıktıyı gördün. 192.168.1.40 satırı için hangi yorum doğrudur?

Önce kodu oku, sonra çıktıyı seç.

$ ip neigh show
192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
192.168.1.40 dev eth0 FAILED

ARP zehirlenmesi ve adres çakışması

ARP protokolünün büyük zaafı kimlik doğrulaması taşımamasıdır. Bir cihaz, kendisine sorulmadan da bir IP-MAC eşleşmesini duyurabilir. Bu istenmemiş duyuruya gratuitous ARP denir ve meşru kullanımları vardır.

Yedekli ağ geçitleri görev değiştirince yeni MAC adresini böyle duyurur. RFC 5227 de adres çakışmasını önlemek için iki paket tanımlar.

ARP probe, gönderen IP alanı 0.0.0.0 olan bir istektir; cihaz bir adresi almadan önce onu kimsenin kullanmadığını sorar. ARP announcement ise gönderen ve hedef IP alanlarında aynı adresi taşır ve adresin alındığını duyurur. Sorun alıcı tarafındadır. Linux, önbellekte zaten bulunan bir IP için gelen istenmemiş ARP'ı ayar ne olursa olsun kayda işler.

Saldırgan aynı segmentte bu güveni kullanır. Kurbana ağ geçidinin IP'sini, ağ geçidine de kurbanın IP'sini kendi MAC adresiyle duyurur. İki taraf da çerçeveleri saldırgana yollamaya başlar.

Saldırgan paketleri doğru yere iletirse bağlantı kopmaz ve kimse bir şey fark etmez. Bu tekniğin adı ARP zehirlenmesidir (ARP spoofing) ve araya girerek dinlemeyi (adversary-in-the-middle) mümkün kılar. MITRE ATT&CK tekniği T1557.002 kimliğiyle kaydeder.

Saldırgan paketleri iletmezse sonuç bir kesintidir; depodaki sabah yavaşlaması buna benzer. Bunu yalnız kendi lab ortamında ya da yazılı iznin olan ağda dene. Amaç, tekniğin bıraktığı izleri tanımaktır.

Aynı IP'nin iki farklı MAC adresiyle görünmesi her zaman saldırı değildir. En sık masum sebep, iki cihaza elle aynı adresin yazılmasıdır. Ayırmak için üç işarete bak.

Birincisi kalıcılıktır: yapılandırma hatası tek bir çakışmayla başlar ve biri düzeltene kadar aynı kalır. Zehirlenme ise saniyeler arayla tekrarlanan istenmemiş cevaplar üretir. İkincisi hedeftir: çakışan adres bir yazıcıysa hata olasılığı yüksektir, ağ geçidi ya da DNS sunucusuysa şüphe büyür.

Üçüncüsü zaman örüntüsüdür: saldırgan kaydın eskimemesi için cevapları düzenli aralıklarla yollar. Buna ek olarak adresin üreticisine ve U/L bitine bak.

Etkinlik 5 / 7

Anahtarın ARP kayıt defterinde zehirlenme belirtisi taşıyan satırları seç.

Şüpheli satırlara tıkla. Birden fazla olabilir.

Wireshark ile tespit ve savunma

Wireshark'ta ARP trafiğini birkaç filtreyle ayıklarsın. arp.opcode == 1 yalnız istekleri, arp.opcode == 2 yalnız cevapları gösterir. eth.dst == ff:ff:ff:ff:ff:ff yayın çerçevelerini süzer.

arp.isgratuitous == 1 istenmemiş ARP'ı, arp.isprobe == 1 ve arp.isannouncement == 1 ise RFC 5227 paketlerini ayırır. En değerli filtre arp.duplicate-address-detected olur.

Wireshark aynı IP için daha önce başka bir MAC gördüyse çerçeveye bir uzman uyarısı (expert info) ekler. Bu filtre o çerçeveleri getirir. Aşağıdaki çıktı depo ağından alınmış bir yakalamadır. -n bayrağı ad çözümlemesini kapatır ve ham MAC adreslerini gösterir.

$ tshark -n -r depo.pcap
    1   0.000000 00:1a:2b:3c:4d:5e → ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.1? Tell 192.168.1.20
    2   0.001000 00:11:22:33:44:55 → 00:1a:2b:3c:4d:5e ARP 42 192.168.1.1 is at 00:11:22:33:44:55
    3   5.000000 00:1a:2b:3c:4d:77 → ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.30? (ARP Probe)
    4   7.000000 00:1a:2b:3c:4d:77 → ff:ff:ff:ff:ff:ff ARP 42 ARP Announcement for 192.168.1.30
    5  30.000000 02:5c:aa:10:20:30 → 00:1a:2b:3c:4d:5e ARP 42 192.168.1.1 is at 02:5c:aa:10:20:30 (duplicate use of 192.168.1.1 detected!)
    6  32.000000 02:5c:aa:10:20:30 → 00:1a:2b:3c:4d:5e ARP 42 192.168.1.1 is at 02:5c:aa:10:20:30 (duplicate use of 192.168.1.1 detected!)
    7  34.000000 02:5c:aa:10:20:30 → 00:1a:2b:3c:4d:5e ARP 42 192.168.1.1 is at 02:5c:aa:10:20:30 (duplicate use of 192.168.1.1 detected!)

$ tshark -n -r depo.pcap -q -z expert

Warns (3)
=============
   Frequency      Group           Protocol  Summary
           3   Sequence           ARP/RARP  Duplicate IP address configured (192.168.1.1)
Depo yakalaması: normal bir soru-cevap, yeni bir yazıcının RFC 5227 adımları ve ağ geçidi adına gelen istenmemiş cevaplar.

Birinci ve ikinci çerçeve normal bir soru-cevap çiftidir: bilgisayar ağ geçidini sorar, ağ geçidi 00:11:22:33:44:55 ile cevap verir. Üçüncü ve dördüncü çerçeve yeni bir etiket yazıcısının RFC 5227 adımlarıdır ve zararsızdır.

Beşinci çerçevede tablo değişir. Kimse sormadığı hâlde 02:5c:aa:10:20:30, ağ geçidinin IP'sini kendi adresiyle duyurur. Bu cevaplar iki saniyede bir tekrar eder.

Wireshark her birinin bilgi sütununa çakışma notu düşer, uzman özeti de aynı IP için üç uyarı sayar. Bir incelik var: Wireshark bir ARP'ı yalnız gönderen ve hedef IP aynıysa gratuitous sayar. Kurbana doğrudan yollanan sahte cevaplar bu yüzden arp.isgratuitous filtresine takılmaz, çakışma uyarısı ise onları yakalar.

Savunmayı katmanlı kurarsın. Yönetilebilir anahtarda DHCP snooping, hangi portta hangi IP ve MAC eşleşmesinin olduğunu bir bağlama tablosuna yazar. Dynamic ARP Inspection (DAI) her ARP paketini bu tabloyla karşılaştırır ve uyuşmayanı düşürür. Port güvenliği bir porttaki MAC sayısını sınırlar.

Ağ geçidi gibi kritik cihazlar için statik ARP kaydı, sahte cevabın önbelleğe yazılmasını engeller. MITRE ATT&CK de aynı önlemleri önerir: DAI ve snooping trafik süzme (M1037), statik kayıt ağ erişimini sınırlama (M1035) başlığındadır. İstenmemiş ARP ile güncellemeyi kapatmak M1042'dir. Son katman şifrelemedir (M1041): TLS kullanan bağlantıda araya giren saldırgan içeriği okuyamaz.

Derinleş:IPv6'da ARP yok: Komşu Keşfi

IPv6 ARP kullanmaz. Aynı işi Komşu Keşfi (Neighbor Discovery, NDP) yapar ve RFC 4861 onu tanımlar. NDP, ICMPv6 mesajlarıyla çalışır. Neighbor Solicitation (tür 135) ARP isteğinin, Neighbor Advertisement (tür 136) ARP cevabının karşılığıdır.

Yayın yerine çoklu yayın kullanılır; soru yalnız ilgili adres grubunu dinleyen cihazlara gider. Yönlendiriciler kendilerini Router Advertisement (tür 134) ile duyurur. Güven sorunu ise aynen sürer. Sahte bir Neighbor Advertisement, ARP zehirlenmesinin IPv6 karşılığıdır.

Sahte bir Router Advertisement ise bütün segmentin ağ geçidini değiştirebilir. Anahtarlarda RA Guard (RFC 6105) yalnız yönlendirici portundan gelen duyuruları geçirir. IPv6'yı kullanmadığını düşündüğün ağda bile işletim sistemleri onu varsayılan olarak açık tutar. Bu kör nokta sık gözden kaçar.

Etkinlik 6 / 7

Bir güvenlik ekibi, ağ geçidinin MAC adresinin birkaç dakikada bir değiştiğini fark etti. En olası açıklama hangisidir?

Etkinlik 7 / 7

Wireshark'ta yakalanan bir çerçevede EtherType alanı 0x0806 yazıyor. Bu çerçevenin yükü hangi protokole aittir?

Bu derste bir hata mı gördün? Bildir