DNS Nedir ? Zone Transferi İstismarı Nasıl Yapılır ?

Tarihçe

1960’ların sonlarına doğru Amerika’da ilk geniş alan bilgisayar ağı olan ARPAnet kuruldu. Amerika’da bulunan araştırma şirketleri arasında dosya, yazılım ve mail haberleşmesi ile birlikte isim-IP çözümlemesi için sürekli güncel tutulması gereken HOSTS.TXT dosyası oluşturuldu. HOSTS.TXT dosyası SRI-NIC ismi verilen bir bilgisayarda tutuluyordu. Ağa bağlanan her yeni bilgisayar ile bu dosya büyümekteydi. Ayrıca ağda bulunan bilgisayarların çözümleme işlemi için SRI-NIC’ e bağlanmaları gerekti. 1970 lerin sonlarına doğru HOSTS.TXT dosyası sistemin ihtiyaçlarına yetersiz kalmaya başlamıştı.

  Bir bilgisayar üzerinden bütün isim-IP eşleştirmelerini çekme işlemi sistemin ihtiyaçlarına gerekli cevabı veremeyince DNS sistemi ortaya çıktı. 1984 te yayımlanan RFC 882 ve 883 e göre DNS sistemi global olarak geçerli olmakla birlikte yerel olarak ta yönetilebilir hale geldi. Yönetimin dağıtık yapıda olması internet trafiğini hafifletirken yerel olarak yönetilebilmesi sistemin daima güncel olmasına imkan sağlamış oldu.

DNS Nedir ?

  DNS yani Domain Name Server(Alan Adı Sunucusu), tarayıcılarımızın üst kısmında bulunan adres çubuğuna yazdığımız alan adlarının aslında gerçekte bulunan yollarına, kavuşturan bir yapıdır.DNS sunucuları aslında dağıtık bir veritabanına sahiptir ve içerisinde internet adreslerinin IP adresi karşılığını kayıtlı tutmaktadır.Böylelikle adres çubuğuna  kısmına girdiğimiz adreslerin örneğin cyseclab.com adresinin karşılığı için gerekli sistemleri kontrol ederek ip adresini buluyor ve web arayüzünü bizlere göre getiriyor. Aslında,yine araştırma yaparken görmüştüm çok hoşuma gitti, DNS kısaca internet’in telefon defteri olarak tanımlanabilir.

Peki bu sistem nasıl işliyor ?

  İnternet dünyasında milyarlarca websitesi var ve bunların ip adresinin sadece bir yerde saklanması ve buradan her gün belkide milyonlarca insanın milyon kere alan adı aratması sizcede sistemi çok yavaşlatmaz mı ? Demek ki sistem böyle işlemiyor.Gelelim DNS’in nasıl çalıştığına.Tabi öncelikle DNS Sorgusu nedir öğrenelim 🙂

DNS Sorgusu Nedir?

Özyinelemeli (Recursive) Sorgu:

İstemcinin, ağ üzerinde bir kaynağa veya bir internet sitesine bağlanmak üzere ip adresini DNS sunucusuna sorarken yaptığı sorgu tipidir. Bu sorgu olumlu ya da olumsuz cevaplanmak zorundadır. İstemci, sorgusunu dns sunucuya recursive sorgu olarak yapar, dns sunucu da istemcinin yaptığı sorguyu alır ve cevabı iletir. Eğer dns sunucu cevabı bilmiyorsa diğer dns sunucu ya da sunuculara sorarak öğrenir ve sorguyu yapan istemciye cevabı olumlu ya da olumsuz olarak yapar.

Tekrarlamalı (Iterative) Sorgu:

Dns sunucuların kendi aralarında yaptıkları sorgulara denir. İstemcinin dns sunucuya ulaşmak istediği ip adresini sorduğunda dns sunucu bu ip adresini biliyorsa cevap verir. Eğer dns sunucu istemcinin istediği isim cözümlemesini kendi database’inden ya da cache’inden karşılayamıyorsa internette ya da localde bulunan diğer dns sunuculardan ip adresini ister. Bu işlemi istenilen ip adresini bulana kadar sürdürür. İterative sorgu ile sorgu yapılan sunucudan sahip olduğu en sağlıklı cevabı ister.

Çalışma algoritması:

Bir web sitesi adresini tarayıcımızın adres çubuğuna girdiğimizde tarayıcı öncelikle kendi lokal cache’inde ilgili adres için IP’nin bulunup bulunmadığına kayıtlarından bakar. DNS cache’i ipconfig /displaydns komutu ile öğrenilebilir.Lokal olarak istenen tazelikte (ilgili kaydın belirleyeceği süre, 1 saat, 1 gün vb) istenen bilgi bulunamazsa bilgisayardanız System32 dizininde bulunan drivers dizinindeki host dosyasına bakılır.(Linuxta /etc/host yolunda).Bu dosya notepad ile açılırsa çözülmesi istenen adresin karşılığındaki IP adresinin tutulduğunu göreceksiniz. Bu dosyayı değiştirip adresin istediğiniz IP’ye gitmesini sağlamak mümkündür. ayrıca bilgisayarınızda tanımlı olan DNS sunucuya (bu sunucu genellikle internet sağlayıcınızın -ISP- DNS adresi olur) recursive olarak istek atılır. İlgili sunucu, istenen bilgi kendisinde istenen tazelikte varsa isteği direkt cevaplar kendisinde yoksa bir üst sunucuya istekte bulunur. İstenen cevap zincirdeki sunucularda bulunamazsa belleğinde kayıtlı Root(Kök) sorguyu ilgili TLD sunucularına yönlendirir.TLD sunucuları sorguyu ilgili sunuculara yönlendirerek istemciye cevap dönülmesi sağlanır.

Birçok tarayıcı kendi lokal cache’ini tutmaktadır. Chrome için chrome://net-internals/#dns adresinden lokal cache’e ulaşabilirsiniz.

Yukarıda bahsedilen tazelik, DNS isteğine verilen cevapta TTL (time-to-live) olarak bulunur. TTL süresi DNS kaydının sahibi tarafından belirlenir. DNS süresini kısa (5 dakika gibi) vermek, sunucu adresini değiştirdiğinizde kullanıcıların hızlı bir şekilde yeni adrese gelebilmelerini sağlar fakat DNS sunucularına daha fazla yük binmesine ve genel DNS problemlerinden daha fazla etkilenmenize neden olur.

DNS Kayıt Çeşitleri

Aşağıda en önemli DNS kayıt çeşitleri verilmiştir. En çok kullanılanı ve bilineni IP versiyon 4 adresi dönen A kaydı sorgusudur.

A Kaydı:
Adres kaydıdır. Bu kayıt host kayıtlarını ilişkili ip adresiyle eşleştirir. 32 bitlik IPV4 adresini DNS domain ismine eşler.

AAAA Kaydı:
A kaydı ile aynı işi yapar yani hostname leri ip adresleri ile eşler ama ip V6 ile kullanılmak üzere tasarlanmış bir kayıttır. 128 bitlik IPV6 adresini DNS domain ismine eşler.

CNAME Kaydı:
Canonical name kaydıdır. Alan adı kısmındaki alternatif domain ismini canonical name alanındaki birincil DNS domain ismine eşler. Mevcut bir A ya da AAAA kaydını farklı bir isim ile çözmeye yarar. Herhangi bir sunucuya gerçek isminden başka bir isimle erişmek istendiğinde bu kayıt tipi kullanılır.

Ayrıca farklı domainleri tek bir domainde birleştirmek içinde kullanılabilir.

SRV Kaydı:
  Özel bir servisin hangi port ve hangi IP’den verildiğinin bilgisini tutan kayıttır. Örnek olarak KMS (Key Management Service) için DNS’e SRV kaydı girilir ve windows sistemler ürün anahtarı doğrulamasını otomatik olarak gerçekleştirir.

DNS Sunucuları Hakkında Bilgi Toplama:

Nslookup Komutu:
Nslookup komutu DNS’in düzgün çalışıp çalışmadığını  kontrol eder. En basit kullanım alanı makine isminden makine IP adresinin bulunmasıdır.Komutun temel kullanım şekli aşağıdaki gibidir
:

nslookup [seçenek] [sorgu]
nslookup cyseclab.com

DIG Komutu
Dig(domain information groper)Linux sistemlerde DNS kayıtlarına bakmak için kullanılır. DNS adreslerine bakmak istediğiniz siteyi dig komutu ile aratma yapmanız mümkün ve sitede kullanılan tüm DNS kayıtları karşınıza çıkacaktır.

Dig komutu kullanım
ı

  • “dig <alanadi>”  olarak kullanıldığında size domaine bağlı olan A Kaydını göstermektedir.
  • “dig <alanadi> -t NS” olarak kullanıldığı zaman NS kayıtlarını listelemektedir.
  • “dig <alanadi> -t MX”  olarak kullanıldığı zaman MX kayıtlarını listelemektedir.
  • “dig -h” komutu ile dig’in yardım menüsüne erişilebilir.
  • ” dig @ns1.example.com example.com axfr”  zone transfer işleminde kullanılır.

Zone Transferi ve Zafiyeti Nedir ?

  Zone Transferi; Belirli bir işlem sonucunda DNS veritabanının bir sunucudan başka bir sunucuya aktarılmasına denir.Birden fazla domain name server var ise diğer name serverların zone içeriklerini güncel tutabilmesi için Primary DNS serverdan zonu çekip kullanmalarını sağlayan bir özelliktir. Yani DNS serverlar arasındaki database replikasyonun karşılaştırılmasını sağlarız. Zone dosyası , o zone için yapılandırılmış DNS isimlerini içerir.Buradaki konfigürasyon hatasından dolayı biz bütün subdomainleri öğrenip. Bu subdomainler hakkında bilgi toplayabiliriz . Ve Bir saldırı gerçekleştirebiliriz.

Örneğin bir Bing DNS sunucusunu ele alalım.Bir bind dns sunucusundaki zone transfer yapılandırması şu şekildedir.

[important]allow-transfer {"none";};[/importa

Eğer ki siz “none” yerin bir ip adresi verirseniz o ip adresine zone transferi için izin vermiş olursunuz.Yani buradan da anlayacağımız Zone Transferi açığını bu şekilde kapatabiliriz.Şimdi öncelikle zone transferine kapalı bir dns sunucusuna transfer yapmaya çalışalım.

  Gördüğünüz gibi transfer failed yazısını aldık.Eğer ki izin verilen bir sunucuda deneseydik şu sonuçları alacaktık.

# dig @ns1.example.com example.com axfr

; <<>> DiG 9.9.2-P1 <<>> @ns1.example.com example.com axfr
; (1 server found)
;; global options: +cmd
example.com.        3600    IN    SOA    ns1.example.com. hostmaster.example.com. 2009051396 1800 600 86400 3600
example.com.        3600    IN    A    1.1.1.201
example.com.        3600    IN    NS    ns1.example.com.
example.com.        3600    IN    NS    ns2.example.com.
example.com.        3600    IN    NS    nsp1.example.com.
example.com.        3600    IN    NS    nsp2.example.com.
example.com.        3600    IN    NS    ns4.example.com.
example.com.        3600    IN    MX    10 mail.example.com.
example.com.        3600    IN    TXT    “v=spf1 mx ptr ip4:1.1.1.1 +all”
mail.example.com.    3600    IN    A    1.1.1.1
ns1.example.com.    3600    IN    A    1.1.1.2
ns10.example.com.    3600    IN    A    213.139.193.2
ns2.example.com.    1200    IN    A    1.1.1.5
ns2.example.com.    1200    IN    AAAA    2002:5d5e:f903::5d5e:f903
ns20.example.com.    3600    IN    A    1.1.1.5
ns4.example.com.    3600    IN    A    1.1.1.22
nsp1.example.com.    3600    IN    A    1.1.1.3
nsp2.example.com.    3600    IN    A    123.123.123.123
webmail.example.com.    3600    IN    A    1.1.1.25
wiki.example.com.    3600    IN    A    1.1.1.4
wpad.example.com.    1200    IN    A    127.0.0.1
www.example.com.    3600    IN    A    1.1.1.201
example.com.        3600    IN    SOA    ns1.example.com. hostmaster.example.com. 2009051396 1800 600 86400 3600
;; Query time: 33 msec
;; SERVER: 1.1.1.2#53(1.1.1.2)
;; WHEN: Sun Jul 21 01:37:24 2013
;; XFR size: 23 records (messages 23, bytes 1308)

  Gördüğümüz gibi alan adına ait tüm dns bilgilerine erişebildik. example.com wiki kullanıyor örneğin.

  Dns transferini kapatmak alan adının subdomainlerinizin tespit edilemeyeceği anlamına gelmiyor, fierce, dnstalk, theharvester gibi uygulamalar ile subdomain tespit edilebilir ancak %100 başarılı olacak olan yöntem dns transferi ile elde edilecek olan bilgidir.

Yazımı okuduğunuz için teşekkür ederim bir sonraki yazılarda görüşmek üzere 🙂


Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir