MAC泛洪攻击的实施与防御

原文发表于2017年第7期《网络安全与信息化》,转发到博客。

更多相关资料可参看视频教程“局域网安全实战”,http://edu.51cto.com/course/10348.html

MAC泛洪攻击是一种针对局域网交换机的攻击方式,目的在于窃取局域网内用户的通信数据。本文以神州数码CS6200交换机为例,从原理、实施、防御三个方面对MAC泛洪攻击进行了全面介绍。

1.    交换机的MAC地址表

交换机的主要功能是在局域网内的主机之间转发数据帧。交换机接收从主机上传来的比特流之后,要先将其缓存成数据帧,然后通过分析帧头中的MAC地址,交换机就可以判断出数据的发送方和接收方,从而将数据转发给目的主机。

交换机的工作核心是端口/MAC地址映射表,这张表里记录了交换机每个端口同与之相连的主机MAC地址之间的对应关系。交换机刚启动时,端口/MAC地址映射表是空白的,当某台主机发送了一个数据帧到相应端口上后,交换机首先将数据帧里的源MAC地址与该端口的对应关系记录在映射表里,然后再去映射表里查找与数据帧的目的MAC地址相对应的端口,而此时肯定是找不着的,这时交换机就以广播的方式将这个数据帧向除了源端口以外的其它所有端口转发,从而将数据发送给了目的主机。经过这一个过程之后,在映射表里便已经产生了第一条记录。因而只要网络中的每台主机都发送了一次数据,在地址表中便会记录下所有主机MAC地址与端口的对应关系,从而建立起一个完整的端口/MAC地址映射表。映射表建好之后,交换机便可以在所有主机之间直接转发数据帧,而再也无需广播了。

在交换机中执行“showmac-address-table”命令就可以查看到MAC地址表。

CS6200#showmac-address-table

Readmac address table….

Vlan              Mac Address               Type             Creator          Ports

1             00-03-0f-3e-e6-90             STATIC        System          CPU

1             ec-a8-6b-61-64-a1             DYNAMIC   Hardware      Ethernet1/0/10

通常情况下,交换机的每个端口只会连接一台主机,因而在MAC地址表中每个端口只会对应1个MAC地址。但由于交换机还要用于级联其它的交换机,因而在相应的级联端口上就会对应多个MAC地址,从而在地址表产生大量记录。

由于交换机的缓存有限,因此它所能够记忆的MAC地址数量也是有限的,所以交换机不会永久地记住所有的端口与MAC地址的对应关系。在端口/MAC地址映射表中每一项记录都被设定了一个自动老化时间,若某MAC地址在一定时间内(默认为300秒)不再出现,那么交换机将自动把该MAC地址从地址表中清除。当下一次该MAC地址重新出现时,将会被当作新地址处理,从而使交换机可以维护一个精确、有用的MAC地址表。交换机档次越低,交换机的缓存就越小,它能记住的MAC地址数也就越少。

以神州数码DCRS-6200交换机为例,它的MAC地址表中最多可以记录16384个MAC地址。执行“showmac-address-table count”命令可以查看到MAC地址表的容量以及当前已经记录的地址数目。

CS6200#showmac-address-table count

Computethe number of mac address…..

Maxentries can be created in the largest capacity card:

Total              Filter Entry Number is:       16384

Static             Filter Entry Number is:       16384

Unicast          Filter Entry Number is:       16384

Multicast        Filter Entry Number is:       4096

Currententries have been created in the system:

Total              Filter Entry Number is:  2

Individual      Filter Entry Number is:  2

Static             Filter Entry Number is:  1

Dynamic        Filter Entry Number is:  1

Multicast(Insert)   Filter Entry Number is:  0

Multicast(Wait)     Filter Entry Number is:  0

2.    MAC泛洪攻击

MAC泛洪攻击就是由攻击者通过攻击工具产生大量的数据帧,这些数据帧中的源MAC地址都是伪造的,并且不断变化。因而交换机将在攻击主机所连接的端口上产生大量的MAC地址表条目,从而在短时间内将交换机的MAC地址表填满,直到再无法接收新的条目。

此时对于网络中那些事先没有在交换机的MAC地址表中留下记录的主机,它们之间的数据通信就会全部采用广播的方式进行,这样虽然并不影响数据的发送和接收,但此时的交换机实质上就成为了一台集线器,攻击者在网络中的任何一台主机上打开Wireshark,就可以监听到网络中的这些流量。

下面我们搭建一个如图1所示的实验环境,实验目的是通过在KaliLinux上发动MAC泛洪攻击,从而捕获目标主机访问目标服务器的数据。在实验过程中需要注意,先不要将目标主机和目标服务器连接到交换机上,待MAC泛洪攻击成功之后,再将它们连接上去,这样才能保证不会在交换机的MAC地址表中产生它们的记录,从而使得它们之间的数据通信采用广播方式。

图 1实验环境

在KaliLinux中已经集成了MAC泛洪工具macof,执行macof之后,工具就开始不停向外发送伪造的源MAC地址不断变化的数据帧,如图2所示。如果一个macof的效果不明显,可以打开多个命令行界面,同时执行macof。

图 2利用macof进行MAC泛洪攻击

此时在交换机上执行“showmac-address-table count”命令检查攻击效果,发现整个MAC地址表已被全部填满。

CS6200#showmac-address-table count

Computethe number of mac address…..

Maxentries can be created in the largest capacity card:

Total              Filter Entry Number is:       16384

Static             Filter Entry Number is:       16384

Unicast          Filter Entry Number is:       16384

Multicast        Filter Entry Number is:       4096

Currententries have been created in the system:

Total              Filter Entry Number is:  16384

Individual      Filter Entry Number is:  16384

Static             Filter Entry Number is:  1

Dynamic        Filter Entry Number is:  16383

Multicast(Insert)   Filter Entry Number is:  0

Multicast(Wait)     Filter Entry Number is:  0

执行“showmac-address-table”命令查看MAC地址表,可以看到绝大部分MAC地址都是从10号端口(Kali Linux所连接的端口)学习到的。

CS6200#showmac-address-table

Readmac address table….

Vlan              Mac Address               Type             Creator          Ports

1             00-03-0f-3e-e6-90             STATIC        System          CPU

1             ec-a8-6b-61-64-a1             DYNAMIC   Hardware      Ethernet1/0/10

1             00-07-72-01-47-8b     DYNAMIC   Hardware      Ethernet1/0/10

1             00-0a-b5-14-d5-dd            DYNAMIC   Hardware      Ethernet1/0/10

……

这时将目标主机和目标服务器连接到交换机上,然后在Kali Linux中打开Wireshark,就可以监听到它们之间的通信数据了。由于此时Kali Linux中存在大量的MAC泛洪数据,所以在抓包之前最好先设置捕获过滤器,比如设置过滤规则“host 10.39.1.11”,只抓取主机10.39.1.11发出和接收的数据。

然后在目标主机上访问目标服务器中的一个网站登录页面,并输入用户名admin以及密码123456,此时在Kali Linux的Wireshark中成功抓获了它们之间的流量,为了更精确的显示我们所需要的数据,在Wireshark中又设置了显示过滤器http,只显示HTTP协议产生的数据,这时就可以轻松看到之前所输入的用户名和密码了,如图3所示。

图 3在Wireshark中抓取的用户名和密码

3.    通过Port-Security防范MAC泛洪攻击

通过Port-Security(端口安全性)技术可以有效防范MAC泛洪攻击,Port-Security可以限制交换机端口上所允许的有效MAC地址的数量,这样交换机就不会无限制的从端口获取MAC条目。如果某个端口的有效MAC地址个数已经达到最大值,那么当该端口再次接收到新的MAC地址时,就被认为发生安全违规,交换机将自动采取相应的动作。

管理员可以配置发生安全违规后交换机将采取的动作:

l  关闭(shutdown):在此模式下,安全违规将造成端口变为错误禁用状态,并关闭端口LED。当端口处于错误禁用状态时,可以先输入shutdown,再输入no shutdown,使其脱离此状态。此模式为默认模式。

l  保护(protect):在此模式下,当有效MAC地址的数量达到端口允许的限制时,带有未知源地址的数据帧将被丢弃。

l  限制(restrict):与保护模式基本相同,区别是在此模式下除了将数据帧丢弃之外,还会发出SNMP消息,并记录日志等。

下面在神州数码CS6200交换机上配置Port-Security。

首先执行命令“clear mac-address-table dynamic”清除之前地址表中的记录。

然后在Kali Linux所连接的10号端口上启用Port-Security,并采用默认设置,有效MAC地址只有一个。

CS6200(config)#mac-address-learning cpu-control                   //开启CPU控制学习功能

CS6200(config)#interface ethernet 1/0/10                                 //进入端口配置模式

CS6200(config-if-ethernet1/0/10)#switchport port-security      //启用Port-Security

这时在Kali Linux中再次实施MAC泛洪攻击,就会发生安全违规,10号端口被关闭。执行“show Interface ethernet 1/0/10”命令查看端口信息,可以发现提示“Ethernet 1/0/10 is shutdown by port security”的提示信息。

CS6200(config)# show Interface ethernet 1/0/10

Interfacebrief:

Ethernet1/0/10 is administratively down,lineprotocol is down

Ethernet1/0/10 is shutdown by port security

Ethernet1/0/10is layer 2 port,alias name is (null),indexis 1;

Hardwareis Fast-Ethernet,address is 00-03-0f-3e-e6-91

由于默认情况下每个端口的有效MAC地址只有一个,这时如果在端口所连接的主机上开启一个桥接模式的虚拟机,就会导致发生安全违规,从而将端口关闭。因而建议将端口的有效MAC地址的数量设置的大一些,这样端口就不会轻易被关闭了。比如将端口的有效MAC地址数量设置为5个:

CS6200(config-if-ethernet1/0/10)#switchport port-security maximum 5

我们还可以改变发生安全违规后的动作,比如将违规动作改为restrict,这样就只丢弃包而不关闭端口。

CS6200(config-if-ethernet1/0/10)# switchportport-security violation restrict

由于Port-Security需要在交换机的每个端口上依次设置,因而对于那些确定不会级联其它交换机的端口,建议都启用Port-Security,并根据实际情况将有效MAC地址的数量设置的稍微大一些,从而增强局域网的安全性。

时间: 2024-10-24 11:38:38

MAC泛洪攻击的实施与防御的相关文章

无线安全专题_攻击篇--MAC泛洪攻击

上一篇讲解了无线安全专题_攻击篇--干扰通信,没在首页待多长时间就被拿下了,看来之后不能只是讲解攻击实战,还要进行技术原理和防御方法的讲解.本篇讲解的是局域网内的MAC泛洪攻击,这种攻击方式主要目的是窃取局域网中的通信数据,例如ftp的账号和密码,下面的实战也是以此为例子.接下来按照原理,场景,攻击实战,防御方法的层次步骤进行讲解. 一.MAC泛洪攻击的原理 MAC泛洪攻击主要是利用局域网交换机的mac学习和老化机制. 1.1交换机的工作流程如下: 局域网中的pc1发送数据帧给pc2,经过交换机

MAC泛洪攻击

MAC泛洪是攻击机不停发出不同源MAC的ICMP包,耗尽交换机的MAC表,这时交换机与正常的主机通信时,就会发送广播报文,局域网内的机器都会收到报文,对报文进行分析,就可得到通信者的信息. 1.靶机 kali(攻击机) windows7(ftp服务器) windows2003(客户机) 2.kali中开启抓包 3.kali中使用macof构造大量数据包 4.windows2003与ftp服务器进行通信 5.kali中查看结果 原文地址:https://www.cnblogs.com/zmqqq/

Mac地址泛洪攻击的防御措施和具体配置

Mac地址泛洪攻击指的是:利用交换机的mac地址学习机制,攻击者不断地刷新mac地址,填满交换机的mac地址表,以致崩溃,使交换机不得不使用广播发包,从而获取其他人的报文信息. mac地址泛洪攻击的防御措施和具体配置 限定接入交换机的接入的端口的数量. 例如:设置该交换机的该端口可以学习10个mac地址,超过了10个mac地址就停止学习,丢弃后来的mac.如图: 具体代码如下: [Huawei-Ethernet0/0/1] port-security enable [Huawei-Etherne

分分钟学会系列:mac地址泛洪攻击实验

一.实验目的: 通过实战深入理解mac地址泛洪攻击的原理. 二.实验原理: 交换机中有一张非常重要的表,叫做mac表,这个表是一个硬件组成的表,主要是完成快速转发.mac表有大小限制,不同的交换机的mac表的大小都有不同,越是高端的交换机的表空间越大,但是作为接入交换机,表空间基本都在8K左右.交换机的一个原理是会自动学习并记录mac地址.而攻击者就利用交换机的mac地址学习机制,不断的进行mac地址刷新,迅速填满交换机的mac地址表,以至崩溃,使交换机不得不使用广播发包,从而获取其他人的报文信

SYN泛洪攻击原理及防御

拒绝服务攻击时,攻击者想非法占用被攻击者的一些资源,比如如:带宽,CPU,内存等等,使得被攻击者无法响应正常用户的请求. 讲泛洪攻击之前,我们先了解一下DoS攻击和DDoS攻击,这两个攻击大体相同,前者的意思是:拒绝服务攻击:后者的意思是:分布式拒绝服务攻击.不要看这两个攻击前一个比后一个多了一个字母,后一个攻击比前你一个攻击少了"分布式"三个字,其实他们具体的来说还是有所区分的. DDoS是DoS攻击中的一种方法.下面我们来详细看一下区分: DoS(拒绝服务):不是DOS操作系统,造

Screen OS防火墙DoS攻击的检测和防御

一.拒绝服务攻击DoS 1. 拒绝服务攻击的目的是用极大量的虚拟信息流耗尽受害者的资源,使其无法处理合法的信息流.攻击的目标可以是防火墙.防火墙所保护的网络资源.个别主机的特定硬件平台或操作系统等.通常DoS攻击中的源地址是欺骗性的. 2. 发自多个源地址的DoS攻击称为分布式拒绝服务攻击(DDoS).DDoS攻击中的源地址可以是欺骗性地址,也可以是被损害过的主机的实际地址,或者是攻击者目前正用作"zombie代理"且从中发起攻击的主机实际地址. 3. NetScreen防火墙提供了九

MAC地址泛洪攻击测试

测试环境:kali系统(2个kali分别作攻击人和目标用户) win7系统(主机) 1.步配置FTP设置用户名密码 2.在攻击kali端测试网络的连通性 3.测试tpf是否正常 开始泛洪 4.开始抓包 5.登陆FTP 7.查看抓包数据

常见的DoS攻击的原理和防御

1.SYN洪水攻击 要理解dos攻击,首先要理解TCP连接的三次握手过程(Three-wayhandshake). 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.   第一次握手:建立连接时,客户端发送SYN包((SYN=i)到服务器,并进入SYN SEND状态,等待服务器确认;  第二次握手:服务器收到SYN包,必须确认客户的SYN (ACK=i+1 ),同时自己也发送一个SYN包((SYN=j)}即SYN+ACK包,此时服务器进入SYN_RECV状态;[1]

DDoS攻防战 (二) :CC攻击工具实现与防御理论

故上兵伐谋 其次伐交 其次伐兵 其下攻城 攻城之法 为不得已 知己知彼 百战不殆 不知彼而知己 一胜一负 不知彼不知己 每战必败 --孙子兵法·谋攻 我们将要实现一个进行应用层DDoS攻击的工具,综合考虑,CC攻击方式是最佳选择,并用bash shell脚本来快速实现并验证这一工具,并在最后,讨论如何防御来自应用层的DDoS攻击. 第一步:获取大量可用代理ip:port列表   网上所处可见免费代理,我们使用http的GET方法抓取html文档,接着使用正则过滤出我们需要的ip port对,然后