DDoS 攻防之 HTTP Flood|学习笔记

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 快速学习 DDoS 攻防之 HTTP Flood

开发者学堂课程【互联网安全-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 对我们的请求进行应答

image.png

二、HTTPS协议

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。

即 HTTP下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要SSL。

三、SSL&TLS

image.png

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 请求。

主要请求动态页面,涉及到数据库访问操作。

数据库负载以及数据库连接池负载极高,无法响应正常请求。

image.png

2.CC 攻击二---代理发起的 http flood

如图就是一个模拟代理发包,可以填域名,端口号,填间隔、填总数,填伪造的 IP 地址,然后发包。

代理攻击原理:

image.png

攻击者向大量的服务器发送请求。然后由代理服务器转向受害者进行请求,受害者无法承受如此多的请求,而失去响应。

3.CC 攻击三---僵尸网络的 http flood

跟代理服务器发起的 HTTP,get 相比,由僵尸控制的攻击端破坏性更大,发出的攻击更加真实和复杂,因为他是他是以所有的僵尸网都作为真实的请求源,黑客可以自定义的类型更加的丰富。

image.png

大量的僵尸网络 IP 地址向受害者发起攻击。

4.CC攻击四---变异 CC 和轮回 CC

有几种攻击方式:

(1)无限 CC:循环的请求某些页面。

(2)动态 CC:专打 ASP PHP 等动态页面。

(3)无缓冲 CC:穿透 cache

(4)HTTP 空 GET 请求:不请求 URL。

(5)循环下载 CC:使用真实的协议栈循环下载文件。

5.CC 攻击五---循环下载文件

循环下载文件工具软件示例:

image.png

指定某个 URL 下载指定文件。左下侧是攻击协议方式

6.CC 攻击六--- ARME FLOOD

利用 web 服务器漏洞进行攻击,攻击程序会给被攻击的 APACHE 发送一个报文,它的 RANGE 字段为依据协议,服务器必须对这个报文的每一个 R ANGE 都要使用multipar/byterange 作出回应,导致服务器的资源被耗尽。

7.CC 攻击七---利用爬虫 get 请求

image.png

用户打开 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 协议的默认协议端口


五、传统应用层防护原理

image.png

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 攻击概述

攻击过程分析:

image.png

在上述报文的交互过程中,可以清晰地看到 SSL 服务器的资源如何在被耗尽。

SSL 客户端通过发送一条 clienthello 消息来初始化一次新的握手,该消息大约100字节左右,不需要加密。

服务器端响应 clienthello 消息需要连续发出三个消息,server hello、certificate、serverhellodone ,这三个消息一般在3000字节左右,需要用高级加密标准 AES 或流加密算法簇 RC4 进行加密后再发送。

每次重握手,ssl 服务端发送的数据比客户端多了30倍,同时还要进行加密,从而导致服务端 CPU 计算资源大量占用。

相关文章
|
3月前
|
前端开发 JavaScript
HTTP学习笔记
HTTP学习笔记
38 1
|
7月前
|
XML Java 数据库
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
180 4
|
前端开发
前端学习笔记202305学习笔记第二十四天-http解析和请求发送1
前端学习笔记202305学习笔记第二十四天-http解析和请求发送1
60 0
|
7月前
|
Web App开发 网络协议 Linux
Linux C/C++ 开发(学习笔记十 ):实现http请求器(TCP客户端)
Linux C/C++ 开发(学习笔记十 ):实现http请求器(TCP客户端)
252 0
|
安全 前端开发
前端学习笔记202306学习笔记第四十八天-https为什么安全1
前端学习笔记202306学习笔记第四十八天-https为什么安全1
58 0
|
安全 前端开发
前端学习笔记202306学习笔记第四十八天-https为什么安全2
前端学习笔记202306学习笔记第四十八天-https为什么安全2
49 0
|
安全 前端开发
前端学习笔记202306学习笔记第四十八天-https为什么安全4
前端学习笔记202306学习笔记第四十八天-https为什么安全4
49 0
|
安全 前端开发
前端学习笔记202306学习笔记第四十八天-https为什么安全5
前端学习笔记202306学习笔记第四十八天-https为什么安全5
52 0
|
安全 前端开发
前端学习笔记202306学习笔记第四十八天-https为什么安全3
前端学习笔记202306学习笔记第四十八天-https为什么安全3
62 0
|
前端开发
前端学习笔记202305学习笔记第二十四天-http解析和请求发送2
前端学习笔记202305学习笔记第二十四天-http解析和请求发送2
60 0