Skip to content

ddos

复制本地路径 | 在线编辑

title: 从协议类型分类常见的 ddos 攻击

这分别从 IP、TCP、UDP、ICMP、DNS、HTTP 几种协议分类并介绍常见的 ddos 攻击。

IP 攻击

Ping of Death

IP 允许将单一包分为几个更小的数据包,如果攻击者故意发送大于 65536 比特的 IP 数据包给对方,通过设置分裂位,让这些小包发到接受者之后重新整合了一个大于 65536 的 IP 数据包,许多操作系统收到一个特大 IP 包,不知道怎么做,因此服务器冻结、宕机、重启。

Tiny IP Fragment

IP 分片攻击

发送极小的分片绕过包过滤系统或者入侵检测系统的一种攻击手段。通过恶意操作将TCP报头(20字节)分布在2个分片,这样一来,目的端口在第二个分片。对于包过滤设备或者入侵检测系统来说,首先通过判断目的端口号来采取允许/禁止措施。但是由于通过恶意分片使目的端口号位于第二个分片中,包过滤设备通过判断第一个分片,决定后续的分片是否允许通过。但是这些分片在目标主机上进行重组之后将形成各种攻击。通过这种方法可以迂回一些入侵检测系统及一些安全过滤系统。
IP 欺骗

利用TCP的RST位,使用IP欺骗,迫使服务器把合法用户的链接复位,影响合法用户的链接。如用户a已建立正常连接,攻击者构造tcp数据伪造自己是用户a的ip,发送带了RST位的tcp数据段。服务器接收到这样的数据后,认为从原用户a发送的连接有错误,就会清空缓冲区中已建立好的连接。用户再发送数据就没有连接,只能重新建立连接

TCP 攻击

其中 SYN Flood 危害最大,具体如下。

SYN Flood (SYN 洪水攻击)

SYN 报文是第一次握手 ,如果客户端发送了 SYN 报文后掉线死机,那么服务器发出 SYN+ACK 后无法收到应答,三次握手无法完成。一般服务器会重试,等待一段时间(SYN timeout)后丢弃连接。当大量这样的半连接出现,就会消耗服务器过多时间、内存。如果 TCP/IP 栈不够大,还会造成栈溢出崩溃。

防范:
- 缩短SYN Timeout
- 设置SYN Cookie,给每个连接请求的地址设置 Cookie,如果连续收到 IP 重复 SYN 报文就视为攻击,丢弃。

SYN-ACK Flood

SYN-ACK 报文是第二次握手,是用来确认第一次握手的。收到 SYN-ACK 报文后,首先判断该报文是不是三次握手范畴之内的报文。如果没有进行第一次握手就直接收到了第二次握手的报文,就发送RST报文。
因此攻击者向目标服务器发送大量的 SYN-ACK 报文,这些报文都属于凭空出现的第二次握手报文,服务器忙于回复 RST 报文,导致资源耗尽,无法响应正常的请求。

ACK Flood

在 TCP 连接建立之后,所有的数据传输报文都是带有 ACK 标志位的,主机在接收到一个带有 ACK 标志位的数据包的时候,要处理检查很多事情,所以当发包速率很大的时候,主机操作系统将耗费大量的精力接收报文、判断状态,同时要主动回应RST报文,正常的数据包就可能无法得到及时的处理。

具体检查的事情有(说实话我也不清楚这段复杂的话,没用到就先别管): 需要检查该数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。如果在检查中发现该数据包不合法,例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应 RST 包告诉对方此端口不存在。

防范:
- 对称性判断:收包异常大于发包,因为攻击者通常会采用大量 ACK 包,并且为了提高攻击速度,一般采用内容基本一致的小包发送。(易误判)

FIN Flood or RST Flood

FIN/RST 包都是和断开链接有关系,当攻击者发送伪造的包,假如源地址是正常用户地址,服务器要花费一定时间去检查,浪费时间。

PSH Flood

通过设置 PSH 标志位,使得服务器总是紧急处理攻击者发的数据包。(PSH Flag 见之前的一篇文章)

UDP 攻击

UDP Flood

服务端收到 UDP 数据包时,检查在该端口侦听的应用程序,该应用程序与数据包的内容相关联。当发现没有关联的应用程序正在侦听时,将回复 [ICMP 目标不可达] 数据包。
攻击者发送大量伪造源 IP 地址的小 UDP 包,发给各种端口。只要开了一个 UDP 的端口提供相关服务的话,那么就可针对相关的服务进行攻击。攻击者可能还会欺骗数据包的 IP 地址,以确保返回的 ICMP 数据包不会到达其主机,并匿名化攻击。
防范:云清洗

ICMP 攻击

ICMP Flood

攻击者短时间大量发送 ping 包,消耗资源。

Smurf 病毒

结合使用了 IP spoofing 和 ICMP 回复方法,具体指将回复地址设置成受害服务器网络的广播地址的 ICMP 应答请求数据包,最终导致该网络的所有主机都对此 ICMP 应答请求做出答复,导致网络阻塞。
更加复杂的 Smurf 将源地址改为第三方的受害者,最终导致第三方崩溃。现在的网络环境已经大多免疫该类攻击。

DNS 攻击

DNS Query Flood

随机构造并查询被攻击域名的二级域名,绕过递归 DNS 服务器的解析记录缓存,各地区地市的递归 DNS 服务器向权威 DNS 服务器发起大量的 DNS 查询请求。从而影响这个权威 DNS 服务器上,也影响到了其他域名的查询。

DNS reflector/amplification attacks

这一类攻击不是攻击 DNS 服务器,而是利用 DNS 服务器去攻击别人的主机。攻击者通过伪造受害主机的 IP 地址,然后向 DNS 服务器发送构造的请求报文,DNS 服务器会将大量的响应数据包发送受害者 IP,间接形成 DDoS 攻击。
实际上不只 DNS 有这种攻击,还有 SNMP、NTP 都有这种攻击方式

HTTP攻击

HTTP Flood(cc攻击)
HTTP Get Flood
HTTP POST Flood

很大一部分的攻击软件甚至都可以完全模拟用户行为,真真假假很难分辨。
防御:

攻击规模不大的,可以考虑将被攻击的页面静态化,避开数据库查询,和动态语言。
如果攻击规模巨大的:大量的服务器和带宽,以及专业的硬件负载均衡设备做负载均衡;专业的DDoS云清洗和云防御服务商的服务ddos攻击:

https://www.imperva.com/learn/ddos/udp-flood/

Comments