另一种 VLAN 攻击是 Double-Tagging(或双封装)VLAN 跳跃攻击。 此类攻击利用大多数交换机的硬件工作原理。 大多数交换机只进行一级 802.1Q 解封,这样会让攻击者在帧中嵌入隐藏的 802.1Q 标记。 此标记会将帧转发到原始 802.1Q 标记未指定的 VLAN。 双封装 VLAN 跳跃攻击的一个重要特征是,即使 TRUNK 端口被禁用,攻击仍然有效,因为主机通常在非 TRUNK 链路的数据段上发送帧。

Double-Tagging VLAN 跳跃攻击遵循三个步骤:

1. 攻击者向交换机发送一个 Double-Tagging 802.1Q 帧。 外部报头带有攻击者的 VLAN 标记,与 TRUNK 端口的本征 VLAN 相同。 假设,交换机处理从攻击者接收的帧,将其视为在 TRUNK 端口上或带语音 VLAN 的端口上(交换机不能在接入端口上接收有标记的以太网帧)。 在本例中,假设本征 VLAN 是 VLAN 10。 内部标记是被攻击的 VLAN;在本例中为 VLAN 20。

2. 帧到达交换机后,查看第一个 4 字节 802.1Q 标记。 交换机看到该帧指向 VLAN 10,即本征 VLAN。 交换机在剥离 VLAN 10 标记后会将数据包转发到所有 VLAN 10 端口。 在 TRUNK 端口上,VLAN 10 标记被剥离,并且数据包没有重新标记,因为它是本征 VLAN 的一部分。 此时,VLAN 20 标记仍然是完整的,第一台交换机没有检测到它。

3. 第二台交换机仅查看攻击者发送的内部 802.1Q 标记,并且看到帧指向 VLAN 20,即目标 VLAN。 第二台交换机将帧发送到被攻击的端口或泛洪,具体取决于被攻击的主机是否存在 MAC 地址表条目。

这种攻击是单向的,只有当攻击者连接的端口与 TRUNK 端口的本征 VLAN 位于同一 VLAN 时,此类攻击才会有效。 阻止此类攻击不像阻止基本 VLAN 跳跃攻击那么简单。

减少 Double-Tagging 攻击的最佳方法是确保 TRUNK 端口的本征 VLAN 与任何用户端口的 VLAN 都不相同。 事实上,一种安全最佳做法是,使用与交换网络中所有用户 VLAN 都不相同的固定 VLAN 作为所有 802.1Q TRUNK 的本征 VLAN。