DNS Önbellek Zehirlenmesi
Bahtiyar Bircan, Can Bican, TÜBİTAK-UEKAE
01.08.2008
Internet'in temel protokollerinden olan DNS üzerinde çok ciddi bir açık bulunmuştur.
Son günlerde görünürlüğü, etkisi ve alınan önlemleri açısından çokçatartışılan, Dan Kaminsky tarafından bulunan DNS protokol açığı, bellibaşlı ürünler için çözülmüş olmasına rağmen, açıklığı suistimaledebilecek saldırı araçlarının ortaya çıkması ve hala tüm ağ vebilgisayar markaları tarafından çözümlerin sunulmamış olmasındandolayı, daha uzunca bir süre güvenlik açısından bir sorun olmaya devamedecek gibi görünmektedir.
DNS açıklığı bundan üç yıl önce Ian Green adlı bir SANS öğrencisitarafından farkedilmiş olsa da, Dan Kaminsky'nin açığın pratikuygulamasını farkederek yamaların yayınlandığının açıklaması 9 Temmuz2008 tarihine, US-CERT tarafında duyurulmasıysa 7 Temmuz 2008 tarihinedenk gelmektedir. Bundan takriben bir ay öncesinden beri bilinmesinerağmen açıklık gizli tutulmuş, belli başlı üreticiler çözümlerinikoordineli bir şekilde oluşturana kadar herhangi bir açıklamayapılmayarak, açıklığın genel olarak suistimali ihtimali azaltılmıştır.
Internete bağlı tüm DNS sunucularının
www.bilgiguvenligi.gov.tradresinde yayınlamış olduğumuz açıklık ve saldırıyı anlatan makaleyiinceleyerek gerekli önlemlerin alınması tavsiye edilmektedir.
Son günlerde görünürlüğü, etkisi ve alınan önlemleri açısından çokçatartışılan, Dan Kaminsky tarafından bulunan DNS protokol açığı, bellibaşlı ürünler için çözülmüş olmasına rağmen, açıklığı suistimaledebilecek saldırı araçlarının ortaya çıkması ve hala tüm ağ vebilgisayar markaları tarafındançözümlerin sunulmamış olmasından dolayı, daha uzunca bir süre güvenlikaçısından bir sorun olmaya devam edecek gibi görünmektedir.
DNS açıklığı bundan üç yıl önce Ian Green
1 adlı bir SANS öğrencisi tarafından farkedilmiş olsa da, DanKaminsky'nin açığın pratik uygulamasını farkederek yamaların yayınlandığının açıklaması 9 Temmuz 2008
2tarihine, US-CERT tarafından duyurulmasıysa 7 Temmuz 2008
3tarihine denk gelmektedir. Bundan takriben bir ay öncesinden beribilinmesine rağmen açıklık gizli tutulmuş, belli başlı üreticilerçözümlerini koordineli bir şekilde oluşturana kadar herhangi biraçıklama yapılmayarak, açıklığın genel olarak suistimali ihtimaliazaltılmıştır. Bu açıklığın diğer açıklıklara kıyasla farklı yöntemlerkullanarak çözülmesinin en büyük nedenlerinden biri de, Internetaltyapısına arz ettiği tehlikedir: “Sıfırıncı gün saldırıları”nın hemenhemen tüm DNS sunucularını etkileyeceği düşünülürse, Internetaltyapısında etkili olan başlıca markalar yamalarını üretmedenaçıklığın açıklanması, ancak kötü niyetli bir hareket olabilirdi.
Bu yazıda, açıklığın niteliği ve olası tesiri hakkında bilgiverilecek, örnek bir saldırı gösterilecek ve alınabilecek önlemlerbelirtilecektir.
Açıklığın DoğasıDNS (Domain Name System) Internet'teki alan isimlerinin (
www.tubitak.gov.trgibi) IP adreslerine (192.140.80.201 gibi) ve IP adreslerinin alanisimlerine dönüştürülmesinden sorumludur. Bu göreviyle Internet'e bağlıherhangi bir sistemin normal çalışmasında kritik bir bileşendir. DNSprotokolünün tanımı ve gerçeklenmesi RFC 1035'te
4tanımlanmıştır.
DNS kullanılmaya başladığından beri sistemlerde en sık bulunan“önbellek zehirlenmesi”, bu yazınınkonusu olan DNS açıklığının da saldırdığı zayıflıktır. Önbellekzehirlenmesi, bir DNS sunucusuna yetkisiz bir kaynaktan veriyüklenmesine verilen genel isimdir. Hatalı yazılımla, yapılandırmahatalarıyla ya da DNS protokolünün açıklarıyla başarıyla iletilen özgünolmayan veri, sistem performansını artırmak için saldırılan sunucununönbelleğine gelir ve böylece önbellek “zehirlenmiş” olur. Alan adınınsunucusunun IPadresinin ya da alan adının NS kaydının yönlendirilmesine dayanandeğişik yöntemlerle zehirlenme mümkündür. Bir üçüncü yöntem de, gerçekalan adı sunucusu yanıt vermeden, kötü niyetli sunucunun araya girerekyanıt vermesine dayananan, man-in-the-middle (araya girmek) türündenbir saldırıyla DNS sunucusunun önbelleğinin zehirlenmesidir. Bu türsaldırılar, sorgu yapıldığında asıl yanıt vermesi beklenen DNSsunucusundan önce saldırganın yanıt vermesi esasına dayanır.
Bir DNS mesajı, header (başlık), question(soru), answer(yanıt),authority(yetki), additional(ekler)olmak üzere beş bölümden oluşur. Bunlardan konuyla ilgili olan “header”bölümünün ilk 16 biti ID olarak isimlendirilmiş bir “nonce”
5olarak tanımlıdır ve sorguyu düzenleyen program tarafındandoldurulan bir alandır. Bu alan, sorguya verilen yanıta da birebirkopyalanır ve böylece soru-yanıt eşleştirmesi sağlanabilir. Arayagirilerek yapılan önbellek zehirlenmesi saldırıları, bu sayının tahminedilmesine dayanır.
Önce Ian Green'in farkettiği ve Dan Kaminsky'nin farkındalığı artırarakuygulama seviyesinde çözümleri koordine ettiği açıklık, kullandığıyöntemler ve zafiyetler açısından yeni olmamasına rağmen, olasınonce'ların azlığı, sorguların kaynak kapılarının rastgele seçilmemesiya da yetersiz rastgelelikte seçilmesi gibi durumların bir aradaaraştırılması sonucunda, etkili bir yöntem bulunduğunun görülmesindensonra açıklık olarak belirlenmiştir.
Aşağıda gösterilen örnek bir saldırı sonrasında saldırılan DNSsunucusu sorgulara hatalı yanıtlar verebilir ve kullanıcılarıistedikleri sunucular yerine saldırganın istediği sunucularaaktarabilir. Bunun sonucunda web trafiği, e-posta iletileri ve diğerönemli ağ üzerinden iletilen veriler saldırganın kontrolündekisistemlere yönlendirilebilir.
Kullanılan DNS sunucusunun açıklığının bulunup bulunmadığı Dan Kaminsky'nin sayfasından (
http://www.doxpara.com/) kontrol edilebilir.
Örnek Bir Saldırı1. Saldırı öncesi keşif :(1) 192.168.1.26 IP adresli saldırgan hedef DNS sunucu üzerinden
www.ntvmsnbc.com sayfasını sorgular.
(2) DNS sunucu ,
www.ntvmsnbc.com alan adı kendi üzerinde olmadığı için ntvmsnbc.com alanadından sorumlu olan ns1.ntvmsnbc.com sunucusundan alan adını sorgular.
(3) ns1.ntvmsnbc.com sunucusu,
www.ntvmsnbc.com alan adı için geçerli olan 88.255.82.100 IP adresini yanıt olarak hedef DNS sunucusuna döndürür.
(4) DNS sunucusu da saldırgana
www.ntvmsnbc.comalan adının IP adresi olan 88.255.82.100 adresini döndürür. Buradadikkat edilmesi gereken hedef DNS sunucusunun saldırgan ilehaberleşirken istek ve cevaplarda aynı kaynak portu (6134) kullanmasıve tahmin edilebilir TXID (0x6749) değerini kullanmasıdır. Hedef DNSsunucusundan gelen cevabın geçerli olması için istekte bulunurkenkullanılan TXID değerinin cevap kısmında da aynen dönmesigerekmektedir.
Yapılan sorgulamanın dig çıktısı aşağıdadır. :
Bu şekilde DNS sunucuda açık olduğu tespit edildikten sonra asıl saldırıya geçiyoruz.
2. Saldırı Saldırı 3 adımda gerçekleştirilecektir.
2.1 Birinci aşamada saldırgan hedef DNS sunucuya ntvmsnbc.comalan adına ait bir çok alt alan ismi (abc1.ntvmsnbc.com ,abc2.ntvmsnbc.com ….. xyz9832.ntvmsnbc.com ) için DNS sorgusugöndermektedir. Burada amaç hedef sunucunun ntvmsnbc.com alan adı içinyetkişi sunucuya birçok sorgudabulunmasını sağlamaktır.
2.2 İkinci aşamada hedef DNS sunucu tüm alt alan isimleri içinns1.ntvmsnbc.com sunucusuna istekte bulunmaktadır. Ns1.ntvmsnbc.comsunucusu da tüm alanlar için geri cevaplarda bulunmaktadır. Fakat aynızamanda saldırgan da hedef DNS sunucuya sanki ns1.ntvmsnbc.comsunucusundan geliyormuş gibi cevaplar göndermektedir. Bu cevaplarda www.ntvmsnbc.com alan adı için IP adresini kendisi göstermektedir ve her seferinde TXID alanını arttırarak tahmin etmeye çalışmaktadır.
Nihayet abc4.ntvmsnbc.com alan adı için saldırganıngönderdiği cevap paketlerinde TXID alanı tahmin edilmekte ve hedef DNSsunucu bu cevabın gerçek ns1.ntvmsnbc.com sunucusundan geldiğini Kabul etmektedir. Bu sayede saldırgan hedef DNS sunucusunun belleğini zehirlemiş oluyor.
2.3 Üçüncü adımda kurban zehirlenen DNS sunucuna www.ntvmsnbc.com adresini sorgulamaktadır (1) . DNS sunucu da önbelleğinde www.ntvmsnbc.comadresine ait kayıt olduğu için gerçek ns1.ntvmsnbc.com sunucusunasormadan zehirlenmiş önbelleğindeki 192.168.1.26 adresini cevap olarakvermektedir (2) . Bu durumdan habersiz kurban gerçek www.ntvmsnbc.com sayfası yerine saldırganın oluşturduğu tuzak sayfayı ziyaret etmektedir. (3)
Saldırı yapıldıktan sonraki dig çıktısı aşağıdadır.
TedbirlerSistemlerin YamanmasıSistemlerde recursive(özyinelemeli) DNS sunucularının hepsinin yamanması gerekmektedir. http://www.bilgiguvenligi.gov.tr/index.php?option=com_content&task=view&id=277&Itemid=16adresindeki TR-CERT ve http://www.kb.cert.org/vuls/id/800113adresindeki US-CERT uyarısında etkilenen sistemler, yamaların mevcutolup olmadığı ve nasıl edinileceği üzerine bilgi bulunmaktadır. BaştaADSL modem, access point cihazları gibigömülü sistemlerde güncellemenin donanımca mümkün olmaması ya dagüncelleme imkanının bulunmaması ve bazı markaların henüz sorununçözümünde adım atmamasından dolayı, yamanın mümkün olmadığı durumlarda,aşağıda belirtilen önlemlerin uygulanabilirliği gözden geçirilmelidir.
Erişimin EngellenmesiYamaların uygulanamadığı durumlarda, sunuculara özyinelemeli sorguyapacak sistemler sınırlandırılarak saldırı kaynakları azaltılabilir.Fakat bu türden bir önlemdensonra bile sorgulamaya izni olan sistemlere erişimi olan saldırganlaraçıklığı kullanarak önbellek zehirlemesi saldırısı yapabilirler.
Trafiğin FiltrelenmesiSaldırının gerçekleşmesi için IP spoofing (aldatma) tekniğikullanılması gerektiğinden, sahte IP adreslerinin filtrelenmesigerekmektedir. Filtrelemenin ayrıntılarıiçin önerilebilecek RFC belgeleri aşağıdadır:
- http://tools.ietf.org/html/rfc2827 – RFC2827
- http://tools.ietf.org/html/rfc3704 – RFC3704
- http://tools.ietf.org/html/rfc3013 – RFC3013
Yerel DNS Önbelleği KullanılmasıErişimin ve trafiğin engellenmesi gibi önlemlerle birlikte, hemistemci hem de sunucu tarafında yerel önbellekler kullanılarak,Internet üzerindeki açıklığı olan sunuculara yapılan saldırılardanyerel ağdaki kullanıcıların en az düzeyde etkilenmesi sağlanmalıdır.
Özyinelemenin KapatılmasıGüvenilmeyen sistemlerden gelen, özyineleme gerektiren sorgular engellenmelidir.
NAT/PAT UygulanmasıPort Address Translation (Kapı adresi tercümesi) uygulayan cihazlargenellikle bağlantı durumunu izleyebilmek için kaynak kapı adreslerinideğiştirirler. NAT/PAT uygulamasında kullanılan bazı gömülü cihazlar,saldırıya karşı önerilen kaynak kapısının rastgeleliğinin uygulamatarafında artırılmasıyla kazanılan korumayı, kapı adreslerini yenidenve daha etkisiz bir şekilde değiştirerek azaltabilir. Bu yüzden ağüzerindeki NAT/PAT uygulamaları gözden geçirilmelidir.
Buna rağmen, uygun bir NAT uygulaması, rastgele kapı atanmasınısağlayabilir ve yamanmamış DNS sunucuları için de bir çözümoluşturabilir. Iptableskullanarak önerilen bir çözüm
http://cipherdyne.org/blog/2008/ ... -with-iptables.html adresinde bulunabilir. OpendBSD PF kullanılarak önerilen bir çözüm de
http://blog.spoofed.org/2008/07/ ... soning-with-pf.html adresinde bulunabilir.
DNS trafiğinin başka bir sunucuya yönlendirilmesi DNS açıklık bulunan sunucular yamanamıyorsa tüm sorguları yamalarıuygulanmış ve açıklıkları kapatılmış başka bir sunucuya yönlendirilmesisağlanabilir. Yaygınkullanılan Microsoft DNS ve BIND sunucuları için bu işlemin nasılyapılacağı aşağıdaki adreslerden bakılabilir :
http://www.isc.org/index.pl?/sw/bind/docs/forwarding.phphttp://technet2.microsoft.com/wi ... 21033.mspx?mfr=trueDNSSEC kullanımıDNS tarafından sunulan bilgilerin güvenli hale getirilmesi için, DNSverisinin kaynağını doğrulayan, ve veri bütünlüğünü sağlayangenişletmeler içeren DNSSEC, bu vebenzeri saldırılara karşı en etkili çözüm olarak görülmekle birlikte,henüz bir standart olarak yaygınlaşmamıştır. Buna rağmen, DNSSECkullanan iki ağ arasında güvenli veri paylaşımının ve olasısaldırıların önüne geçilmesi mümkündür. DNSSEC uzantıları hakkında dahageniş bilgiye
http://www.dnssec.net/ adresinden ulaşılabilir.
SonuçInternetin sağlıklı çalışması için kritik protokollerden olan DNS inuygulanmasında çok ciddi bir açıklık bulunmuştur. Bu açıklık sayesinderecursive(özyinelemeli) özelliği bulunan DNS sunucular önbellekzehirlenmesi saldırısına maruz kalabilmektedir. Bu açıklığı kullananaraçların da ortaya çıkması ile durum daha da ciddi bir hal almıştır.Başarılı bir saldırı sonrasında bu DNS sunucuları kullanan kurbanlaristekte bulundukları sayfalar yerine saldırganların belirlemiş olduğusayfalara yönlendirilebilmektedirler. Açıklık kapatılması için yaygınyazılım üreticileri tarafından çıkartılan yamaların uygulanması tavsiyeedilmektedir. Yamalar uygulanamiyorsa veya yama mevcut değilse busunuculara erişimin kısıtlanması , yerel (internetten doğrudanulaşılamayan ) DNS önbelleğinin kullanılması , DNS sunucuları önünesaldırıyı kesebilecek Linux Iptables veya OpenBSD PF yerleştirilmesiveya tüm trafiğin yamanmış, açıklığı olmayan bir sunucuyayönlendirilmesi tavsiye edilmektedir.
1Bkz:
http://www.sans.org/reading_room/whitepapers/dns/1567.php, “DNS Spoofing by The Man In The Middle”
2Bkz:http://www.doxpara.com/?p=1162, “An Astonishing Collaboration”
3Bkz:http://www.kb.cert.org/vuls/id/800113, “Multiple DNS implementations vulnerable to cache poisoning”
4Bkz:ftp://ftp.rfc-editor.org/in-notes/rfc1035.txt“Domain Names – Implementation and Specification”
5Nonce:“number used once” (bir kere kullanılan numara) deyimininkısaltması. Genellikle yetkilendirme sırasında kullanılan ve ağtrafiğinin tekrarlanarak iletişimin ele geçirilmesine dayanansaldırıları engellemeye yarayan rastgele sayılara verilenisimdir.