July 31, 2026
Uygulamalı Layer 2 Saldırıları: Layer2PoC #1 : VLAN Hopping
Switch Spoofing and Double Tagging

By Taha Altın
12 min read
Giriş
Ağ iletişiminin temelini oluşturan Layer 2 (Veri Bağlantı Katmanı), yanlış yapılandırmalar veya yetersiz güvenlik önlemleri nedeniyle hâlâ kritik saldırı yüzeylerinden biridir. Özellikle varsayılan ayarlarla çalışan veya güvenlik mekanizmaları etkinleştirilmemiş switch'ler, saldırganların ağ trafiğini manipüle etmesine, dinlemesine veya ağ hizmetlerini kesintiye uğratmasına imkân tanıyabilir.
Bu makale serisinde, EVE-NG laboratuvar ortamında gerçekleştirilen beş farklı Layer 2 saldırısını uygulamalı olarak inceleyeceğiz. Laboratuvar altyapısında Cisco Switch, Cisco Router ve Kali Linux kullanılacaktır. Ayrıca , imaj dosyalarının EVE-NG ortamına aktarılması için WinSCP kullanıldı, cihazlarının yönetimi için Xshell, ağ trafiğinin analiz edilmesi için ise Wireshark kullanılacaktır.
Makale serisi aşağıdaki uygulamalardan oluşmaktadır:
- Layer2PoC #1 — VLAN Hopping
- Layer2PoC #2 — STP Manipülasyonu
- Layer2PoC #3 — CAM Table Overflow
- Layer2PoC #4 — ARP Spoofing
- Layer2PoC #5 — DHCP Starvation & Rogue DHCP
Layer2PoC #1 — VLAN Hopping
VLAN Hopping Saldırısı Nedir?
VLAN Hopping, saldırganın bulunduğu VLAN'ın dışına çıkarak normalde erişememesi gereken başka VLAN'lara ulaşmayı amaçlayan bir Layer 2 saldırısıdır. Bu saldırı, switch üzerindeki hatalı yapılandırmalar veya VLAN etiketleme mekanizmasındaki zafiyetler kullanılır.
Başarılı bir VLAN Hopping saldırısı sonucunda saldırgan, farklı VLAN'lara ait trafiğe erişebilir, paket gönderebilir veya ağ segmentleri arasında yetkisiz iletişim kurabilir. Bu durum, VLAN ile sağlanan farklı ağ ayrımını etkisiz hale getirerek ciddi güvenlik riskleri oluşturabilir.
VLAN Hopping saldırısı en yaygın olarak iki farklı yöntemle gerçekleştirilir:
- Switch Spoofing
- Double Tagging
A) Switch Spoofing
Switch Spoofing saldırısında saldırgan Cisco switch'lerde varsayılan olarak açık gelebilen Dynamic Trunking Protocol (DTP)'yi istismar ederek kendisini bir switch gibi tanıtır.
Eğer hedef switch DTP paketlerini kabul edecek şekilde yapılandırılmışsa, saldırganın bağlı olduğu port access modundan trunk moda geçebilir. Böylece saldırgan, trunk bağlantısı üzerinden taşınan VLAN'lara ait 802.1Q etiketli trafiğe erişebilir ve normalde bulunduğu VLAN'ın dışına çıkabilir.
Laboratuvar Topolojisi
Not:Araçları indirebilmek için Kaliyi internete çıkardık
Not: Yapılandırmalar, laboratuvarın gereksiz detaylarla uzamaması amacıyla yalnızca VLAN Hopping 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.
Switch Konfigürasyonu
! Ayrıcalıklı (Privileged) moda geçiş yapıyoruz.
enable
! Global yapılandırma (Configuration) moduna giriyoruz.
configure terminal
! Switch'e isim veriyoruz. Bu artık bizim SW1 cihazımız.
hostname SW1
! Yanlış yazılan komutlarda switch'in DNS araması yapıp donmasını engelliyoruz (büyük hayat kurtarır!).
no ip domain-lookup
! Kullanıcılar için VLAN 10'u oluşturuyoruz.
vlan 10
! Sunucular için VLAN 20'yi oluşturuyoruz.
vlan 20
! Sunucular için VLAN 30'yi oluşturuyoruz.
vlan 30
! Global yapılandırma moduna geri dönüyoruz
exit
! GigabitEthernet0/0 ve 0/1 arayüzüne (portuna) giriyoruz.
interface range GigabitEthernet0/0-1
! Kali'yi ve PC1'İ VLAN 10 içerisine alıyoruz.
switchport access vlan 10
! Portu aktif hale getiriyoruz.
no shutdown
! PC2'in bağlı olduğu GigabitEthernet0/2 arayüzüne giriyoruz.
interface GigabitEthernet0/2
! PC2'i VLAN 20'a bağlıyoruz.
switchport access vlan 20
! Portu aktif hale getiriyoruz.
no shutdown
! PC3'in bağlı olduğu GigabitEthernet0/3 arayüzüne giriyoruz.
interface GigabitEthernet0/3
! PC3'i VLAN 30'a bağlıyoruz.
switchport access vlan 30
! Portu aktif hale getiriyoruz.
no shutdown
! Yapılandırma modundan tamamen çıkış yapıyoruz.
end
! vlan Kontrolünü sağlıyoruz.
show vlan brief
-VLAN Name Status Ports
- ---- -------------------------------- --------- -------------------------------
-1 default active Gi1/0, Gi1/1, Gi1/2, Gi1/3
-10 VLAN0010 active Gi0/0, Gi0/1
-20 VLAN0020 active Gi0/2
-30 VLAN0030 active Gi0/3
! Yaptığımız tüm bu ayarları cihazın kalıcı hafızasına (NVRAM) kaydediyoruz.
write memory
! Ayrıcalıklı (Privileged) moda geçiş yapıyoruz.
enable
! Global yapılandırma (Configuration) moduna giriyoruz.
configure terminal
! Switch'e isim veriyoruz. Bu artık bizim SW1 cihazımız.
hostname SW1
! Yanlış yazılan komutlarda switch'in DNS araması yapıp donmasını engelliyoruz (büyük hayat kurtarır!).
no ip domain-lookup
! Kullanıcılar için VLAN 10'u oluşturuyoruz.
vlan 10
! Sunucular için VLAN 20'yi oluşturuyoruz.
vlan 20
! Sunucular için VLAN 30'yi oluşturuyoruz.
vlan 30
! Global yapılandırma moduna geri dönüyoruz
exit
! GigabitEthernet0/0 ve 0/1 arayüzüne (portuna) giriyoruz.
interface range GigabitEthernet0/0-1
! Kali'yi ve PC1'İ VLAN 10 içerisine alıyoruz.
switchport access vlan 10
! Portu aktif hale getiriyoruz.
no shutdown
! PC2'in bağlı olduğu GigabitEthernet0/2 arayüzüne giriyoruz.
interface GigabitEthernet0/2
! PC2'i VLAN 20'a bağlıyoruz.
switchport access vlan 20
! Portu aktif hale getiriyoruz.
no shutdown
! PC3'in bağlı olduğu GigabitEthernet0/3 arayüzüne giriyoruz.
interface GigabitEthernet0/3
! PC3'i VLAN 30'a bağlıyoruz.
switchport access vlan 30
! Portu aktif hale getiriyoruz.
no shutdown
! Yapılandırma modundan tamamen çıkış yapıyoruz.
end
! vlan Kontrolünü sağlıyoruz.
show vlan brief
-VLAN Name Status Ports
- ---- -------------------------------- --------- -------------------------------
-1 default active Gi1/0, Gi1/1, Gi1/2, Gi1/3
-10 VLAN0010 active Gi0/0, Gi0/1
-20 VLAN0020 active Gi0/2
-30 VLAN0030 active Gi0/3
! Yaptığımız tüm bu ayarları cihazın kalıcı hafızasına (NVRAM) kaydediyoruz.
write memory
PC Yapılandırmaları
---PC-1 Yapılandırması---
! PC-1'e IP adresi ve varsayılan ağ geçidi atanır
ip 192.168.10.10/24 192.168.10.1 (Bu labda Router veya L3 Sw olmadığı için gatewaye gerek yok)
! Yapılandırma kaydedilir
save
! IP yapılandırmasını görüntüler
show ip
---PC-2 Yapılandırması---
! PC-2'e IP adresi ve varsayılan ağ geçidi atanır
ip 192.168.20.10/24 192.168.20.1 (Bu labda Router veya L3 Sw olmadığı için gatewaye gerek yok)
! Yapılandırma kaydedilir
save
! IP yapılandırmasını görüntüler
show ip
---PC-3 Yapılandırması---
! PC-3'e IP adresi ve varsayılan ağ geçidi atanır
ip 192.168.30.10/24 192.168.30.1 (Bu labda Router veya L3 Sw olmadığı için gatewaye gerek yok)
! Yapılandırma kaydedilir
save
! IP yapılandırmasını görüntüler
show ip
---Kali Linux Yapılandırması---
! Ağ arayüzlerini görüntüler
ip a
! Mevcut IP adresini temizler
sudo ip addr flush dev eth0
! Statik IP adresi atanır
sudo ip addr add 192.168.10.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 add default via 192.168.10.1 (Bu labda Router veya L3 Sw olmadığı için gatewaye gerek yok)
! IP adresini görüntüler
ip addr show eth0
! Routing tablosunu görüntüler
ip route
---PC-1 Yapılandırması---
! PC-1'e IP adresi ve varsayılan ağ geçidi atanır
ip 192.168.10.10/24 192.168.10.1 (Bu labda Router veya L3 Sw olmadığı için gatewaye gerek yok)
! Yapılandırma kaydedilir
save
! IP yapılandırmasını görüntüler
show ip
---PC-2 Yapılandırması---
! PC-2'e IP adresi ve varsayılan ağ geçidi atanır
ip 192.168.20.10/24 192.168.20.1 (Bu labda Router veya L3 Sw olmadığı için gatewaye gerek yok)
! Yapılandırma kaydedilir
save
! IP yapılandırmasını görüntüler
show ip
---PC-3 Yapılandırması---
! PC-3'e IP adresi ve varsayılan ağ geçidi atanır
ip 192.168.30.10/24 192.168.30.1 (Bu labda Router veya L3 Sw olmadığı için gatewaye gerek yok)
! Yapılandırma kaydedilir
save
! IP yapılandırmasını görüntüler
show ip
---Kali Linux Yapılandırması---
! Ağ arayüzlerini görüntüler
ip a
! Mevcut IP adresini temizler
sudo ip addr flush dev eth0
! Statik IP adresi atanır
sudo ip addr add 192.168.10.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 add default via 192.168.10.1 (Bu labda Router veya L3 Sw olmadığı için gatewaye gerek yok)
! IP adresini görüntüler
ip addr show eth0
! Routing tablosunu görüntüler
ip route
Laboratuvarın başlangıç durumunda VLAN 10'daki cihazlar kendi aralarında haberleşebilirken, VLAN 20'de bulunan PC2 ile iletişim kuramamaktadır. Bu durum VLAN izolasyonunun doğru şekilde çalıştığını göstermektedir. Bir sonraki adımda Switch Spoofing saldırısı uygulanarak bu izolasyonun aşılması hedeflenecektir.
Kali (192.168.10.20)
│
├────────────► PC1 (192.168.10.10)
│ ✅ Başarılı
│
└────────────► PC2 (192.168.20.10)
│ ❌ Başarısız
│
└────────────► PC3 (192.168.30.10)
❌ Başarısız
Kali (192.168.10.20)
│
├────────────► PC1 (192.168.10.10)
│ ✅ Başarılı
│
└────────────► PC2 (192.168.20.10)
│ ❌ Başarısız
│
└────────────► PC3 (192.168.30.10)
❌ Başarısız
Switch Spoofing Saldırısının Gerçekleştirilmesi
Laboratuvar ortamı hazırlandıktan ve VLAN'lar arasındaki izolasyon doğrulandıktan sonra Switch Spoofing saldırısını gerçekleştirmeye geçebiliriz. Bu aşamada Kali Linux üzerinde Yersinia aracı kullanılacak ve hedef switch'e DTP paketleri gönderilerek saldırganın bağlı olduğu portun trunk moda geçirilmesi hedeflenecektir. Saldırı başarılı olduğu takdirde, Kali yalnızca bulunduğu VLAN ile sınırlı kalmayacak, trunk bağlantısı üzerinden taşınan diğer VLAN'lara da erişebilecektir.
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ı switch'ler arasındaki Trunk hattında (
Gi0/0arayüzü) çalıştırmamız gerekmektedir.
EVE-NG arayüzünde SW1 üzerindeki
Gi0/0portuna 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ınaicmpyazarak sadece fırlatacağımız paketlere odaklanabilirsiniz. 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.100Aracı çalıştırmak için kali makinesinde şu komutları çalıştırın:
! Paket listesini güncelliyoruz.
sudo apt update
! kurulu olan tüm programları ve paketleri en güncel sürümlerine yükseltİyoruz
sudo apt upgrade
! Yersinia'yı sistemimize kuruyoruz.
sudo apt install yersinia -y
! Yersinia aracını açıyoruz
yersinia -I
! Paket listesini güncelliyoruz.
sudo apt update
! kurulu olan tüm programları ve paketleri en güncel sürümlerine yükseltİyoruz
sudo apt upgrade
! Yersinia'yı sistemimize kuruyoruz.
sudo apt install yersinia -y
! Yersinia aracını açıyoruz
yersinia -I
Adım 1: Yersinia aracı açıldıktan sonra bir tuşa basarak uyarıyı kapatın
Adım 2: Ekran açıldığında g tuşuna basarak protokol listesinden DTP (Dynamic Trunking Protocol) seçeneğini seçiyoruz.
Adım 3–4: DTP ekranındayken x tuşuna basarak kullanılabilir saldırı türlerini listeliyoruz ve listeden 1 tuşuna basarak "enabling trunking" (Trunking'i etkinleştirme) atağını seçiyor ve switch'e sahte DTP join talepleri göndermeye başlıyoruz.
Adım 5: Switchde "show interfaces trunk" ile portun durumunu kontrol ediyoruz
Adım 6: Kalide şu komutları çalıştırıyoruz:
- VLAN 20 için:
! 1. eth0 üzerinde vlan id'si 20 olan sanal arayüzü oluşturuyoruz:
sudo ip link add link eth0 name eth0.20 type vlan id 20
! 2. Oluşturduğumuz arayüzü aktif ediyoruz:
sudo ip link set dev eth0.20 up
! 3. Bu arayüze VLAN 20 bloğundan (192.168.20.0/24) boş bir IP tanımlıyoruz:
sudo ip addr add 192.168.20.111/24 dev eth0.20
- VLAN 30 için:
! 1. eth0 üzerinde vlan id'si 30 olan sanal arayüzü oluşturuyoruz:
sudo ip link add link eth0 name eth0.30 type vlan id 30
! 2. Oluşturduğumuz arayüzü aktif ediyoruz:
sudo ip link set dev eth0.30 up
! 3. Bu arayüze VLAN 30 bloğundan (192.168.30.0/24) boş bir IP tanımlıyoruz:
sudo ip addr add 192.168.30.111/24 dev eth0.30- VLAN 20 için:
! 1. eth0 üzerinde vlan id'si 20 olan sanal arayüzü oluşturuyoruz:
sudo ip link add link eth0 name eth0.20 type vlan id 20
! 2. Oluşturduğumuz arayüzü aktif ediyoruz:
sudo ip link set dev eth0.20 up
! 3. Bu arayüze VLAN 20 bloğundan (192.168.20.0/24) boş bir IP tanımlıyoruz:
sudo ip addr add 192.168.20.111/24 dev eth0.20
- VLAN 30 için:
! 1. eth0 üzerinde vlan id'si 30 olan sanal arayüzü oluşturuyoruz:
sudo ip link add link eth0 name eth0.30 type vlan id 30
! 2. Oluşturduğumuz arayüzü aktif ediyoruz:
sudo ip link set dev eth0.30 up
! 3. Bu arayüze VLAN 30 bloğundan (192.168.30.0/24) boş bir IP tanımlıyoruz:
sudo ip addr add 192.168.30.111/24 dev eth0.30Adım 7: "ifconfig" komutu ile kontrollerimizi sağlıyoruz
Adım 8: "ping -c 4 192.168.20.10" ve "ping -c 4 192.168.30.10" komutlarıyla diğer vlanlara ulaşabiliyor muyuz diye kontrollerimizi sağlıyoruz
Wireshark Analizi
Wireshark üzerinde incelendiğinde Kali Linux tarafından hedef switch'e DTP paketlerinin gönderildiği görülmektedir. Paket içerisinde Cisco'nun DTP için kullandığı multicast MAC adresi (01:00:0c:cc:cc:cc) yer almakta olup, Operating/Administrative: Trunk/Auto bilgisi trunk bağlantısı kurulması için gerçekleştirilen DTP pazarlığını göstermektedir. Bu pazarlık sonucunda hedef switch saldırganın bağlı olduğu portu trunk moda geçirerek Switch Spoofing saldırısının başarılı olmasına neden olmuştur.
Savunma ve Alınabilecek Önlemler
Switch Spoofing saldırısı, büyük ölçüde yanlış veya varsayılan switch yapılandırmalarından faydalanır. Bu nedenle alınacak birkaç temel önlem ile saldırının başarılı olma ihtimali önemli ölçüde azaltılabilir.
- Kullanıcı portlarını Access moda sabitleyin:
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10- DTP'yi devre dışı bırakın:
interface GigabitEthernet0/1
switchport mode access
switchport nonegotiateinterface GigabitEthernet0/1
switchport mode access
switchport nonegotiateB) Double Tagging (Çift Etiketleme)
Double Tagging saldırısında saldırgan, switch'lerin 802.1Q VLAN etiketlerini (tag) işleme mantığındaki ve Native VLAN konseptindeki tasarım açığını istismar eder.
Bu saldırının gerçekleşebilmesi için üç temel şartın aynı anda sağlanması gerekir:
- Saldırganın bağlı olduğu VLAN, switch'ler arasındaki Trunk bağlantısında tanımlı olan Native VLAN (varsayılan olarak VLAN 1) ile aynı olmalıdır.
- Saldırgan ile hedef arasında en az iki adet switch bulunmalıdır.
- Aradaki bağlantı 802.1Q Trunk hattı olmalıdır.
Çalışma Mekanizması
Saldırgan, göndermek istediği Ethernet çerçevesine (frame) üst üste iki adet 802.1Q etiketi ekler:
- Dış Etiket (Outer Tag): Native VLAN (Örn: VLAN 1)
- İç Etiket (Inner Tag): Hedef VLAN (Örn: VLAN 20 — Muhasebe)
Adım Adım Paket İletimi:
- İlk Switch: Saldırgan paketi gönderdiğinde ilk switch dıştaki etiket olan VLAN 1'i okur. Paket Trunk hattından karşıya iletilirken, 802.1Q standardı gereği Native VLAN trafiği etiketlenmeden gönderildiği için switch dıştaki VLAN 1 etiketini söker (strip eder). İçteki VLAN 20 etiketine dokunmadan paketi Trunk hattına basar.
- İkinci Switch: Paket ikinci switch'e ulaştığında, switch paketin başında artık tek bir etiket görür: VLAN 20. Switch bu paketin VLAN 20'den geldiğini varsayar ve doğrudan kurban cihaza ulaştırır.
Böylece saldırgan, araya bir yönlendirici (Router) girmesine gerek kalmadan, tek yönlü (one-way) bir şekilde VLAN sınırlarını aşabilir.
Neden Tek Yönlü (One-Way)?_ Saldırgan hedef cihaza paket gönderebilir (örneğin bir UDP DoS paketi veya ICMP), ancak kurbandan dönen yanıtlar normal routing kurallarına tabi olacağı için saldırgana geri ulaşamaz._
Laboratuvar Topolojisi
SW1 Konfigürasyonu
! Ayrıcalıklı (Privileged) moda geçiş yapıyoruz.
enable
! Global yapılandırma (Configuration) moduna giriyoruz.
configure terminal
! Switch'e isim veriyoruz.
hostname SW1
! Yanlış yazılan komutlarda switch'in DNS araması yapıp donmasını engelliyoruz.
no ip domain-lookup
! Kali (Gi0/2) ve VPC1 (Gi0/1) port aralığına giriyoruz.
interface range GigabitEthernet 0/1 - 2
! Portları erişim (access) moduna çekiyoruz.
switchport mode access
! Portları varsayılan Native VLAN olan VLAN 1'e atıyoruz.
switchport access vlan 1
! Portları aktif hale getiriyoruz.
no shutdown
! Port aralığından çıkış yapıyoruz.
exit
! SW2'ye giden Trunk arayüzüne (Gi0/0) giriyoruz.
interface GigabitEthernet 0/0
! Trunk kapsüllemesini 802.1Q (dot1q) olarak ayarlıyoruz.
switchport trunk encapsulation dot1q
! Portu Trunk moduna alıyoruz (Native VLAN varsayılan olarak VLAN 1 kalır).
switchport mode trunk
! Portu aktif hale getiriyoruz.
no shutdown
! Global yapılandırma modundan çıkıyoruz.
end
! Trunk portlarının durumunu kontrol ediyoruz.
show interfaces trunk
- Port Mode Encapsulation Status Native vlan
- Gi0/0 on 802.1q trunking 1
- Port Vlans allowed on trunk
- Gi0/0 1-4094
- Port Vlans allowed and active in management domain
- Gi0/0 1
- Port Vlans in spanning tree forwarding state and not pruned
- Gi0/0 none
! Yaptığımız ayarları cihazın kalıcı hafızasına (NVRAM) kaydediyoruz.
write memory! Ayrıcalıklı (Privileged) moda geçiş yapıyoruz.
enable
! Global yapılandırma (Configuration) moduna giriyoruz.
configure terminal
! Switch'e isim veriyoruz.
hostname SW1
! Yanlış yazılan komutlarda switch'in DNS araması yapıp donmasını engelliyoruz.
no ip domain-lookup
! Kali (Gi0/2) ve VPC1 (Gi0/1) port aralığına giriyoruz.
interface range GigabitEthernet 0/1 - 2
! Portları erişim (access) moduna çekiyoruz.
switchport mode access
! Portları varsayılan Native VLAN olan VLAN 1'e atıyoruz.
switchport access vlan 1
! Portları aktif hale getiriyoruz.
no shutdown
! Port aralığından çıkış yapıyoruz.
exit
! SW2'ye giden Trunk arayüzüne (Gi0/0) giriyoruz.
interface GigabitEthernet 0/0
! Trunk kapsüllemesini 802.1Q (dot1q) olarak ayarlıyoruz.
switchport trunk encapsulation dot1q
! Portu Trunk moduna alıyoruz (Native VLAN varsayılan olarak VLAN 1 kalır).
switchport mode trunk
! Portu aktif hale getiriyoruz.
no shutdown
! Global yapılandırma modundan çıkıyoruz.
end
! Trunk portlarının durumunu kontrol ediyoruz.
show interfaces trunk
- Port Mode Encapsulation Status Native vlan
- Gi0/0 on 802.1q trunking 1
- Port Vlans allowed on trunk
- Gi0/0 1-4094
- Port Vlans allowed and active in management domain
- Gi0/0 1
- Port Vlans in spanning tree forwarding state and not pruned
- Gi0/0 none
! Yaptığımız ayarları cihazın kalıcı hafızasına (NVRAM) kaydediyoruz.
write memorySW2 Konfigürasyonu
! Ayrıcalıklı (Privileged) moda geçiş yapıyoruz.
enable
! Global yapılandırma (Configuration) moduna giriyoruz.
configure terminal
! Switch'e isim veriyoruz.
hostname SW2
! Yanlış yazılan komutlarda switch'in DNS araması yapıp donmasını engelliyoruz.
no ip domain-lookup
! Kurban cihazımız için VLAN 20'yi oluşturuyoruz.
vlan 20
! VLAN adını Muhasebe/Kurban alanı olarak tanımlıyoruz.
name VICTIM_VLAN
! Yapılandırma modundan çıkıyoruz.
exit
! SW1'den gelen Trunk arayüzüne (Gi0/0) giriyoruz.
interface GigabitEthernet 0/0
! Trunk kapsüllemesini 802.1Q (dot1q) olarak ayarlıyoruz.
switchport trunk encapsulation dot1q
! Portu Trunk moduna alıyoruz (Native VLAN varsayılan olarak VLAN 1 kalır).
switchport mode trunk
! Portu aktif hale getiriyoruz.
no shutdown
! Arayüzden çıkış yapıyoruz.
exit
! Kurbanın (VPC2) bağlı olduğu GigabitEthernet 0/1 arayüzüne giriyoruz.
interface GigabitEthernet 0/1
! Portu erişim (access) moduna alıyoruz.
switchport mode access
! Portu hedef VLAN olan VLAN 20'ye atıyoruz.
switchport access vlan 20
! Portu aktif hale getiriyoruz.
no shutdown
! Global yapılandırma modundan çıkıyoruz.
end
! VLAN yapılandırmasını kontrol ediyoruz.
show vlan brief
-VLAN Name Status Ports
- ---- -------------------------------- --------- -------------------------------
-1 default active Gi0/2, Gi0/3, Gi1/0, Gi1/1
- Gi1/2, Gi1/3
-20 VICTIM-VLAN active Gi0/1
-1002 fddi-default act/unsup
-1003 token-ring-default act/unsup
-1004 fddinet-default act/unsup
-1005 trnet-default act/unsup
! Trunk durumunu ve Native VLAN değerini kontrol ediyoruz.
show interfaces trunk
-Port Mode Encapsulation Status Native vlan
-Gi0/0 on 802.1q trunking 1
-Port Vlans allowed on trunk
-Gi0/0 1-4094
-Port Vlans allowed and active in management domain
-Gi0/0 1,20
-Port Vlans in spanning tree forwarding state and not pruned
-Gi0/0 1,20
! Yaptığımız ayarları cihazın kalıcı hafızasına (NVRAM) kaydediyoruz.
write memory! Ayrıcalıklı (Privileged) moda geçiş yapıyoruz.
enable
! Global yapılandırma (Configuration) moduna giriyoruz.
configure terminal
! Switch'e isim veriyoruz.
hostname SW2
! Yanlış yazılan komutlarda switch'in DNS araması yapıp donmasını engelliyoruz.
no ip domain-lookup
! Kurban cihazımız için VLAN 20'yi oluşturuyoruz.
vlan 20
! VLAN adını Muhasebe/Kurban alanı olarak tanımlıyoruz.
name VICTIM_VLAN
! Yapılandırma modundan çıkıyoruz.
exit
! SW1'den gelen Trunk arayüzüne (Gi0/0) giriyoruz.
interface GigabitEthernet 0/0
! Trunk kapsüllemesini 802.1Q (dot1q) olarak ayarlıyoruz.
switchport trunk encapsulation dot1q
! Portu Trunk moduna alıyoruz (Native VLAN varsayılan olarak VLAN 1 kalır).
switchport mode trunk
! Portu aktif hale getiriyoruz.
no shutdown
! Arayüzden çıkış yapıyoruz.
exit
! Kurbanın (VPC2) bağlı olduğu GigabitEthernet 0/1 arayüzüne giriyoruz.
interface GigabitEthernet 0/1
! Portu erişim (access) moduna alıyoruz.
switchport mode access
! Portu hedef VLAN olan VLAN 20'ye atıyoruz.
switchport access vlan 20
! Portu aktif hale getiriyoruz.
no shutdown
! Global yapılandırma modundan çıkıyoruz.
end
! VLAN yapılandırmasını kontrol ediyoruz.
show vlan brief
-VLAN Name Status Ports
- ---- -------------------------------- --------- -------------------------------
-1 default active Gi0/2, Gi0/3, Gi1/0, Gi1/1
- Gi1/2, Gi1/3
-20 VICTIM-VLAN active Gi0/1
-1002 fddi-default act/unsup
-1003 token-ring-default act/unsup
-1004 fddinet-default act/unsup
-1005 trnet-default act/unsup
! Trunk durumunu ve Native VLAN değerini kontrol ediyoruz.
show interfaces trunk
-Port Mode Encapsulation Status Native vlan
-Gi0/0 on 802.1q trunking 1
-Port Vlans allowed on trunk
-Gi0/0 1-4094
-Port Vlans allowed and active in management domain
-Gi0/0 1,20
-Port Vlans in spanning tree forwarding state and not pruned
-Gi0/0 1,20
! Yaptığımız ayarları cihazın kalıcı hafızasına (NVRAM) kaydediyoruz.
write memoryPC Yapılandırmaları
---PC-1 Yapılandırması---
! VPC1 cihazına VLAN 1 IP bloğundan bir adres atıyoruz.
ip 192.168.1.10/24
! Ayarları kontrol ediyoruz.
show ip
---PC-2 Yapılandırması---
! Kurban cihaza VLAN 20 IP bloğundan bir adres atıyoruz.
ip 192.168.20.10/24
! Ayarları kontrol ediyoruz.
show ip
---Kali Linux Yapılandırması---
!Kali Linux arayüzüne VLAN 1 IP bloğundan adres atıyoruz.
sudo ip addr add 192.168.1.100/24 dev eth0
!Arayüzü aktif hale getiriyoruz.
sudo ip link set eth0 up
!IP adresimizin atandığını doğruluyoruz.
ip a show eth0
---PC-1 Yapılandırması---
! VPC1 cihazına VLAN 1 IP bloğundan bir adres atıyoruz.
ip 192.168.1.10/24
! Ayarları kontrol ediyoruz.
show ip
---PC-2 Yapılandırması---
! Kurban cihaza VLAN 20 IP bloğundan bir adres atıyoruz.
ip 192.168.20.10/24
! Ayarları kontrol ediyoruz.
show ip
---Kali Linux Yapılandırması---
!Kali Linux arayüzüne VLAN 1 IP bloğundan adres atıyoruz.
sudo ip addr add 192.168.1.100/24 dev eth0
!Arayüzü aktif hale getiriyoruz.
sudo ip link set eth0 up
!IP adresimizin atandığını doğruluyoruz.
ip a show eth0
Laboratuvarın başlangıç durumunda Native VLAN (VLAN 1) içerisindeki Kali Linux (Attacker) ve VPC1 cihazları kendi aralarında sorunsuz haberleşebilirken, VLAN 20'de bulunan Kurban (VPC2) cihazı ile iletişim kurulamamaktadır. Bu durum VLAN izolasyonunun ve erişim sınırlarının doğru şekilde çalıştığını göstermektedir. Bir sonraki adımda Double Tagging (Çift Etiketleme) yöntemi kullanılarak bu izolasyonun aşılması hedeflenecektir.
Kali - Attacker (192.168.1.100)
│
├────────────► VPC1 (192.168.1.10)
│ ✅ Başarılı
│
└────────────► Kurban / VPC2 (192.168.20.10)
❌ BaşarısızKali - Attacker (192.168.1.100)
│
├────────────► VPC1 (192.168.1.10)
│ ✅ Başarılı
│
└────────────► Kurban / VPC2 (192.168.20.10)
❌ BaşarısızDouble Tagging Saldırısının Gerçekleştirilmesi
Laboratuvar ortamı hazırlandıktan ve VLAN'lar arasındaki izolasyon doğrulandıktan sonra Double Tagging saldırısını gerçekleştirmeye geçebiliriz. Bu aşamada Kali Linux üzerinde Scapy kütüphanesi kullanılacak ve hedef cihaza üst üste iki adet 802.1Q (VLAN) etiketi eklenmiş özel bir paket gönderilerek VLAN sınırlarının aşılması hedeflenecektir. Saldırı başarılı olduğu takdirde, saldırgan paketini araya bir yönlendirici (Router) girmeden doğrudan farklı bir VLAN'de (VLAN 20) bulunan kurban cihaza ulaştırabilecektir.
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ı switch'ler arasındaki Trunk hattında (
Gi0/0arayüzü) çalıştırmamız gerekmektedir.
EVE-NG arayüzünde SW1 üzerindeki
Gi0/0portuna 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ınaicmpyazarak sadece fırlatacağımız paketlere odaklanabilirsiniz. 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.100Scapy aracını hazırlamak ve çalıştırmak için Kali Linux makinesinde şu komutları çalıştırın:
! Paket listesini güncelliyoruz.
sudo apt update
! kurulu olan tüm programları ve paketleri en güncel sürümlerine yükseltİyoruz
sudo apt upgrade
! Yersinia'yı sistemimize kuruyoruz.
sudo apt install yersinia -y
! Yersinia aracını açıyoruz
yersinia -I! Paket listesini güncelliyoruz.
sudo apt update
! kurulu olan tüm programları ve paketleri en güncel sürümlerine yükseltİyoruz
sudo apt upgrade
! Yersinia'yı sistemimize kuruyoruz.
sudo apt install yersinia -y
! Yersinia aracını açıyoruz
yersinia -I
Adım 1: Yersinia aracı açıldıktan sonra bir tuşa basarak uyarıyı kapatın
Adım 2: Ekran açıldığında g tuşuna basarak protokol listesinden IEEE 802.1Q protokolünü seçiyoruz.
Adım 3: IEEE 802.1Q ekranındayken e tuşuna basarak paketin 802.1Q etiket bilgilerini düzenleyin. Bu aşamada özellikle aşağıdaki alanların doğru şekilde yapılandırılması gerekmektedir:
- VLAN Etiketleri
- VLAN (İlk Etiket / Native VLAN): İlk VLAN etiketi, saldırganın bağlı bulunduğu switch portunun Native VLAN değeriyle aynı olmalıdır. Laboratuvar ortamında Native VLAN 1 olarak yapılandırıldığı için bu alan 0001 olarak bırakılmıştır. Farklı ortamlarda Native VLAN değeri değişiyorsa (örneğin VLAN 10), bu alan ilgili VLAN ID'siyle güncellenmelidir.
- VLAN2 (İkinci Etiket / Hedef VLAN): İkinci VLAN etiketi, paketin yönlendirilmek istendiği hedef VLAN'ı temsil eder. Paket ilk switch üzerinden geçerken dıştaki VLAN etiketi kaldırılır. Kalan ikinci etiket ise sonraki switch tarafından okunarak paketin hedef VLAN'a iletilmesini sağlar. Bu çalışmada hedef ağ VLAN 20 olduğundan bu alan 0020 olarak yapılandırılmıştır.
- IP Adresleri
- Src IP (Kaynak IP): Paket içerisinde kullanılacak kaynak IP adresidir. İstenirse saldırganın gerçek IP adresi, istenirse farklı bir IP adresi kullanılabilir.
- Dst IP (Hedef IP): Hedef VLAN'da bulunan cihazın IP adresidir. Broadcast adresi (255.255.255.255) kullanılabilse de, saldırının doğrulanabilmesi ve ICMP yanıtlarının gözlemlenebilmesi için hedef cihazın gerçek IP adresinin girilmesi daha uygundur.
**Adım 4:**Yapılandırma tamamlandıktan sonra x tuşuna basarak kullanılabilir saldırı türlerini listeliyoruz ve listeden 1 tuşuna basarak "sending 802.1Q double enc. packet" atağını seçiyoruz ve Double Tagging saldırımıza başlıyoruz
Wireshark Analizi
Double Tagging saldırısı başlatıldıktan sonra oluşan trafik Wireshark üzerinde incelenmiştir. Filtre olarak ICMP kullanılarak yalnızca gönderilen Echo (Ping) paketleri görüntülenmiştir.
İncelenen pakette kaynak IP adresinin 10.0.0.1, hedef IP adresinin ise 192.168.20.10 olduğu görülmektedir. Bu durum, saldırganın bulunduğu VLAN'dan farklı bir VLAN'da yer alan hedef sisteme ICMP paketi göndermeye çalıştığını göstermektedir.
Paket ayrıntıları incelendiğinde çerçevenin 802.1Q VLAN etiketi içerdiği görülmektedir. Double Tagging saldırısının çalışma mantığı gereği ilk VLAN etiketi ilk switch tarafından kaldırılırken, ikinci VLAN etiketi korunarak paketin hedef VLAN'a yönlendirilmesi amaçlanmaktadır.
Wireshark ekranında "No response seen" uyarısının görüntülenmesi ise hedef sistemden ICMP Echo Reply paketi alınamadığını ifade etmektedir.
Savunma ve Alınabilecek Önlemler
Double Tagging saldırısı, trunk bağlantılarındaki Native VLAN yapısından yararlanarak VLAN izolasyonunu aşmayı hedefler. Bu nedenle doğru VLAN yapılandırması ve trunk portlarının güvenli şekilde yapılandırılması saldırının başarılı olmasını büyük ölçüde engeller.
- Native VLAN olarak VLAN 1 kullanılmamalıdır.
Varsayılan olarak birçok Cisco switch üzerinde VLAN 1, Native VLAN olarak yapılandırılmıştır. Double Tagging saldırısı da çoğunlukla bu varsayılan yapıdan faydalanır. Bu nedenle kullanılmayan farklı bir VLAN (örneğin VLAN 999) Native VLAN olarak belirlenmelidir.
vlan 999
name Native-VLAN
interface GigabitEthernet0/0
switchport trunk native vlan 999vlan 999
name Native-VLAN
interface GigabitEthernet0/0
switchport trunk native vlan 999- Gereksiz trunk bağlantıları kaldırılmalıdır.
Sadece switchler arasında kullanılacak portlar trunk olarak yapılandırılmalıdır. Son kullanıcıların bağlı olduğu portlar Access Mode olarak bırakılmalı, trunk yetkisi verilmemelidir.
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10- Kullanılmayan VLAN'lar trunk üzerinden taşınmamalıdır.
Trunk bağlantılarında yalnızca ihtiyaç duyulan VLAN'ların geçmesine izin verilmelidir.
interface GigabitEthernet0/0
switchport trunk allowed vlan 10,20interface GigabitEthernet0/0
switchport trunk allowed vlan 10,20- Port Security gibi ek güvenlik mekanizmaları kullanılmalıdır.
Her ne kadar Port Security doğrudan Double Tagging saldırısını engellemese de yetkisiz cihazların ağa bağlanmasını zorlaştırarak ek bir güvenlik katmanı sağlar.
interface GigabitEthernet0/1
switchport port-security
switchport port-security maximum 1
switchport port-security violation shutdowninterface GigabitEthernet0/1
switchport port-security
switchport port-security maximum 1
switchport port-security violation shutdownBu çalışmada VLAN Hopping saldırısının Switch Spoofing ve Double Tagging yöntemlerini uygulamalı olarak inceledik. Saldırıların çalışma mantığını, Wireshark analizlerini ve alınabilecek temel güvenlik önlemlerini ele alarak VLAN Hopping saldırılarının nasıl gerçekleştirilebildiğini ve bu saldırılara karşı nasıl önlem alınabileceğini gördük.
Bir sonraki makalede ise Layer 2 güvenliğini tehdit eden STP (Spanning Tree Protocol) Manipülasyonu saldırısını uygulamalı olarak inceleyeceğiz.