Author:颖奇L’Amore

Blog:www.gem-love.com

这篇文章是以前写的


MAC地址泛洪攻击

交换机的主要功能为学习、转发、过滤、生成树防环等。

学习即是当某一个接口收到了Frame/Packet时会学习该接口下连接主机的mac地址并保存在CAM表(MAC地址表)中;

转发+过滤即是当一个接口收到一个单播时,会在CAM表中查询mac地址找出接口,DMAC映射了哪个接口,就从哪个接口转发出去,但是当DMAC没有相关映射时,就会泛洪它,这个泛洪叫做unknown unicast flooding(未知单播泛洪)。

既然如此,攻击者在同一个接口伪装各种MAC地址来发包,那么交换机会一直学习并且在攻击者的口映射,有限的CAM表很快被占满,CAM表的aging time(超时时间)默认为300秒,仅当达到Aging Time才会移除相关条目,再次收到相关帧则重新学习。但攻击者的攻击不会停止,因此表永远都是满的。当合法主机超时需要重新学习或新来了合法主机时,CAM表已经没法容纳它们,此时合法主机的包和帧全部被泛洪,攻击者在其他接口开启sniffer,便会抓到合法主机的数据。

实验目的

笔者在一次学习过程中,一位前辈认为是当表慢了后,新来几条,就会从上到下依次T掉几条,那么合法主机被T掉,而不是aging time超时被移除!

笔者仔细考虑了这个问题,发现其实这种说法并不科学:如果后到优先,那么合法主机被T掉后又可以重新学习,也就是合法主机来T非法主机,这样就不会未知单播泛洪,攻击没任何意义了。

但实践是检验真理的唯一标准。

环境介绍

拓扑:

R1用c7200 模拟了一个主机

ESW1用3725模拟交换 两个接口进同一个vlan 然后创建svi口 地址是192.168.0.10

云桥接了linux地址是192.168.0.2

由于交换机默认开启生成树,会block掉一个接口,所以实验前需要先关闭spaning-tree

Start Lab

看下现在的合法主机

先把aging time从300s改短点儿,改成2分钟

使用macof攻击

很快 表已经满了,很显然,这条动态(dynamic)方式学习到的条目并没有被新来的大量条目“T”掉

2分钟后 合法条目因达到老化时间而被CAM表移除

抓包看看攻击效果

这capture是在R1–SW1链路上的抓包,由此可见:

  • macof发送的是TCP包,因为是三层packet而不是二层frame,因此伴随有ARP广播请求。
  • cam表已满,这些TCP packet也会被泛洪,因此这条链路上可以抓到它们。
结论

CAM表在满后,会停止继续学习mac地址,直到aging time到了老化掉某个或某些条目CAM表中有空闲位置时,才会继续学习。

防御

最简单的防范方法就是port security技术,他可以设置当一个接口学到≥x个(默认为2个)地址默认就shutdown-err-disable,当然我们可以设置,比如:允许学习5个地址且其中一个必须是某个Mac,这是因为交换机下联不一定是个主机,也可能是另一个switch!

笔者的模拟器并不支持port Security这feature 很无奈 无法演示

参考

《思科CCIE路由交换v5实验指南》

颖奇L'Amore原创文章,转载请注明作者和文章链接

本文链接地址:https://www.gem-love.com/networksecurity/968.html

注:本站定期更新图片链接,转载后务必将图片本地化,否则图片会无法显示


颖奇L'Amore

Most of the time is also called Y1ng. Cisco Certified Internetwork Expert - Routing and Switching. CTF player for team r3kapig. Forcus on Web Security. Islamic Scholar. Be good at sleeping and fishing in troubled waters.

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

在此处输入验证码 : *

Reload Image