DNS sunucuda bölge transferi (zone transfer), organizasyondaki bir DNS sunucusu üzerindeki kayıtların, başka bir DNS sunucusu üzerindeki kayıtlarla replike olmasıdır. Bölge transferinin yapılmasının 2 temel nedeni vardır:
- Yük Dengeleme (Load Balancing): Bir bölgedeki istemci, sorgusunu kendi bölgesindeki DNS sunucusundan gerçekleştirebilmesi sağlanmış olur.
- Hata Toleransı (Fault Tolerance): Bir DNS sunucu hizmet veremezse, diğer DNS sunucu tarafından sorgulara yanıt verilebilir.
Eğer yetkisiz kullanıcıların bölge transferi yapmasına izin verilirse, kötü niyetli kişinin/kişilerin DNS sunucuya girilmiş tüm adres kayıtlarına erişmesi mümkün olacaktır. Böyle bir durumda saldırganlar, o sisteme ait DNS üzerinde kaydı bulunan sistemler hakkında bilgi sahibi olabilir.
Bu yazıda gerçekleştirilecek işlemler 6 başlık altında incelenecektir.
i) Bir etki alanının DNS sunucusu tespit edilecektir.
ii) NMAP dns-zone-transfer betiği, dig, host ve nslookup araçları kullanılarak DNS sunucuda bölge transferi gerçekleştirilecektir
iii) Toplu olarak bölge transferi gerçekleştirilecektir.
iv) Microsoft DNS sunucuda bölge transferinin yapılandırılması incelenecektir.
v) Bind DNS sunucuda bölge transferinin yapılandırılması incelenecektir.
vi) Güvenli şekilde yapılandırılan DNS sunucuda bölge transferi gerçekleştirilmeye çalışılacaktır.
1) Etki Alanının DNS Sunucusunun Tespiti
Bir etki alanının kayıtlarının tespiti için nslookup aracı kullanılabilir. Bulunulan ortamda 50.25.25.128 IP adresi DNS sunucu olarak kullanılmakta ve “www.websayfam.com.tr” sayfasının IP adresinin 150.75.75.175 olduğu görülmüştür. Bu etki alanı içeren DNS sunucusu olarak da ns.websayfam.com.tr olduğu ve bu DNS sunucunun IP adresinin ise 200.100.100.128 olduğu görülmüştür.
nslookup www.websayfam.com.tr
nslookup -type=ns www.websayfam.com.tr
nslookup ns.websayfam.com.tr

2) DNS Sunucuda Bölge Transferinin Gerçekleştirilmesi
200.100.100.128 DNS sunucusu hakkında bilgi edinmek için Nmap betiği kullanılabilir.
nmap 200.100.100.128 -Pn -n –open -sU -sT -p T:53,U:53
nmap 200.100.100.128 -Pn -n –open -sU -sT -p T:53,U:53 -sV -O

“websayfam.com.tr” etki alanı için DNS sunucunun 200.100.100.128 olduğu bulunmuştu. Bu DNS sunucu için bölge transferi gerçekleştirmek için NMAP dns-zone-transfer betiği, dig, host ve nslookup araçları kullanılabilir.
NMAP dns-zone-transfer betiği ile bölge transferi aşağıdaki gibi gerçekleştirilebilir.
nmap 200.100.100.128 -p53 –script dns-zone-trasnfer.nse –script-args dnszonetransfer.domain=websayfam.com.tr

Kullanılan DNS sunucu internette hizmet vermesine rağmen, İç DNS sunucusuymuş gibi iç IP bloklarını (iç ağda kullanılan istemci ve sunucu IP adreslerini) içerdiği de görülmektedir. Ancak dış DNS sunucuda bu şekilde kayıtların olmaması gereklidir.
Not: “Sunucu2” için IP adresi “172.16.11.60” olması gerekirken, yanlışlıkla “172.168.1.60” olarak girilmiştir.
Linux “dig” aracı ile bölge transferi aşağıdaki gibi gerçekleştirilebilir.
dig axfr @200.100.100.128 websayfam.com.tr

Linux “host” aracı ile bölge transferi aşağıdaki gibi gerçekleştirilebilir.
host -t axfr websayfam.com.tr 200.100.100.128

Windows “nslookup” aracı ile bölge transferi aşağıdaki gibi gerçekleştirilebilir.
nslookup
server 200.100.100.128
set type=any
ls -d websayfam.com.tr

Bu araçların yanında dnsenum, dnsrecon, fierce, dnsmap, dnswalk gibi araçlar da kullanılabilir. Diğer araçlar için bakınız:
http://securityblog.gr/1035/dns-transfer-zone/
https://www.intelligentexploit.com/articles/How-to:DNS-Enumeration.pdf
3) Özel Bir Betikle Bölge Transferinin Gerçekleştirilmesi
Bölge transferi için kısa bir betik ile etki alanı için her bir DNS sunucusu bulunabilir ve bu DNS sunucularda bölge transferleri denenebilir.
Örnek olarak “websayfam.com.tr” etki alanı için ek bir DNS sunucusu (ns.geneleacikdns.com) eklenmiş olsun.

Bu etki alanı için DNS sunucularının listesi ve her bir DNS sunucuda bölge transferi gerçekleştirilmesi aşağıdaki gibidir.
EtkiAlani=”web.sayfam.com.tr”
dig NS $EtkiAlani +short | sed -e “s/\.$//g” | while read DnsSunucusu; do echo “Testing $EtkiAlani @ $DnsSunucusu”; dig AXFR $EtkiAlani “@$DnsSunucusu”; done

Not: Ortamda tek bir DNS sunucusu olduğu ve aynı alan adı olduğu için aynı sonuçlar çıkmıştır.
4) Microsoft DNS Sunucuda Bölge Transferinin Yapılandırılması
Bölge transferi DNS sunucuda “Allow Zone Transfers” seçeneği ile yapılandırılabilir.
DNS Konsolu > Sunucu Adı > Forward Lookup Zones > Etki Alanı Adı > Properties > Zone Transfers

Saldırı yüzeyini azaltmak için, iç ve dış DNS sunucularında bölge transferi iptal edilmeli veya sadece belli sunucuların (ikincil DNS sunucularının) bölge transferi gerçekleştirmesi sağlanmalıdır. Bir diğer seçenek ise, “Name Servers” sekmesindeki DNS sunucular için bölge trasnferine izin verilmesidir.
5) Bind DNS Sunucuda Bölge Transferinin Yapılandırılması
Bind DNS sunucuda tüm bölgeler için transferi yapılandırma işlemleri varsayılan olarak /etc/bind/named.conf.options dosyasında gerçekleştirilebilir. Örneğin 100.100.100.100 IP adresi ile bölge transferi aşağıdaki gibi yapılandırılabilir.
options {
…
allow-transfer { 100.100.100.100; };
// …
};
Bunun yanında alan adı transferinin iptal edilme işlem aşağıdaki gibidir.
options {
…
allow-transfer { any; };
// …
};
Eğer bölge transferi ihtiyacı yoksa “none” ile bu durum belirtilebilir.
options {
…
allow-transfer { none; };
// …
};
Eğer sadece belli bir alan için bölge transferi gerçekleştirme ihtiyacı varsa o bölge alanı içerisinde yapılandırma gerçekleştirilebilir. Örneğin; “websayfam.com.tr” etki alanı için /etc/bind/named.conf.local dosyasındaki bir yapılandırma aşağıdaki gibidir:
…
zone “websayfam.com.tr” {
type master;
file “/etc/bind/db.websayfam.com.tr”;
allow-transfer { 100.100.100.100; };
};
…
6) Bölge Transferi Engellendiği Durumda Transfer İşleminin Gerçekleştirilmesi
Bölge transferinin engellendiği durumlarda yetkisiz kişilerce kayıtların elde edilmesi önlenebilir.
Bölge transferi engellendiği durumda Nmap dns-zone-transfer betiği, Linux “host” aracı ve Linux “host” aracı ile bölge transferi denemeleri aşağıdaki gibidir.
nmap 200.100.100.128 -p53 –script dns-zone-trasnfer.nse –script-args dnszonetransfer.domain=websayfam.com.tr
dig axfr @200.100.100.128 websayfam.com.tr
host -t axfr websayfam.com.tr 200.100.100.128

Bölge transferi engellendiği durumda Windows “nslookup” aracı ile bölge transferi denemeleri aşağıdaki gibidir.
nslookup
server 200.100.100.128
set type=any
ls -d websayfam.com.tr

Belirtilen zafiyetin bulunduğu sanal ortamlardan bazıları aşağıdaki gibidir:
- Holynix v2: https://www.vulnhub.com/entry/holynix-v2,21/