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 Kasım 2015

Posted In: apache2, bind9, dhcp, dns, http, spoofing, ubuntu, yapılandırma

Linux isc Dhcp Server da 5651 Logu tutma

5651 sayılı yasaya göre toplu kullanım alanlarında dhcp.leases loglarını "ip" "başlangıç zamanı" "bitiş zamanı" "mac-adresi" başlıkları altında tutmamız gerekiyor. bu işlem için yazılmış bir çok uygulamayı inceledim ancak istediğim gibi bir uygulama bulamayınca kendim bir tane yazayım dedim. Uygulamayı python 2.7 de yazmayı seçtim. öncelikle /var/lib/dhcpd/ altındaki dhcp.leases dosyasını inceleyelim.


 The format of this file is documented in the dhcpd.leases(5) manual page.

# This lease file was written by isc-dhcp-4.1.1-P1



lease 192.168.80.255 {

  starts 4 2013/04/25 14:17:15;

  ends 4 2013/04/25 14:17:22;

  tstp 4 2013/04/25 14:17:22;

  cltt 4 2013/04/25 14:17:15;

  binding state free;

  hardware ethernet e4:1f:13:3f:36:e1;

  uid "\001\344\037\023?6\341";

}

lease 172.16.5.134 {

  starts 0 2013/04/28 21:31:05;

  ends 0 2013/04/28 23:11:05;

  tstp 0 2013/04/28 23:11:05;

  cltt 0 2013/04/28 21:31:05;

  binding state active;

  next binding state free;

  hardware ethernet 00:e0:8e:26:67:39;

  uid "\001\000\340\216&g9";

  client-hostname "zaphyros";

}

gördüğünüz gibi lease dosyamızın içinde lease ile başlayan elemanlar ve altında değerler var. öncelikle dosyayı open("dhcpd.leases", "r") kodu ile okuyoruz ve her bir lease'i bir list'e atıyoruz daha sonrada her lease'i başka bir child list'e atıyoruz. Child listimizin 0,1,2,6 numaralı elemanları istediğimiz bilgiler. Bunlarıda belirli bir düzenle ve zaman bilgisi ekleyerek bir text dosyasına yazdıracağız.
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

#Dosyamızı yüklüyoruz
dosya = open("dhcpd.leases", "r")
osman = dosya.read()

#Çift tırnakları ve ihtiyacımız olmayan diğer karakterleri temizliyoruz.
osman = osman.replace('"','')
osman = osman.replace('{',';') # şu şekilde olan satırı "lease 192.168.80.255 {" şöyle yapıyoruz "lease 192.168.80.255 ;" çünkü alt satırlarda ";" karakteri ile split edeceğiz
osman = osman.replace('}','')
osman = osman.replace('P1',';')
osman = osman.replace('hardware ethernet ','')
osman = osman.replace('\n','')
osman = osman.replace(' ','')

#listim listesine dhcp.lease lerimizi alıyoruz
listim =osman.split("lease")

#datetime modülünü yüklüyoruz
import datetime
bugun = datetime.date.today() #bugünün tarihini bugun değişkenine alıyoruz
name = "dhcp_log_zaman_"+str(bugun)+".txt" #text dosyamızın adını belirledik
dosya = open(name,"w") #doyamızı yazılabilir formda oluşturuyoruz

#Dosyamızın görsel olarakta 4 sütundan oluşması için öncelikle başlıklarımızı yazıyoruz
dosya.write(" IP ADRESI\t\t\t\tBASLANGIC\t\t\t\t\tBITIS\t\t\t\tMAC ADRESI\n")
dosya.write("----------------\t\t--------------------------\t\t\t--------------------------\t\t-------------------\n")

#i değişkenini listenin o anki elemanı için j değişkeninide listenin tüm elemanları için tanımladık
i=1
j=len(listim) #listemizin toplam eleman sayısı

#döngümüz başlasın
while i < j:
child=listim[i].split(";") #her bir lease 'i kendi içerisinde child isminde bir listeye ";" karakteri ile ayırıyoruz.
k=0
m=len(child)-2 #bazı lease loglarında 9 eleman varken bazılarında 7 eleman olduğundan toplam eleman sayısını 2 azalttık
#ikinci döngümüz başlasın
while k<m:
print child[0],"\t\t\t",child[1],"\t\t\t",child[2],"\t\t\t",child[6] # Bu satır ile ekranada yazdırabilirsiniz. Bu satıra serverda kullanmaya başlayınca ihtiyacınız olmayacak

dosya.write(child[0]) #ip adresi
dosya.write("\t\t\t") #3 tab boşluk bırakıyoruz
dosya.write(child[1]) #başlangıç zamanı
dosya.write("\t\t\t")
dosya.write(child[2]) #bitiş zamanı
dosya.write("\t\t\t")
dosya.write(child[6]) #mac adresi
dosya.write("\n") #satırbaşı
k+=1
i += 1
dosya.close()
isterseniz uygulamamız için birde cron oluşturalım böylece günlük olarak txt dosyalarımız oluşmuş olacak. Bu dosyalarıda bellirli zaman aralıklarında yedekleyip TİB'in zaman damgası ile saklayabiliriz.

 #crontab -e

 komutunu çalıştırdığımızda gelen editöre aşağıdaki kodu yapıştırırsanız her gün saat 01:00 da uygulama çalışacaktır.

0 1 * * * python /var/lib/dhcpd/dhcp_strap.py

4 Mayıs 2013

Posted In: dhcp, dhcp leases, Gezegen, linux, network

WP Twitter Auto Publish Powered By : XYZScripts.com