DDOS 简介
DDOS 又称为分布式拒绝服务,全称是 Distributed Denial of Service。DDOS 本是利用合理的请求造成资源过载,导致服务不可用,从而造成服务器拒绝正常流量服务。就如酒店里的房间是有固定的数量的,比如一个酒店有 50 个房间,当 50 个房间都住满人之后,再有新的用户想住进来,就必须要等之前入住的用户先出去。如果入住的用户一直不出去,那么酒店就无法迎接新的用户,导致酒店负荷过载,这种情况就是 “拒绝服务”。如果想继续提供资源,那么酒店应该提升自己的资源量,服务器也是同样的道理。
拒绝服务攻击的基本概念
**拒绝服务:**拒绝服务是指应用系统无法正常对外提供服务的状态,如网络阻塞、系统宕机、响应缓慢等都属于拒绝服务的表现。
**拒绝服务攻击(DOS):**拒绝服务攻击(Denial of Service Attack)是一种通过各种技术手段导致目标系统进入拒绝服务状态的攻击,常见手段包括利用漏洞、消耗应用系统性能和消耗应用系统带宽。
**分布式拒绝服务攻击(DDOS):**分布式拒绝服务攻击(Distributed Denial of Service Attack)是拒绝服务攻击的高级手段,利用分布全球的僵尸网络发动攻击,能够产生大规模的拒绝服务攻击。
DDOS 攻击分类
(1)漏洞型(基于特定漏洞进行攻击):只对具备特定漏洞的目标有效, 通常发送特定数据包或少量的数据包即可达到攻击效果。
(2)业务型(消耗业务系统性能额为主):与业务类型高度相关,需要根据业务系统的应用类型采取对应的攻击手段才能达到效果,通常业务型攻击实现效果需要的流量远低于流量型。
(3)流量型(消耗带宽资源为主):主要以消耗目标业务系统的带宽资源为攻击手段,通常会导致网络阻塞,从而影响正常业务。
拒绝服务攻击处理流程
(1)现象分析:根据发现的现象、网络设备和服务的情况初步判断是否存在拒绝服务攻击。
(2)抓包分析:通过抓包分析的方式进一步了解攻击的方式和特征。
(3)启动对抗措施:最后启动对抗措施进行攻击对抗,可以进行资源提升、安全加固、安全防护等措施。
DDOS 流量包分析
SYN Flood 攻击
在正常的情况下,TCP 三次握手过程如下
客户端向服务器端发送一个 SYN 请求包,包含客户端使用的端口号和初始序列号 x。
服务器端收到客户端发送过来的 SYN 请求包后,知道客户端想要建立连接,于是向客户端发送一个 SYN 请求包和 ACK 回应包,包含确认号 x 1 和服务器端的初始序列号 y。
客户端收到服务器端返回的 SYN 请求包和 ACK 回应包后,向服务器端返回一个确认号 y 1 和序号 x 1 的 ACK 请求包,三次握手完成,TCP 连接建立成功。
SYN Flood 攻击原理:
首先是客户端发送一个 SYN 请求包给服务器端,服务器端接受后会发送一个 SYN ACK 包回应客户端,最后客户端会返回一个 ACK 包给服务器端来实现一次完整的 TCP 连接。Syn flood 攻击就是让客户端不返回最后的 ACK 包,这就形成了半开连接,TCP 半开连接是指发送或者接受了 TCP 连接请求, 等待对方应答的状态, 半开连接状态需要占用系统资源以等待对方应答,半开连接数达到上限,无法建立新的连接,从而造成拒绝服务攻击。
受害靶机的流量包分析
利用 wireshark 软件抓取数据包的数据,通过筛选器筛选出发送包频率多的 ip 地址。
筛选 218.xxx.xxx.87,分析协议占比,发现 tcp 和 http 占比比较大
筛选 tcp 中的 syn 数据包,发现 syn 数据包占比为 82.9,可以判断应该为 SYN FLOOD 拒绝服务攻击
UDP Flood 攻击
UDP Flood 攻击原理:
由于 UDP 属于无连接协议,消耗的系统资源较少,相同条件下容易产生更高的流量,是流量型攻击的主要手段。当受害系统接收到一个 UDP 数据包的时候,它会确定目的端口正在等待中的应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一个目的地址无法连接的 ICMP 数据包发送给该伪造的源地址。如果向受害者计算机端口发送了足够多的 UDP 数据包的时候,系统就会造成拒绝服务攻击,因此,UDP FLOOD 成为了流量型拒绝服务攻击的主要手段。
受害靶机的流量包分析
利用 wireshark 软件抓取数据包的数据,通过筛选器筛选出发送包频率多的 ip 地址。
筛选 117.xxx.xxx.0 网段,分析协议占比,可以看到受害靶机接受的 UDP 包比较多。
可以看到 UDP 包的大小都是固定的 172bytes。
可以看出都是发送 udp 包,udp 包大小都是相同的,可以判断是 udp flood 攻击。
慢速拒绝服务攻击
apt install slowhttptest -y
安装 slowhttptest
慢速拒绝服务攻击原理:
完整的 http 请求包是以 rnrn 结尾,慢速拒绝服务攻击时仅发送 rn,少发送一个 rn,服务器认为请求还未发完,服务器就会一直等待直至超时。
slowhttptest -c 5000 -H -g -o my_header_stats -i 10 -r 5000 -t GET -u “http://10.10.10.134” -x 200 -p 3
(测试时建立 5000 连接数 - c;选择 slowloris 模式 - H;生成 cvs 和 HTML 文件的统计数据 - G;生成的文件名 my_header_stats -o;指定发送数据间的间隔 10 秒 -i 每秒连接数 5000-t;指定 url-u;指定发送的最大数据长度 200 -x;指定等待时间来确认 DOS 攻击已经成功 - p)
观察靶机的 cpu 和网络流量明显增加很多
受害靶机的流量包分析
攻击机 ip:10.10.10.129,靶机 ip:10.10.10.134
[PSH,ACK] 是攻击机发送有数据的 ACK 包给靶机,[ACK] 包是靶机回复攻击机的数据包。
可以看到没有发送 2 次连续的 rn,以至于靶机要一直等待。
http 协议比例为 36.6,tcp 协议比例为 87.4
筛选 ack 数据包,占比率 98.2,不符合常态,综上可以判断为慢速拒绝服务攻击
ICMP Flood 攻击
ICMP Flood 攻击原理:
当 ICMP ping 产生的大量回应请求超出了系统的最大限度,以至于系统耗费所有资源来进行响应直至再也无法处理有效的网络信息流,但是由于 ICMP 协议报文被丢弃不影响大多数系统运行,所以容易被防护。
利用 hping3 造成 ICMP Flood 攻击
hping3 -q -n -a 1.1.1.1 –icmp -d 200 –flood 10.10.10.134
观察靶机的 cpu 和网络流量明显增加很多
受害靶机的流量包分析
伪造的源 ip:1.1.1.1 发送大量 icmp 包给目标 ip:10.10.10.134
筛选出同一 IP 发送大量 ICMP 包,且占比率 86.0,判断为 ICMP 拒绝服务攻击。
后记
拒绝服务攻击造成的危害是比较大的,本质是对有限资源的无限制的占用所造成的,所以在这方面需要限制每个不可信任的资源使用中的分配额度,或者提高系统的有限资源等方式来防范拒绝服务攻击。