Değerli arkadaşlar, merhaba! Bu yazımızda sizlere, 'HTTP' ve 'HTTPS' protokollerinin ne olduğundan ve aralarındaki farklardan bahsedeceğiz. Ayrıca HTTP bağlantı sağlayan sitelerden özel bilgilerin kısaca nasıl çalındığını göstereceğiz.
Aslında hepimizin, sitelerden aşina olduğumuz HTTP kavramı; bilginin, sunucudan istemciye (kullanıcıya) aktarılmasında rol oynayan bir protokoldür. Açılımı 'Hyper Text Transfer Protocol' şeklindedir ve Türkçe'ye 'Üstün Metin Transfer Protokolü' olarak çevirilebilir. HTTP sayesinde internette gezinebiliyor, internet sitelerini açabiliyoruz. Bunun altında yatan temel sebep ise aslında, sunucular ve istemciler arasındaki veri alışverişlerinin kurallarıdır. İşte, bu kuralların düzenini sağlayan şey HTTP'dir. Ayrıca HTTP, 80 numaralı port üzerinde çalışır.
NOT: Port, bilgisayarlar arası iletişimde iletişim uç noktasıdır.
Eski bloglardan da bildiğiniz üzere arama çubuğuna bir adres yazarak istediğiniz siteye erişirsiniz. Tam bu sırada yaptığınız isteğin tam adı aslında 'HTTP Request' yani 'HTTP İsteği'dir. Bu istek başarılı olduğunda '200 OK' durum kodu gözükür ama başarısız olduğunda başarısızlığın sebebine bağlı olarak siz bir hata kodu gösterilir (500 Internal Server Error gibi). Bu cevabın da tam adı 'HTTP Response' yani 'HTTP Cevabı' şeklindedir.
Şimdi, bu konuyu daha iyi anlamamız için ufak bir Python kodu göstereceğim fakat Python bilmiyorsanız endişelenmeyin; halledeceğiz.
Yukarıdaki kodu anlamanız için sadece biraz İngilizce bilmeniz gerekiyor. İngilizce bilmiyorsanız da endişe etmeyin; açıklıyoruz.
Gördüğünüz kod parçacığında ikinci satırda kırmızı kutu içerisine aldığımız koda bakın 'requests.get("https://blog-cyberworm.com")
'. Burada bu kod satırının yaptığı şey, oradaki URL'ye bir istekte bulunarak o isteğin cevabını almaya çalışmasıdır. Kodu çalıştırdığımızda en aşağıdaki kırmızı kutuda görebileceğiniz üzere '<Response [200]>
' şeklinde bir çıktı aldık. Bunun anlamı ise tam olarak 'Cevap: 200'
şeklindedir. '200' kodunun ne anlama geldiğini zaten söylemiştik. Buna bağlı olarak https://blog-cyberworm.com adresine yolladığımız istek gerçekten de başarılı olmuştur. Siteye girdiğinizde açıldığını görürsünüz ama kod falan göremezsiniz; her şey arkada döner. İşte, az önce arkada dönen olaylardan sadece birini gördünüz. Peki, aynı şeyi çalışmayan bir site için yapacak olursak sizce ne olur?
Aynı yöntemle; artık çalışmayani eski sitemize istek yollamaya çalıştık ama karşılaştığımız kod '404' oldu. Bunun ne olduğunu bilmiyorsak tabii ki Google Amca'ya soracağız; araştırmayı öğrenmek zorundayız. Hemen bakalım:
'404 ne anlama gelir' diye arattığımızda bize, 'istenen sayfanın mevcut olmadığını bildirir' şeklinde bir bilgi geliyor. İşte arka tarafta gerçekleşen sınıflandırmalar, işlemler bu şekildedir. Dilerseniz istek yollama ve cevap alma ile ilgili hazırladığımız bir şema üzerinden devam edelim.
Önce istemci (client), sunucuya bir HTTP Request yollar (yeşil ok). Bunun sonucunda sunucu (server) duruma bağlı olarak bir hata kodu döndürür veya döndürmez yani site ya açar ya da açmaz.
Şimdi, HTTP'nin ne olduğunu öğrendik. Peki, HTTPS ne oluyor?
HTTPS'in açılımı 'Secure Hyper Text Transfer Protocol' yani 'Güvenli Üstün Metin Trasnfer Protokolü'dür. HTTPS, HTTP ile tamamen aynı mantıkta çalışır aralarında sadece ufak ama önemli bir fark vardır. HTTPS, daha güvenli bir internet deneyimi yaşamanıza, veri alışverişi yapmanıza olanak sağlar.
HTTP ile iletilen veriler düz metin olarak geçer yani herhangi bir 'veri şifreleme yoktur' fakat HTTPS, gelip giden verileri şifreleyerek güvenliğimizi sağlamayı amaçlar. Bunu da 'SSL (Secure Socket Layer)' dediğimiz bir teknoloji ile yapar.
SSL kısaca, site adreslerini doğrulayan bir sistemdir ve bütün internet, bu teknolojiyi tanır. SSL, veri iletişimini şifreli bir kanal üzerinden gerçekleştirmeye yarar. SSL, asimetrik şifreleme kullanır. Simetrik ve Asimetrik şifreleme detayları için buyurun: https://blog-cyberworm.com/blog/kriptografi-1
Aralarındaki genel farklara şöyle bir bakalım.
http://
' ile başlar, HTTPS kullanan bir sitenin URL kısmı 'https://
' ile başlar. Şimdi, HTTP güvenli değil, HTTPS güvenli dedik ama bunu teoride bırakamayız. Biz, sıradan bir blog sitesi değiliz.
Öncelikle şunu bilelim: Bir site, genel olarak 'GET
' ve 'POST
' metotlarıyla çalışır. 'GET' metodunun ne olduğunu belirtmiştik. 'POST' metodu ise form, kullanıcı adı ve parola giriş yerleri gibi yerlerden iletilen verilerin taşınmasına yarar. POST'un karşılığı zaten 'göndermek' şeklindedir. Kısaca, GET metodu veri alırken (örneğin sitenin açılması), POST metodu ise veri gönderirken kullanılır (örneğin kredi kartı bilgilerinizi girmek).
Özel bir bilgi girmeniz gerekmeyen sitelerin HTTP kullanması büyük sorunlara yol açmayacaktır (örneğin sitemiz) ama kullanıcı adı, parola, T.C. Kimlik No, telefon numarası gibi bilgileri girecekseniz evet, o sitenin HTTPS kullanması gerekir çünkü bilgileri şifrelemek zorundadır (örneğin Trendyol).
Şimdi, bunları pratikte görelim. HTTP kullanan ama veri alışverişi de sağlayan bir siteye girelim. Sitede kullanıcı adımızı ve parolamızı yazacağız.
Bakalım, bunları çalabilecek miyiz?
Yukarıdaki görselde sağ tarafta, siteye giriş yapmış olan makine ayrı bir sanal windows makinedir yani kurbanımızdır. Sol tarafta terminale sahip olan, yazıların geçtiği kısım ise bizim Kali makinemizdir. Windows makinede, en üst tarafta 'Not Secure' yani 'Güvenli Değil' ifadesi mevcut. Demek ki bu site, HTTPS yerine HTTP kullanıyor. O zaman biz, hemen kurbanımıza ufak bir saldırı düzenleyebilir ve gireceği kullanıcı adı ve parolayı alabiliriz.
Kullanıcı adı ve parolayı az önce belirttiğim gibi girdim (elbette yanlış girdik) ve yukarıda 'ERROR: INCORRECT USERNAME OR PASSWORD' yani 'HATA: YANLIŞ KULLANICI ADI VEYA PAROLA' şeklinde bir uyarı çıktı. Bu ne demek oluyor? Arka tarafta aslında biz siteye POST metodu ile bir veri gönderdik, site bu veriyi kontrol etti ve yanlış olduğunu anlayarak bize uyarı verdi. İşte, tam o sırada biz saldırımızı yapmış, sessizce bekliyor durumdaydık. Bu olay gerçekleşir gerçekleşmez terminal ekranımıza kullanıcı adı ve parola düşmüş oldu. Sol tarafta kırmızı kutu içine aldığım kısımda 'username
' ve 'password
' şeklinde gözüküyor. İşte, HTTP kullanmanın 'veri giriyorsak' ne kadar tehlikeli olabileceğini böylece görmüş oldunuz.
Bu verileri çalmak için illa bir saldırı düzenlemenize gerek yoktur. Çeşitli ağ analiz araçlarıyla da bunu kolaylıkla görebilirsiniz. Bunu göstermemin amacı, birden fazla yöntemle yapılabiliyor olduğunu görmenizi istememdendir. Ayrıca bu araçların veya saldırıların ne olduğundan 'Hacking' kategorisinde bahsedeceğiz, aklınız kalmasın.
Şimdi, analiz aracımızı açıyoruz ve ağı dinlemeye başlıyoruz. O sırada, HTTP bağlantı sağlayan bir siteye kullanıcı adı ve parolamızı girelim.
Evet, verilerimiz gitti. Şimdi programımıza geri dönelim ve nasıl bir trafik akışı olmuş, ona bakalım.
Yukarıdaki görselde kırmızı kutucuk içerisine aldığım satıra bakın. HTTP ve POST yazıyor, gördünüz mü? Biz, verilerin POST ile gönderildiğini biliyoruz o yüzden de bu satıra odaklandık. Hemen bu paketin üzerine çift tıklayarak paketi açıyoruz.
İşte, karşınızda. Kullanıcı adı ve parola kabak gibi önümüze düşüyor. Eğer HTTPS kullanan bir sitede aynı giriş işlemlerini yapmış olsaydık bu bilgiler yine burada olurdu ama şifrelenmiş bir şekilde dururlardı ve bunları okuyamazdık. Elbette HTTPS'i kandırmanın yolları da var ama bu konu, bu blog yazısının konusu değil. Umarım aralarındaki farkı, tehlikeleri öğrenmişsinizdir.
Yayınlanma Tarihi: 2022-07-21 21:38:11
Son Düzenleme Tarihi: 2022-07-25 15:24:10