Hacker’ın Gözünden Modern Web Nasıl Çalışır?
Herkese merhaba. Bu makaledeki konumuz başlıkta da geçtiği gibi “Hacker’ın Gözünden Modern Web Nasıl Çalışır” olacaktır.
Hepimiz merak etmişizdir, bilgisayarımız açıldığında neler oluyor? Nasıl ağa bağlanıyor? Bu süreçte hangi olaylar gerçekleşiyor? Bu makaleye geldiğinize göre eminim bu sorular sizin de kafanızı kurcalamıştır. Bu yazımızda bu soruların cevabını öğreneceğiz.
Modern Web teknolojisine başlamadan önce yerel ağda dönen olayları bilmemiz gerekir, bunun için öncelikle yerel ağdaki bazı kavramları tekrar edeceğiz. Bu kavramlara hakim olduğunuzu düşünüyorsanız bu kısmı atlayabilirsiniz.
Yerel Ağ Kavramları:
IP Nedir?
İnternet Protocol (IP), bilgisayarlar arasında veri iletişimini sağlayan bir protokoldür. Bir cihazın diğerine veri göndermesi veya alması için kullanılır. IP adresi, cihazları ağ üzerinde benzersiz bir şekilde tanımlayan bir numaradır. Evlerdeki posta kutularını düşünürsek; her evin bir benzersiz adresi vardır, bu adres sayesinde posta doğru adrese ulaşır. IP adresi de benzer bir şekilde çalışır, ancak bu kez bilgisayarlar veya diğer ağ cihazları için kullanılır.
Bilgisayarlar, IP adresleri aracılığıyla birbirleriyle iletişim kurar. Veri paketleri, kaynak IP adresinden hedef IP adresine doğru yönlendirilir. Bu sayede bilgisayarlar, internet üzerinden veri alışverişi yapabilirler. Detaylar için bakınız (RFC 791).
IP adresleri iki kısımdan oluşur:
a-) Network ID: Network’ün kendine ait ID’sidir. Bu ID, cihazların hangi ağda olduğunu belirtir. Aynı ağda olan cihazların Network ID’leri aynı olmak zorundadır.
b-) Host ID: Cihazın, ağda kendisini tanımlayan ID’sidir. Aynı ağda olan cihazların Host ID’leri farklı olmak zorundadır. Host ID’leri minimum ‘1’ maksimum ‘254’ olabilir. “0” değerini alamaz.
MAC Adresi Nedir?
MAC adresi fiziksel bir adrestir. Cihazlara yöneticiler tarafından yazılır. 32 byte’lık binary bir sayıdır. Örneğin “11000000.10101000.00000001.00001010” bir MAC adresidir ama bizim böyle bir sayı dizisini hatırlamamız ve yazmamız zor olduğu için her 8’li grup decimal’e (ondalık) çevirilmiştir. Sayının son hali ise 192.168.1.10’dur. Bu haline ise Dotted Decimal denir.
ARP Nedir?
Açılımı “Adress Resolution Protocol”‘dür.
Bilgisayarlar, ağdaki diğer cihazlarla iletişim kurarken genellikle IP adresini bilirler ancak iletimi fiziksel seviyede gerçekleştirmek için MAC adresine ihtiyaç duyarlar. ARP, bu IP-MAC eşleştirmesini sağlar. Bir cihaz, hedef IP adresini biliyor ancak onunla iletişim kurmak için gerekli olan MAC adresini bilmiyorsa ARP kullanır. Temel olarak 3 aşamada gerçekleşir.
1-) ARP Request (ARP isteği): Bu aşamada cihaz bulunduğu Network’e ARP Request paketi gönderir. Bu paketin içeriği görseldeki gibidir. IP adresi bilinen cihazın MAC adresini öğrenmek ister. Target MAC adresi unknown (bilinmeyen) olarak gider.
2-) ARP Reply (ARP yanıtı): Gönderilen ARP Request paketi hedef IP adresine sahip cihaza ulaşınca cihaz cevap olarak ARP Reply paketi gönderir bu paketin içerisinde kendi MAC adresi bulunur.
3-) Önbellek (Cache): Cihaz, aldığı ARP yanıtını bir önbellekte saklar. Bu, gelecekte aynı hedefe yönelik iletişimde hızlı bir şekilde MAC adresini kullanmasını sağlar. Bu bilgiler ARP belleğinde belli bir süre saklanır süresi dolduğunda ise, cihaz yeni bir ARP Request yapar.
Bilgisayarınızdaki ARP önbelleğini görmek isterseniz “arp -a” komutunu çalıştırabilirsiniz.
DHCP Nedir?
DHCP’nin açılımı “Dynamic Host Configuration Protocol” dür.
Yaptığı iş temel olarak ağdaki cihazlara IP adresi, Ağ alt maskesi ( Subnet Mask), Varsayılan ağ alt geçidi (Default Gateway) ve DNS server bilgilerini dağıtan protokoldür.
Bir cihaz ağa bağlandığında “DHCP Discover” yayını başlatır. DHCP sunucuları, “DHCP Discover” yayınını alır ve bu cihaza bir IP adresi teklifi sunarlar. Bu teklif “DHCP offer” olarak adlandırılır. Cihaz, alınan DHCP teklifini kabul eder ve seçtiği teklifin IP adresini kullanmak istediğini belirten bir “DHCP Request” ile yayın yapar. DHCP sunucusu bu isteği alır ve kabul ederse “DHCP Acknowledgment” gönderir.
Cihaz aldığı IP adresi ile ağdaki diğer cihazlarla iletişim kurabilir. Alınan IP adreslerinin ömür boyu olmaması için default olarak 8 günlüğüne verilir. DHCP kullanılmayan ağlarda IP adresleri ve diğer bilgiler her client a manuel olarak girilir.
DNS Nedir?
DNS’in açılımı “Domain Name Server” dır. DNS‘in yaptığı iş alan adlarını IP adreslerine çevirmektir.
İnternet üzerinde her cihazın bir IP adresi vardır, ancak biz daha anlaşılabilir olması için alan adlarını kullanırız. Bu durumu günlük hayattaki telefon rehberimize benzetebiliriz. Bizi bir numara bir tanıdığımız aradığında ekranda telefon numarası değil de kayıt ettiğimiz şekilde yani bizim anladığımız şekilde karşımıza çıkar. DNS de tam olarak bu amaçla kullanılır.
Terminal ekranına ping google.com
yazdığımızda görselde de görüldüğü gibi google.com IP adresi yazmakta [216.58.212.14]
. Bu IP adresini tarayıcı adresine yazdığımızda yine google.com’a gideriz. DNS bize bu sayıları ezberlememiz için gereklidir.
Default Gateway (Varsayılan Ağ Geçidi) nedir? Ne işe yarar?
Bir bilgisayar kendi yerel ağı (LAN) içindeki bilgisayarlarla iletişim kurarken kullandığı yöntem ile kendi yerel ağı dışındaki (WAN) bilgisayarlarla iletişim kurarken kullandığı yöntem farklıdır. Cihazın dış dünyaya açılmak için orada geçerli bir IP adresine sahip olması gerekir. Burada da Gateway devreye girer.
Default Gateway İnternet servis sağlayıcısı (ISP) tarafından verilen IP adresini, dış ağa bağlanmak isteyen cihazın IP adresiyle değiştirir bu sayede cihaz kendi ağında olmayan cihazlarla iletişime geçebilir.
Özetle, default gateway, bir cihazın bir ağda başka ağlara yönlendirme yapabilmesini sağlayan bir yönlendirme noktasıdır. Bu, cihazın yerel ağ dışındaki ağlara erişimini mümkün kılar.
Subnet Mask (Alt ağ maskesi) nedir? Ne işe yarar?
Alt ağ maskesi veya Subnet Mask, bir IP adresinin bir ağdaki bölgesini ve ana bilgisayarların alt ağlarda nasıl organize edildiğini belirten bir 32-bit numaradır. IP Adresinin hangi ağda olduğunu belirlemek için IP Adresi ve Alt Ağ Maskesi (netmask) AND (ve) işlemine tabi tutulur ve ağ adresi hesaplanır.
Yalnızca aynı ağdaki bilgisayarlar haberleşebilir.
Elimizde iki adet IP adresi var ve bunların birbirleri ile haberleşip haberleşemeyeceğini yukarıdaki yöntemi kullanarak hesaplayabiliriz.
IP adresimiz 192.168.1.25 olsun. Subnet Mask ise 255.255.255.0 olsun.
IP Adresi : 11000000.10101000.00000001.00011001
Subnet Mask : 11111111.11111111.11111111.00000000
————————————————————————————–
Sonuç : 11000000.10101000.00000001.00011001
Sonuç değerini decimal’a çevirirsek [192.168.1.25] değerine eşit olacaktır. Diğer cihaz içinde sonuç değeri aynı gelirse bu iki cihaz haberleşebilir demektir.
Buraya kadar geldiyseniz çoğu temel kavrama hakim olmuşsunuzdur. Bundan sonra ise asıl konumuz olan MODERN WEB kısmına geçiş yapacağız. Bilgisayarı açıp herhangi bir web sitesine attığımız isteğe kadar olan süreçte arkada neler gerçekleşiyor acaba?
Modern Web Yapısı:
IP Adresi Alımı:
Bilgisayarımızın güç tuşuna bastığımızda ortalama 10-15 saniyede açılır. Açıldıktan sonra bir ağa bağlandığımızı düşünün. Saniyeler içinde IP adresimizi almış oluyoruz peki arkada işler nasıl yürüyor bakalım.
Burada unutmamamız gereken adım bilgisayar açılırken işletim sistemi arkada IP adresi, alt ağ maskesi, varsayılan ağ geçidi ve DNS sunucu adresleri gibi ağ konfigürasyon bilgilerini alır.
Cihazımız ağa bağlandığında “DHCP Discover” yayını başlatır. DHCP sunucuları, “DHCP Discover” yayınını alır ve bu cihaza bir IP adresi teklifi sunarlar. Bu teklif “DHCP offer” olarak adlandırılır. Cihaz, alınan DHCP teklifini kabul eder ve seçtiği teklifin IP adresini kullanmak istediğini belirten bir “DHCP Request” ile yayın yapar. DHCP sunucusu bu isteği alır ve kabul ederse “DHCP Acknowledgment” gönderir.
Yukarıdaki adımlar eksiksiz bir şekilde gerçekleşirse cihaz IP adresini almış olur.
Modem ve Router:
Modem, ISP (İnternet Servis Sağlayıcısı) ile bağlantınızı sağlar ve size dış dünya ile iletişim kurma yeteneği verir. Eğer evinizde bir router varsa, bu cihaz ev içindeki cihazlar arasında bir ağ oluşturur ve IP adreslerini yönetir. Bu işlemin yapılması içinde en başta bahsettiğimiz Gateway devreye girer.
Default Gateway İnternet servis sağlayıcısı (ISP) tarafından verilen IP adresini, dış ağa bağlanmak isteyen cihazın IP adresiyle değiştirir bu sayede cihaz kendi ağında olmayan cihazlarla iletişime geçebilir.
Şimdi sırada bir siteye istek atmak var. Biz burada google.com üzerinden gideceğiz. IP adresimiz hazır, dış ağa açılmak için Gateway’imiz hazır. Tarayıcımıza (“www.google.com“) yazdığınızda, tarayıcı bu adı IP adresine çevirmek için DNS sunucularına bir sorgu gönderir. DNS, bunu çözümleyerek bize cevap gönderir. Biz de bu sayede siteye gidebiliriz. Bilgisayar için google.com‘un hiçbir anlamı yok, neye karşılık geldiğinin bir anlamı var.
TCP-IP Bağlantısı:
Yukarıdaki gibi sadece istek atınca bağlanamayız işin biraz daha detayına indiğimiz de TCP-IP Protokolü ile karşılaşıyoruz. Peki nedir bu TCP-IP ve ne işe yarar?
TCP bağlantılı ve güvenilir (reliable) bir protokoldür. Bağlantılı bir protokol olduğundan iki bilgisayar hemen iletişime geçemez, birbirlerine oturum için parametre gönderirler. Güvenilir olduğu de gönderilen verinin akıbetinden endişe etmeye gerek yoktur. Çünkü TCP birtakım hata sezme ve düzeltme mekanizmalarıyla verinin kaybolmasına izin vermez.
TCP bir üst katmandan gelen veriyi transfere uygun hale gelebilmesi için belli uzunluktaki segmentlere böler. Bu segmentlerin alıcı tarafta doğru sırayla alınması için her segmente bir sıra numarası verir. Böylece veri transferi sırasında kaybolan, yerine ulaşmayan ya da yanlış sırayla alınan paketler sorun oluşturmaz Ayrıca karşı karşı taraftaki alıcı bilgisayar, aldığı paketler için “tamam, veriyi tam olarak aldım” anlamında “acknowledged” (ACK) paketi göndermek zorundadır.
Şimdi google.com’a istek attığımızda bu protokol nasıl çalışır bakalım. Burada ise TCP/IP protokol suitinin bir parçası olan Three-Way Handshake (Üçlü el sıkışma) devreye girer. Detaylar için bakınız (RFC 793).
Bir siteye giderken Three-Way Handshake
TCP bağlantılarını yakından inceleyelim:
Web tarayıcımızı açarak tekrar https://www.google.com adresine bağlanmak istediğimizi düşünelim. Biz bu adresi yazdıktan sonra bilgisayarımız Google’ın web sunucusuyla bağlantı kurmak için bir oturum açmaya çalışacaktır (Google’ın web sunucusunu bulmak için de yukarıda bahsettiğimiz DNS görev yapar). Bu amaçla sunucuya bir oturum açmak için gerekli olan SYN paketi gönderecektir. Başlangıç sıra numarası (ISN), TCP tarafından atanır ve bu bağlantı için tektir. Karşı taraf yani google’ın sunucusu, bizden gelen SYN paketini alır. Eğer bizim kullanmak istediğimiz port açıksa “http için varsayılan port numarası 80’dir “, bize bir cevap vermek zorunda kalacaktır. Bu durumda Google’un web sunucusu bizim ISN’i aldığımıza dair bir onay mesajını yani ACK bitini ve kendi ISN’ini bildiren bir SYN bitini bir paketle bize gönderecektir. Bu pakette google bize şöyle demektedir: “Bağlantı kurma isteğini ve başlangıç sıra numaranı onaylıyorum (ACK). Sana bu onayla birlikte benim sıra numaramı da içeren bir paket gönderiyorum (SYN). “ İşlemin son aşamasında bilgisayarımız, Google’ın web sunucusuna ISN’ini aldığına dair bir onay mesajı (ACK biti) gönderecektir.
Sonuç:
Sonuç olarak, bilgisayarlarımızın açılmasından başlayarak yerel ağlardaki iletişim süreçlerine, IP adresi alımından DNS çözümlemesine ve ardından TCP/IP protokol suitinin Three-Way Handshake sürecine kadar pek çok temel kavramı ele aldık. Modern web, bu karmaşık ağ altyapısı üzerine inşa edilmiştir ve her web isteği, arkasında bu tür birçok adım ve protokolü içerir.
Bu bilgiler, siber güvenlik uzmanları, ağ mühendisleri ve ilgilenen herkes için önemli bir temel oluşturabilir. Ağ dünyasının bu karmaşıklığını anlamak, siber tehditlere karşı daha bilinçli ve güvenli bir yaklaşım geliştirmek adına önemlidir. Umuyoruz ki bu makale, modern webin nasıl çalıştığına dair merakınızı giderebilmiştir. İlginiz için teşekkür ederim.