前言
Dynamic Trunking Protocol (DTP) 本来可以让 Switch 与 Switch 之间方便地建立 Trunk Link,但却成为网络上一个可以被攻击的弱点。本文会尝试用 Yersinia 去攻击 Switch 的 DTP 从而影响 VLAN 运作,假设读者已了解 VLAN 及 DTP 的理论。
⛑️ 本文目的只为学术研究,解释网络漏洞及防治方法,并不鼓励任何犯法行为,敬请留意。⛑️
Trunk Link 欺骗
在预设情况下,Switch Port 的 DTP 是被设为 Dynamic Auto 的,如果遇到对方是 Dynamic Desirable 就会由 Access Link 转为 Trunk Link。所以 Attacker 要骗取 Trunk Link 方法很简单,只要向 Switch Port 定时发放 Dynamic Desirable 的 DTP 讯息即可。
请看以下例子,Attacker 与 PC 分别被放在 VLAN10 和 VLAN20,不透过 Gateway 的话,理论上它们是没法沟通的。可惜 SW1 的 Fa1/0/24 是 Dynamic Auto Mode,让 Attacker 有机可乘。
SW1#show int fastEthernet 1/0/24 trunk Port Mode Encapsulation Status Native vlan Fa1/0/24 auto negotiate not-trunking 1 Port Vlans allowed on trunk Fa1/0/24 10 Port Vlans allowed and active in management domain Fa1/0/24 10 Port Vlans in spanning tree forwarding state and not pruned Fa1/0/24 10
Attacker 打开 Yersinia,按 g 选 DTP 预备进行 Dynamic Trunking Protocol 攻击。
按 x 选 1,Yersinia 就会开始发出 DTP 与 Switch 沟通并成为 Trunk。
SW1#show int fastEthernet 1/0/24 trunk
Port Mode Encapsulation Status Native vlan
Fa1/0/24 auto n-802.1q trunking 1
Port Vlans allowed on trunk
Fa1/0/24 1-4094
Port Vlans allowed and active in management domain
Fa1/0/24 1,11-20
Port Vlans in spanning tree forwarding state and not pruned
Fa1/0/24 none
由於已经成为 Trunk Link,Attacker 可以发 Packet 到任何 VLAN,测试一下,按 g 切换到 802.1Q。
由於骚扰对像是 VLAN20,首先按 e 把 Packet 的 VLAN 修改成 20。
按 x 再选 0 即可发出一个 Broadcast ICMP Packet (Destination IP: 255.255.255.255) 到 VLAN20,如果在 PC 用 Wireshark 撷取的话可以清楚看到这个 Packet。
这样,Attacker 就可以配合软件对 VLAN20 作出 ARP Spoofing丶DHCP Spoofing 或 Man-in-the-middle 等攻击。
防御对策
解决方法是网络管理员要勤力一点,把连接 Host 的 Port 都关掉 DTP,即改行 Access Mode,Host 便无法与 Switch 成为 Trunk Link。
SW1(config-if)#switchport mode access
VLAN Hopping
在远古时代,就算转用 Access Mode,Attacker 仍有方法进行 VLAN 攻击,称为 VLAN Hopping Attack 或 Double Tag Attack。请看下图,SW1 和 SW2 之间是 Trunk Link,而 Native VLAN 没有更改过,为预设 VLAN1,刚好 Attacker 的 Access Port 也在使用 VLAN1。
在这个巧合的情况下,Attacker 可以用 Double Tag 的方法,把 VLAN20 的讯息包裹在 VLAN1 之中传给 SW1。由於 VLAN1 是 Native VLAN,於是 SW1 在传给 SW2 之前会把 Packet 的 VLAN1 Tag 移除,然後才传给 SW2。SW2 发现 Packet 中带有 VLAN20 Tag,於是就把这 Packet 打进 VLAN20 了。
但是笔者测试过,现代的 IOS (Version 12 或以上) 已无法进行这种攻击了。不过为了安全起见,我们习惯上都不会把 VLAN1 分派给 user 使用。
相關主題
Jan Ho 2021-07-22
Posted In: 网络破解技术 Hacking
发表回复