ARP的攻击与防御

ARP的攻击与防御

摘 要

随着网络的发展,网络范围的扩大,网络所提供的服务也越来越多种多样,网络资源的共享技术也是发展的越来越快,所以在这个越来越大、越来越复杂的网络里,发生网络攻击的风险也随之增大。而且现如今,越来越多的攻击都在基于底层的网络协议。ARP协议就是其中最容易被攻击的一种。
ARP协议通过对IP地址的解析,获得MAC地址,进而完成封装传输数据的过程。攻击者可以通过更改ARP报文,来达到对二层网络内数据流向进行重定向的目的。所以说ARP协议能否正确的解析出正确的MAC地址,关系到数据能否正确的传输。同时也可以说了解ARP攻击方式,并根据攻击方式去部署相应的防御策略可以最大程度的在网络的底层上,为用户提供可靠的安全的网络环境。

关键词: MAC地址表 ;ARP缓存表 ;欺骗攻击 ;单播 ;广播

Abstract

Along with the network development, the network scope expands, the network provides the service to be also more and more diverse, the network resources sharing technology has also developed more and more quickly, therefore in this increasingly big, increasingly complex network, the risk of the network attack also increases. And nowadays, more and more attacks are based on the underlying network protocols. The ARP protocol is one of the most vulnerable.
By parsing the IP address, the ARP protocol obtains the MAC address and completes the process of encapsulating and transmitting data. An attacker could redirect data flows within a two-tier network by changing the ARP message. Therefore, whether the ARP protocol can correctly parse the correct MAC address is related to whether the data can be transmitted correctly. At the same time can also be said to understand the ARP attack mode, and according to the attack mode to deploy the corresponding defense strategy to the maximum extent of the network at the bottom, to provide users with a reliable and secure network environment.

Keywords: MAC address table ;IP address table ; Spoofing attack ; Unicast; broadcast

第1章 绪论

1.1 概述

在日常的网络生活中,总是会使用到ARP协议,就像IP协议一样,在网络中使必要的,所以基于ARP的攻击方式也是层出不穷,那我们就需要去研究ARP协议,研究它的攻击方式,做出相应的解决方案。
首先要了解并研究ARP地址解析协议。ARP协议使TCP/IP协议簇下的一个协议,使用来根据IP地址获取MAC地址的协议。它是由IETF(互联网工程任务组)在RFC 826中制定的。它是网络中必不可少的。
在OSI七层模型下,IP协议运行在第三层网络层,ARP协议运行在第二层数据链路层。在根据OSI七层模型进行封装的时候,先封装的是第三层32位的IPv4的地址,然后封装第二层的48位的MAC地址。所以必须知道目的的MAC地址,不然就不能封装数据包。这时就需要ARP地址解析协议去根据数据包中的目的IP,查找出目的MAC,保证能正确的封装数据包,保证正常通信。
每当第一次设备开机的时候都会产生一条免费ARP报文,目标IP与目标MAC都为自己,然后从接口发出,来测试网络中是否有与自己相同IP的主机。
当主机想要通信的时候,主机不知道目的MAC地址的时候就会由ARP模块产生一个ARP请求报文,来请求对端的MAC地址,这时候的请求报文封装的目的MAC是一个全F的广播MAC(ff-ff-ff-ff-ff-ff),这样就可以在整个广播域内发出请求,整个广播域也都可以收到这个ARP请求报文,如果目标收到了这个请求报文,就会把报文内的原IP与原MAC加入ARP缓存表内,生成一条IP与MAC 相对应的条目,之后就也会把这个报文交给ARP模块处理,然后会分析出这是一个ARP的请求报文,然后会产生一个单播的ARP的回应报文,IP地址与MAC地址就是刚才的表象。经过这一系列的过程就算是建立了通信的基础,两台主机就互相知道了对方,就紧接着就可以进行封装数据了,开始通信。
从ARP请求与回应这个通信过程就可以看出来,由于需要使用广播报文来发出请求,在请求中就包含了自己的IP与MAC,就这样整个广播域中的主机都收到了这个请求报文,也就意味着,发出请求的主机已经暴露在了广播域中,这是极其不安全的。如果有攻击者,就可以通过,向你的主机快速且不断发送ARP的请求报文,来阻塞你的接口,使被攻击者不能相应其他的报文,这样被攻击者就无法上网正常通信。
正因为ARP请求存在这个广播的机制,而且不会对ARP的回应报文进行认证,是的任何主机都可去模拟回应报文,再就是,缓存表内的就需要其他的一些策略、防御机制等来保护主机和网络。
首先是ARP的欺骗问题,由于主机的请求以广播的方式发送了出来,存在在网络内的攻击者就知晓了被攻击者的IP与MAC,如果这个主机是网关,攻击者就可以向其他主机发送ARP的回应报文,由于ARP缓存表是会更新的,即后来的回应报文会替换掉之前的表象,这就可以让其他主机认为网关是攻击者,所有报文就都会发向攻击者,攻击者也就可以截取被攻击者的报文信息,如在HTTP这类未加密网站输入的密码等,再将报文发送给网关,这样就使得攻击者站在了主机与网关之间,实现了中间人攻击。
在防御方面,首先需要做到的就是1、使电脑不收欺骗的报文;2、保证电脑收到欺骗报文之后不相信。这样就可以完全避免ARP的攻击了,但是如何去做才是问题。
用户可以在交换机上绑定静态MAC,但是这种方法太麻烦,不合适移动端,但是却最有效的,因为通过学习得到的MAC地址是不会覆盖静态的MAC地址。
其次可以部署防火墙,开启防火墙的ARP防御,可以通过防火墙,来设置ARP报文所占的带宽,如果超过就不接受,来保护接口与设备,还可以侦测ARP的流量,如果某个接口流量过大,就可以自动关闭端口并告警,让管理员来检查线路并手动开启接口。
最后就是可以多划分vlan,使广播域变小,可以最低程度的减小被攻击后的危害,还可以防止广播风暴等。

第2章 原理描述

2.1 报文结构分析

在想要研究一个协议的开始,可以从这个协议的报文结构开始分析,分析出了报文的结构,那就可以进一步去了解报文的工作流程,所以说,了解报文结构是研究一个协议的开始。

2.1.1拆分报文

在ARP协议中,ARP的报文结构如图2-1所示:
ARP报文结构
图2-1 ARP报文结构
在报文的最外层是48个比特的Ethernet Address of estination,即16位的目的MAC地址,当发送ARP请求的时候,这个地址就是0xFFFF:FFFF:FFFF。第二层是Ethernet Address of sender,同样也是48个比特,即为源MAC,就是本机发送端网口的MAC地址。第三个字段为Frame Type,是16比特的数据类型,目的是为了表明这个数据帧上层是什么协议,这样在CPU在解封装的时候就可以不用再继续解封装,检查到Frame Type的时候,就可以将数据帧转发给相应的模块进行解析,在ARP的报文内,Frame Type字段的值一般为0x0806,另外其他常见OSPF报文的Frame Type字段的值为89,ICMP为1,EIGRP为88。接下来是16比特Hardware Type字段为硬件类型,对于以太网内来说,该类型的值应该为“1”。Protocol Type字段为16比特,是发送方要映射的协议地址类型,一般映射的协议地址类型都是IP地址该值为0x0800。Hardware Length字段为8比特的硬件地址长度,长度单位为字节,对于ARP请求或ARP应答报文来说,Hardware Length的值为6。在Hardware Length字节之后的是8比特的Protocol Length,协议地址长度,在Protocol Type字段中值为0x0800,那Protocol Length,就是与之对应的IP协议地址的长度,值应该为4。接下来就是重要的信息了,OP字段,为16比特,表示这个数据报文的操作类型,值为1的时候表明这个数据帧是一个ARP的请求报文,来请求目的IP与之对应的目的MAC地址;值为2的时候,就是单播回应ARP请求的ARP应答报文。接下来就是48比特的Ethernet Address of sender,发送方的MAC地址,该字段应该与ARP报文头部的源以太网地址字段是重复的信息。IP Address of sender为32比特的发送源端的IP地址。Ethernet Address of destination为48字节的源端的以太网目的地址,当报文为ARP请求报文的时候,这个字段的值就应该为全“1”,即16位的全F。IP Address of destination是32位的接受端的IP地址,当在ARP请求报文中的时候,这个值也是全“1”,即10进制的“255.255.255.255”,这个广播地址,这样整个广播域,都会收到这个ARP的请求报文。

2.2 报文类型分析

在研究了报文的结构了之后,就需要知道,ARP报文的种类及分别的用途,为接下来研究ARP协议的工作过程做好铺垫。

2.2.1 ARP请求报文

在ARP正常的工作过程中总共会产生两种报文,一种是ARP的请求报文,另一种就是ARP的回应报文,这两种报文相辅相成,必须有请求才会有应答。
ARP的请求报文就是在ARP缓存表内没有需要的IP地址的MAC地址的时候,无法完成以太网帧的封装。这时就需要向目标IP地址的主机发送请求,请求目的IP地址的主机的MAC地址。
由于发送主机并不知道目标主机在网络中的位置,这时以太网帧内部的Ethernet Address of destination就会填“全1”,即FFFF:FFFF:FFFF,IP Address of destination也是“全1”,即255.255.255.255,将报文进行广播发送。并将以太网帧内部的OP字段的值改为“1”。
2.2.2 ARP回应报文
当一台主机收到了一个ARP的请求报文之后,就会对报文进行解封装,如果发现请求的是与自己IP相对应的MAC地址时,就会重新封装一个单播的ARP回应报文。
在这个报文内部,目的IP及目的MAC地址,都不再是“全1”,而是收到请求报文的原地址。然后将自己的IP地址和MAC地址,作为源地址进行封装报文。这时以太网帧内部的OP字段的值,应该改为“2”,来表明这是一个ARP的回应报文。

2.2.3 免费ARP报文

免费ARP是在主机或其他三层设备在通过DHCP服务器分配到了一个地址之后发送的一个报文。
免费ARP报文也叫免费ARP请求报文,它是另类的ARP请求报文,不过它请求的是自己的MAC。当一个ARP报文以太网帧内部的OP字段的值为“1”,并且目的IP地址和源IP地址相同的时候,我们便将这个ARP报文称之为免费ARP报文。
免费ARP报文的主要作用是,当一个主机加入到一个新的网络内的时候,为了防止IP地址冲突。如果两台主机IP地址冲突就会导致这两台主机一会儿这台能上网,一会儿另一台能上网,导致网络通信的不稳定。这时每个主机在加入到新的网络内的时候,就会发送免费ARP报文,以0000:0000:0000为目的MAC地址,自己的IP地址为目的地址,发送一个ARP请求报文,请求自己IP的MAC地址。如果在网络内部,有与自己IP相同的主机,就会返回一个回应报文,主机界面也会弹出“IP地址冲突”的字样。如果没有网关就会返回一个相同的报文。如果主机地址冲突,可以通过ipconfig /release命令来通知DHCP服务器将IP地址释放并重新请求IP地址(如下图所示),或者可以通过自定义IP地址的方式来解决IP地址冲突的问题。
释放IP地址
图2-2 释放IP地址
一般在主机加入新网络的时候,便会在新广播域内广播免费ARP报文,来查找是否有相同的IP。或者当主机的MAC地址发生改变的时候,也会发送免费ARP报文。

2.3 MAC地址表和ARP缓存表

在ARP的报文经过交换机的时候,要明白数据是如何选择路径,就要明白数据在交换机里的传输方式,就要明白在转发数据包的时候要根据ARP缓存表去转发数据,还是要根据MAC表去转发数据。
2-3拓扑
图2-3拓扑
在上面的拓扑里,PC1通过Ethernet0/0/1接口与LSW2的G0/0/2口相连接,LSW2就是在企业中的接入交换机,这类交换机的特点应该是接口较多,并且不会再接入层上设置网关,LSW2通过GE0/0/1接口与LSW1的GE0/0/1接口相连接,LSW1在企业网络里就应该会是核心汇聚交换机,网络内各个VLAN的网关就应该设置在汇聚交换机上,这样不但可以方便管理,还可以最大程度的提高网络的扩展性。
网关地址
图2-4 网关地址
在PC1上设置IP地址为192.168.1.10/24,在LSW2上不做任何配置,在LSW1上创建VLANIF接口,在VLANIF接口上配置IP地址,将这个地址设置为VLAN 1 的默认网关。
这时候,分别去查看LSW1和LSW2这两台交换机上的MAC表与ARP缓存表,会发现什么都没有。是因为,主机没有与网关进行通信,所以也不会有ARP的请求信息,这是只需要从PC1上PING网关的地址192.168.1.20/24这个地址,PC1就可以开始发送ARP请求,LSW1就会相应PC1的请求,并做出ARP的回应报文去回应PC1。
在这里插入图片描述
图2-5 MAC表和ARP表
在图2-5中可以发现LSW2这台交换机的MAC表中是有是有两条表项,第一条中的MAC地址就是PC1的MAC地址5489-987f-53b9。
主机MAC地址
图2-6 主机MAC地址
接口物理MAC地址
图2-7接口物理MAC地址
第二条表项就是LSW1的GE0/0/2口的物理MAC地址。
但是LSW2中ARP缓存的表项一个也没有,这就从反面证明了在二层数据传输的时候,是不需要ARP缓存表的,仅仅只需要MAC表。因为交换机可以对报文的头部进行解封装,然后可以头部的以太网地址,及MAC地址,查找MAC表,查找MAC地址与接口号的对应关系。并根据接口号进行转发数据包。
在这里插入图片描述
图2-8 MAC地址和ARP
在看LSW1的MAC地址表,只有一条表项,这一条表项中记录的MAC地址也是PC1 的MAC地址5489-987f-53b9。
然后是ARP缓存表。存在两个条目,一个是LSW1自己设备上VLANIF 1 逻辑接口上的IP地址的条目,还有一个就是PC1的IP地址所对应的条目。在非本设备或非静态ARP条目的表项信息内,都会带一个EXPIRE(失效时间)单位是分钟,例如:192.168.1.10这个条目的失效时间就为20分钟,只有在再次有从192.168.1.10发来的数据包,这时失效时间救护重置为20分钟,再次开始倒计时。
从LSW1和LSW2两台交换机之间不同的MAC表和ARP缓存表可以看出,LSW1是通过ARP缓存表去转发数据的,而LSW2却是通过MAC表转发数据。MAC只是出于二层的地址信息,MAC表中,只有MAC地址和接口信息对应的信息,这样就意味着LSW2,在转发数据的时候,只是会查看报文中的目的MAC地址,而不会去查看报文中的目的IP地址,根据目的MAC地址,查找MAC表中相应的接口号,然后直接按接口转发出去。LSW1会按照ARP缓存表去转发数据,ARP表中是IP、MAC和接口的三者的对应关系,ARP是运行在2.5层的协议,作为二层与三层之间的过渡。
在这里插入图片描述
图2-9 路由表
在LSW1中还是有P路由表(IP Routing-table)的,IP协议是运行在三层的协议,但是在封装报文的时候IP协议无法直接获取MAC地址,这时就需要ARP缓存表的参与。如上图所示,IP路由表中,虽然有192.168.1.20的转发接口为VLANIF接口,但是这只是一个和LoopBack接口类似的逻辑接口。并不能清楚的看出想要发送到192.168.1.20的数据包应该在哪个物理接口发出。更别说封装数据包了,仅仅只有IP路由表的话,无法获取PC1主机的MAC地址,就不能在数据报文中的报头目的MAC处填写MAC地址。所以运行在2.5层的ARP协议,所产生的ARP缓存表就很有必要,在ARP缓存表中是有IP地址、MAC地址、接口的对应关系。LSW1会通过查找ARP缓存表,不但可以知道数据包应该从哪个物理接口发出,还可以知道目的IP的目的MAC地址,这样就可以顺利的发出数据。

2.4 ARP协议工作工程分析

在ARP协议正常的工作过程中,请求主机会先广播ARP请求,后被被请求者收到,单播回应。

2.4.1 请求回应过程

在一个三层局域网内,一个主机或其他的三层设备想要访问或ping通其他主机或者三层设备的时候,首先需要知道对方的IP地址,然而仅仅知道IP地址是不够的,因为数据包的封装需要在最外层封装对方的MAC和本端的MAC,所以在三层数据转发的时候需要MAC地址的参与,所以就需要ARP协议,ARP协议就是用来把IP地址解析成MAC地址,保存记录下来,并在主机或三层设备上建立和维护一张ARP表,以便下次通信是不用再次解析,减少通信的延迟。
在数据包的封装的过程中需要目的IP、原IP、目的MAC、原MAC,其中只有目的MAC不知道,这时候就需要ARP地址解析协议来解析目的IP,获得目的MAC,来封装数据。比如:PC1想要访问PC2,
在这里插入图片描述
图2-10 模拟拓扑
由于PC1不知道PC2的MAC地址,PC1就需要通过Ethernet0/0/1接口发送一个ARP的请求报文出去,以目的MAC为全F 的MAC地址(ffff-ffff-ffff-ffff)、目的IP为Broadcast全是1(255.255.255.255)、源IP和源MAC都为PC1相应的地址进行广播发送,使整个广播域都能收到请求192.168.10.2的MAC地址。
在这里插入图片描述
图2-11 请求报文报头部分
当交换机收到请求报文的时候,就会先开始解封装,把PC1的IP地址,接口号以及MAC地址加入到自己的ARP表中,然后发现这是一个ARP的请求报文,就会把这个报文再次封装,并在同一广播域内广播再次发送出去。
在这里插入图片描述
图2-12 回应报文报头部分
在这里插入图片描述
图2-13 报文内字段
图2-13为交换机G0/0/2和G0/0/3号接口的抓包
当PC3收到请求报文的时候,也会开始解封装,然后也会把PC1的IP与MAC地址加入自己的MAC表,然后发现这是一个ARP请求报文,就会把报文交给ARP模块处理,但是请求的IP不是自己就会把报文丢弃。
当PC2收到请求报文的时候,处理过程和PC3相同,但是PC2发现请求的IP与自己相同,就会产生一个ARP应答的单播报文,目的MAC直接就是PC1的MAC地址。
在这里插入图片描述
图2-14 单播回应报文
当交换机收到PC2的ARP应答的单播报文,就会根据刚才建立的ARP表,直接快速转发给PC1。

在这里插入图片描述
图2-15 报文内字段
PC1收到ARP应答之后就会开始封装数据包,开始与PC2的通讯。并且会将PC2的IP地址192.168.10.2与其相应的MAC地址加入ARP缓存表内,这样需要再次通信的时候就可以不需要再次发送ARP的请求报文,加快了信息的传递效率。

第3章 ARP 攻击

3.1 ARP攻击的当前形势

早期网络是以学习科研为主,所以纪要功能齐全,就没有考虑到网络安全,所有网络以信任模式为主,尤其是以太网泛洪太多,其他恶意软件和容易就可以通过IPV4广播地址255.255.255.255来截获,在局域网络内的广播报文例如:ARP的Request报文和DHCP的Request报文,并且当网关收到了其他恶意软件发送的恶意报文时,网关也会信任这个报文,无法鉴别报文的合法性,这就为恶意软件提供了可乘之机,使攻击者和容易就得到了你的网络里的信息。
恶意软件可以通过虚拟IP地址和MAC地址的方式来截获用户的信息。为了防止ARP攻击以太网,防止他人恶意截获所在网络内与其他计算机之间的通信信息,防止信息外泄,同时为了保护用户的账号财产安全,尤其以网吧这类大型局域网场所为主,极易遭到ARP攻击,一旦遭受,会导致网络瘫痪,进而影响整个局域网的正常工作,所以在研究ARP的攻击方式并做出防御是极其有必要的。

3.1.1攻击现象

在电脑或其他主机设备发生断网等情况的时候,如何去判断是遭受到了的攻击是ARP的攻击,展开防御手段的前提。如果连,遭受到的攻击是什么类型的攻击不能去判断,这就没有办法去应对相应的攻击,就会显得“手足无措”。再就是如果仅仅是因为运营商的网络不稳定,造成的网络延迟高、网速慢、网络断断续续,而去配置防御措施是没有必要的,不仅仅浪费了人力物力,而且还没有部署本来应该去部署的防御措施。所以能够判断出来是否遭遇到了ARP攻击是十分有必要的。这样才可以及时的解除断网的威胁,降低损失。
首先如果遭到了攻击,在上网的时候表现出来的现象就是网页不能打开,就像是断网一样或者是网页打开很慢,网速不达标。如果在玩游戏,那就是会是pin值很高,延迟很高,或是经常掉线。如果是在下载文件,如果使用的是P2P协议进行下载,那就会发生下载停止的现象。
在这里插入图片描述
图3-1 arp命令
如果发生了这些现象,首先应该检查本机ARP表,并清空ARP表,可以在控制台上,输入arp -d 清空ARP表的缓存,重新请求ARP。也可以重启计算机,来清除ARP缓存。
还有可能发生的现象就是,在工作或游戏过程中断网,再次登录时候,就发现游戏账号被盗窃这也很有可能的是遭到了攻击,但是这只是基于ARP的攻击。很多盗号的软件都会基于ARP协议去编写盗号程序,所以部署ARP防御措施是很有必要的。不仅仅可以保护部署了防御措施的主机,甚至可以保护整个网络。

3.2常见的攻击方式

在遭到攻击后,人们肯定会想去解决遭到攻击的问题并部署相应的防御措施。在部署防御措施之前,应该先去了解ARP,什么是ARP,为什么ARP这么容易遭到攻击,常见的攻击方式有哪些,最后才是部署防御措施。
在上文中,已经论述了什么是ARP,并且根据ARP的工作过程,对ARP协议容易遭到攻击的原因,进行了简单的分析。但是这还远远不够,想要部署绝对安全的局域网,就要彻底解决ARP攻击的造成的危害,并对攻击进行遏制,甚至使惩罚攻击者。
所以我们就要对ARP常见的几种攻击方式去进行仔细的分析,研究攻击的每一步,相应的就可以根据攻击的方式,做出相应的防御措施。正所谓“对症下药”,就是要根据不同的攻击方式,选择不同的防御模式。

3.2.1 IP冲突攻击

众所周知,IP地址,是指互联网协议的地址,在互联网上区分不同主机的逻辑地址,是为了使主机在互联网上能确定自己身份的标识,就相当于每个人的名字。这样,在数据通信的时候才能准确的找到想要与之通信的主机,而不会与错误的主机建立连接并通信。所以在同一广播域IP地址是绝对不能相同的,如果相同了就会发生IP地址冲突的事件。
在这里插入图片描述
图3-2 主机MAC地址和IP地址
如果发生了IP地址冲突,在Windows系统内会弹窗提示IP地址冲突,并将IP地址自动划分到一个与局域网不在同一网段的局域网内,例如:本来本机的无线网卡的地址是192.168.1.101/24,网关在路由器上,为192.168.1.1/24,但是当手动修改IP地址的时候,如果与局域网内的其他主机或设备的IP地址冲突了,就会弹窗提醒,IP地址冲突,并且如果配置会导致网络异常。
在这里插入图片描述
图3-3 IP地址冲突
当我修改了IP地址,将IP地址改为,同一局域网下其他主机的地址的时候,主机的无线网卡上的IP地址就自动修改为了169.254.202.130/16,在查阅资料后发现,当Windows检测到IP地址冲突之后,就会自动将后进入局域网的冲突地址的主机的IP修改为169.254.0.0/16网段。这个地址短就是当主机设置了动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)功能自动获得一个IP地址,那么当动态主机设置协议服务器(DHCP服务器)发生故障,或响应时间太长而超出了一个系统规定的时间,系统会分配这样一个地址。如果发现主机IP地址是一个这样的地址,该主机的网络大都不能正常运行。IP地址冲突也属于这类情况,所以主机就被分配到了这个IP地址。这样后加入的主机就会被在局域网外被隔离,原来向同IP的主机通信的稳定性就得到了保障。
但是如果遭遇了IP地址冲突的攻击,却是先获得地址的主机不能通信。因为攻击者不启用动态主机设置协议,攻击者自己设置接口IP地址。这样攻击者的主机的IP地址也不会被分到168.254.0.0/16网段,不能有效的将攻击者进行隔离。
当正常的主机想要与互联网或其他网段进行通信的时候,由于ARP的请求只能在同一局域网内进行广播,这样就会不能向其他网段的主机进行请求,进而不会收到回复。这时,网关的作用就体现出来了。网关,实现了网络层上的互连,本来主机都在一个局域网内,如同主机都在一个房间内,当主机之间想要通信的时候,就会“喊(广播)”出来,询问其他主机的MAC地址。但是仅仅是“喊”不能传递到另一个房间,这时就需要网关,网关就相当于通往其他房间的门,只有通过门才能去往其他房间,所以,只要有“一个人”,即一台设备,来充当网关这样,在不同房间之间的“人(主机)”就可以通过网关,来传递消息。如果主机再次想要发送消息,就会先将目的IP与目的IP的掩码进行“与”运算,得出一个网段,例如:192.168.0.0/24这样。然后,再将自己的IP与自己IP的掩码进行“与”运算,再得出一个网段,然后将两个网段进行比较,如果相同,那就证明目的IP的主机与自己在同一个“房间(局域网)”,然后紧接着会“喊”着询问目的IP的MAC地址就好。如果两个网段不同,那就是证明这目的主机与源主机不在一个“房间(局域网)”里,源主机就会将ARP的请求包,直接发送给网关,然后静静的等ARP的回应报文就完成了。
IP地址冲突,就是通过发送ARP报文中的免费ARP报文,在广播域内通告的攻击者模拟的IP地址,就是被攻击者的IP地址,这样就违反了IP地址唯一性的原则,表现出来的现象就是网络时断时续。而且最重要的特征就是在Windows系统下,会不断地弹出IP地址冲突的警告,在刷新本地主机的ARP表项或者重启计算机之后,网络会立即回复一段时间。这个时候,就可以判断出来,主机很有可能就是遭受到了IP地址冲突攻击。

3.2.2 断网攻击

断网攻击与IP地址冲突很相似,不过IP地址冲突,是伪造的IP地址,断网攻击是伪造的MAC地址,同不同的是,断网攻击是发送ARP回应的报文,不过在回应报文内,源MAC会修改为被攻击者的MAC地址。当攻击者使用软件修改攻击主机的网卡物理地址的时候,攻击者的主机就会发送ARP的回应报文给网关,然而网关对ARP的报文没有加密措施,任何的回应都会接受,并更改网关自己的ARP缓存表。当网关内的ARP表的对应条目,被修改为攻击者的IP和被攻击者的MAC相对应的时候,并会记录最后的ARP的回应报文是从哪个接口收到的。这样被攻击者的与外部网络的连接就会断开,然后连接就会向攻击者的主机建立,从而改变通信数据流向。但是如果被攻击者要访问一个新的主机的时候,被攻击者还是会重新发送ARP的请求报文,这样网关又会刷新ARP缓存表,并更改表项,从而使得数据流向回归到正确的链路。大部分的攻击者,也是会一直发送错误的ARP回应,来反复刷新网关或其他设备的ARP表项。这样本来要发送到被攻击者的数据,都会发送到攻击者,因为在二层网络内,不是根据IP地址仅限转发,而是根据物理地址,即MAC地址进行转发,这样就完美的改变了数据流向。只要攻击者不断的发送回应报文,使网关的ARP缓存表不被更改,这样就接获了被攻击这的数据,从而达到了断网攻击,而且达到了接获数据目的。

3.2.3 ARP DDOS攻击

ARPDDOS攻击。ARPDDOS攻击是基于ARP协议的DDOS,在过去最为常见的一种攻击收发。首先要了解什么是DDOS攻击,DDoS (Distributed Denial of Service,分布式拒绝服务)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。然而ARP是一种无连接的协议,当被攻击者收到攻击者发来的ARP应答报文的时候。被攻击者都会去接受ARP应答报文中,并将报文进行解封装,提取报文中的信息,最终会去根据报文中的信息更新ARP缓存表中相应的条目。这样,攻击者不断地发送回应报文,被攻击者,就会不断地消耗CUP、内存和带宽去处理这些ARP的回应报文,使得被攻击者处理其他事情的能力下降。而且,当攻击者使用分布式拒绝服务,去实现攻击的时候,就会在局域网内控制许多的“肉鸡”,即傀儡机受黑客控制的计算机。所有的傀儡机会一起向别攻击者一起发送ARP回应报文,这样就实现了分布式拒绝服务攻击。当多台主机攻击一台主机的时候,被攻击者的计算机资源和网络资源就会大量被占用,进而表现出来的现象就是网速慢,网络丢包严重。再就是在Windows控制台程序下,查看ARP表项,会发现其中有一个表项,IP地址对应的MAC地址一直在变化,如果发生这种现象,一般就是遭到了ARP的DDOS攻击。

3.2.4 拒绝服务攻击

拒绝服务攻击与基于ARP的DDOS攻击不同,拒绝服务攻击不是去使用大量傀儡机,通过发送ARP回应报文,去阻塞被攻击者。而是通过改变网关或其他设备的ARP表,来实现拒绝服务攻击,也叫DOS攻击。不过分布式拒绝服务也是拒绝服务攻击的一种,都是实现使被攻击的主机不相应其他主机发送的服务请求。基于ARP的拒绝服务攻击,一般都是,攻击者的主机制造一个ARP的回应报文,将被攻击者的IP地址和一个不存在的MAC地址,映射在一起。然后将报文单播发送到网关或其他设备,使网关或其他设备到被攻击者的数据链路逻辑断开。因为当设备要进行二层转发的时候,会去查找MAC表,但是没接口号可以与这个不存在的MAC地址相对应,这样,数据包就会在二层交换机被丢弃。进而被攻击者收不到服务请求的回应报文,可能会启用重传机制,但是即使启用了重传机制,但是服务器的回应,还是会被交换机丢弃,结果,被攻击者的主机表现出来的现象就是相应超时,网络断开。相比于分布式拒绝服务攻击更有优势的一点就是,拒绝服务攻击不需要控制大量肉鸡,也不需要直接攻击被攻击者,只需要在被攻击者上网的路径中的网关或其他核心设备处,对ARP表项进行修改,就可以实现使被攻击者拒绝服务。同样,拒绝服务攻击还可以通过ARP回应报文去修改,被攻击者主机的ARP表项。将目标主机的ARP表项中IP地址与MAC地址的映射,全部映射到一个或多个不存在的MAC地址。这样也在数据链路层实现拒绝服务,而且这样更方便实现接下来的克隆攻击,因为这样,提供服务的服务器就不会收到被攻击者的服务请求,那就也不会去发送请求,在产生的现象来看,都是会服务响应超时。但是第二种,去修改被攻击者的ARP表,却不容易被察觉,一般的网络都会在网关处,部署防火墙设备,可以对ARP攻击进行检测,所以说,一般的用户也不会去在自己的设备上部署ARP防火墙软件,而且,大部分的用户甚至不了解ARP攻击是什么,这就为攻击者提供了便利的攻击条件,也为攻击者的攻击提供了隐蔽性。

3.2.5 克隆攻击

克隆攻击是在拒绝服务攻击或分布式拒绝服务攻击之后,继续实施的攻击手段。当被攻击者的主机遭到了第二种拒绝服务攻击者后,被攻击者就无法向外发送数据包,这样攻击者就可以修改攻击者的主机的IP地址以及MAC地址,将IP地址和MAC地址修改为被攻击者的IP地址和MAC地址,这样在网络结构上,攻击者就相当于替代了被攻击者在网络上的位置,网关也会通过ARP的请求和回应报文,修改ARP表现中的接口信息,将被攻击者的IP划分到攻击者接口上,这样就实现了克隆的攻击方式。攻击者就可以通过这种方式去获取局域网内其他主机的信息,并与其他主机进行信息交流,却不会被网关等设备发现。

3.2.6 扫描攻击

扫描攻击甚至不能算是攻击,它只是通过主动扫描或者是被动监听的方式,来发现和确定同一网段内的主机数量和相应的IP地址。主动扫描就是攻击者主动发送ARP请求的广播报文,例如:当攻击者处在10.1.20.0/24网段的时候,就会从10.1.20.1到10.1.20.254对整个网段发送ARP请求报文,不管网络内有多少主机,攻击者也不到到,但是每个IP地址我都发送ARP请求去询问,如果IP地址不存在,也不会有回应的消息,就证明,网络内这个IP地地址还是没有被使用的,但是这样也会在广播报文中携带攻击者自己的IP地址及MAC地址,这样的隐蔽性是很差的,也可以说是根本没有隐蔽性。但是这样的扫描方式速度快。
攻击者甚至还可以通过网络内各个主机发送的回应报文,来判断网络内的设备种类。这都是依靠MAC地址的前24位机构唯一标识符(OUI)来识别。像10.1.20.254应该就是一台思科的设备作为网关,10.1.20.243就应该是一台魅族的手机,10.1.20.249,就应该是一台小米的手机。
还有一种就是被动的监听,攻击者可以通过在自己的网卡,进行抓包,通过过滤处ARP的请求报文报文,记录网络内的请求者的IP地址与MAC地址的对应关系。因为所有主机或设备的ARP表都具有老化机制,这个机制可以有效的保护主机发送的报文不会因为MAC地址错误而丢失。不同的系统对于ARP表的默认老化时间也是不同的,Windows 2000/XP系统ARP表项的老化时间是2分钟,95/98以及NT系统是10分钟,大部分Cisco交换机是5分钟,华为的设备一般是20分钟,这些ARP表的老化时间都可以通过修改注册表或设备的配置命令进行修改,例如华为的设备就可以在系统视图或接口视图下执行命令arp expire-time 老化时间,配置动态ARP表项的老化时间。ARP老化时间expire-time取值范围:框式交换机是60~62640,盒式交换机是30~62640,单位是秒。然后通过display current configuration | include arp,查看设备上已配置的动态ARP表项的老化时间。这样最多二十分钟,攻击者就可以收集到网络内所有主机的IP地址和MAC地址了。
在这两种扫描方式中,被动监听模式是绝对不会占用网络内用户的带宽,而对网络造成影响。但是主动扫描不同,由于ARP请求是广播报文,这就使得除了攻击者之外,所有主机都会在同一时刻收到254(10.1.20.1到10.1.20.254)个ARP请求报文,这样对网路的主机都会造成瞬间的网络延迟,而且对网络内的交换机,或者是集线器(HUB)都会有很大的负载压力,因为广播报文就需要交换机将广播报文进行解封装都复制后,再从所有接口发送出去。如果是一个48口交换机,那除了收到广播报文的接口,剩下的所有47个接口都要发送广播报文,那就一共是47x254,等于11938,这对交换机的CPU、内存和链路的带宽有很大的压力,在交换机处理这段广播报文的时候,对于其他的正常的报文信息,肯定就会采取添加到等候的队列中,如果队列已满,还会发生丢包的情况。所以说,即使是扫描也会对网络的稳定性造成影响。

3.2.7 中间人攻击

中间人攻击(Man-in-the-Middle Attack,简称“MITM攻击”)是ARP攻击方式中最为常见的一种,由于IP网路的开放性,这种攻击不但可以接获被攻击者的所有数据包,甚至还可以修改数据包中的信息,进而达到攻击者盗取信息、获取非法利益的目的。
如同中间人攻击字面上的意思,中间人攻击就是将攻击者自己的主机逻辑放置在被攻击者和提供服务的主机中间,但是不论攻击者是想要劫持会话(Session Hijack)还是想要进行DNS欺骗,随着,网络结构的优化,集线器(HUB)渐渐的推出历史舞台,交换机慢慢的代替,使用简单的嗅探攻击已经不能成功了,必须要先进行ARP的欺骗,才能更真实的伪装成代理服务器,去实现监听或修改已明文来传输的协议,例如:HTTP、FTP、Telnet等。被攻击者和真实的服务器却毫不知情。所以说虽然中间人攻击这种攻击手段很古老,但是却是使用最为广泛的一种攻击,而且在将来这种攻击的还具有很大的发展空间。现阶段,这种中间人攻击,第一步都是要实现,在客户端和服务端来实现双向欺骗。这样才可以隐藏在客户端和服务端之间,才可以不被发现的监听和修改被攻击者的报文信息。
假设,网络内的拓扑如下所示:
在这里插入图片描述
图3-6 模拟拓扑
当PC1想要去访问Server1的时候,首先会发送ARP的请求报文,请求服务器端的MAC地址,这时候,处于监听状态的攻击者就会在攻击者的主机的Ethernet0/0/1的接口上收到LSW1广播发送的PC1的ARP请求报文,在报文中,攻击者就知道了PC1的IP地址与MAC地址,而且还知道PC1想要去访问的IP地址,然后攻击者也会向PC1想要访问的IP地址去发送ARP的请求报文,这样攻击者就知道服务器端的IP地址与MAC地址的映射关系。由于在这个网路内,LSW1这个交换机,只是一个具有二层转发功能的交换机,接口都没有开启三层功能,所以交换机的三个接口都不存在IP地址,这样网络内所有主机和设备的MAC和IP地址的对应关系都明确了。
在这里插入图片描述
图3-7 模拟拓扑
这时,攻击者已经明确了想要攻击的主机在网络中位置,而且还知道了被攻击者想要去访问的主机。然后就会开始欺骗攻击。攻击者会同时通过攻击者主机的Ethernet0/0/1口,向PC1发送ARP回应报文,报文的源IP为服务器端的IP地址,MAC地址为攻击者自己主机的Ethernet0/0/1口的MAC地址。这样PC1想要发送到服务器端的数据包,都会经过交换机的二层转发,从GE0/0/2口发送到攻击者的主机。与此同时,攻击这还会通过软件生成发往服务器端的数据包,源IP为PC1的IP地址,MAC地址也为攻击者自己主机的MAC地址,目的IP地址和目的MAC地址,都为服务器端的。由于,没有部署端口安全,交换机只会去查看数据报文的目的IP地址和目的MAC地址,然后通过MAC表进行二层转发。这样PC1和服务器端,以为建立了正常的从PC1到交换机再到服务器端的通信,其实中间还会经过攻击者的主机,数据流向就变成了,从PC1到交换机,到攻击者,再到交换机,最后到服务器端。
在这里插入图片描述
图3-8 模拟拓扑
当有数据包返回的时候,服务器要将数据包返回给PC1,就会查看服务器自己的ARP表,查找与PC1的IP地址对应的MAC地址。由于攻击者不断地在向服务器端发送错误的ARP回应报文,就使得服务器会不断地刷新ARP表项,将错误的表项加入到ARP缓存表内,这样在封装报文的时候,目的IP地址为PC1的地址,但是目的MAC地址就会被欺骗为攻击者的MAC地址,这样,这个数据包在被交换机收到的时候,由于交换机没有启用三层功能,所以只会根据MAC表进行转发,当交换机在解封装之后,看到目的MAC与GE0/0/02这个接口相对应的时候,就会将报文重新封装之后从GE0/0/2接口直接发送出去,这样攻击者就收到了服务器回应PC1的数据包,这时攻击者就可以通过软件对数据包进行复制采集,还可以对数据包内的内容进行修改,在盗取信息或修改信息之后,攻击者就会对报文进行重封装,目的IP地址不修改,但是目的MAC地址会修改为PC1主机Ethernet0/0/1接口的MAC地址,也就是物理网卡的MAC地址,然后报文中的源IP为服务器端的IP地址,源MAC为攻击者主机的MAC地址。这样重封装完成之后,就会将修改后的报文发送给交换机,交换机查找交换机自己的MAC表,找到与PC1主机IP地址相对应的接口是GE0/0/1,然后将报文从从GE0/0/1接口发出,这样PC1就收到了攻击者这发来的修改过的数据包。但是由于攻击者在不断地发送ARP的回应报文,PC1就会以为这个被攻击者修改过之后的报文,就是服务器端发送的报文,并会对报文进行相应的处理。
这样中间人攻击就已经是完成了,之后,攻击者可以不断地接获PC1到服务器和服务器到PC1之间的数据包。攻击者通过不断地发送ARP回应报文来刷新被攻击者的ARP表,达到数据流重定向的目的,这样PC1想要发送给服务器端的数据包,其实是发送给了攻击者,服务器端想要发送给PC1的数据包,也是发送给了攻击者。
中间人攻击的另一种表现形式,就是会话劫持。会话劫持(Session Hijack)就是一种结合了ARP扫描以及ARP欺骗的技术的攻击手段,与上述攻击过程类似。从全局来讲,会话劫持,就是在一次正常的会话通信中,中间人作为第三方代理服务器,参与到其中,或者是数据里加入其他信息,或者是直接改变数据的通信模式,将所有通信都要通过中间人假扮的代理服务器,这样就由直接联系,变为直接参与的联系。

3.2.8 全网欺骗攻击

ARP全网欺骗,这种欺骗方式可以将全局域网的数据流进行重定向,将想要发送到外网的数据全部发送到攻击者,攻击者就是在替代网关。
首先攻击者会先确定自己所在的网段,只要通过查看主机的IP地址及掩码就可以确定。然后攻击者会使用软件生成一个ARP请求报文,目的IP为同一网段随意的一个IP地址,不论是什么都可以,目的MAC地址就是FF-FF-FF-FF-FF-FF的广播地址。但是报文中的源IP会设置为网关的IP地址,一般为254,源MAC会设置为,攻击者自己的MAC地址。当这个报文发送出去之后,经过交换机的复制转发,虽然可能设定的目的IP地址是不存在的,也不会有应答报文传送回来,但是网络内所有的设备都会收到这个广播的ARP请求就足够了,因为,当主机收到ARP的请求报文之后,会将报文解封装,发现是个ARP报文,上传给ARP模块处理,但是主机还会将源IP地址与源MAC地址,更新到主机的ARP缓存表内,这样,网络内所有的主机就会认为网关所在的位置就是攻击者所在的位置,攻击者就可以收到网络内所有主机想要与广域网通信的数据包,这样不仅仅是截获了一台主机,而截获了局域网内所有的主机,虽然这对攻击者主机的负载压力很大,但是,攻击已经实现,全局域网内的主机都已经不能访问局域网之外的设备了,因为前文提过,要想访问局域网之外的主机,就需要网关去帮助主机去转发,但是在被攻击之后,所有的设备都会认为攻击者是网关,但是攻击者又不具备网关的可以向外转发的功能,因为攻击者也仅仅是一台普通的和其他被攻击者相同的主机。

第4章 ARP 防御

4.1 当前形势

在现如今,ARP防御已经做得越来越完善,不仅仅可以通过硬件,如:路由器进行二层隔离,还可以通过软件的方式对ARP报文进行操作。

4.2 ARP防御模式

ARP防御模式主要分为两种,一种是硬件防御,可以通过部署防火墙,现如今市面上大部分的防火墙都具有对ARP进行防御的功能,例如:山石、天融信、深信服等;还有一种方法就是通过软件,即交换机上的命令行进行部署策略。

4.2.1 ARP报文限速

当交换机或者主机等设备遭到了拒绝服务攻击,瞬间收到了大量的ARP报文需要处理,但是CUP的处理能力是有限的,CPU的拥塞管理和拥塞避免机制就会开始生效。在网络拥塞的时候,将报文放入队列缓存之内。但是这样并不能有效的避免ARP的拒绝服务攻击,因为攻击者在不断地发送攻击报文,而交换机或主机等设备的CUP缓存队列已经被恶意的ARP攻击报文所占满了,这时如果有正常的数据包,就会被丢弃。导致了交换机或主机等设备的CPU符合过重,进而无法处理其他业务。因此,可以针对某一用户、接口或VLAN等进行限速。
针对某一用户的ARP报文限速。当管理员通过设备监测到了在短时间内从某一下联设备上收到了大量的ARP报文,不论是请求还是回应,都可以去针对这一用户去配置基于IP地址或MAC地址的ARP报文限速。如果规定时间内(默认为一秒),收到了超过设定值(阙值)的ARP报文,就会丢弃超过了设定值的ARP报文。
在系统视图下,执行命令cpu-defend host-car enable,使能用户级限速功能。在华为的交换机上,用户级限速功能是默认开启的。先执行命令cpu-defend host-car arp,选择想要限速的报文类型,在这里,需要对ARP报文进行限速。然后执行命令cpu-defend host-car MAC地址 pps 限速值,这里的MAC地址可以不填写,如果没有填写,就会对所有MAC地址进行限速。默认的限速值为10pps。pps为Packets per Second,数据包每秒,是数据包的发送或接收速度的单位。即默认是每秒最多接收10个ARP数据包。
或者管理员也可以在相应的接口或VLAN下,配置命令host-car enable去使能接口下或VLAN下的限速功能,也可以配置命令host-car disable,在信任的接口或VLAN下关闭限速功能。在缺省默认情况下,每个接口的限速功能都是开启的。当接口和全局都配置了ARP限速功能的时候,首先会根据接口的配置,按照接口限制速度进行限速,再按照VLAN下配置的限速,进行限速,最后才会根据全聚德配置,进行限速。另外管理员还可以指定某一接口,如果这各指定接口在短时间内收到的ARP报文数量超过了设定的阙值(ARP限速值),不但会丢弃超过了阙值的ARP报文,还会在一段规定时间内持续丢弃改接口收到的所有ARP报文。这样就可以在极大程度上保护了交换机等设备的CPU负载,也保障了其他的服务流畅性和完整性。

4.2.2 ARP Miss消息限速

为了防止攻击者恶意发送大量不能解析的目的IP地址不存在的ARP报文(即路由表中存在该IP报文的目的IP对应的路由表项,但设备上没有该路由表项中下一跳对应的ARP表项),这种攻击会导致网关触发产生大量的ARP Miss消息。这种触发产生的大量的ARP Miss消息会被传递给设备的CPU进行处理,消耗大量的CPU资源。设备会根据ARP Miss消息生成大量的临时的ARP表项,为了记录并处理这些ARP请求报文。ARP表项中的IP地址就是攻击者请求的不存在的IP地址,并向目标IP发送大量的ARP请求报文。这样就会消耗目标网络大量的带宽资源。
ARP MISS消息
图4-1 ARP MISS消息
在交换机中,为了避免这类攻击所造成的危害,提高网络的稳定性,改善用户体验。设备可以根据源IP地址进行限速。当设备检测到某一源IP地址的IP报文在1秒内触发的ARP Miss消息数量超过了ARP Miss消息限速值,就认为此源IP地址存在攻击。此时如果设备对ARP Miss报文的处理方式是block方式,设备会丢弃超出限速值的部分ARP Miss报文,并下发一条ACL来丢弃来自源IP地址的后续所有ARP Miss报文;如果是none-block方式,设备只会通过软件限速的方式丢弃超出限速值的部分ARP Miss报文。如果指定了IP地址,则针对指定源IP址的ARP Miss消息根据限速值进行限速;如果不指定IP地址,则针对每一个IP地址的ARP Miss消息根据限速值进行限速。用户还可以针对全局、VLAN和接口开启ARP Miss消息限速功能。设备支持在全局、VLAN和接口下配置ARP Miss消息限速,有效顺序为接口优先,VLAN其次,最后为全局。针对全局的ARP Miss消息限速:在设备出现目标IP地址不能解析的IP报文攻击时,限制全局处理的ARP Miss消息数量。针对VLAN的ARP Miss消息限速:在某个VLAN内的所有接口出现目标IP地址不能解析的IP报文攻击时,限制处理该VLAN内报文触发的ARP Miss消息数量,配置本功能可以保证不影响其他VLAN内所有接口的IP报文转发。针对接口的ARP Miss消息限速:在某个接口出现目标IP地址不能解析的IP报文攻击时,限制处理该接口收到的报文触发的ARP Miss消息数量,配置本功能可以保证不影响其他接口的IP报文转发。

4.2.3 ARP表项严格学习

如果攻击者有大量的傀儡机向被攻击者发送ARP报文,虽然部署了ARP报文限速,但是这样的时候,本机自己发送的正常ARP请求以及服务端接口发出的回一个也许就会被设置的限速丢弃。再或者攻击者伪造正常的用户的ARP回应报文发送给设备,设备就会学习到错误的ARP表项,错误的更新用户设备的ARP缓存表,导致用户无法通信,或者是用户的数据流向错误的主机,导致用户的数据被盗取或篡改。
为了尽量的避免上述的对用户造成的影响及危害,用户就可以在网关上部署ARP表严格学习功能。
ARP表严格学习
图4-2 ARP表严格学习
如图所示,在没有配置ARP表项严格学习的时候,当用户A向网关发送ARP请求的时候,不论是请求网关的MAC还是请求用户B或者用户C的MAC地址,网关都会将经过的报文中的以太网帧头部信息中用户A的IP与MAC记录下来,并更新ARP缓存表。同时用户B和用户C同样也都会将用户A的信息加入到自己的ARP表中。这样的ARP表就会被攻击者修改,还会造成ARP表发生不断地抖动,消耗用户大量的CPU,使得用户无法对其他服务产生回应。
在部署了ARP表项严格学习之后。网关收到了用户A发来的ARP请求,不论是请求网关的MAC地址,还是请求其他用户,网关和其他用户都不会将用户A的信息加入到ARP表内。被请求的设备也仅仅只会做出回应,也不会去根据用户A请求报文中的信息去更新自己的ARP表项。在部署ARP表项严格学习之后,只有用户自己发送的请求后收到的应答报文,才会将应答报文中的信息更新到ARP表内。这样严格的更新ARP表,会大大的加强网络内的安全性。使ARPDDOS攻击,及中间人攻击失效。
在设备的全局模式下,配置命令arp learning strict 命令之后,配置命令的设备就开启了ARP表项严格学习。

4.2.4 动态ARP检测

动态ARP检测(DAI,Dynamic ARP Inspection)。网络中对于基于ARP的攻击方法层出不穷,大部分不外乎都是基于ARP欺骗,不论是修改源IP、目的IP、源MAC和目的MAC,都可以通过部署动态ARP检测来进行防御。
首先部署动态ARP检测的首要条件是,仅仅适用于DHCP Snooping场景。
DHCP Snooping是DHCP的一种安全特性。当交换机开启了DHCP Snooping 之后,交换机就会开始对所有DHCP的报文进行监听,并可以从接收到DHCP Request、DHCP Respond或DHCP ACK报文中提取并记录IP地址信息和MAC地址信息。然后分析DHCP报文的交互过程,最后会生成一张DHCP Snooping绑定表,DHCP Snooping绑定表项中包括客户端的MAC地址、获得到的IP、地址租期、与DHCP客户端连接的端口以及该接口所属的VLAN等信息。
因为在DHCP Snooping绑定表中保存了,DHCP客户端获取的IP地址与MAC地址之间对应的关系。动态ARP检测就可以将可以通过对ARP报文中IP信息和MAC信息与DHCP Snooping绑定表中的信息进行对比检查,便能够防范非法攻击。如果信息匹配,就说明发送该ARP报文的用户为合法用户,并允许此用户的ARP报文通过,否则,就认为是攻击报文,对报文执行丢弃的操作。用户可以根据需求在接口或VLAN视图下配置命令 arp anti-attack check user-bind enable使能动态ARP检测功能,并根据所以需要的检测项,配置arp anti-attack check user-bind check-item自定义动态arp检测的检测项是IP地址、VLAN还是MAC地址等,在VLAN试图下,还可以只检测某一接口。在接口视图下开启动态ARP检测的时候,就会对改接口下,收到的所有ARP报文进行解封装和对比检测,并将发送改ARP报文的用户划分为合法用户或非法用户;在VLAN视图下的时候,就会在所有接口下,接受属于需要检测VLAN的ARP报文,并进行对比检测。
用户还可以根据丢弃ARP报文数量,以告警的方式通知管理员,可能遭受到了ARP的攻击并提早做出防御措施。用户可以在接口视图下,配置arp anti-attack check user-bind alarm enable,开启丢弃报文警告功能。在缺省默认的情况下,是没有开启这个功能的。在开启这个功能之前,首先要设置,动态ARP检测丢弃报文的告警阙值,只有设置了才可以根据用户不同的链路状态,配置不同的负载。用户可以在系统视图下配置arp anti-attack check user-bind alarm threshold 命令,来设置动态ARP检测告警的阙值。
为了防止用户遭到类似于ARP全网欺骗这种仿冒网关的ARP攻击,会导致局域网内的设备,找不到正确的网关,正常的数据都会被冒充者冒充的网关接收。
动态ARP检测
图4-3 动态ARP检测
例如这个例子,正常的时候,用户A主机内ARP表的表项对应关系为IP地址10.1.1.1与MAC地址1-1-1对应。这时数据包能够经过交换机,到达正确的网关10.1.1.1,当攻击者开始攻击的时候,攻击者就会开始模拟网关10.1.1.1的ARP回应报文。攻击者会向用户A发送源IP地址为10.1.1.1、源MAC地址为3-3-3的报文。这样用户A主机内的ARP表就会被攻击者发来的ARP回应报文所更新。就将发往网关的报文,重定向到了攻击者。
这类攻击主要的攻击方法就是更新被攻击者的ARP表,达到自定义数据流向的目的。为了防止这类攻击,可以让网关定期发送免费ARP报文,告知局域网内的用户,网关的位置。这样就防止错误的地址映射关系的建立。用户可以通过在VLAN或全局视图下,配置命令arp gratuitous-arp send enable,使能定期发送免费ARP报文的能力。还可以通过arp gratuitous-arp send interval interval-time 命令自定义发送免费ARP报文的时间间隔。在没有配置这条命令的时候,默认缺省条件下,网关发送免费ARP报文的时间间隔为60秒。
同时还可以在接入交换机处,开启对网关的ARP保护功能。这样攻击者仿冒的报文,在交换机的接口处就会被丢弃,仿冒报文就不会在交换机处被转发,也就更不会被其他用户收到,就避免了网关被重定义的危险。
用户可以在是接口视图下,配置命令arp trust source 后面接网关的IP地址,就实现了保护ARP网关的功能。这个接口应该是连接到网关所在设备的接口。对于开启了ARP网关地址保护功能的接口,当接口收到了ARP报文,就会与网关保护功能内设备的IP地址进行比较,相同的话,就可以正常转发,如果不同的话,也可以正常转发,不过在没有配置网管保护的接口,如果收到了源地址为网关IP地址的ARP报文,就会被交换机所丢弃。对于其他的APR报文,都可以正常的进行转发。不过每个接口最多只支持8个被保护的网关IP地址,全局最多可以设置32个。再就是如果在不同接口下,配置保护相同的网关IP地址的话,会被认为指定了多个被保护的网关IP地址。

4.2.5 ARP表项固化

为了防止攻击者通过各种方式仿冒ARP报文,导致网关将正确的报文发送到错误的接口及主机。用户可以通过部署ARP表项固化来实现固化,来实现ARP表项不被恶意篡改,这类似于自动建立静态的ARP表项。
手工建立静态的ARP表项,有很多的有点,它不会被老化,也不会被动态的ARP表项所覆盖,但是手工建立ARP表项的方式是特别的耗费人力,因为,每一条ARP表项都要手工填写。所只建议在固定的设备之间建立静态ARP表项,保证固定设备之间的二层可达。
用户可以通过arp static 命令后接IP地址、MAC地址、接口号、VLAN等信息来静态建立ARP映射关系。
用户还可以通过自动扫描网络的方式,将扫描到的ARP信息自动添加并固化为静态ARP表项。自动扫描也是通过每一IP地址都去尝试请求MAC地址,如果主机或设备存在,就会收到ARP回应报文。这样就可以实现自动扫描。
接口下配置自动扫描
图4-4 接口下配置自动扫描
上图就是在接口VLANIF103上进行自动扫描,172.16.50.2~172.16.50.4与VLANIF103接口的IP地址172.16.50.1在同一网段,即ARP自动扫描区间的起始IP地址和结束IP地址必须与VLANIF接口的IP地址(主IP地址或者从IP地址)在同一网段。在扫描之后,可以通过display arp network 172.16.50.0 24命令查看,刚才扫描的172.16.50.2~172.16.50.4网段扫描学习到的IP地址与MAC地址。
ARP表
图4-5 ARP表
然后就可以通过ARP表项固化命令,将扫描学习到的ARP报文固化为静态的ARP表项。
ARP表项固化。有三种模式,分别为fixed-all模式、fixed-mac模式和send-ack模式。分别可以适应不同的网络环境。
fixed-all模式是,收到的ARP报文,会检查报文内的MAC地址、接口号或VLAN等信息。然后将这些信息与ARP表中的信息对比,如果匹配,就会正常转发。如果不匹配就会直接丢弃ARP报文。这种模式适用于大范围的固定主机。这样就可以防止攻击者的攻击,如果存在移动设备或通过DHCP服务器来获取IP地址,则不是用这种方法,否则,如果在IP地址到期,主机向DHCP服务器重新申请的IP地址与原来固化的静态ARP表项中的IP地址不同,就会使得ARP报文被丢弃。
fixed-mac模式是,设备收到的ARP报文中的MAC地址与ARP表中对应条目的MAC地址不匹配,则直接丢弃该ARP报文;如果匹配,但是收到报文的接口或VLAN信息与ARP表中对应条目不匹配,则可以更新对应ARP条目中的接口和VLAN信息。此方式适用于用户MAC地址固定,但用户接入位置频繁变动的场景。当用户从不同接口接入设备时,设备上该用户对应的ARP表项中的接口信息可以及时更新。
send-ack模式是,当设备收到ARP报文①的时候,发现MAC地址与本机的ARP表中的MAC地址、接口或VLAN等信息不相同的时候,不会立即更新ARP表,也不会将收到的ARP报文。而是会先向原来待更新的MAC地址、接口、VLAN等信息发送一个单播的ARP请求。如果在三秒内设备都收到了ARP的应答,并且收到的ARP应答中IP地址、MAC地址、接口号、VLAN等信息,与ARP表中源来的表项相同。就会认为请求更新的ARP报文为攻击报文,会将攻击报文执行丢弃操作。如果在三秒内,没有收到ARP的回应报文,或者收到ARP应答报文与当前ARP条目中的IP地址、MAC地址、接口和VLAN信息不一致,设备会再向刚才收到的ARP报文A对应的源MAC发送一个单播ARP请求报文。随后三秒内如果收到了ARP的应答报文②,而且ARP报文①与ARP报文②的源IP地址、源MAC地址、接口和VLAN信息一致,则认为现有ARP条目已经无效且ARP报文①是可以更新该ARP条目的合法报文,并根据ARP报文①来更新该ARP条目。另外如果在随后的三秒内未收到ARP应答报文,或者ARP报文①与收到的ARP应答报文②的源IP地址、源MAC地址、接口和VLAN等信息不一致,则认为ARP报文①为攻击报文,设备会将收到的ARP报文①执行丢弃操作,并且ARP条目不会更新。这种模式适用于大量的移动场景,接入点不断变化的场景。再就是这种方式,在用户再次连接进入网络的识货会有3到6秒的延迟。

4.2.6 ARP优化应答

在企业的真实网络内,绝大部分的设备都有部署堆叠技术的,这样就可以做到主备机“双机热备”。即主备机都处于活跃激活的状态,当主设备损坏或其他原因造成无法工作的时候,业务就可以直接转移到备份设备,继续工作还不会造成业务中断。
优化应答机制
图4-6 优化应答机制
在这个拓扑中,网关交换机之间做的是“双机热备”。在完成堆叠系统后,作为网关交换机,会收到大量请求本系统接口MAC地址的ARP请求报文。如果全部将这些ARP报文向上发送到主交换机处理,将会导致主交换机CPU使用率过高,影响CPU对正常业务的处理。
所以为了避免这类危害,用户可以通过部署ARP优化应答功能来避免这类业务造成的危害,提高设备对防御ARP泛洪攻击的能力。
在使能ARP优化应答功能之后,堆叠系统会根据目的IP地址是否属于自己系统的接口IP地址,来选择是否回复该ARP报文。对于目的IP是本系统接口IP地址的ARP请求报文,该接口所在的交换机直接回复ARP应答报文。对于目的IP不是本系统接口IP地址的ARP请求报文,如果主交换机上配置了VLAN内Proxy ARP功能,接口所在的交换机会判断ARP请求报文是否满足代理条件,如果满足,则该接口所在的交换机直接回复ARP应答报文;如果不满足,堆叠系统会丢弃该报文。

4.2.7 端口安全

端口安全(Port Security)可以通过将接口学习到对端的MAC地址转换为安全MAC地址(包括安全动态MAC和Sticky MAC),通过不学习MAC地址,阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信,从而增强设备的安全性。
在为开启端口安全功能的时候,设备的MAC地址表项只能通过静态配置或者动态学习得到。当接口开启端口安全功能之后,开启端口安全功能的接口之前学习到的MAC地址都会被删除,之后学习到的MAC地址都会被转化为安全动态MAC地址,这个时候,这个启用了端口安全功能的接口就会仅允许匹配安全动态MAC地址或者静态MAC地址的报文通过。若接着使能Sticky MAC功能,安全动态MAC地址表项将转化为Sticky MAC地址表项,之后学习到的MAC地址也变为Sticky MAC地址。直到安全MAC地址数量达到限制,将不再学习MAC地址,并对接口或报文采取配置的保护动作。之后,用户可以根据需要配置不同的命令,比如:restrict会对MAC地址执行丢弃操作并产生告警信息;protect只会对报文执行丢弃操作,不会上报告警信息;shutdown在收到不合法的MAC地址的时候,会立即将接口状态设置为error-down,并上报告警信息,在默认情况下,这些被关闭的接口不会自动恢复,只能等待管理员手动执行undo shutdown 开启接口恢复接口转发功能,或者执行restart命令可以重启接口。这样,当攻击者尝试修改攻击主机的MAC地址的时候,接入交换机就可以自动将接口关闭,避免攻击者将ARP的欺骗报文从接口发送出去。进而阻止了攻击者下一步攻击的进行。

第5章 结论与建议

5.1结论

随着网络的仅仅覆盖,参与网络中的用户也越来越多,也就意味网络中的攻击者的数量也会越来越多,网络的风险性也会逐渐提高。而且ARP攻击是其他攻击的第一步,所以说在网络的部署ARP的防御机制也越来越重要。因为ARP攻击的简单,易学。但是ARP防御部署起来也很简单,设备不多,就使用静态或者固化,设备多,就可以DAI机制。所以说,只要对ARP攻击有所重视,ARP攻击就没有威胁性。

5.2建议

建议重视局域网内的网络安全,在网关处部署防火墙或者IDS、IPS等设备,保护用户安全及正常用网。

参考文献
[1]郝梦岩 屠全良. 分布式拒绝服务攻击DDoS及对策[D]. 太原大学学报, 2009.
[2]李春辉. 高校校园网安全分析与研究[D]. 中国教育技术装备, 2010.
[3]刘发辉. 网络拓扑自动发现系统的设计与实现[D]. 东北大学, 2008.
[4]王晓勇. 基于DDos共计的防御技术探讨[D]. 淮南联合大学, 2011.
[5]闫守华. 网络攻击行为解析与演示[D]. 山东大学, 2011.
[6]陈冬梅. 浅谈电子商务的安全问题[D]. 辽宁行政学院学报, 2011.
[7]陈伟. 针对TCP协议的分布式拒绝服务攻击的防范方法研究[D]. 武汉大学, 2005.
[8]王业君. 网络蠕虫的机理与防范[D]. 中国科学院研究生院(软件研究所), 2005.
[9]金爽. 基于NetFlow的实时安全事件检测技术研究[D]. 哈尔滨工程大学, 2007.
[10]姚国新. 基于Ajax的WEB应用技术的研究与实现[D]. 西北大学, 2006.
[11]陈波. 基于对等协同的分布式入侵检测系统模型研究[D]. 电子科技大学, 2006.
[12]徐庆征. 特殊IP地址简介[D]. 福建电脑, 2006.
[13]俞祖宏. 局域网内ARP攻击原理及检测防御方法[D]. 芜湖日报报业集团技术保障部, 2012.
[14]刘成光. 基于木马的网络攻击技术研究[D]. 西北工业大学, 2004.
[15]清风. 认识Internet中的IP地址[D]. 网络与信息, 2004.
[16]李健 周昕. 交换机DHCP snooping防非法DHCP服务器在宾馆的应用[D]. 福建电脑, 2015.
[17]刘龙. 基于编排模型的业务流程监控技术研究与实现[D]. 华东理工大学, 2012.
[18]蒋震. HCHS蜜罐系统的研究与实现[D]. 贵州大学, 2007.
[19]陈艇. 医院局域网中ARP的攻击与防范策略[D]. 电脑知识与技术, 2009.
[20]严学军. 使用基于DHCP探测的技术防止交换网络的欺骗攻击[D]. 计算机光盘软件与应用, 2012.
[21]夏华锋. 数字机顶盒的以太网接入设计与实现[D]. 华中科技大学, 2006.
[22].Stevent W R.TCP/IP详解(卷1):协议. 北京机械工业出版社,2001-08
[23].Denial of Service Due to Direct and Indirect ARP Storm Attacks in LAN Environment,Sanjeev Kumar, Orifiel Gomez Department of Electrical/Computer Engineering, University of Texa s —PanAm, Edinburg

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值