slowhttptest — Denial Of Service attacks simulator
Contents
Description
The slowhttptest implements most common low-bandwidth Application Layer DoS attacks and produces CSV and
HTML files with test statistics.
Currently supported attacks are:
• Slowloris
• Slow HTTP POST
• Apache Range Header
• Slow Read
The options are as follows:
-g Forces slowhttptest to generate CSV and HTML files when test finishes with timestamp in filename.
-H Starts slowhttptest in SlowLoris mode, sending unfinished HTTP requests.
-B Starts slowhttptest in Slow POST mode, sending unfinished HTTP message bodies.
-R Starts slowhttptest in Range Header mode, sending malicious Range Request header data.
-X Starts slowhttptest in Slow Read mode, reading HTTP responses slowly.
-astart
Sets the start value of range-specifier for Range Header attack.
-bbytes
Sets the limit value of range-specifier for Range Header attack.
-cnumberofconnections
Specifies the target number of connections to establish during the test.
-dHTTPproxyhost:port
Specifies HTTP proxy server to connect to for all connections.
-eHTTPproxyhost:port
Specifies HTTP proxy server to connect to for probe connections.
-fcontent-type
Specifies the value of Content-Type header.
-iseconds
Specifies the interval between follow up data for slowrois and Slow POST tests.
-kpipelinefactor
Specifies number of times the resource would be requested per socket in Slow Read test.
-lseconds
Specifies test duration in seconds.
-maccept
Specifies the value of Accept header.
-nseconds
Specifies the interval between read operations for Slow Read test.
-ofilename
Specifies custom file name, effective with -g.
-pseconds
Specifies the interval to wait for HTTP response on probe connection, before marking the server
as DoSed.
-rconnectionspersecond
Specifies the connection rate.
-sbytes
Specifies the value of Content-Length header for Slow POST test.
-tHTTPverb
Specifies the verb to use in HTTP request.
-uURL Specifies the URL.
-vlevel
Specifies the verbosity level of logging.
-wbytes
Specifies the start of the range the TCP advertised window size would be picked from in Slow Read
test.
-xbytes
Specifies the maximum length of follow up data for slowloris and Slow POST tests.
-ybytes
Specifies the end of the range the TCP advertised window size would be picked from in Slow Read
test.
-zbytes
Specifies the number of bytes to read from receive buffer with each read() operation.
Examples
Start a slowloris test of host.example.com with 1000 connections, statistics goes into my_header_stats,
interval between follow up headers is 10 seconds and connection rate is 200 connections per second:
$slowhttptest-c1000-H-g-omy_header_stats-i10-r200-tGET-uhttps://host.example.com/index.html-x24-p3
Start slow POST test of host.example.com with 3000 connections, statistics goes into my_body_stats,
interval between follow up headers is 110 seconds, connection rate is 200 connections per second,
Content-Length header value is 8192, maximum length of follow up data is random value limited by 10 bytes
and probe connections waits 3 seconds for HTTP response before marking server as DoSed:
$slowhttptest-c3000-B-g-omy_body_stats-i110-r200-s8192-tFAKEVERB-uhttp://host.example.com/loginform.html-x10-p3
Start Range Header test of host.example.com with 1000 connections, use HEAD verb, and generate HTTP
header Range:0-, x-1, x-2, x-3, ... x-y, where x is 10 and y is 3000, connection rate is 500: interval
between follow up headers is 10 seconds and connection rate is 200 connections per second:
$slowhttptest-R-uhttp://host.example.com/-tHEAD-c1000-a10-b3000-r500
Start Slow Read test of host.example.com with 8000 connections, no statistics is generated, connection
rate is 200 connections per second, TCP advertised window size is a random value between 512 and 1024,
slowhttptest reads 32 bytes from each connections every 5 seconds, 3 requests are pipelined per each
connections, probe connection waits 3 seconds for HTTP response before marking server as DoSed:
$slowhttptest-c8000-X-r200-w512-y1024-n5-z32-k3-uhttps://host.example.com/resources/index.html-p3
Start Slow Read test of host.example.com through HTTP proxy server at 10.10.0.1:8080 with 8000
connections, no statistics is generated, the rest test values are default. slowhttptest most likely
would test HTTP proxy server itself, rather than target server, but it all depends on the HTTP proxy
server implementation:
$slowhttptest-d10.10.0.1:8080-c8000-X-uhttps://host.example.com/resources/index.html
Start Slow Read test of host.example.com and direct probe traffic through HTTP proxy server at
10.10.0.1:8080 with 8000 connections, no statistics is generated, the rest test values are default.
Specifying another connection channel for probe connections helps to make sure that slowhttptest shows
valid statistics for availability of server under test:
$slowhttptest-e10.10.0.1:8080-c8000-X-uhttps://host.example.com/resources/index.htmlName
slowhttptest — Denial Of Service attacks simulator
Synopsis
slowhttptest [-H|B|R|X] [-g] [-arangestart] [-brangelimit] [-cnumberofconnections]
[-dalltrafficdirectedthroughHTTPproxyathost:port]
[-eprobetrafficdirectedthroughHTTPproxyathost:port]
[-fvalueofContent-typeheader] [-iintervalinseconds] [-krequestmultiplyfactor]
[-ltestdurationinseconds] [-mvalueofAcceptheader] [-nslowreadintervalinseconds]
[-ooutputfilepathand/orname] [-ptimeoutforprobeconnectioninseconds]
[-rconnectionpersecond] [-svalueofContent-Lengthheader] [-tHTTPverb]
[-uabsoluteURL] [-voutputverbositylevel] [-wadvertisedwindowsizerangestart]
[-xmaxlengthoffollowupdata] [-yadvertisedwindowsizerangeend]
[-zslowreadfromreceivebufferinbytes]
