简介
Slowloris 是一种专为低带宽环境设计的网络压力测试工具,首次由安全研究员 RSnake 在 2009 年发布。它利用 HTTP 协议的特性,通过发送部分的 HTTP 请求保持连接占用,逐渐耗尽服务器资源。Slowloris 特别对 Apache 等线程驱动型服务器有效,在不影响其他服务的前提下导致目标 Web 服务器崩溃。
原理
Slowloris 基本上是一种影响线程服务器的 HTTP 拒绝服务攻击。
Slowloris 的核心原理是通过建立大量半开的 HTTP 连接,耗尽目标服务器的资源,导致它无法处理合法的请求。它发送部分 HTTP 请求头,但从不完成请求,并定期发送数据保持连接处于活跃状态。这样,目标服务器会持续消耗资源等待完成的请求。
它的工作原理如下:
1.我们开始发出大量 HTTP 请求。
2.我们定期(每约 15 秒)发送标头以保持连接打开。
3.除非服务器这样做,否则我们永远不会关闭连接。如果服务器关闭一个连接,我们会创建一个新连接,继续做同样的事情。
这会耗尽服务器线程池,并且服务器无法回复其他人。
安装
我们可以克隆 git 存储库或使用 pip 安装。以下是运行它的方法。
pip安装
sudo pip3 install slowloris
这就是pip安装和运行slowloris.py 所需的全部工作。
Github存储库安装
GitHub - gkbrk/slowloris: Low bandwidth DoS tool. Slowloris rewrite in Python.slowloris官方Github:GitHub - gkbrk/slowloris: Low bandwidth DoS tool. Slowloris rewrite in Python.
克隆不了或者速度慢。请在git克隆前先开启代理服务。
#git命令去克隆源码
git clone https://github.com/gkbrk/slowloris.git
#进入slowloris文件夹
cd slowloris
#显示当前文件夹里面的文件
ls
使用
我这里以github的安装方式去运行。当然pip安装的也同理。
查看slowloris的帮助说明
python3 slowloris.py -h
如果出现上述的帮助文档,就说明slowloris安装完成。
参数解释
-h, --help | 显示这个帮助信息并退出 |
-p 端口,--port 端口 | Web服务器的端口,通常为80 |
-s, --sockets | 测试中使用的套接字数量 |
-v, --verbose | 增加日志记录(终端上的输出) |
-ua, --randuseragents | 每个请求随机化用户代理 |
-x, --useproxy | 使用 SOCKS5 代理进行连接 |
--proxy-host 代理主机 | SOCK5 代理主机 |
--proxy-port 代理端口 | SOCK5 代理端口 |
--https | 使用 HTTPS 进行请求 |
--sleeptime 睡眠时间 | 发送每个标头之间的休眠时间 |
运行示例
python3 slowloris.py example.com -p 80 -s 200 -ua --proxy-host 代理主机 --proxy-port 代理端口 --https --sleeptime 10 -v
这条命令使用 200 个并发连接,通过代理服务器向目标网站 example.com 的端口 80 发送随机化的 HTTPS 请求,同时采用慢速间隔(10 秒)保持连接,从而测试目标服务器的资源承受能力。
可以依据具体情况使用参数。把exampl.com替换成实际存在的网站域名或ip即可。
测试
我们使用Ubuntu 22.04来充当一个服务器。
Ubuntu要安装 Apache,运行:
#更新ubuntu
sudo apt update
#安装apache2服务
sudo apt install apache2
安装完成后我们运行查看apache2的运行状态
#启动apache2服务
sudo systemctl start apache2.service
#查看apache2服务的状态
sudo systemctl status apache2.service
这里如果出现"active(running)"的字样就说明apache2服务在运行中了。
我们在ubuntu的浏览器里面输入127.0.0.1或localhost。当然也可以输入ubuntu的ip地址。如果出现下面的网站就说明apache2在工作中。
我们回到kali。对ubuntu进行网站压力测试攻击。
python3 slowloris.py 192.168.174.145 -p 80 -s 1000 -ua --proxy-host 代理主机 --proxy-port
代理端口
回到浏览器,对刚才的网页进行刷新。可以看到网页刷新后服务器一直在请求,打开网页非常缓慢。说明我们的攻击开始有效果了。
攻击一段时间,apache2服务是彻底打不开了。
slowloris主要针对线程驱动型服务器(如 Apache),而不会对其他服务(如 SSH 或邮件服务器)造成影响。
在终端中按住Ctrl + C 停止运行攻击。
自此,我们的测试就结束。
总结
Slowloris 不仅展示了利用协议设计漏洞实施攻击的可能性,同时也提醒我们加强网络安全防护的重要性。通过学习其工作原理和使用方法,我们能够更深入理解分布式拒绝服务攻击的本质,并开发更有效的防御策略。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,萌新小白来找我交流。