5 Kasım 2015 Perşembe

DNS Hijacking Nasıl Yapılır?

DNS(alan adı sunucusu)'nun yaptığı iş ulaşılmak istenen alan adının ip adresini döndürmek, ya da ters dns ile yazılan ipnin gerçekten hangi alan adına sahip olduğunu doğrulamaktır.

Web tarayıcımızda ulaşmak istediğimiz sitenin adını yazıp açmak için tıkladığımızda kısaca olanlar:

İlk önce yerelde cache'e, ip adresi var mı diye bakılır. Yoksa sorgu yerel ağdaki DNS sunucuya yollanır.(udp 53) Burada da yoksa yereldeki dns sunucusu kendisinden bir üstteki dns sunucusuna sorgu yapar.(tcp 53) En son bulunan ip istemciye döndürülür.

Peki biz bulunduğumuz ağdaki DNS sorgularına cevap vermek istersek nasıl bir yol izleyeceğiz?

Kendi bilgisayarımda olan Ubuntu üzerine bir dhcp sunucusu, bir http sunucusu, bir de dns sunucusu kurdum. DHCP sunucusu ile sanal makinalarıma ip dağıtıyorum. Yapılandırmalarını düzenledikten sonra, aynı ağda bulunan sanal makinadaki kullanıcı hurriyet.com'a ulaşmak istediğinde dns sorgusu benim dns sunucuma gelecek ve benim istediğim sayfayı hurriyet.com'muş gibi gösteriyor olacak.

Kurulumlar için:

DHCP sunucusu: 

$sudo apt-get install isc-dhcp-server


HTTP sunucusu (Apache2):

$sudo apt-get install  apache2 php5 libapache2-mod-php5 mysql-server-5.5 php5-mysql libapache2-mod-auth-mysql phpmyadmin

DNS sunucusu (bind):

$sudo apt-get install bind9 bind9utils

Yapılandırmalar:
* DHCP için: /etc/dhcp/dhcp.conf içinde:

"option domain-name-servers 192.168.56.1;" diyerek dns sunucu adresimizi tanımlamalıyız.

* Apache2'nin yapacağı iş, dns sonucu gösterilecek sayfayı ulaşılabilir kılmak. Bunun için kullanıcıya göstermek istediğimiz sayfanın web tasarımı kodları .conf dosyasında da yazdığı gibi /var/www/html/ dizini altında olmalı. Ben yeni bir sayfa oluşturmayıp hazır olan index.html sayfasını gösterdim.

* Dns kısmını ayarlarken:

/etc/bind/named.conf.options dosyasının sonuna aşağıdaki kısım eklenmeli. Burada bir zone tanımı yapıyoruz. "hurriyet.com" diye gelen isteklere dns sunucumuzun hangi dosyadan bakacağını söylüyoruz. 

$sudo vim /etc/bind/named.conf.default-zones

zone "hurriyet.com" {
        type master;
        file "/etc/bind/hurriyet.zone";
        allow-update { none; };
};

tanımladığımız /etc/bind/hurriyet.zone dosyasını oluşturmalıyız ve içeriği aşağıdaki gibi olmalı:

$sudo vim /etc/bind/hurriyet.zone






















Son olarak DNS sunucumuzu başlatırken: $sudo /etc/init.d/bind9 start

Sanal makinadan hurriyet.com sayfasına ulaşmak istersem:


$dig hurriyet.com çıktısı:

 
Görüşmek üzere.

5 yorum:

  1. Peki istekte bulunan client ın ip adresini nasıl görebiliriz ?

    YanıtlaSil
  2. tcpdump ile sunucuya gelen paketlere bakabilirsiniz. Bunun için promisc modunu aktif hale getirmek gerekiyor.

    YanıtlaSil
  3. Ayrıyetten dns (bind) sunucu loglarından da çıkarılabilir gibi geldi bana

    YanıtlaSil
  4. Ayrıyetten dns (bind) sunucu loglarından da çıkarılabilir gibi geldi bana

    YanıtlaSil
  5. Peki Aybüke Hanım Bu DNS Hijacking olayını güzel anlatmışsınzı mantık olarak localde göstermişsiniz bir çok arkadaşımızın uzun suredır merakla beklediği ve hala yol bulamadığı remote dns hijacking yani herhangi bir siteyi nasıl dns zehirlenmesi gerçekleştirebiliriz bunun içinde açıklayıcı ve sonuç alınabilen bir makale hazırlamanız münkünmüdür
    Örnekleri her geçen gün görülmekte microsft yahoo google v.s dns zehirlenmesi yaşıyabiliyor ve farklı sitelere yönlendiriliyor ve bunu dünyadaki tüm kullanıcılar görebiliyor.

    bunu nasıl yapabilirz__??

    YanıtlaSil