[分享]什么是MAC泛洪攻击?
MAC 泛洪:交换机里的"地址簿轰炸"
在一个典型的局域网里,交换机是核心的"交通指挥员"。它手里有一本"地址簿"——CAM 表(Content Addressable Memory,内容可寻址存储器),里面记录着每个 MAC 地址对应哪个端口。当数据包到达时,交换机查一下这本地址簿,就知道该把数据从哪个口送出去。
MAC 泛洪(MAC Flooding) 攻击,就是用海量的伪造 MAC 地址,把交换机的这本"地址簿"活活塞爆。一旦地址簿满了,交换机就会退化成最原始的状态——像一个老式集线器一样,把收到的每一个数据包广播到所有端口。这时候,攻击者就可以在网络的任何一个角落,看到所有人的通信内容。
从"精准投递"到"大喇叭广播":交换机的工作原理
要理解 MAC 泛洪的危害,得先搞清楚交换机是怎么工作的。
交换机工作在数据链路层(OSI 模型的第二层),它的核心任务是:根据目标 MAC 地址,把数据帧从正确的端口转发出去。
- 学习阶段:当交换机从一个端口收到一个数据帧时,它会读取帧头中的源 MAC 地址,并记录到 CAM 表中:“MAC 地址 X 来自端口 1”。
- 转发阶段:当交换机收到一个目标为 MAC 地址 X 的数据帧时,它查 CAM 表,发现 X 在端口 1,于是只把数据从端口 1 发出去。其他端口完全不受影响。
- 未知处理:如果 CAM 表中没有目标 MAC 地址的记录,交换机不知道目标在哪,就只能把数据帧广播到所有端口(除接收端口外),等待真正的目标回应。
这种"精确转发"机制带来了两个关键特性:
- 效率高:数据只送到需要的人那里,不像集线器一样全网广播浪费带宽。
- 隔离性好:端口 1 和端口 2 之间的通信,端口 3 是听不到的——这是局域网安全的基础。
MAC 泛洪攻击要摧毁的,正是这个"隔离性"。
攻击原理:把地址簿撑爆
CAM 表的大小是有限的。一台普通的企业级交换机可能只能存储 8,000 到 16,000 条 MAC 地址记录,低端家用交换机甚至只有 1,000 条左右。一旦这个表被填满,交换机的行为就会发生变化。
攻击者需要做的,就是以极快的速度向交换机发送大量数据帧,每个数据帧都使用不同的伪造源 MAC 地址。
1 | 数据帧1:源MAC = AA:AA:AA:AA:AA:01 → 交换机记录:AA:AA:AA:AA:AA:01 在端口 3 |
当伪造的 MAC 地址数量超过 CAM 表的容量上限时,交换机就会进入 Fail-open Mode(失败开放模式)——安全失败,而非安全失败的反面。既然地址簿不管用了,那就干脆把收到的所有数据帧广播到每一个端口。
这时候,攻击者只要把自己的网卡设为混杂模式(Promiscuous Mode),就能收到该交换机下所有端口之间的通信流量——包括别人的登录密码、聊天记录、邮件内容、文件传输……
与 ARP 欺骗的对比:ARP 欺骗是"冒充他人身份",让数据流向攻击者;MAC 泛洪是"让交换机丧失判断能力",迫使数据流向所有人。前者是精确打击,后者是地毯式轰炸。两者最终都能实现流量窃听,但 MAC 泛洪不需要伪造任何特定 IP 或 MAC 的映射关系,暴力填表即可。
攻击后果:不止是窃听
MAC 泛洪攻击带来的影响不仅是流量广播,还会引发连锁反应:
1. 流量窃听
这是 MAC 泛洪最主要、最直接的危害。一旦交换机退化为广播模式,攻击者就能监听到同一 VLAN 内所有设备之间的通信。如果这些通信没有加密(比如 HTTP、FTP、Telnet),账号密码就相当于明文传输。
2. 网络性能严重下降
原本被精确转发的数据,现在要复制到每一个端口。交换机需要处理的数据量瞬间乘以端口数,内部带宽被迅速占满,网络延迟急剧增加,丢包率上升。对于企业网络来说,这等同于一次拒绝服务攻击。
3. 交换机 CPU 过载
CAM 表溢出后,交换机如果还不断收到新的 MAC 地址,它会持续尝试"学习"并更新表项,这个过程消耗 CPU 资源。在严重情况下,交换机的管理界面可能完全无响应,甚至自动重启。
4. 逃避安全监控
某些安全设备(如 IDS/IPS)依赖交换机的端口镜像(SPAN)来监控流量。MAC 泛洪导致的流量广播模式,实际上"打乱了"端口镜像的定向监听,攻击者可能利用这种混乱掩护其他更隐蔽的渗透行为。
为什么 MAC 泛洪至今仍然有效?
MAC 泛洪攻击最早在 1990 年代末就被发现,二十多年过去了,它依然是局域网渗透测试中的常用手段。原因很现实:
- 低端交换机的 CAM 表容量小:很多中小企业的网络设备仍在使用入门级交换机,CAM 表容量只有 1,000-4,000 条。一台普通的笔记本电脑,用
macof工具几秒钟就能打满。 - 默认配置不安全:绝大多数交换机出厂时没有开启 MAC 地址限制或端口安全功能,管理员也常常忽略这些配置。
- 攻击工具极其成熟:Kali Linux 等渗透测试系统中自带的
macof工具,可以轻松生成数百万个随机 MAC 地址的泛洪流量。 - 物联网设备大量涌入:智能灯泡、摄像头、门锁等设备的 MAC 地址随机且数量庞大,企业网络的"地址簿"压力比十年前大得多。
防御之道:限制"学新东西"的速度
MAC 泛洪的防御思路很清晰:不让攻击者有机会把 CAM 表填满。
第一层:端口安全(Port Security)——最直接的防线
这是防御 MAC 泛洪最有效、最标准的配置。在交换机的每个端口上设置:
-
最大 MAC 地址数量:限制一个端口上允许学习到的 MAC 地址数量。比如把连接终端设备的端口设置为 1-3 个 MAC 地址(电脑本身 + 可能的有线网卡 + 虚拟机网卡),攻击者从该端口发来的大量伪造 MAC 就会被直接丢弃。
-
违规处理动作:当端口学习到的 MAC 地址超过设定数量时,可以配置三种处理方式:
Protect:丢弃超出的流量,但端口保持可用。Restrict:丢弃流量并产生日志告警。Shutdown:直接关闭该端口(最彻底,需管理员手动恢复)。
1 | # Cisco 交换机配置示例 |
第二层:MAC 地址绑定(静态 CAM 表)
在网络比较稳定的环境中,管理员可以手动把合法设备的 MAC 地址和端口绑定起来,关闭端口的"自动学习"功能。
- 优点是绝对安全——伪造地址无效。
- 缺点是维护成本高——设备变更需要手动更新配置,不适合频繁变动的工作场景。
第三层:VLAN 隔离(缩小攻击面)
MAC 泛洪攻击的影响范围被限制在同一 VLAN 内。通过合理的 VLAN 划分,把不同部门、不同安全等级的设备隔离开来,即使一个 VLAN 内的交换机被泛洪攻破,攻击者也无法跨 VLAN 监听其他区域的流量。
第四层:802.1X 网络访问控制(企业级解决方案)
这是一种基于端口的网络准入控制机制。设备在接入网络前,必须先通过 RADIUS 服务器进行身份认证(用户名/密码或数字证书),认证通过后才允许访问网络。
802.1X 可以在设备连接交换机的瞬间就拒绝恶意流量进入,从源头上杜绝 MAC 泛洪的机会。这是大型企业网络的标准安全配置之一。
第五层:监控与告警
- SNMP 监控:定期读取交换机的 CAM 表利用率,当使用率异常飙升时触发告警。
- 日志审计:检查交换机的系统日志,发现
port-security violation或 CAM 表溢出告警时及时响应。
攻击者的视角:简单到让人不安
攻击 MAC 泛洪的门槛极低。Kali Linux 系统下,只需一条命令:
1 | macof -i eth0 |
这个工具会以每秒数千甚至数万个包的速度,向交换机发送大量随机 MAC 地址的数据包。运行几秒钟,目标交换机就可能陷入"广播模式"。
攻击者接下来只需要启动 Wireshark 等抓包工具,把网卡设为混杂模式,就能看到所有广播流量中的敏感信息。
如果业务数据完全没有加密,攻击者获得的成果可能包括:
- HTTP POST 请求中的用户名和密码
- FTP 传输的文件内容
- Telnet 会话中的管理员操作命令
- 邮件协议的正文内容
真实世界的连锁反应
在一次典型的企业内网渗透测试中,安全团队通过 MAC 泛洪攻破了一台接入层交换机。由于该交换机连接着同一楼层所有工位的网络端口,攻击者获取了以下信息:
- 一个开发人员的 Git 提交记录中包含了数据库连接字符串。
- 一个运维人员的 HTTP 登录会话中捕获了服务器管理平台的账号密码。
- 从这些凭证横向扩展,最终拿下了整个测试环境的控制权。
链条是:交换机未配置端口安全 → MAC 泛洪导致广播 → 混杂模式抓取明文流量 → 获取敏感凭证 → 横向扩展内网。
加密能解决一切吗?
值得注意的是,即使 MAC 泛洪成功使交换机进入广播模式,HTTPS、SSH、VPN 等加密协议仍然可以保护传输内容的机密性。攻击者虽然能看到数据包,但无法解密其中的内容。
因此,全站 HTTPS、使用 SSH 替代 Telnet、启用 VPN 等加密措施,是防御 MAC 泛洪窃听后果的最后一道防线。但这并不意味着可以忽视交换机本身的加固——加密不能防止网络性能下降,也不能阻止交换机 CPU 过载导致的网络瘫痪。
总结
MAC 泛洪攻击的本质,是利用交换机 CAM 表容量有限的物理限制,用海量伪造 MAC 地址"挤爆"地址簿,迫使交换机从"精准投递"退化为"大喇叭广播"。
它的破坏路径是:填满 CAM 表 → 交换机退化为广播模式 → 攻击者监听所有端口流量 → 窃取未加密的敏感信息。
防御的核心思路是限制端口上的 MAC 地址学习数量——这是端口安全最基本、最有效的配置。结合 VLAN 隔离、802.1X 准入控制和全站加密,MAC 泛洪即使发生,其破坏力也会被降到最低。
网络安全的底线是:不做默认的"好人"。 交换机默认信任所有接入设备、默认允许无限学习 MAC 地址——这份"默认的善意",正是攻击者最喜欢利用的突破口。从 CAM 表到 ARP 缓存,从 DNS 记录到 Cookie 存储,安全配置的第一原则永远是"默认拒绝,按需放行"。






![[分享]什么是MAC泛洪攻击?](/../blogimage/260725/260725_1.webp)