<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ddos on Lucien's Blog</title><link>https://www.lucien116.com/tags/ddos/</link><description>Recent content in Ddos on Lucien's Blog</description><generator>Hugo</generator><language>zh-Hans</language><lastBuildDate>Tue, 13 Sep 2016 09:26:42 +0000</lastBuildDate><atom:link href="https://www.lucien116.com/tags/ddos/feed.xml" rel="self" type="application/rss+xml"/><item><title>浅谈Slowloris拒绝服务攻击</title><link>https://www.lucien116.com/archives/111/</link><pubDate>Tue, 13 Sep 2016 09:26:42 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=111</guid><description>&lt;p&gt;原文地址： &lt;a href="http://blog.chinaunix.net/uid-26696966-id-3510191.html"&gt;浅谈Slowloris拒绝服务攻击&lt;/a&gt; 作者： &lt;a href="http://blog.chinaunix.net/uid/26696966.html"&gt;xcgsnowdrop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;DDOS又称为分布式拒绝服务，全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载，导致服务不可用。比如一个停车场共有100车位，当100车位都停满后，再有车想要停进来，就必须等待已有的车先出去才行。如果已有的车一直不出去，那么停车场的入口就会排气长队，停车场的负荷过载，不能正常工作了，这种情况就是“拒绝服务”。&lt;/p&gt;
&lt;p&gt;常见的DDOS攻击有SYN flood、UDP flood、ICMP flood等。其中SYN flood是一种最为经典的DDOS攻击。其利用的是TCP协议设计中的缺陷，此处先避开不谈。&lt;/p&gt;
&lt;p&gt;        Slowloris攻击则是利用Web Server的漏洞或设计缺陷，直接造成拒绝服务。下面通过一个典型示例分析slowloris的拒绝服务攻击本质。&lt;/p&gt;
&lt;p&gt;        Slowloris是在2009年由著名Web安全专家RSnake提出的一种攻击方法，其原理是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限，因此若是恶意地占用住这些连接不释放，那么Web Server的所有连接都将被恶意连接占用，从而无法接受新的请求，导致拒绝服务。&lt;/p&gt;
&lt;p&gt;要保持住这个连接，RSnake构造了一个畸形的HTTP请求，准确地说，是一个不完整的HTTP请求。&lt;/p&gt;
&lt;p&gt;        GET / HTTP/1.1\r\n&lt;/p&gt;
&lt;p&gt;        HOST: host\r\n&lt;/p&gt;
&lt;p&gt;        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3;     .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n&lt;/p&gt;
&lt;p&gt;        Content-Length: 42\r\n&lt;/p&gt;
&lt;p&gt;在正常的HTTP包头中，是以两个CLRF表示HTTP Headers部分结束的。&lt;/p&gt;
&lt;p&gt;由于Web Server只收到了一个\r\n，因此将认为HTTP Headers部分没有结束，并保持此连接不释放，继续等待完整的请求。此时客户端再发送任意HTTP头，保持住连接即可。&lt;/p&gt;
&lt;p&gt;X-a: b\r\n&lt;/p&gt;
&lt;p&gt;当构造多个连接后，服务器的连接数很快就会达到上限。在Slowloris的专题网站上可以下载到POC演示程序，其核心代码置于文章底部，记为slowloris.pl），下面开始使用该脚本工具演示如何使用slowloris攻击使Web Server拒绝服务：&lt;/p&gt;
&lt;p&gt;一，准备工作&lt;/p&gt;
&lt;p&gt;1.在本机安装配置好Apache2.x，设置MaxClients为50&lt;/p&gt;
&lt;p&gt;2.在Browser中访问http://127.0.0.1，结果显示正常&lt;/p&gt;
&lt;p&gt;3.下载或编写slowloris.pl脚本&lt;/p&gt;
&lt;p&gt;二，开始阶段&lt;/p&gt;
&lt;p&gt;1.测试每个http连接等待超时时间，前面我们说过，当Web Server只收到了一个\r\n时，因将其认为HTTP Headers部分尚未结束，故会保持此连接不释放，继续等待完整的请求，此处测试的即为该连接等待完整请求的超时时间。&lt;/p&gt;
&lt;p&gt;perl slowloris.pl -dns 127.0.0.1 -port 80 -test&lt;/p&gt;</description></item></channel></rss>