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

Paket nereye gider

Bu derste
  • Bir isteğin isim çözümleme, yönlendirme, port ve uygulama duraklarından geçip sunucuya nasıl vardığını, katmanlar ve CIDR hesabıyla öğrenirsin.
  • IP cihazı, port servisi bulur; maske ağın sınırını çizer, ARP komşunun MAC adresini verir, TTL ise paketin ömrünü sınırlar.
  • Bu derste katmanları, CIDR hesabını, dinleyen portları, ARP tablosunu, ping ve traceroute çıktısını kendi komutlarınla okursun.

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.

Tarayıcına altaykargo.example yazıp Enter'a bastığında istek sunucuya tek hamlede varmaz. Önce bilgisayarın adı bir adrese çevirir. Sonra istek katmanlara sarılır, yönlendiriciden yönlendiriciye atlar ve en sonunda doğru servise ulaşır. Bu yolculuğu bilen kişi, sayfa açılmadığında sorunun hangi durakta çıktığını dakikalar içinde bulur.

Destek masasına düşen site açılmıyor çağrısı da, sızma testinin ilk keşif adımı da aynı haritayla başlar. Bu derste isim çözümleme, yönlendirme, port ve uygulama duraklarını söker, her birini kendi komutunla yoklarsın.

İki adres, dört durak

Ağdaki her cihazın bir IP adresi vardır. IPv4 adresi 32 bittir ve noktayla ayrılmış dört sekizliden oluşur, örneğin 203.0.113.19. Her sekizli 0 ile 255 arasında kalır, çünkü sekiz bit ancak bu kadar değeri taşır. Dünyadaki cihaz sayısı bu adres havuzunu çoktan aştı.

IPv6 bu yüzden adresi 128 bite çıkarır ve iki nokta üst üste ile ayrılmış onaltılık gruplarla yazar. IP adresi cihazı bulur ama işi tek başına bitirmez. İsteğin o cihazdaki hangi servise gittiğini ise port numarası söyler.

Bir cihaz ağa ilk bağlandığında elinde ne IP adresi ne ağ geçidi vardır. Bu bilgileri DHCP (Dynamic Host Configuration Protocol) dağıtır. RFC 2131'e göre alışveriş dört mesajdır ve baş harfleriyle DORA diye anılır: Discover, Offer, Request ve Ack. İstemci sunucu arar, sunucu bir adres önerir, istemci o adresi ister, sunucu onaylar.

Sunucu UDP 67, istemci UDP 68 portunu kullanır. Adresle birlikte maske, ağ geçidi ve DNS sunucusu da gelir. Ağa sahte bir DHCP sunucusu koyan kişi cihazlara kendi geçidini dağıtabilir. Anahtardaki DHCP snooping bu yüzden yalnız güvenilen porttan gelen cevabı geçirir.

İlk durak isim çözümlemedir. DNS (Domain Name System, alan adı sistemi) insanın okuduğu adı makinenin kullandığı IP adresine çevirir. Tarayıcı gelen cevabı bir süre saklar, bu yüzden ikinci girişte bu adım kısalır.

Adres eline geçince istek yola çıkar ve kurumsal ağlarda önce bir güvenlik duvarına gelir. Duvar, dışarıdan hangi porta gelinebileceğine tek tek karar verir ve geri kalan trafiği sessizce düşürür. Yolun her durağı ayrı bir yapılandırma hatasının da yeridir.

TarayıcıistemciDNSad → IPGüvenlik duvarıport filtresiWeb sunucu443/tcpVeritabanı3306/tcp
Bir isteğin yolu: tarayıcı, DNS, güvenlik duvarı, web sunucusu ve veritabanı.

Şemayı soldan sağa oku. Tarayıcı önce DNS'e sorar ve sunucunun IP adresini alır. Duvar yalnız 443 portuna gelen trafiği içeri alır. Web sunucusu isteği işler ve gerekirse veritabanına bağlanır.

Veritabanı doğrudan internete açılmaz, yalnız web sunucusunun bağlantısını kabul eder. Her kutu ayrı bir cihaz, her ok ayrı bir güven kararıdır. Bir durakta yazılan yanlış kural, sonraki durakları da açıkta bırakır. Sorun ararken de, saldırı yüzeyini çıkarırken de bu kutuları sırayla yoklarsın.

Etkinlik 1 / 8

İnternetten 3306 portuna gelen isteği, veritabanına varmadan hangi durak durdurur?

Diyagramda doğru kutuyu tıkla.

TarayıcıistemciDNSad → IPGüvenlik duvarıport filtresiWeb sunucu443/tcpVeritabanı3306/tcp

Katmanlar ve kapsülleme

Ağ yazılımı tek parça değildir, katmanlara bölünür. Ders kitapları OSI modelinde yedi katman sayar, ama günlük işte TCP/IP modelinin dört katmanı çoğu zaman yeter: uygulama, taşıma, ağ ve bağlantı. Uygulama katmanı HTTP ve DNS gibi protokolleri taşır. Taşıma katmanı TCP ile UDP'yi barındırır ve portları burada okursun.

Ağ katmanı IP ile adresi ve yönlendirmeyi yönetir. Bağlantı katmanı ise Ethernet ve ARP ile aynı kablodaki komşuya ulaşır. OSI'nin üstteki üç katmanı, yani oturum, sunum ve uygulama, TCP/IP'de tek uygulama katmanında toplanır. Alttaki fiziksel ve veri bağı katmanları da bağlantı katmanında birleşir.

L2 anahtarı MAC adresine, L3 yönlendiricisi IP adresine bakar. L7 güvenlik duvarı ise HTTP isteğinin içini okur. Saldırılar da bu katmanlara dağılır. ARP zehirlenmesi L2'de, IP sahteciliği L3'te, SYN seli L4'te, SQL enjeksiyonu ise L7'de yaşanır.

OSI katmanı     TCP/IP katmanı   Veri birimi          Örnek
7 Uygulama      Uygulama         veri                 HTTP, DNS, SSH
6 Sunum         Uygulama         veri                 kodlama, sıkıştırma
5 Oturum        Uygulama         veri                 oturumu açma ve sürdürme
4 Taşıma        Taşıma           segment / datagram   TCP, UDP
3 Ağ            Ağ               paket                IP, ICMP
2 Veri bağı     Bağlantı         çerçeve              Ethernet, ARP, Wi-Fi
1 Fiziksel      Bağlantı         bit                  kablo, fiber, radyo
OSI'nin yedi katmanı TCP/IP'nin dört katmanına eşlenir. Veri biriminin adı her katmanda değişir: TCP'de segment, UDP'de datagram denir.

Veri aşağı inerken her katman kendi başlığını ekler, buna kapsülleme (encapsulation) denir. Tarayıcının ürettiği HTTP isteği önce taşıma katmanında bir TCP segmentine girer ve başına kaynak ile hedef port yazılır. Ağ katmanı bu segmenti bir IP paketine sarar ve kaynak ile hedef IP adresini ekler.

Bağlantı katmanı paketi bir Ethernet çerçevesine koyar ve MAC adreslerini yazar. Alıcı tarafta aynı işlem tersine döner: her katman kendi başlığını okur, soyar ve içindekini bir üste verir.

Frame 42: 571 bytes on wire (4568 bits)
Ethernet II, Src: 52:54:00:d4:e5:f6, Dst: 52:54:00:a1:b2:c3
Internet Protocol Version 4, Src: 192.168.1.20, Dst: 203.0.113.40
Transmission Control Protocol, Src Port: 51544, Dst Port: 80, Seq: 1, Ack: 1, Len: 517
Hypertext Transfer Protocol
    GET / HTTP/1.1\r\n
    Host: altaykargo.example\r\n
Wireshark ayrıntı paneli: her satır bir katmanın başlığıdır. Dıştan içe çerçeve, Ethernet, IP, TCP ve HTTP. Satırlar kısaltıldı.

Frame satırı paketin teldeki boyutunu verir. Ethernet II satırı kaynak ve hedef MAC adresini taşır. IPv4 satırında 192.168.1.20 adresli bilgisayarın 203.0.113.40 adresli sunucuya konuştuğunu görürsün. TCP satırı kaynak port 51544 ile hedef port 80'i, en alttaki satırlar ise HTTP isteğinin kendisini gösterir.

Hedef MAC adresi uzak sunucuya değil, yerel ağ geçidine aittir. MAC adresi yalnız bir sonraki atlamaya kadar geçerlidir. Hedef IP adresi ise yol boyunca aynı kalır; kaynak adresi yalnız çıkıştaki NAT değiştirir.

Etkinlik 2 / 8

Tarayıcının ürettiği HTTP isteği ağ kartına ulaşana kadar hangi sırayla sarılır? Uygulama verisinden en dıştaki sarmala doğru diz.

Sürükleyip doğru sıraya koy.

Bir öğeye odaklan, yukarı ve aşağı ok tuşlarıyla taşı. Home tuşu en üste, End tuşu en alta alır.

  • 1TCP segmenti (port başlığı eklenir)
  • 2Ethernet çerçevesi (MAC başlığı eklenir)
  • 3IP paketi (IP başlığı eklenir)
  • 4HTTP isteği (uygulama verisi)

Özel adresler ve CIDR

Yerel ağdaki adresler çoğu zaman özeldir. RFC 1918 bu iş için üç blok ayırır: 10.0.0.0/8, 172.16.0.0/12 ve 192.168.0.0/16. Ortadaki blok 172.16 ile 172.31 arasını kapsar, sık karışan yer de burasıdır. Özel adresler internette yönlendirilmez.

Ağın çıkışındaki cihaz NAT (Network Address Translation, adres çevirimi) uygular ve kaynak adresi kendi genel adresiyle değiştirir. Senin evindeki 192.168.1.10 ile komşunun 192.168.1.10 adresi bu yüzden çakışmaz. İkisi de dışarıya farklı bir genel adresle çıkar.

Adres bloğunu yazarken eğik çizgiden sonraki sayı, kaç bitin ağa ait olduğunu söyler. Buna CIDR (Classless Inter-Domain Routing) gösterimi denir ve RFC 4632 tanımlar. /24 maskesi ilk 24 biti ağa, kalan 8 biti host'lara ayırır, yani 256 adres. /25 maskesi ağa bir bit daha verir ve bloğu iki yarıya böler, her yarıda 128 adres kalır.

Her blokta ilk adres ağın kendisi, son adres ise yayın (broadcast) adresidir. İkisi de bir host'a verilmez, bu yüzden kullanılabilir adres sayısı toplamdan iki eksiktir. Blok küçüldükçe bu iki adresin payı büyür.

$ ipcalc -b 10.20.0.0/25
Address:   10.20.0.0
Netmask:   255.255.255.128 = 25
Wildcard:  0.0.0.127
=>
Network:   10.20.0.0/25
HostMin:   10.20.0.1
HostMax:   10.20.0.126
Broadcast: 10.20.0.127
Hosts/Net: 126                   Class A, Private Internet
10.20.0.0/25 bloğu: ağ .0, yayın .127, dağıtılabilir aralık .1 ile .126 arası. -b ikili gösterimi kapatır.

Çıktıyı satır satır oku. Network satırı bloğun ağ adresini verir, buraya cihaz koyamazsın. Broadcast satırı 10.20.0.127 der; bu adres ağdaki herkese seslenir ve tek bir host'a atanmaz. HostMin ile HostMax arası, yani 10.20.0.1 ile 10.20.0.126 arası, cihazlara dağıtabileceğin aralıktır.

Wildcard satırı maskenin tersidir ve erişim listelerinde karşına çıkar. Aynı bloğu /24 sansaydın aralık 10.20.0.254'e kadar uzardı. Maskeyi yanlış okumak sık bir sorun kaynağıdır: /25 kurulmuş bir ağda kendine /24 veren cihaz, komşu yarıdaki adresleri kendi ağında sanır.

Derinleş:Yanlış maske, ulaşılamayan sunucu

Sızma testlerinde ve ağ kurulumunda sık görülen bir tuzak, alt ağ maskesini yanlış okumaktır. Diyelim hedef ağ 10.20.0.0/25 olarak kurulmuş ve etki alanı denetleyicisi 10.20.0.130 adresinde, yani bloğun ikinci yarısında duruyor.

Kendi makinene 10.20.0.10/24 verirsen, işletim sistemin 10.20.0.130 adresini kendi ağında sanır ve onu doğrudan ARP ile aramaya kalkar. Oysa o adres komşu alt ağdadır ve ona ancak yönlendirici üzerinden erişilir. Sonuç, açık duran bir servise saatlerce ulaşamamak ve sorunu hedefte sanıp boşuna aramaktır.

Doğru maskeyi ipcalc ile doğrular, gerekirse rotayı elle eklersin. Aynı hata savunma tarafında da olur. Fazla geniş bir maske, ayrı tutulması gereken iki alt ağı tek bir yayın alanında birleştirir. Böylece istemeden beklenmedik bir erişim yolu açılır.

Etkinlik 3 / 8

Adresi RFC 1918 özel bloklarına girip girmediğine göre ayır.

Ö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/5 seçenek yerleşti.

Etkinlik 4 / 8

10.20.0.0/25 bloğunda kaç adres host'lara dağıtılabilir? Yalnız sayıyı yaz.

Portlar, servisler ve bölütleme

Üçüncü durak porttur. Bir sunucuda web, posta ve uzak erişim servisi yan yana çalışır; isteğin hangisine gittiğini port numarası söyler. Port 16 bittir, yani 0 ile 65535 arasında değer alır.

RFC 6335 bu aralığı üçe böler: 0-1023 sistem portları, 1024-49151 kayıtlı portlar, 49152-65535 dinamik portlardır. İstemci bağlantı açarken geçici bir kaynak portu seçer. RFC bu iş için dinamik aralığı önerir, Linux ise varsayılan olarak 32768-60999 arasını kullanır.

Ezberlemen gereken kapılar azdır: 22 SSH, 25 ve 587 SMTP, 53 DNS, 80 HTTP, 443 HTTPS, 445 SMB, 3306 MySQL, 3389 RDP. Kendi makinende dinleyen TCP servislerini ss -tln komutuyla görürsün. -t yalnız TCP'yi, -l yalnız dinleyen soketleri seçer, -n ise port numarasını ada çevirmeden yazar.

$ ss -tln
State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  Process
LISTEN  0       128            0.0.0.0:22           0.0.0.0:*
LISTEN  0       80           127.0.0.1:3306         0.0.0.0:*
LISTEN  0       511            0.0.0.0:443          0.0.0.0:*
LISTEN  0       4096     127.0.0.53%lo:53           0.0.0.0:*
Dinleyen TCP soketleri. 0.0.0.0 bütün arayüzleri, 127.0.0.1 yalnız makinenin kendisini gösterir.

Çıktıyı satır satır oku. 22 ve 443 portları 0.0.0.0 adresinde dinliyor, yani ağdaki herkes onlara bağlanmayı deneyebilir. 3306 portundaki MySQL ise yalnız 127.0.0.1 adresinde dinliyor. O adres makinenin kendisini gösterir, bu yüzden veritabanı dışarıdan görünmez.

Son satırdaki 127.0.0.53 adresi, birçok Linux dağıtımında systemd-resolved adlı yerel DNS servisine aittir. Bir sunucuyu sertleştirirken ilk işin bu tabloyu okumaktır. Dışarıya açık olması gerekmeyen her satır, kapatılacak ya da yerel adrese çekilecek bir adaydır.

Servisin hangi adreste dinlediği kadar, ona kimin ulaşabildiği de önemlidir. Bütün cihazları tek bir /24 ağına koymak kolaydır ama tehlikelidir. Bir cihaz ele geçince saldırgan aynı yayın alanındaki herkese doğrudan ulaşır.

Diyelim Altay Kargo'nun sunucuları 10.20.0.0/24 bloğunda tek parça duruyor. Bloğu ikiye böler, web sunucularını 10.20.0.0/25, veritabanını 10.20.0.128/25 yarısına koyarsın. Aradaki duvara tek kural yazarsın: veritabanının 3306 portu yalnız web alt ağından gelen bağlantıyı kabul etsin. Ofiste ele geçirilen bir bilgisayar artık veritabanına doğrudan ulaşamaz.

Aşağıdaki şema aynı fikrin büyük hâlidir. Dış trafik önce DMZ'ye düşer, iç ağa ancak ikinci bir duvardan geçerek varır. Sıfır güven (zero trust) yaklaşımı bir adım daha atar: NIST SP 800-207'ye göre ağdaki konum tek başına güven sebebi değildir, her erişim ayrıca doğrulanır.

İnternetgüvenilmezDış duvaryalnız 443DMZweb, e-postaİç duvarizin listesiİç ağVLAN'lar
Bölütlenmiş ağ: internet, dış duvar, DMZ, iç duvar ve VLAN'lara ayrılmış iç ağ.

Etkinlik 5 / 8

Portu, varsayılan olarak dinleyen servisle 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.

Etkinlik 6 / 8

Web uygulaması veritabanına aynı makineden bağlanıyor. Veritabanını gereksiz yere bütün ağa açan satırı bul.

Zafiyetli satıra tıkla.

Yerel ağdan dışarıya: ARP, TTL ve traceroute

Adresini DHCP'den alan cihaz, isteği önce yerel ağ geçidine, yani evdeki modeme ya da kurumdaki yönlendiriciye yollar. Ama bağlantı katmanı çerçeveyi ancak MAC adresiyle teslim eder, elinde ise yalnız IP adresi vardır. ARP (Address Resolution Protocol, adres çözümleme protokolü) bu boşluğu kapatır. Cihaz ağa soru sorar: şu IP kimde.

Adresin sahibi kendi MAC adresiyle cevap verir. Böylece 3. katmandaki IP adresi ile 2. katmandaki MAC adresi eşlenir.

Öğrenilen eşleşmeler bir süre saklanır, bu tabloya ARP önbelleği denir. Linux'ta ip neigh, Windows'ta arp -a komutu bu tabloyu gösterir.

$ ip neigh show
192.168.1.1 dev eth0 lladdr 52:54:00:a1:b2:c3 REACHABLE
192.168.1.30 dev eth0 lladdr 52:54:00:7a:8b:9c STALE
ip neigh, IP ile MAC eşleşmelerini gösterir. REACHABLE taze, STALE ise doğrulanması gereken kaydı işaret eder.

İlk satırdaki 192.168.1.1 ağ geçididir ve kaydı taze. MAC adresi, Wireshark örneğindeki hedef MAC ile aynıdır.

İkinci satırdaki kayıt bir süredir doğrulanmadı; çekirdek onu bir sonraki kullanımda yeniden yoklar. Geçidin MAC adresi öğrenilince paket atlamaya başlar. Her yönlendirici kendi tablosuna bakar ve tek soru sorar: bu hedefe giden bir sonraki adım kim. IP başlığında TTL (Time To Live, yaşam süresi) adlı bir sayaç durur.

Her yönlendirici bu sayacı bir azaltır. Sayaç sıfıra inerse paket düşer ve geriye ICMP süre aşıldı mesajı döner. Paket ağın çıkışına geldiğinde NAT kaynak adresi genel adresle değiştirir, dönüşte cevabı doğru iç cihaza geri yazar. Sunucu bu yüzden yalnız çıkıştaki genel adresi görür.

$ ping -c 2 203.0.113.40
PING 203.0.113.40 (203.0.113.40) 56(84) bytes of data.
64 bytes from 203.0.113.40: icmp_seq=1 ttl=60 time=19.8 ms
64 bytes from 203.0.113.40: icmp_seq=2 ttl=60 time=19.6 ms

--- 203.0.113.40 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 19.600/19.700/19.800/0.100 ms
ping iki ICMP echo isteği yollar. Her cevap satırı TTL değerini ve gidiş dönüş süresini gösterir.

ping aracı ICMP echo isteği yollar ve cevabını bekler. RFC 792'ye göre echo isteği tip 8, cevabı tip 0, süre aşıldı mesajı tip 11'dir. Linux paketi çoğunlukla 64, Windows 128 TTL ile yollar.

ttl=60 gören biri, cevabın büyük olasılıkla bir Linux makineden geldiğini ve yolda dört yönlendirici geçtiğini tahmin eder. Cevap gelmemesi makinenin kapalı olduğunu göstermez, çünkü birçok duvar ICMP'yi düşürür. traceroute aynı sayacı bilerek kullanır.

TTL değeri 1 olan paketle başlar, sonra 2, 3 diye artırır. Her turda sayacı sıfıra inen yönlendirici süre aşıldı mesajı döner ve adresini ele verir. Yıldız yalnız cevap gelmediğini söyler, yol yine de sürebilir. Linux traceroute varsayılan olarak UDP sondası, Windows'taki tracert ise ICMP echo yollar.

Derinleş:ARP'ın güveni ve zayıf noktası

ARP, 1982 tarihli RFC 826 ile tanımlandı ve o günden beri neredeyse değişmedi. Tasarımı basit olduğu kadar güvenden yoksundur: gelen cevabı hiçbir şey doğrulamaz.

Bir cihaz kimse sormadan da bu IP artık bende diye duyuru yapabilir. Buna gratuitous ARP denir ve adres çakışmasını bildirmek gibi meşru işlerde kullanılır. Aynı yetenek kötüye de kullanılır. Saldırgan sahte ARP cevaplarıyla ağ geçidinin adresini kendi MAC adresine bağlarsa, komşuların trafiği onun üzerinden akmaya başlar.

MITRE ATT&CK bunu T1557.002 ARP Cache Poisoning tekniğiyle izler. Savunması anahtar üstünde dinamik ARP denetimi (DAI) ve kritik kayıtlarda sabit eşleşmedir. DAI, kararını DHCP snooping tablosundaki IP ve MAC eşleşmelerine dayandırır; bu yüzden iki özellik genelde birlikte açılır. Tespit ipucu ise tek bir MAC adresine bağlanan birden çok IP ve ard arda gelen istenmemiş ARP cevaplarıdır.

Etkinlik 7 / 8

Linux makinende altaykargo.example adresine giden yolun duraklarını listele.

ogrenci@lab

Etkinlik 8 / 8

Kullanıcı sunucuya 203.0.113.40 adresiyle ulaşıyor ama altaykargo.example adıyla ulaşamıyor. Sorun büyük olasılıkla hangi duraktadır?

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