DDOS常见攻击手法

CC攻击

攻击对象通常为WEB网站,攻击者通过代理服务器或者肉鸡向受害主机送大量HTTPGET 请求报文,造成服务器资源耗尽。

  • 没有和服务器3次握手,直接打HTTP GET FLOODDDOS常见攻击手法_第1张图片  

正常HTTPGet请求,都需要和服务器先3次握手建TCP连接,客户端不握手直接发GET 请求,服务器会回复RST报文给客端,通知客户端必须发起一个新的连接请求。如果短时间内服务器收到海量的GET请求,会逐个回复RST报文,消耗服务器性能,占用上行链路带宽,达到DDOS攻击目的。

慢速攻击

慢速攻击分为Slowheaders、Slowbody、Slowread三种。

Slow headers

HTTP协议规定,HTTP Request以\r\n\r\n(0d0a0d0a)结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送\r\n\r\n会如何?Slowloris工具就是利用这一点来做DDoS攻击的。攻击者在HTTP请求头中将Connection设置为Keep-Alive,要求WebSrver 保持TCP连接不要断开,随后缓慢地每隔一段时间发送一个key-value格式的数据到服务端,如a:b\r\n,导致服务端认为HTTP头部没有接收完成而一直等待。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的Web容器很快就被攻击者占满了TCP连接而不再接受新的请求。

DDOS常见攻击手法_第2张图片

由抓包数据可见, 攻击客户端与服务器建立 TCP 连接后, 每 30 秒才向服务器发送一个 HTTP 头部,且每一次发送一个key-value格式的数据到服务端,a:b\r\n,而 Web 服务器再没接收到两个连续的 \r\n 时, 会认为客户端没有发送完头部,而持续的等待客户端发送数据。

Slow body
原理为在POST提交方式中,允许在HTTP的头中声明content-length,即POST内容的长度。

这种方式与Slow headers,差别不大,主要就是在数据内容中做手脚,缓慢的发送报文内容,以达到长时间占用http连接的目的。

Slow read
第三类攻击方式采用调整TCP协议中滑动窗口大小,来对服务器单次发送的数据大小进行控制,使得服务器需要对一个相应包分为很多个包来发送,想要使这种攻击效果明显,请求的资源要尽量大,这里很容易理解,当请求的资源越大,返回包才越大,这样才能分成更多的包让服务器发送,导致拒绝服务的产生。

 

ACK flood

ACK Flood攻击是在TCP连接建立之后,所有的数据传输TCP报文都是带有ACK标志位的,主机在接收到一个带有ACK标志位的数据包的时候,需要检查该数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。如果在检查中发现该数据包不合法,例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应RST包告诉对方此端口不存在。

这里,服务器要做两个动作:查表、回应ACK/RST。这种攻击方式显然没有SYN Flood给服务器带来的冲击大,因此攻击者一定要用大流量ACK小包冲击才会对服务器造成影响。按照我们对TCP协议的理解,随机源IP的ACK小包应该会被Server很快丢弃,因为在服务器的TCP堆栈中没有这些ACK包的状态信息。但是实际上通过测试,发现有一些TCP服务会对ACK Flood比较敏感,比如说JSP Server,在数量并不多的ACK小包的打击下,JSP Server就很难处理正常的连接请求。对于Apache或者IIS来说,10kpps的ACK Flood不构成危胁,但是更高数量的ACK Flood会造成服务器网卡中断频率过高,负载过重而停止响应。可以肯定的是,ACK Flood不但可以危害路由器等网络设备,而且对服务器上的应用有不小的影响。抓包:

DDOS常见攻击手法_第3张图片

如果没有开放端口,服务器将直接丢弃,这将会耗费服务器的CPU资源。如果端口开放,服务器回应RST。

2 ACK Flood防护

利用对称性判断来分析出是否有攻击存在。所谓对称型判断,就是收包异常大于发包,因为攻击者通常会采用大量ACK包,并且为了提高攻击速度,一般采用内容基本一致的小包发送。这可以作为判断是否发生ACK Flood的依据,但是目前已知情况来看,很少有单纯使用ACK Flood攻击,都会和其他攻击方法混合使用,因此,很容易产生误判。

一些防火墙应对的方法是:建立一个hash表,用来存放TCP连接“状态”,相对于主机的TCP stack实现来说,状态检查的过程相对简化。例如,不作sequence number的检查,不作包乱序的处理,只是统计一定时间内是否有ACK包在该“连接”(即四元组)上通过,从而“大致”确定该“连接”是否是“活动的”。

SYN flood

   SYN洪水攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN 请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

PING flood

Ping (ICMP) Flood 的 DDoS 形式可以分解为 2 个重复步骤:

  1. 攻击者使用多个设备向目标服务器发送许多 ICMP 回显请求数据包。
  2. 然后,目标服务器向每个请求设备的 IP 地址发送一个 ICMP 回显回复数据包作为响应。
  3. Ping Flood攻击流量是对称的;目标设备接收的带宽量只是从每个机器人发送的总流量的总和。

如何环节ping flood攻击呢?

通过禁用目标路由器、计算机或其他设备的 ICMP 功能,最容易禁用 ping 泛洪。网络管理员可以访问设备的管理界面并禁用其使用 ICMP 发送和接收任何请求的能力,从而有效地消除对请求的处理和回声回复。这样做的结果是所有涉及 ICMP 的网络活动都被禁用,使设备对 ping 请求、traceroute 请求和其他网络活动无响应。
 

你可能感兴趣的:(网络,http,安全,服务器)