0X01 前言
一提起攻击,第一反应就是海量的流量,海量的报文。但是有一种攻击却反其道而行之,以慢著称,以至于有些攻击目标被打死了都不知道是怎么死的,这就是慢速连接攻击,最具代表性的是rsnake发明的SlowLoris。
HTTP协议规定,HTTP Request以rnrn结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送\r\n\r\n会如何?SlowLoris就是利用这一点来做DDoS攻击。攻击者在HTTP请求头中将Connection设置为Keep-Alive,要求Web Server保持TCP连接不要断开,随后缓慢的每隔几分钟发送一个key value格式的数据到服务端,如a:b\r\n,导致服务端认为HTTP头部没有接收完成而一直等待。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的WEB容器很快就被攻击者占满了TCP连接而不再接受新的请求。
0X02 演示
下面就采用slowloris攻击虚拟机测试,附上下载地址
服务器:www.dvwa.com IP:10.10.10.103
攻击机:10.10.10.106
1,获取keep-alive时间: slowloris.pl -dns www.dvwa.com -port 80 -test
可以看到,默认的时间是90s。
./slowloris.pl -dns www.dvwa.com -timeout 90 -cache -num 2000
下面看一下实际的效果:
建立了很多的连接
发送http header 维持连接
现象
0X04 结论
这种慢速攻击很类似于http flood,http flood是消耗服务器的资源,包括数据库服务器。但是它们之间又是有所区别的,慢速攻击就是要维持跟服务器的连接,导致正常客户端的连接不能建立,从而达到拒绝服务的目的。
对于这种慢速攻击的防御,可以简单的依据其特征,修改些参数即可,包括:限制单机IP的连接数、限制http request header/body 的超时时间、包括其头部包含的字段也是其特征。