开发者学堂课程【互联网安全-DDoS攻防原理及实战:DDoS 攻防之 HTTP Flood】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/356/detail/4191
DDoS 攻防原理之 HTTP Flood
内容介绍
一、HTTP 协议
二、HTTPS 协议
三、SSL&TLS
四、CC 攻击
五、传统应用层防护原理
六、移动 APP 防护难点
七、HTTPS 攻击介绍
一、HTTP 协议
1.Hyper Text Transfer Protocol(超文本传输协议)
2.HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
3.平时使用的 web server 浏览器向 web 服务器发起 request 请求,由互联网上的各种 web server 对我们的请求进行应答
二、HTTPS协议
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。
即 HTTP下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要SSL。
三、SSL&TLS
TLS 是 SS L的新一代协议。
(1)首先客户端会发起请求(a.支持的协议版本b.支持的加密及压缩算法 c.产生一个随机数 d.hello)
(2)服务端对请求进行回应并将 a. 确定的加密协议版本及加密的算法 b. 服务器的证书c.服务器随机数 d.hello 回应给客户端。
(3)客户端回应服务端的证书,使用证书中的公钥进行加密、编码然后通知服务端握手结束。
(4)服务端生成秘钥,通知客户端编码改变、握手结束。
(5)随后客户端和服务端就用对称加密方式进行数据传输。
四、CC 攻击
1.CC 攻击---普通的 http flood
(1)CC 攻击是 http flood 的一种
(2)CC 攻击利用代理服务器向网站发送大量需要较长计算时间的 URL 请求,如数据库查询等,导致服务器进行大量计算而很快达到自身的处理能力而形成 DOS。而攻击者一旦发送请求给代理就主动断开连接,因为代理并不因为客户端这边连接的断开就不去连接目标服务器。因此攻击机的资源消耗相对很小,而从目标服务器看来,来自代理的请求都是合法的。因为代理能进行正常的服务器响应。
(3)攻击者发送大量的 HTTP flood 请求。受害者忙于对这些请求进行应答。消耗自己无法再对正常用户的 Http Get flood 请求进行回应,然后造成服务攻击。
(4)攻击表象:
利用代理服务器向受害者发起大量的 HTTP get 请求。
主要请求动态页面,涉及到数据库访问操作。
数据库负载以及数据库连接池负载极高,无法响应正常请求。
2.CC 攻击二---代理发起的 http flood
如图就是一个模拟代理发包,可以填域名,端口号,填间隔、填总数,填伪造的 IP 地址,然后发包。
代理攻击原理:
攻击者向大量的服务器发送请求。然后由代理服务器转向受害者进行请求,受害者无法承受如此多的请求,而失去响应。
3.CC 攻击三---僵尸网络的 http flood
跟代理服务器发起的 HTTP,get 相比,由僵尸控制的攻击端破坏性更大,发出的攻击更加真实和复杂,因为他是他是以所有的僵尸网都作为真实的请求源,黑客可以自定义的类型更加的丰富。
大量的僵尸网络 IP 地址向受害者发起攻击。
4.CC攻击四---变异 CC 和轮回 CC
有几种攻击方式:
(1)无限 CC:循环的请求某些页面。
(2)动态 CC:专打 ASP PHP 等动态页面。
(3)无缓冲 CC:穿透 cache
(4)HTTP 空 GET 请求:不请求 URL。
(5)循环下载 CC:使用真实的协议栈循环下载文件。
5.CC 攻击五---循环下载文件
循环下载文件工具软件示例:
指定某个 URL 下载指定文件。左下侧是攻击协议方式
6.CC 攻击六--- ARME FLOOD
利用 web 服务器漏洞进行攻击,攻击程序会给被攻击的 APACHE 发送一个报文,它的 RANGE 字段为依据协议,服务器必须对这个报文的每一个 R ANGE 都要使用multipar/byterange 作出回应,导致服务器的资源被耗尽。
7.CC 攻击七---利用爬虫 get 请求
用户打开 web 标签时,Google 等爬虫就会去抓取大文件,把这些文件指定到被攻击者的服务地址上去,也会对被攻击的 web 服务器进行大量的抓取,导致 web 服务器遭受攻击。
8.CC 攻击为什么难防?
(1)对于攻击:
①因为 CC 攻击来的 IP 都是真实的,分散的。
②CC 攻击的数据包都是正常的数据包。
③CC 攻击的请求,全都是有效的请求,无法拒绝的请求。
(2)对于业务:
①防 CC 的办法就是封 IP,有可能封掉正常访问用户的 IP
②防 cc 的算法要么挑战(挑战就是二次验证,来表明它是正常的访问口端),要么限速,都可能影响体验,爬虫,和在线实时性
③防护的源随机,离散,难以用单体设备的方案存储如此大的数据。
④客户体验与终端误判,是 CC 攻击的防御难点。
(3)Port 80和443里面的业务比我们想象的要复杂
80端口是 http 协议的默认协议端口,443端口是 https 协议的默认协议端口
五、传统应用层防护原理
1.浏览器向服务端发送请求,服务端并不直接回答而是发出一个问题,然后客户端来回答,服务端认可以后向客户端发出可以访问的通知,客户端正常访问交互。
2.僵尸网络:攻击者向服务端发送请求,对于服务端发出的问题,攻击者只会发出 get 请求而不会对二次验证进行处理。
3.在验证页面,防护设备会使用 JavaScript 等脚本语言发送一条简单的运算请求,或者在验证页面生成一个验证码,以检查访问请求是否由真实的浏览器/用户发出的
六、移动 APP 防护难点
1.在移动 APP 中,http 支持的协议是不完整的,对服务端的跳转、计算等等都不是特别完备,很多请求协议都不能做出响应。如果在在这个时候开启防护可能对 APP 造成误杀
2.当移动 APP 接口遭到应用层 DDoS 攻击时,如果不开启防护设备,则大量的僵尸程序请求会耗尽服务器资源,导致正常应用请求访问缓慢或无法访问;而如果开启防护设备的现有防护方法,则会直接将正常应用的访问请求当作僵尸程序发起的请求丢弃,正常用户依然无法访问。
七、HTTPS 攻击介绍
目前针对 HTTPS dos 的攻击主要由传统的 tcp ddos 和针对 ssl 协议的 dos;已知的针对 ssl 协议的 dos 有:
(1)pushdo 僵尸:建立 tcp 连接后,就向 ssl 服务器发送大量垃圾报文,以此消耗服务器的计算资源
(2)Thc-ssl-dos 工具:在同服务器完成 ssl 握手后,立即发送重协商请求,在重协商结束后,再次发送协商请求,如此已知继续,造成 dos。
如果服务器禁止了重协商,则建立多个或多次连接,以和服务器进行多次ssl握手,消耗服务器资源。
(3)Thc-ssl-dos 攻击概述
攻击过程分析:
在上述报文的交互过程中,可以清晰地看到 SSL 服务器的资源如何在被耗尽。
SSL 客户端通过发送一条 clienthello 消息来初始化一次新的握手,该消息大约100字节左右,不需要加密。
服务器端响应 clienthello 消息需要连续发出三个消息,server hello、certificate、serverhellodone ,这三个消息一般在3000字节左右,需要用高级加密标准 AES 或流加密算法簇 RC4 进行加密后再发送。
每次重握手,ssl 服务端发送的数据比客户端多了30倍,同时还要进行加密,从而导致服务端 CPU 计算资源大量占用。