DNS spoofing

DNS spoofing diğer adıyla DNS önbellek zehirlenmesi, Alan Adı Sistemi (İngilizce: Domain Name System) verisini bozarak, DNS çözümleme önbelleğine bozuk verinin yerleştirildiği bir bilgisayar güvenliği saldırısıdır. Ad sunucusunun yanlış sonuç dönmesini sağlar, örneğin IP adresi. Böylece saldırgan, trafiği kendi bilgisayarına (ya da başka bir bilgisayara) yönlendirebilir.

Alan Adı Sistemine Genel Bakış

Bir alan adı sistemi sunucusu, insan tarafından okunabilen bir alan adını (ornek.com gibi) düğümler arasındaki iletişimi yönlendirmek için kullanılan sayısal bir IP adresine çevirir. Normalde, sunucu istenilen çeviriyi bilmiyorsa başka bir sunucuya sorar ve süreç özyinemeli olarak devam eder. Sunucu, performansı artırmak için çevirileri belirli bir zaman süresince hatırlar (önbellekte tutar). Bu, sunucunun aynı çeviri için başka bir istek aldığında, önbellekten silinene kadar, bu isteği başka bir sunucuya sormadan cevaplayabileceği anlamına gelir.
Bir DNS sunucusu yanlış bir çeviri aldığında ve bunu performans optimizasyonu için önbelleğe aldığında, zehirlenmiş olarak kabul edilir ve yanlış verileri istemcilere sunar.  Bir DNS sunucusu zehirlenmişse, trafiği başka bir bilgisayara (genellikle saldırganın) yönlendiren yanlış bir IP adresi verebilir.

Önbellek zehirlenmesi saldırıları

Normalde, ağa bağlı bir bilgisayar, İnternet servis sağlayıcısı (ISS) veya kullanıcının bilgisayarı tarafından sağlanan bir DNS sunucusunu kullanır.  Bir kuruluşun ağında kullanılan DNS sunucuları, daha önce elde edilen sorgu sonuçlarını önbelleğe alarak çözünürlük yanıt performansını artırır. Tek bir DNS sunucusuna yapılan zehirlenme saldırıları, kullanıcıları tehlikeye girmiş sunucu ile direkt olarak veya mümkünse tehlikeye girmiş sunucunun alt sunucuları ile dolaylı olarak etkileyebilir.    
Önbellek zehirlenmesi saldırısı gerçekleştirmek için saldırgan, DNS yazılımındaki kusurlardan yararlanır. Sunucu, yetkili bir kaynaktan geldiğinden emin olmak için DNS yanıtlarını doğrulamalıdır (örneğin, DNSSEC kullanarak); aksi halde, sunucu yanlış girdileri önbelleğe alabilir ve aynı isteği yapan diğer kullanıcılara sunabilir. 
Bu saldırı, kullanıcıları bir web sitesinden, saldırganın seçtiği başka bir web sitesine yönlendirmek için kullanılabilir. Örneğin, saldırgan, DNS sunucusundaki hedef web sitesinin IP adresini, kontrolü altındaki bir sunucunun IP adresi ile değiştirir. Saldırgan daha sonra kendi sunucusundaki dosyaları, hedef sunucudakilerle eşlecek şekilde oluşturur.  Bu dosyalar genellikle bilgisayar solucanları veya bilgisayar virüsleri gibi zararlı içerikler içerir.  Böylece, bilgisayarı zehirli DNS sunucusuna bağlanan bir kullanıcı, orijinal olmayan bir sunucudan gelen içeriği kabul etmeye kandırılır ve kötü niyetli içeriği bilmeden indirir.  Bu teknik ayrıca, banka ve kredi kartı bilgileri gibi kişisel bilgileri toplamak için, orijinal bir web sitesinin sahte bir sürümünün oluşturulduğu kimlik avı saldırılarında da kullanılabilir.

Varyantlar

Aşağıdaki varyantlarda, ns.target.example  sunucusuna giden istekler zehirlenme saldırısına uğrayıp, saldırganın w.x.y.z IP adresine yönlendirilir. Bu saldırılarda target.example için ad sunucusu ns.target.example diyebiliriz.  
Saldırıları gerçekleştirmek için saldırganın, hedef DNS sunucusunu, saldıran tarafın ad sunucularından biri tarafından denetlenen bir alan için istekte bulunmaya zorlaması gerekir.

Hedef alanının ad sunucusunu yönlendirin

DNS önbellek zehirlenmesinin ilk varyantı, saldırganın alanının ad sunucusunu hedef alanının  ad sunucusuna yeniden yönlendirmeyi ve ardından bu ad sunucusuna saldırgan tarafından belirtilen bir IP adresini atamayı içerir. 
DNS sunucusunun isteği: subdomain.attacker.example için adres kayıtları ne? 
subdomain.attacker.example. IN A
Saldırganın cevabı: 
Answer:
(no response)

Authority section:
attacker.example. 3600 IN NS ns.target.example.

Additional section:
ns.target.example.  IN A w.x.y.z 
Güvenlik açığı bulunan bir sunucu, ek A kaydını (IP adresi) ns.target.example için önbellekte saklar ve saldırganın target.example alan adı için gelen tüm sorguları çözmesine izin verir.

NS kaydını başka bir hedef alanına yönlendirin

DNS önbellek zehirlenmesinin ikinci varyantı, asıl istek ile bağlantısı bulunmayan başka bir alanın ad sunucusunu, saldırgan tarafından belirtilen bir IP adresine yönlendirmeyi içerir. 
DNS sunucusunun isteği: attacker.example için adres kayıtları ne? 
subdomain.attacker.example. IN A
Saldırganın cevabı: 
Answer:
(no response)

Authority section:
target.example. 3600 IN NS ns.attacker.example.

Additional section:
ns.attacker.example. IN A w.x.y.z 
Güvenlik açığı bulunan bir sunucu, target.example'ın NS-Kaydı(Ad sunucusu girişi) ile ilgili olmayan otorite bilgilerini önbelleğe alır. Böylece saldırganın target.example alanı için tüm sorguları çözmesine olanak tanır.

Önleme ve azaltma

DNS sunucularına yönelik birçok önbellek zehirlenmesi saldırısı, diğer DNS sunucuları tarafından kendilerine iletilen bilgilere daha az güvenerek ve sorgu ile doğrudan ilgili olmayan DNS kayıtlarını göz ardı ederek önlenebilir. Örneğin, BIND 9.5.0-P1  ve daha üst sürümleri bu kontrolleri gerçekleştirir.  Kriptografik olarak güvenli rastgele sayıları ve DNS isteklerinin geldiği kaynak bağlantı noktasının rastgele olmasını sağlayan, bir 16-bit şifreleme özünü ve kaynak bağlantı noktası, başarılı DNS zehirlenme saldırılarının olasılığını büyük ölçüde azaltabilir. 
Bununla birlikte, yönlendiriciler, güvenlik duvarları, proxy'ler, ağ adresi çevirisi (NAT) gerçekleştiren diğer ağ geçidi cihazları veya daha özel olarak bağlantı noktası adresi çevirisi (PAT), bağlantı durumunu izlemek için kaynak bağlantı noktalarını yeniden yazabilirler.  Kaynak bağlantı noktaları değiştirilirken PAT cihazları, ad sunucuları ve saplama çözümleyicileri  tarafından uygulanan kaynak bağlantı noktası rastgeleliğini kaldırabilir. 
Güvenli DNS ( DNSSEC ), verilerin doğruluğunu belirlemek için güvenilir bir ortak anahtar sertifikasıyla imzalanan şifreli dijital imzaları kullanır. DNSSEC, önbellek zehirlenmesi saldırılarına karşı koyabilir ve 2010 yılında İnternet kök bölgesi sunucularına uygulandı, ancak 2008'den beri İnternet çapında yaygınlaşamamıştır.  
Bu tür bir saldırı, bağlantı kurulduktan sonra uçtan uca doğrulama gerçekleştirilerek taşıma katmanında veya uygulama katmanında hafifletilebilir. Bunun yaygın bir örneği, Taşıma Katmanı Güvenliği ve dijital imzaların kullanılmasıdır. Örneğin, HTTPS (güvenli HTTP sürümü) kullanarak, kullanıcılar sunucunun dijital sertifikasının geçerli olup olmadığını ve bir web sitesinin beklenen sahibine ait olup olmadığını kontrol edebilirler. Benzer şekilde, güvenli kabuk uzaktan oturum açma programı, oturuma devam etmeden önce bitiş noktalarındaki (biliniyorsa) dijital sertifikaları kontrol eder veya güncellemeleri otomatik olarak indiren uygulamalar imzalama sertifikasının bir kopyasını güncelleme ile bilgisayara gömebilir ve yazılım güncellemesinde gelen imzayı gömülü sertifikaya göre doğrulayabilir.