SSL ve HTTPS
Taşıma Katmanı Güvenliği(TLS) ve onun öncülü olan Güvenli Soket Katmanı(SSL), bilgisayar ağı üzerinden güvenli haberleşmeyi sağlamak için tasarlanmış şifreleme protokollerdir. X.509 sertifikalarını kullanırlar ve bundan dolayı karşı tarafla iletişime geçeceklerin kimlik doğrulaması asimetrik şifreleme ile yapılır ve bir simetrik anahtar üzerinde anlaşılır. Bu oturum anahtarı daha sonra taraflar arasındaki veri akışını şifrelemek için kullanılır. Bu, mesaj/veri gizliliğine ve mesaj kimlik doğrulama kodları için mesaj bütünlüğüne izin verir. Protokollerin birçok versiyonu ağ tarama, e-mail, anlık mesajlaşma ve internet üzerinden sesli iletişim gibi uygulamalarda yaygın olarak kullanılmaktadır. Bu durumda en önemli özellik iletme gizliliğidir. Bundan dolayı kısa süreli oturum anahtarı, uzun süreli gizli simetrik anahtardan türetilememelidir.
Burada amaç HTTPS olarak bilinen HTTP üzerinden SSL’e saldırmak, çünkü HTTPS SSL’in en yaygın kullanımıdır. Farkında olmayabilirisiniz fakat muhtemelen sıklıkla HTTPS kullanmaktasınız. En popüler e-mail servisleri ve online bankacılık uygulamaları HTTPS kullanmakta. HTTPS olmasaydı herkes sizin ağınız üzerinde paket sniffer ile kullanıcı adınızı, şifrenizi ve diğer normalde gizli olan her şeyi yakalayabilirdi.
Veri sağlamak için HTTPS tarafından kullanılan bu işlem sunucu, istemci ve güvenilir bir üçüncü parti arasındaki sertifikaların dağıtımının güvenli merkezler etrafındadır. Örnek olarak bir kullanıcı gmail hesabına bağlanmaya çalışıyor. Bu kısaca Şekil 1’de basitleştirilmiş birkaç farklı aşamayı kapsar.
Bu işlemin basitçe ana hatları aşağıdaki gibidir:
- Kullanıcının tarayıcısı http://mail.google.com adresine 80 numaralı port üzerinden HTTP’yi kullanarak bağlanmaya çalışıyor.
- Sunucu bir HTTP kodu 302 yönlendirmesi kullanarak müşteriyi bu sitenin HTTPS versiyonuna yönlendirir.
- Kullanıcı https://mail.google.com adresine 443 numaralı port üzerinden bağlanır.
- Sunucu, kullanıcıya dijital imza içeren bir sertifika sağlar. Bu sertifika sitenin kimliğini doğrulamak için kullanılır.
- Kullanıcı bu sertifikayı alır ve güvenilen sertifika yetkililerinin listesine karşı doğrular.
- Şifreli haberleşme ortaya çıkar.
Sertifika doğrulama işlemi başarısız olursa bu web sitesi kimlik doğrulama işleminde başarısız demektir. Bu noktada kullanıcı tipik sunulan ve devam etmenin kendi riski olduğunu söyleyen bir sertifika doğrulama hatası ile karşılaşır çünkü kullanıcı gerçekten websitesine bağlı olmayıp bağlı olduğunu sanabilir.
HTTPS’i Yenmek
Bu süreç son yıllarda iletişim sürecinde başarılı hırsızlık(successful hijacking of the communication process) ortaya çıkana kadar güvenilir olarak kabul edildi. Bu işlem SSL’in kendisini yenmeyi içermez, daha ziyade şifreli ve şifresiz bağlantının arasına köprü kurar.
İyi bilinen bir güvenlik araştırmacısı olan Moxie Marlinspike çoğu varsayımında, SSL’in asla doğrudan karşılaşmadığını söyler. Yani, çoğu zaman bir SSL bağlantısının HTTPS üzerinden başlatılan bir bağlantıdır, çünkü birileri HTTPS’i HTTP’nin 302 yanıt kodu yada login butonu gibi doğrudan siteye HTTPS üzerinden bir link ile yeniden yönlendirilebilir. Fikir de eğer güvensiz bağlantıdan güvenli bağlantıya bir geçiş var ise, bu durumda HTTP‘den HTTPS’e, saldırgan SSL bağlantısı oluşmadan önce aradaki köprüye ortadaki adam saldırısı ile saldırabilir. Bunu daha etkili gerçekleştirebilmek için, Moxie burada kullanacak olan SSLstrip aracını oluşturmuştur.
Bu saldırı kısaca Şekil 3’de gösterilmiştir.
Şekil 3 de özetlenen işlem aşağıdaki gibidir:
- Kullanıcı ve web sunusunun arasındaki bağlantı yakalanmıştır.
- SSLstrip bir HTTPS URL’i ile karşılaştığı zaman HTTP linki ile değiştirir ve eşleşen değişiklikleri tutar.
- Saldıran makine web sunucusuna sertifikaları tedarik eder ve müşteri kimliğine bürünür.
- Trafik güvenli web sitesinden geri alınır ve istemciye geri verilir.
İşlem gayet başarılıdır ve sunucu söz konusu olduğunda o hala istediği SSL trafiğini almaya devam eder ve farkı anlayamaz. Sadece kullanıcı tarafında gözle görülür bir değişiklik vardır oda tarayıcıda HTTPS bayraklı değildir yani farkında olan bir kullanıcı bir şeylerin ters gittiğini anlayacaktır.
SSLstrip Kullanımı
Bu program sadece Linux üzerinden çalışabilmektedir.
SSLstrip’i kullanmadan önce birkaç değişiklik yapılmalıdır. Birincisi kullanılan Linux dağıtımında ip forwarding aktif edilmelidir. Bunun için, echo “1” > /proc/sys/net/ipv4/ip_forward komutunun girilmesi gerekmektedir.
Bundan sonra HTTP trafiğini SSLstrip’in dinlediği porta yönlendirmek gerekmektedir. Bu iptables güvenlik duvarı yapılandırması değiştirilerek yapılır. Bunun için, iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port <listenPort>.
Tabii ki, sizin seçtiğiniz bir rasgele port <listenPort> yerini alabilir. Bunun için, sslstrip -l <listenPort>.
Bu işlemde son aşama olarak hedef Host’un trafiği yakalamak için ARP Spoofing’i yapılandırmaktır. Burada yapılandırma için ARP spoof utility kullanılacaktır. Bunun için, arpspoof -i <interface> -t <targetIP> <gatewayIP>.
Bu komutu kullanarak yerine geçmek için, <interface> bu eylemleri gerçekleştiren ağ arabirimi, (eth0, eth1, vb.), <targetIP> hedef kullanıcının ip adresi ve <gatewayIP> hedefin kullandığı ağ geçidi yönlendiricisinin IP adresi.
Bunlar tamamlandıktan sonra kurulmuş olan herhangi bir SSL bağlantısına saldırılabilir. Daha sonra paket toplayıcı çalıştırılıp önemli olan tüm bilgiler çalınabilir.
SSL Hırsızlığından Korunma
Bu tarz bir saldırıdan korunmak için öncelikle kullanıcının daha dikkatli olması gerekmektedir. Kritik bir uygulamaya(Önemli bilgilerinizin olduğu) giriş yapılacak ise URL üzerinden gidilen adresin HTTPS olduğundan emin olunmalıdır.
Bankalar İnternet bankacılığı uygulamalarında bu tür saldırılara önlem almak amacı ile HTTP desteğini vermezler. Kritik uygulamaya HTTP bağlantısı ile erişilmeye çalışıldığında sayfa erişiminin olmadığı ile alakalı 404 veya 403 hata sayfası gösterilir. Bu sayede SSLStrip gibi saldırılara maruz kalınması engellenmiş olunur.
Anahtarlama cihazları için:
ARP’ın bu eksikliğini, anahtarlama cihazları üzerinde alınacak bazı önlemlerle kapatmak mümkündür.
Anahtarlama cihazlarında IP-MAC adresi eşleşmeleri port bazında tutulmalıdır. Böyle yapıldığı takdirde ilgili porttan farklı bir MAC adresinin gelmesi mümkün olmayacaktır. Bu önleme; “Dynamic ARP Inspection” ya da “Dynamic ARP Protection” denmektedir. Aynı zamanda 0.0.0.0 ya da 255.255.255.255 gibi geçerli olmayan IP adreslerinden gelen ARP istekleri de engellenecektir.
Bir DHCP sunucusunun bulunmadığı bir ortamda (IP adreslerinin statik olduğu) IP adresi – MAC adresi eşleşmelerinin anahtarlama cihazları üzerinde el ile birer birer yapılması gerekmektedir.
KAYNAKLAR
https://www.bilgiguvenligi.gov.tr/ag-guvenligi/ssl-de-araya-girme-saldirilari-ve-guvenlik-onlemleri.html
http://resources.infosecinstitute.com/mitm-using-sslstrip/
http://robospatula.blogspot.com.tr/2013/12/man-in-the-middle-attack-arpspoof-sslstrip.html
http://www.windowsecurity.com/articles-tutorials/authentication_and_encryption/Understanding-Man-in-the-Middle-Attacks-ARP-Part4.html
https://devcentral.f5.com/questions/apm-and-sslstrip-man-in-the-middle-attack
http://www.backtrack-linux.org/