第235篇:VLAN Hopping 攻击与防护

关键词:VLAN Hopping、双标签攻击、交换机端口安全、802.1Q Trunk、Native VLAN、DHCP Snooping

一、引言

VLAN(Virtual Local Area Network)将物理交换机划分为多个逻辑广播域,是二层网络隔离的基础。理论上,不同VLAN之间的通信必须经过三层设备(路由器或三层交换机),无法直接互通。

然而,VLAN Hopping(VLAN跳跃)攻击利用了802.1Q协议的实现细节,使攻击者能够从自身所在的VLAN跨越到目标VLAN中,绕过VLAN隔离。这种攻击不需要破解加密或获取管理员权限,仅需要掌握802.1Q帧格式即可实施。

VLAN Hopping攻击常与第234篇的DHCP欺骗、ARP欺骗等攻击组合使用,构成完整的二层攻击链。

二、核心概念

2.1 VLAN Hopping攻击类型

攻击类型 原理 要求
双标签攻击(Double Tagging) 构造带两个802.1Q标签的帧,利用Native VLAN去标签 攻击者端口与Trunk链路在同一交换机或相邻交换机
CDP/LLDP欺骗 利用交换机发现协议协商端口为Trunk模式 目标交换机启用了CDP/LLDP自动协商
VLAN鱼叉(VLAN Fishing) 暴力扫描所有VLAN ID,找出含目标网络的VLAN 端口配置为Trunk或动态协商为Trunk
ARP欺骗配合 VLAN Hopping后在目标VLAN进行ARP欺骗 已实现VLAN Hopping

2.2 802.1Q帧格式回顾

802.1Q标签插入在源MAC地址和EtherType之间:

字段 长度 说明
目的MAC 6字节 目的MAC地址
源MAC 6字节 源MAC地址
802.1Q Tag 4字节 TPID(0x8100) + TCI(PCP+DEI+VLAN ID)
EtherType 2字节 上层协议类型
载荷 可变 IP报文或其他数据

2.3 Native VLAN概念

在802.1Q Trunk链路上,Native VLAN的帧不携带802.1Q标签(Untagged),其他VLAN的帧携带标签。这是VLAN Hopping攻击的关键利用点。

场景 Native VLAN帧 非Native VLAN帧
发送 不带802.1Q标签 带802.1Q标签
接收 视为Native VLAN 从标签中读取VLAN ID

三、技术细节

3.1 双标签攻击(Double Tagging)详细过程

双标签攻击是整个VLAN Hopping中最经典的攻击方式。攻击者发送一个带有两层802.1Q标签的帧:

双标签攻击(Double Tagging)详细过程 - 图示

双标签攻击的关键条件: 1. 攻击者连接的交换机端口必须是Trunk模式或可学习到Trunk(通过CDP/LLDP) 2. Native VLAN必须与攻击者所在VLAN不同 3. 外层标签VLAN必须匹配Trunk链路的Native VLAN(或者攻击者端口为Trunk模式)

3.2 CDP/LLDP欺骗攻击

Cisco Discovery Protocol(CDP)和Link Layer Discovery Protocol(LLDP)是交换机之间自动发现邻居的设备发现协议。

协议 厂商 说明
CDP Cisco私有 自动交换设备信息、端口类型
LLDP IEEE 802.1AB 多厂商通用的设备发现协议

攻击者通过发送伪造的CDP/LLDP报文,欺骗交换机将端口协商为Trunk模式。一旦端口成为Trunk,攻击者即可发送带802.1Q标签的帧,访问所有VLAN。

3.3 VLAN钓鱼(VLAN Fishing)

当交换机端口被配置为Trunk模式后,攻击者可以通过发送不同VLAN ID的标签帧来"钓鱼":

  1. 构造VLAN ID从1到4094的802.1Q标签帧
  2. 逐VLAN发送ARP请求
  3. 哪个VLAN有响应,说明该VLAN中存在活跃设备
  4. 针对目标VLAN发起进一步攻击

3.4 VLAN Hopping与二层攻击链

VLAN Hopping通常不是独立的攻击,而是作为更复杂攻击链的入口:

VLAN Hopping与二层攻击链 - 图示

四、实战配置/案例分析

4.1 华为交换机VLAN安全防护配置

# =============================
# 接入层交换机安全加固
# =============================

# 1. 全局关闭CDP/LLDP(如不需要)
# 关闭CDP(Cisco设备)
# no cdp run

# 关闭LLDP(如不需要设备发现)
lldp disable

# 2. 接入端口强制为Access模式(最关键)
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 10
quit

# 批量配置所有接入端口
port-range GigabitEthernet 0/0/1 to 0/0/48
 port link-type access
 port default vlan 10
quit

# 3. 修改Native VLAN(非默认VLAN 1)
interface GigabitEthernet0/0/48
 port link-type trunk
 port trunk allow-pass vlan 10 20 30
 # 修改Native VLAN为非默认值
 port trunk pvid vlan 999
quit

# 4. 配置端口安全(MAC限制)
interface GigabitEthernet0/0/1
 port-security enable
 port-security max-mac-count 1
 port-security protect-action shutdown
 # 关闭后发送告警
 quit

# 5. 关闭不用的端口
interface GigabitEthernet0/0/47
 shutdown
 description UNUSABLE-CLOSED
quit

# 6. 启用端口隔离(Port Isolation)
# 同一VLAN内的端口相互隔离,只能通过三层网关通信
# 华为VRP端口隔离配置
port-isolate enable
interface range GigabitEthernet 0/0/1 to 0/0/24
 port-isolate group 1
quit
# 网关端口允许与隔离端口通信
interface Vlanif 10
 port-isolate output-disable
quit

# 7. 启用BPDU Guard(防止STP攻击配合)
stp enable
interface GigabitEthernet0/0/1
 stp edged-port enable
 stp bpdu-protection
quit

# =============================
# 核心层交换机配置
# =============================

# 8. Trunk端口仅允许必要的VLAN
interface 100GE1/0/1
 port link-type trunk
 # 仅允许必要的VLAN通过
 port trunk allow-pass vlan 10 20 30
 # 移除VLAN 1(管理VLAN不应在Trunk上)
 port trunk pvid vlan 999
quit

# 9. 验证配置
display port link-type interface GigabitEthernet0/0/1
display vlan
display stp interface GigabitEthernet0/0/1

4.2 故障排查案例:财务VLAN数据被窃取

故障现象:安全审计发现,财务VLAN(VLAN 20)中的文件服务器有异常连接,来源IP属于办公VLAN(VLAN 10)。

排查步骤:

  1. 检查交换机端口配置
# 检查疑似攻击端口配置
display current-configuration interface GigabitEthernet0/0/15

发现GE0/0/15端口配置为Hybrid模式且未限制VLAN,允许VLAN 10和VLAN 20同时通过。

  1. 检查Trunk链路配置
display current-configuration interface GigabitEthernet0/0/48

发现核心交换机的Trunk链路Native VLAN为默认的VLAN 1,且允许所有VLAN通过。

  1. 根因分析 攻击者在办公VLAN 10中构造了双标签帧,外层标签为VLAN 1(Native VLAN),内层标签为VLAN 20。核心交换机去除了外层标签后,将帧转发到VLAN 20。

  2. 解决方案

# 方案1:接入端口强制为Access模式
interface GigabitEthernet0/0/15
 port link-type access
 port default vlan 10
 # 移除所有Trunk相关配置
 undo port trunk allow-pass vlan all
quit

# 方案2:修改Native VLAN为非默认值
interface GigabitEthernet0/0/48
 port trunk pvid vlan 999
quit

# 方案3:Trunk端口最小化VLAN列表
interface GigabitEthernet0/0/48
 port trunk allow-pass vlan 10 20 30
 undo port trunk allow-pass vlan 1
quit

# 方案4:启用端口安全
interface GigabitEthernet0/0/15
 port-security enable
 port-security max-mac-count 1
 port-security protect-action shutdown
quit

# 方案5:在核心交换机启用VLAN间访问审计
# 通过ACL监控VLAN间异常通信
acl number 3000
 rule 10 permit ip source 10.0.10.0 0.0.0.255 destination 10.0.20.0 0.0.0.255
  # 办公VLAN到财务VLAN的流量应仅通过三层设备
 quit

五、总结

知识点 要点
双标签攻击 利用Native VLAN去标签机制跨VLAN通信
CDP/LLDP欺骗 伪造设备发现协议协商Trunk模式
VLAN钓鱼 遍历VLAN ID扫描活跃网络
防护核心 接入端口强制Access模式、关闭设备发现协议
Native VLAN 修改为非默认值,减少双标签攻击面
端口安全 MAC地址限制、端口隔离
最小化原则 Trunk只允许必要VLAN通过
关闭未用端口 减少攻击面

思考

  1. 双标签VLAN Hopping攻击为什么是单向的?攻击者能否接收到目标VLAN的响应?
  2. 在私有云/虚拟化环境中(如VMware vSwitch),VLAN Hopping攻击是否仍然适用?
  3. 如果企业不允许修改Native VLAN(因为某些设备要求),还有什么方法可以防护双标签攻击?

下篇预告:第236篇:STP 攻击:BPDU 泛洪与 TC 攻击