DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”。
那什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。
分布式拒绝服务攻击一旦被实施,攻击网络包就会从很多DOS攻击源(俗称肉鸡)犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为“洪水式攻击”。
常见的DDOS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等。
0x01、DoS和DDoS之间的区别在DoS攻击中,部署一台计算机和一个互联网连接,以便用数据包摧毁服务器或网络,其唯一目的是使受害者的带宽和可用资源过载。
DDoS攻击是相同的但是被放大了。DDoS不是一台计算机和一台互联网连接,而是经常涉及数百万台计算机,这些计算机全部以分布式方式使用,以使网站,网络应用程序或网络脱机。
在这两种情况下,无论是通过单一DoS还是多次DDoS攻击,目标都会被数据请求轰炸,这些数据请求会禁用受害者的功能。
0x02、DDos攻击的常见方法 SYN Flood(SYN泛洪):利用TCP协议的原理,这种攻击方法是经典最有效的DDOS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK 包,(企图使用大量服务器资源使系统对合法流量无响应),导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务。TCP通道在建立以前,需要三次握手:a. 客户端发送一个包含SYN标志的TCP报文, 同步报文指明客户端所需要的端口号和TCP连接的初始序列号
b. 服务器收到SYN报文之后,返回一个SYN+ ACK报文,表示客户端请求被接受,TCP初始序列号加1
c.客户端也返回一个确认报文ACK给服务器,同样TCP序列号加1
d. 如果服务器端没有收到客户端的确认报文ACK,则处于等待状态,将该客户IP加入等待队列,然后轮训发送SYN+ACK报文
所以攻击者可以通过伪造大量的TCP握手请求,耗尽服务器端的资源。
针对系统的每个Web页面,或者资源,或者Rest API,用大量肉鸡,发送大量http request。这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。缺点是对付只有静态页面的网站效果会大打折扣。
Teardrop Attacks(泪滴攻击)泪滴攻击涉及黑客向受害者的机器发送重叠的,超大的有效载荷的破碎和混乱的IP片段。由于TCP / IP碎片重新组装的方式存在错误,因此显然会导致操作系统和服务器崩溃。所有操作系统的许多类型的服务器都容易受到这种类型的DOS攻击,包括Linux。
慢速攻击Low-rate Denial-of-Service attacks(低速拒绝服务攻击),不要被标题所迷惑,这仍然是致命的DoS攻击!低速率DoS(LDoS)攻击旨在利用TCP的慢速时间动态,能够执行重传超时(RTO)机制以降低TCP吞吐量。简而言之,黑客可以通过发送高速率和密集突发来反复进入RTO状态来创建TCP溢出 - 同时在慢速RTO时间尺度上。受害节点处的TCP吞吐量将大幅降低,而黑客的平均速率较低,因此难以被检测到。
Http协议中规定,HttpRequest以\r\n\r\n结尾来表示客户端发送结束。攻击者打开一个Http 1.1的连接,将Connection设置为Keep-Alive, 保持和服务器的TCP长连接。然后始终不发送\r\n\r\n, 每隔几分钟写入一些无意义的数据流, 拖死机器。
Internet Control Message Protocol(ICMP) flood(Internet控制消息协议(ICMP)泛洪)