发布时间:2023-02-06 23:00
微信公众号:运维开发故事,作者:wanger
mac泛洪攻击与防护
mac学习机制
在最初的时候,交换机里是没有mac地址表信息的,那么交换机就要进行学习,假如交换机上连接着两个主机PC1和PC2,当PC1要与PC2进行通信时,PC1的数据帧流入交换机,交换机会把PC1的MAC地址和PC1连接的端口记录到交换机的mac表中,但是交换机的mac地址表中并没有PC2的mac地址信息和端口绑定,所以交换机会将数据帧向全网发送广播,当主机收到数据帧后会把目的mac地址和自己的进行比对,如果一样就应答,不一样就丢弃,当PC2收到与自己mac地址相同的数据帧后,会进行应答,当应答的数据帧流经交换机的时候,交换机会把应答的数据帧的mac地址信息和所进入的端口记录在交换机的mac地址表中,然后交换机会寻找与应答数据帧对应的目的mac地址,交换机发现PC1的mac地址表信息已经存在,会根据PC1绑定的端口号直接将应答数据帧发送给PC1,这样就完成了一次mac地址学习。
mac老化机制
若交换机与某台主机长时间未通信,交换机就会把该主机的mac地址从mac地址表里删除掉,等下次通信时重新学习地址。
mac地址泛洪攻击
通过伪造大量未知的mac地址进行通信,在交换机不断地学习之后,交换机的mac地址表被充满,正常的主机mac地址经过老化之后就无法添加到交换机的mac地址表中,这样就会强迫交换机进行广播,从而达到攻击主机可以获取两个主机之间进行的通信数据的目的
mac地址泛洪攻击测试
实验环境:
kali中有一款名为macof的工具可以进行mac泛洪攻击测试,本次使用macof在攻击机上进行测试,ip地址为192.168.2.130
下面的实验中交换机均采用神州数码DCRS6200设备
PC1为Windows xp主机,ip地址为192.168.2.140
PC2为神州数码设备DCFW防火墙,ip地址为192.168.2.2
开始测试
攻击之前我们先查看交换机的mac地址信息
使用macof进行mac地址泛洪攻击
再次查看交换机的mac地址表,可以看到mac地址表被大量伪造的mac堆满
现在在PC1上访问DCFW,也就是PC2,然后打开wireshark进行监听
wireshark过滤规则为ip.addr == 192.168.2.140 and http
可以在wireshark上监听到PC1传入的用户名和密码
mac泛洪攻击的防护
在进行mac泛洪攻击的时候,交换机的CPU利用率是偏高的
1.可以在攻击机所连接端口配置Port Security特性,阻止攻击机发起的mac泛洪攻击
CS6200-28X-EI(config-if-ethernet1/0/5)#sw port-security #开启端口安全性
CS6200-28X-EI(config-if-ethernet1/0/5)#sw port-security maximum 5 #设置接口允许接入的最大MAC地址数量为5
CS6200-28X-EI(config-if-ethernet1/0/5)#sw port-security mac-address 00-0c-29-b0-81-4f #绑定指定的mac地址,并添加到交换机的运行配置中,交换机的端口收到源mac数据帧与设置的mac地址进行比较,如果一致则会转发,如果不一致,则会丢弃源mac的数据帧
DCRS(config-if-ethernet1/0/5)#sw port-security mac-address sticky #启用mac地址粘滞性,粘滞性可以将端口配置为动态获得MAC地址,然后将这些MAC地址保存到运行配置中,如果禁止Port Security特性,粘滞安全mac地址仍保留在运行配置中。
DCRS(config-if-ethernet1/0/5)#sw port-security violation restrict #设置安全违规操作为安全违背限制模式,默认情况下是安全关闭模式,安全违背限制模式将会丢弃未授权地址发来的数据帧,创建日志消息并发送SNMP Trap消息。有关其他安全违规操作可以使用DCRS(config-if-ethernet1/0/5)#sw port-security violation ?进行查看
2.配置Access Management特性也可以阻止攻击机发起的mac泛洪攻击
AM(access management)又名访问管理,它利用收到数据报文的信息(源IP 地址
或者源IP+源MAC)与配置硬件地址池(AM pool)相比较,如果找到则转发,否则丢弃。
DCRS(config)#am enable #在配置模式下开启认证管理
DCRS(config-if-ethernet1/0/5)#am port #进入攻击机的接口下,配置端口使能
DCRS(config-if-ethernet1/0/5)#am mac-ip-pool 01-00-5e-00-00-16 192.168.2.22 #配置mac-ip地址池,指定该端口上用 户的源MAC 地址和源IP 地址信息,当AM使能的时候,AM模块会拒绝所有的IP报文通过(只允许IP地址池内的成员源地址通过)
arp欺骗攻击与防护
ARP协议
ARP(地址解析协议)是在网络协议包中通过解析网络层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议。在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
每台安装有TCP/IP协议的主机(包括网关)都有一个ARP缓存表。该表中保存这网络中各个电脑的IP地址和MAC地址的映射关系。
PC1要与PC2通信,会先查看自己的ARP缓存表,如果有PC2的IP与MAC地址的映射关系,会直接将数据帧发送给PC2,如果没有的话,会广播发送ARP请求,请求中包含着PC2的IP地址,当PC2收到PC1的ARP请求后,会把PC1的IP地址和Mac地址存放在自己的ARP缓存表中,然后会把回复ARP应答给PC1,这时候PC1收到回复,则会把pc-2的ip地址和pc-2的mac地址缓存到arp表中。
ARP欺骗原理
假设PC3是攻击机,那么PC3会向PC1发送一个ARP请求,请求中的IP地址是PC2的IP地址,而Mac地址则是PC3的地址,同时也会向PC2发送一个,IP地址是PC1的IP地址,Mac地址是PC3的MAC地址,这样PC1和PC2的ARP缓存表中都有了PC3的Mac地址,那么PC1如果和PC2互相通信,实际上是都把数据发送给了PC3,再从PC3将数据帧转发给目标地址,PC3实际上在这里充当了一个中间人的角色,这样就完成了一次ARP欺骗
ARP攻击测试
本次测试是对局域网中的IP为192.168.179.131的主机进行测试
首先需要在攻击机上开启IP转发功能
查看目标主机的arp缓存表
开始攻击,这里使用的是命令行工具arpspoof,kali中arp欺骗的工具有很多,如果使用图形界面来操作可以选择ettercap工具
再次查看目标主机的arp缓存表,发现网关的MAC地址已经变为攻击机的MAC地址,arp欺骗成功,这时候就可以使用一些抓包工具来获取他的信息了
ARP欺骗防护
1.配置Access Management特性可以阻止攻击机发起的arp欺骗攻击
内容同Mac泛洪的防御方法
2.配置IP DHCP Snooping Bind特性来阻止攻击机发起的arp欺骗
DHCP Snooping会建立一张DHCP监听绑定表,对于已存在于绑定表中的mac和ip对于关系的主机,不管是dhcp获得,还是静态指定,只要符合这个表就可以了。如果表中没有就阻塞相应流量。
DCRS(Config)#ip dhcp snooping enable #使能DHCP Snooping功能
DCRS(Config)#ip dhcp snooping binding enable
DCRS(Config)#ip dhcp snooping binding arp
DCRS(Config)#interface ethernet 0/0/1
DCRS(Config-Ethernet0/0/1)# ip dhcp snooping trust #配置接口为信任接口