泛洪

科技工作者之家 2020-11-17

泛洪(Flooding)是交换机和网桥使用的一种数据流传递技术,将某个接口收到的数据流从除该接口之外的所有接口发送出去。

泛洪的过程交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写 入MAC地址表中。交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。1

泛洪的分类SYN泛洪攻击SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应2报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。我们可以利用路由器的TCP拦截功能,使网络上的主机受到保护(以Cisco路由器为例)。3

DHCP报文泛洪攻击DHCP报文泛洪攻击是指:恶意用户利用工具伪造大量DHCP报文发送到服务器,一方面恶意耗尽了IP资源,使得合法用户无法获得IP资源;另一方面,如果交换机上开启了DHCP Snooping功能,会将接收到的DHCP报文上送到CPU。因此大量的DHCP报文攻击设备会使DHCP服务器高负荷运行,甚至会导致设备瘫痪。

ARP报文泛洪攻击ARP报文泛洪类似DHCP泛洪,同样是恶意用户发出大量的ARP报文,造成L3设备的ARP表项溢出,影响正常用户的转发。

泛洪攻击方法ICMP泛洪ICMP泛洪(ICMP flood)是利用ICMP报文 进行攻击的一种方法。如果攻击者向目标主机发 送大量的ICMP ECHO报文,将产生ICMP泛洪, 目标主机会将大量的时间和资源用于处理ICMP ECHO报文,而无法处理正常的请求或响应,从而实现对目标主机的攻击。

ICMP反射泛洪Smurf IP利用广播地址发送ICMP包,一旦广播出去,就会被广播域内的所有主机回应,当然这些包都回应给了伪装的IP地址(指向被攻击主机),伪装IP地址可以是互联网上的任何地址,不一定在本地;假如骇客不停地发送此种类型的包,就会造成DoS攻击。

TCP SYN 泛洪对于TCP协议,当客户端向服务器发起连接请求并初始化时,服务器一端的协议栈会留一块缓冲区来处理“握手”过程中的信息交换。请求建立连接时发送的数据包的包头SYN位就表明了数据包的顺序,攻击者可以利用在短时间内快速发起大量连接请求,以致服务器来不及响应。同时攻击者还可以伪造源IP地址。也就是说攻击者发起大量连接请求,然后挂起在半连接状态,以此来占用大量服务器资源直到拒绝服务。虽然缓冲区中的数据在一段时间内(通常是三分钟)都没有回应的话,就会被丢弃,但在这段时间内,大量半连接足以耗尽服务器资源。

TCP LANDLAND攻击利用了TCP连接建立的三次握手过程,通过向一个目标主机发送一个用于建立请求连接的TCP SYN报文而实现对目标主机的攻击。与正常的TCP SYN报文不同的是:LAND攻击报文的源IP地址和目的IP地址是相同的,都是目标主机的IP地址。这样目标主机接在收到这个SYN 报文后,就会向该报文的源地址发送一个ACK报文,并建立一个TCP连接控制结构,而该报文的源地址就是自己。由于目的IP地址和源IP地址是相同的,都是目标主机的IP地址,因此这个ACK 报文就发给了目标主机本身。

UDP FLOODUDP泛洪(UDP flood)的实现原理与ICMP泛洪类似,攻击者通过向目标主机发送大量的UDP报文,导致目标主机忙于处理这些UDP报文,而无法处理正常的报文请求或响应。

死亡之ping由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现为ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方当机。4

相关区别广播帧的产生:网络中存在有广播帧是不可避免的,比如开启了DHCP服务器,每次请求,都会有以”FF.FF.FF.FF.FF.FF”的帧格式出现,它向所有端口转发,假设主机A与B在同一个网络内,当主机A要向主机B发送信息,那么需要知道主机B的IP地址和MAC地址,这里面我们假定A只知道B的IP地址,而不知道 B的MAC地址,那么这时A就需要向网络中发送一个ARP请求,来获取B的MAC地址,这个ARP请求实际上就是一个广播包。

而泛洪和MAC列表相关,在缓存中是存在的,有确定的MAC地址。只是在MAC表中找不到具体转发的端口和MAC的配对,才开始泛洪处理,但是泛洪并不是广播帧(FF.FF.FF.FF.FF.FF)。广播是有一个具体的行为,它的对象是整个网络,在ARP时往往需要有特定的主机来响应,当然太多的广播对于网络是有害的,容易造成广播风暴。总的来说,主要有以下两点区别:

泛洪操作广播的是普通数据帧而不是广播帧。

广播是向同一子网内所有的端口(包括自己的那个端口)发送消息;泛洪只是在所有的端口中不包括发送消息的(自己的)那个端口发送消息。

本词条内容贡献者为:

李嘉骞 - 博士 - 同济大学