17 Temmuz 2019 Çarşamba

DNS over HTTPS Nedir ? DNS over HTTPS (DoH) Kullanımının Firewall Tarafından Engellenmesi



Mozilla Firefox Browserlara DNS over HTTPS özelliği geldikten sonra bazı IT çalışanları bu konuda panik yaptı. Ancak Next Generation Firewall kullanan ve SSL Inspection yapan firmaların bu konuda panik yapmasına pekte gerek yok.
Neden mi ? Biraz temel konular hakkında bilgi vermeye çalışalım daha sonra da Firefox DoH'un şirket clientları tarafından kullanımını engelleyelim.

İlk olarak Domain Name System nedir ? diyerek temel bilgi oluşturmaya çalışalım. URL'ler insanların anlayabileceği şekildeir. www.asimyildiz.net, www.cisco.com vb. Ancak internet üzerindeki haberleşme Layer 3 üzerinden sağlanmaktadır.
Layer 3 IP Addresslerinin bulunduğu katmandır. Yani internet üzerinden gitmek istediğimiz bir URL'in aslında IP Address karşılığı olması gerekmektedir. Bu sebepten kullanıcılar Browserlarına www.cisco.com yazdıklarında arka planda
ilk olarak www.cisco.com ' un IP addressini sorgulayan bir paket çıkar. Bu DNS isteğinin hedefi, bilgisayarımıza DHCP (IP Dağıtımı yapan Server) tarafından tarafından verilen DNS Serverının IP Addressidir. Yani internette dolaşabilmek için
IP Addresslerini öğrendiğimiz bir DNS server vardır. Aşağıdaki Pcap üzerinden DNS Qury ve Reply paketlerini inceleyebilirsiniz. (Şekil-1 ve Şekil-2)







Şekil-1


Şekil-2
                                                                                                                   
Ancak burada dikkatimizi çeken bir durum var. Bu paketler tamamiyle kriptosuz ! Yani DNS isteğini göndermiş olduğumuz DNS Servera istekler ulaşıncaya kadar bizi hedefe ulaştıran bütün network cihazları (Router vb.) gitmek istediğimiz hedef hakkında bilgi sahibi olabilir.
Bu bilgiler daha sonra Reklam şirketleri vb. kuruluşlara satılabilir. Unutmamak gerekiyor ki günümüzde asıl para eden kişisel bilgiler, ilgi alanlarımız vs.
Bunun dışında DNS Spoofing atağa maruz kalabiliriz. Peki DNS Spoofing Atak nedir ? DNS Spoofing Atak, kullanıcının göndermiş olduğu DNS isteğinin hedef IP addressi yerine, hedefe ulaşmak için kullanmış olduğu Router vb. cihaz tarafından
Attacker'ın yönetimindeki DNS Servera yönlendirilmesidir. Amaç nedir ? Amaç, DNS Query'nin içerisindeki "www.cisco.com" un IP Address'i nedir sorusuna başka bir WEB Serverın IP Addressini dönmektir. Böylece kullanıcı www.cisco.com web sitesi yerine
başka bir Server üzerindeki klonlanmış www.cisco.com'un Web sitesine gitmektedir. Kullanıcı Cisco'nun gerçek Web sitesi yerine sahte Web sitesine "username" ve "password" girerek bilgilerini çaldıracaktır. Sahte Web Sayfası "http" ile servis edildiği için de
kullanıcı "Sayfa Güvenilir Değil" vb. hata ile karşılaşmadığı için şüphelenmemiştir.
Başka bir örnek vermek gerekirse, birkaç yıl önce mahkeme tarafından kapatılan siteler için ISPler kendi DNS sunucularında, ilgili site için gelen DNS Query'e yanıt olarak BTK'nın "Bu sayfa erişime kapatılmıştır." yazılı Web Serverının IP Addressini, DNS Reply da yanıt olarak
dönmektedir. ISPlerden almış olduğumuz modemler DNS Server olarak yine ISP'ye ait DNS Serverları kullanıcılara DHCP ile dağıtmaktadır. Kullanıcılar DNSlerini 8.8.8.8, 4.4.2.2 vb. IP'lere çekerek yasaklı sitelere erişmekteydi.
Daha sonra ISPler 8.8.8.8 vb. çok bilinen Public DNSleri kendilerine yönlendirdiler. Burada da BGP Hijacking uygulandı. Yani bilinen Public DNS Server IP Addresslerini ISPler Türkiye içerisinde anons ederken kendi DNS sunucularına
yönlendirme yaptı ve isteklerimi yeniden BTKnın ""Bu sayfa erişime kapatılmıştır."" yazılı WEB Serverına yönlendirildi.
Bu ve benzeri durumlar kullanıcıları DNS over HTTPS'e yönlendir.

Peki DNS over HTTPS nedir ?
Bildiğiniz üzere (Bilmiyor da olabilirsiniz bu sebepten HTTPS yazıma bir göz gezdirmenizi tavsiye ederim.) HTTPS, kullanıcı ve Hedef sunucu arasındaki trafiğin TLS protokolü kullanılarak kriptolanmasını sağlar. Bu kriptolama, L7'deki
Content'in 3. şahıslar tarafından okunmasının önüne geçer. Peki ben HTTPS ile DNS isteklerimi iletirsem ne olacak ? Önceki şekilde (Şekil-1 ve Şekil-2) DNS Query ve Reply'ın kriptosuz olduğunu gözlemlemiştik. Ancak HTTPS üzerinden session kurmuş olduğum bir Servera
DNS Query atarsam yanıtım isteğim hedefe ulaşırken kullanmış olduğum Network cihazları tarafından dinlenemeyecektir. DNS Reply'da benzer şekilde dinlenemeyeceği için erişmek istedğim sayfalara DNS isteklerim 3.kişiler tarafından
loglanamayacak ya da DNS Spoofing benzeri atakların önüne geçilecektir. Yani DoH aslında kullanıcı verilerinin çalınması ihtimalini düşürüyor. (Şekil-3 ve Şekil-4)

Şekil-3

Şekil-4
                                                             
Trusted Recursive Resolver (TRR) nedir ?
TRR Mozilla'nın DoH isteklerini yanıtlayan ve güvenilir olduğunu iddia ettiği Cloudflare'deki Serverlardır. Durum şunu gösteriyor ki Mozilla'ya güvenmek zorundayız ya da kullanmış olduğumuz DoH Tool'una(Simple DNSCrypt) :)
Mozilla kullanıcıyla şöyle bir güven ilişkisi kurmakta;
İstersek TRR IP Addressini defaultta bırakıyor ve Mozilla'nın Cloudflare'deki Serverına, Query'lerini DoH ile yolluyoruz, istemezsek de kendi güvendiği başka bir DoH sunucuyu kullanabiliyoruz. Tabi DNS genelde
UDP çalışan bir protokol ve çok hızlı. DoH ise HTTPS üzerinden çalışıyor ve biraz daha yavaş. Mozilla bu konuda da bir güzellik sağlamış. Kullanıcının yapmış olduğu istek ve yanıtları bir performans grafiğinde değerlendiriyor. Buna göre
kullanıcı başka TRR sunucuya yönlendirilebiliyor. (Şekil-5)

Şekil-5

Mozilla DoH'u şirket içinde neden engellemeliyiz ?
Şirketlerin Web Sitelerini blocklamak için farklı farklı senaryoları olabilir. Bunlardan birincisi şirkette SSL Inspection uygulanmıyorsa şirket https siteleri kendisi anons eder.
Örnek vermek gerekirse, www.youtube.com'a gitmek istiyorum, IP Addressini bana verebilir misin ? şeklinde şirket DNSlerine gelen istekler Authorative DNS sunucuya yönlendirilmek yerine Admin tarafından belirlenen Youtube'un onlarca IP adresinden
sadece birisi kullanıcıya yanıt olarak dönülür. Daha sonra kullanıcı bu yanıta HTTPS isteğinde bulunur ancak hedef IP'ye(Youtube) yapılan bütün istekler Firewall tarafından engellenmiştir ve ilgili kişini Youtube isteği Adminin isteği
üzerine engellenmiştir. Şöyle bir durum var. Youtube ve Google aynı IP addressleri kullandığı için kullanıcın yapmış olduğu bazı www.google.com DNS istekleri Youtube'un engellenmiş olan IP Addresine denk geldiği için kullanıcılar
google erişimlerinde problem yaşayabilir. Bu sebepten www.google.com için de,  DNS Serverımızda başka tek bir IP Address belirlememiz gerekiyor.
Peki kullanıcılar DoH kullansaydı böyle bir engele takılacaklar mıydı ? Tabikide mevcut sistemde takılmayacaklardı.
Ayrıca DNS Firewall kullanan bazı şirketlerde, DNS Firewall'a gelen istekler DNS Firewall tarafından incelenerek (Kriptosuz istekler) kullanıcın erişmek istediği Web Siteleri hakkında bilgi sahibi olunur ve uygunsuz
olduğu tespit edilen sayfalar bu usülle engellenebilir. DoH böyle bir korumayı da bypass etmektedir.
Yukarıdaki sebeplerden dolayı DoH'un Local DNS Serverlara sahip şirketlerde engellenmesi en doğrusu olacaktır.
Peki nasıl ?
İlk olarak DoH isteklerini dinlemek için bir Proxy'e ihitiyacımız var. Wireshark ile de dinleyebiliriz ancak Wireshark'da HTTPS trafikleri dinlemek için yüklenen Private Key ya da PreMasterKeys DoH'un isteklerini decrypt etmemekte...
Bu sebepten Burp Suite'in Proxy özelliğinden faydalanacağız. Client Request'deki tiklerin kaldırılmasını unutmayın. Yoksa DoH isteklerini Burp Suite'de göremeyebilirsiniz. (Şekil-6)

Şekil-6


Daha sonra Mozilla üzerinden Proxy olarak Burp Suite'i göstereceğiz.(Şekil-7)

Şekil-7

Burada dikkat edilmesi gereken HTTPS trafiğin Decrypt edilmesi için BURP Suite'in CA ' ini Trusted ilan etmemizdir! (Şekil-8) Aşağıdaki şekilde sağ üstte görebilirsiniz.

Şekil-8


Artık DNS İsteklerini ClearText olarak görebiliyoruz. Burada dikkatimizi çeken HTTPS Header'da POST: /DNS-QERY ve Accept: application/dns-message (Şekil-9)

Şekil-9


Yani firewall da Content Header'da "dns-message" görürsen blockla diye bir kural yazarsak Mozilla DoH'a karşı artık bizim de bir silahımız olacaktır. Ancak Firewall'umuzda SSL Inspection açık olmak zorunda :) !
Yani HTTPS Traffic dinelenebilir olmalıdır ki Kriptolu Header'ın içeriğini görebilelim. Fortigate Firewall'da aşağıdaki komutla DoH'un önüne geçebilirsiniz.
---
config webfilter content-header
edit 1
set comment ''
config entries
edit ".*dns-message.*"
set action block
---
https://kb.fortinet.com/kb/documentLink.do?externalID=FD31303
PC'min DNS IP addresi 127.0.0.1 şeklinde. Şu an DoH engellendiği için internete gidemiyorum.

Engelleme Sonrası Burp Suite Sonucu (Şekil-10)

Şekil-10


Bir diğer engelleme metoduysa Firewall'a güvenilir bir kaynaktan TRR'leri Dynamic List olarak ekleyerek blocklama yapmaktır.

Başka bir yazıda görüşmek üzere.   


     

1 yorum:

  1. Asım hocam çok güzel anlatmışsınız emeğinize sağlık.

    YanıtlaSil