I received a great comment from a reader pertaining to SlowLoris. He asked why using Slowloris was viable in a Pen Test because of its effectiveness and apparent lack of countermeasure? Thanks for such a great question, and here my response:
I hope I didn’t make it seem as if SlowLoris was impervious to countermeasures. However, to clarify let me explain a bit more.
Layman’s Terms
To summarize SlowLoris into a few words, this is essentially how it works. It simulates numerous slow sending/receiving users that soak up the connection pool. Therefore, the web server thinks its servicing normal users who just happen to be very slow. This is what causes the DoS conditions; all connections are busy “communicating” with very slow, yet nonetheless, legitimate looking “clients”.
However, this condition is dependent upon the timeout value. A low enough timeout value will cause SlowLoris to increase its footprint by reducing its configured timeout value. This defeats one of the primary goals of SlowLoris; being stealthy.
Value to Pen Testers
A Penetration Tester is trying to locate all vulnerabilities that will impact the Confidentiality, Integrity and Availability of the client. A DoS is an example of a threat to Availability. It is easy enough to configure your IDS/IPS/FW to deal with SYN floods, or other DoS attacks that leave very large footprints. The danger of SlowLoris is not necessarily that it causes a DoS state (since other techniques do the same), but that its hard to detect until its already too late. As a Pen Tester, being able to exercise that test case upon a target of evaluation helps to inform the client of potential realization of a threat. A client running an e-commerce site pulling in 10,000 USD ever 5 minutes cant afford even the shortest downtime. Testing for SlowLoris is therefore quite pertinent.
Countermeasures
To discuss Controls/Countermeasures against slowloris, I have found a few methods proposed by professionals:
1) Andreas at Synflood.at released a patch for Apahce. It seems to work by manipulating the servers timeout value based upon the client load it is experiencing. Therefore, a SlowLoris attack would have to continuously reconfigure, and gradually increase its footprint. This would become quite easy to see when analyzing traffic consumption. It would give you enough time to stop the attack, or it may mitigate it completely on its own.
the patch can be found here: http://synflood.at/tmp/anti-slowloris.diff [Safe according to VirusTotal]
2) Use an application level firewall (aka, proxy firewall). This will analyze the packet before it gets to the server and may drop it if it seems suspicious.
3) Unconfirmed by myself, but some say using syncookies may work. I explain how to use syncookies here.
Conclusion
SlowLoris’ attack is very easy. It’s stealthiness is dangerous. Its simplicity makes it underestimated by those with little background in IT Security (namely the Senior Management of the organization you are auditing). Including it as a part of your test because essential in convincing the organization to implement a control.