VLAN Hopping (VLAN跳跃)攻击技术与缓解措施

摘要: 通过修改链路层标记达到欺骗交换机的目的

关于 VLAN

VLAN,即虚拟局域网,用于物理网络的共享,通过创建虚拟的网段从而实现特定组的划分。举例来说,在同一个物理局域网上,VLAN

1 的所有主机与 VLAN

2 的所有主机相分隔,如果要在 VLAN 之间发送任何数据包,都必须经过路由器或其他第 3 层(网络层)设备。这样的特点保证了网络的安全性,由此 VLAN 也被众多网络管理员应用到实际配置中。然而,通过 "VLAN

Hopping" 的攻击方式,攻击者可以绕过上述这些安全实现。如果各位读者想了解更多关于网络分段和 VLAN 的知识,建议阅读: https://www.alienvault.com/blogs/security-essentials/demystifying-network-isolation-and-micro-segmentation 。

VLAN Hopping 攻击技术

VLAN

Hopping 漏洞允许攻击者绕过为划分主机而构建的任何第 2 层(数据链路层)限制。如果网络管理员对交换机端口进行了正确配置,那么攻击者必须通过路由器或其他第 3 层设备才能访问其目标。然而,在许多网络中都没有合理的进行 VLAN 规划,或者对 VLAN 进行了错误配置,这样一来攻击者就能够进行该漏洞利用。在本文中,我将主要介绍 VLAN

Hopping 的两种方法,分别是 " 交换欺骗 "(Switched Spoofing)和 " 双重标记 "(Double

Tagging)。在最后,我将介绍针对此类攻击的缓解措施。

交换网络

如果我们想要发现并利用漏洞,首先要了解交换机的运行方式。我们在这里并不是对设备存在的漏洞进行利用,而是针对于协议和配置存在的漏洞。

在交换机上,端口可以配置为 Access(访问)或 Trunking(中继)。通常,将主机连接到交换机时,使用的是 Access 端口。通过 VLAN,每个 Access 端口仅分配给一个 VLAN。如果要将两个交换机或交换机与路由器连接在一起,那么需要使用到 Trunking 端口。Trunking 端口允许接收来自多个 VLAN 的流量。针对 Trunking 端口,我们可以手动配置,也可以使用动态中继协议(Dynamic

Trunking Protocol,DTP)动态创建中继端口。

DTP 是 Cisco 的专有协议,其用途之一就是动态建立两个交换机之间的中继链路。

攻击技术 1:交换欺骗

攻击者伪装成交换机,从而欺骗合法交换机在二者之间创建中继链路。如前所述,中继链路允许来自任何 VLAN 的数据包通过。一旦建立了中继链路,那么攻击者就可以从任何 VLAN 中访问到流量数据。这种攻击技术仅在合法的交换机配置为 " 经协商的中继模式 "(Negotiate

a Trunk)时才会成功。具体而言,就是接口配置为 " 动态可取 "(Dynamic Desirable)、" 动态自动 "(Dynamic

Auto)或 " 中继 "(Trunk)模式。如果目标交换机配置为其中的某一种模式,那么攻击者可以从其计算机上生成 DTP 消息,并且可以成功产生中继链路。

攻击技术 2:双重标记

攻击者在以太网帧上添加或修改标记,从而允许通过任何 VLAN 发送数据包,这种方法就叫做双重标记。这种攻击方式利用了大部分交换机在处理标记时存在的一个问题,大多数交换机仅会删除外部标记,然后将帧转发到所有本地 VLAN 端口。尽管如此,但实际上只有当攻击者位于中继链路的本地 VLAN 时,其漏洞利用才会成功。另外,这种攻击方式只能单向进行,因此无法对返回的数据包进行封装。

漏洞利用 1:交换欺骗攻击

在该漏洞利用场景中,存在攻击者、交换机和目标服务器。首先,攻击者连接到交换机上的 FastEthernet 0/12 接口,目标服务器连接到 FastEthernet 0/11 接口并且作为 VLAN 2 的成员。其拓扑图如下:

交换机的部分配置如下:

interface FastEthernet0/11 switchport mode access switchport mode nonegotiate switchport access vlan 2 ! interface FastEthernet0/12 switchport mode dynamic auto

我们可以发现 fa0/12 端口存在配置问题。这一端口被设置为接受传入协商,从而确定该端口被用于访问(Access)还是中继(Trunking)。这也就意味着,攻击者可以进行交换欺骗攻击。一旦攻击者连接到该端口,便可以发送 DTP 消息,并建立中继链路。

攻击者可以使用 Yersinia 工具来制作和发送 DTP 消息。Yersinia 是一个涉农图测试框架,可以用于攻击位于第 2 层(数据链路层)的许多协议。该框架上预装了 Kali Linux,并且有易于使用的图形化界面(GUI)。

Yersina 的官方主页是:http://www.yersinia.net/

要执行 Yersina,只需运行命令:

yersinia – G

以下是 Yersina 的图形界面截图:

现在,借助该工具,我们可以通过以下步骤来发送 DTP 消息:

1、点击 "Launch attack"(发起攻击);

2、单击 "DTP" 选项卡;

3、点击 "Enable Trunking"(启动中继);

4、点击 "OK"。

Yersinia 将会发送 DTP 消息,并在几秒内建立一个中继链路。在我们的场景中,攻击者可以访问流经 VLAN 2 的所有流量,并且在无需借助任何第 3 层(网络层)设备的情况下可以直接实现攻击。

漏洞利用 2:双重标记攻击

在该漏洞利用场景中,存在攻击者、2 个交换机和目标服务器。攻击者连接到交换机 1,而交换机 1 与交换机 2 相连接,我们攻击的目标就是最终成功连接到交换机 2 上。其拓扑图如下:

在熟悉拓扑图后,我们看到交换机 1 的部分配置如下:

interface FastEthernet0/12 switchport mode access switchport nonegotiate switchport access vlan 1 ! interface FastEthernet0/11 switchport trunk encapsulation dot1q switchport mode trunk switchport nonegotiate switchport trunk native vlan 1

通过上述配置,我们可以看到,攻击者现在无法进行交换欺骗攻击。但是,攻击者目前位于 Trunk 端口的本地 VLAN 中,这也就意味着可以执行双重标记攻击。

攻击者可以使用 Scapy 工具,创建此攻击所需的特制帧。Scapy 是一个用来对数据包进行修改的 Python 程序。

Scapy 的官方主页:https://scapy.net/

Scapy 的官方文档:http://scapy.readthedocs.io/en/latest/usage.html

要启动 Scapy,可以使用以下命令:

sudo ./scapy

攻击者通过 sendp ( ) 函数来制作数据包:

>>>sendp ( Ether ( ) /Dot1Q ( vlan=1 ) /Dot1Q ( vlan=2 ) /IP ( dst='' ) /ICMP ( ) )

执行此命令后,将会为 VLAN 2 上的目标生成经两次 802.1q 封装的数据包。下图展现了交换机是如何对此帧进行管理的:

从图中我们可以看出,交换机 1 只会读取并删除外部标记。它会检查主机是否为对应 VLAN 的成员,并将数据包转发到所有本地 VLAN 端口(VLAN

1)。然后,交换机 2 会接收到只剩下一个头部的数据包,它会根据其中的标记,认为此帧属于 VLAN 2,随后将其转发到配置为 VLAN

2 的所有端口上。这样一来,目标就可以接收到攻击者所发送的数据包。

考虑到上述攻击的性质,从严格意义来说,这些都属于攻击方式。另外需要注意的是,这些攻击方式可能不适用于新型交换机,具体列表参见: http://packetlife.net/blog/2010/feb/22/experimenting-vlan-hopping/

VLAN Hopping 缓解措施

交换欺骗

要缓解交换欺骗攻击,我们应该采取以下步骤:

1、不要使用 " 动态可取 "(Dynamic Desirable)、" 动态自动 "(Dynamic Auto)或 " 中继 "(Trunk)模式配置任何接入点;

2、手动配置访问端口,并在所有访问端口上禁用 DTP;

switchport mode access switchport mode nonegotiate

3、手动配置所有中继端口,并在所有中继端口上禁用 DTP;

switchport mode trunk switchport mode nonegotiate

4、关闭所有当前不使用的接口。

双重标记

要防止双重标记攻击,需要保证所有中继端口的本地 VLAN 与用户 VLAN 是不同的。

总结

通过本文所介绍的攻击技术和缓解方式,可以让大家理解——交换机不是为了安全而构建的。因此,在每一层都采取正确的安全配置,并注意进行相应安全防护就显得尤为重要。如果你需要对网络进行隔离,请一定确保正确并安全地进行,配置网络的过程需要慎重。

原文地址:http://www.myzaker.com/article/5ba9a93977ac647da755b1c2

上一篇:关于Linux挖矿、DDOS...
下一篇:内网渗透绕过查杀的一种新思路...