首页 > 技术文章 > ICMP Flooding Attack

nishoushun 2020-03-31 19:13 原文

ICMP Flooding Attack

ICMP Flooding

ICMP flooding attack 就是向目标发送大量的 ICMP Echo-Reply(type 0,code 0)Echo-Request(type 8,code0)报文。目的一般为耗尽目标服务器的带宽,并且机器去处理这些请求也会占用一点IO\CPU资源,但资源消耗过大就会导致DoS。

相较于 SYN flooding(以消耗有限的TCP表项)的DoS,ICMP flooding 通过消耗带宽,试想一下,就算是通过防火墙禁止 ICMP 报文,那么报文也是已经到达了该主机,也就是说已经消耗了带宽资源。

但是由于单台主机的带宽往往被限制在一个比较小的值(相对于服务器带宽),所以如果想要发送 ICMP flooding attack ,就需要考虑反射型 ICMP flooding。

反射型 ICMP flooding

该方式通过向网络中发送广播ICMP Echo 报文,将IP源地址设为目标地址。如此,当本网段的所有主机收到ICMP报文后,便会向目标回应 ICMP Echo-Reply 报文。此时的带宽限制就是本网段工作的主机带宽之和,能大大增加DoS成功率。

image-20220412203356606

利用工具实现 ICMP Flooding Attack
netwox

netwox 49模块与50模块都是用于 发出icmp ping,其中49模块只有一个ip目的地址选项,而50模块可以指定IP层目的、源地址,也能指定以太网的帧地址。

➜ netwox 50 --help
Title: Ping ICMP (EthIP spoof)
Usage: netwox 50 -i ip [-d device] [-E eth] [-e eth] [-I ip]
Parameters:
 -i|--dst-ip ip                 destination IP address {5.6.7.8}
 -d|--device device             spoof device {Eth0}
 -E|--src-eth eth               source ethernet address {0:a:a:a:a:a}
 -e|--dst-eth eth               destination ethernet address {0:b:b:b:b:b}
 -I|--src-ip ip                 source IP address {1.2.3.4}
 --help2                        display help for advanced parameters
sudo netwox 50 -I 192.168.31.26  -i 192.168.31.255 -E f4:46:37:82:f4:1f -e ff:ff:ff:ff:ff:ff

该方式下,每秒钟发出一个icmp echo request 报文。

netwox 的 icmp 相关模块只能发出一个或者每秒钟一个特定的icmp报文,基本构不成flooding效果。所以一般用 hping 作为发送工具。

hping3

:以 192.168.31.26 为源地址,向 192.168.31.255 flood ICMP Echo-Request 报文

hping3 192.168.31.255 --flood --icmp --icmptype 8 --icmpcode 0 --spoof 192.168.31.26  

本主机发送的报文:

image-20220412204035210

192.168.31.26 收到的 icmp echo reply 报文:

image-20220412210619202

以广播地址为目的地址,其实那么多机器,也就我的 IPAD 进行了回应...

一些其它的设备要么直接不会回应(windows 11),要么就是只有目的地址为其设备本身的IP地址时,才会进行答复(android)。

DDoS

因为 NAT 技术,外网段的目标主机收到的 ICMP Echo-Reply 报文的源地址实际上为网关的外网地址。也就是说对于服务器,只有一个主机(路由器)对其不断地发送 ICMP 请求报文。很容易追查出源头。

通过反射型 ICMP Flooding 实现DDoS的方式其实就是利用多个网络段,并行向其进行 ICMP Flooding DoS 攻击。也就是说需要以下条件:

  1. 有方法对各个网段发送以广播地址为目的地址,目标服务器地址为源地址的ICMP Echo-Request 报文;
  2. 网段中的有大量的可对广播目的地址进行回应的机器;
  3. 有用的网段的带宽之和很高,至少能占目标服务器最大带宽的很大比重;

其实第一步就很难,需要拥有多个网段下,每个子网至少一台主机的控制权。但是如果是一个大型局域网,比如某个大学的校园网,可能会被划分为不同子网,其实这些子网是可以被直接访问的(未设置相关防火墙规则的前提下),这时候可以并发地以这些子网的广播地址为目的地址,目标服务器地址为源地址构造并发送ICMP报文。此时生成的流量最大值也不会超过校园的出口流量峰值,但是这些对于一些小型的服务主机(带宽资源十分有限)攻击效果也是十分明显的。


参考

推荐阅读