Kali Linux 安裝slowhttptest步驟

Kali Linux 安裝slowhttptest步驟

Slowhttptest其實是一個DoS壓力測試工具,它集成有三種慢速攻擊模式(slowloris、slow http post、slow read attack),並且能導出日誌報告,節約了部分寫文檔的時間,是一個特別好用且強大的工具。

注意:

測試網站不要隨便用公網網站測試;建議自己搭建靶場測試;

或者測試此靶場:http://caichuanqi.cn

安裝步驟

apt-get install slowhttptest 
 slowhttptest -h 

使用步驟

ulimit -n 8000 && slowhttptest -c 8000 -X -r 100 -g -o / -w 512 -y 1024 -n 5 -z 32 -k 3 -u http://caichuanqi.cn -p 3

一、Slowhttptest安裝

Mac安裝命令:
brew update && brew install slowhttptest

安裝好Slowhttptest之後可以直接執行命令Slowhttptest檢測是否成功安裝
大家也可以利用GitHub安裝,有興趣的可以自己研究,命令如下:
git clone https://github.com/shekyan/slowhttptest

二、Slowloris模式

Slowloris攻擊原理:
1.Slowloris也稱爲slow headers,是通過耗盡server的併發連接池來達到攻擊目的的一種DoS攻擊方式,這和前面講的Syn-Flood有點相似,不過Slowloris是應用層的攻擊
2.正常情況下當client和server通信時,client發送的header請求頭信息的結尾應該是"0d0a0d0a"。但是如果啓用Slowloris這種模式則只會發送"0d0a",而HTTP協議默認在服務器接收到全部信息之後纔會開始處理,如果始終沒有接收到完整的request信息那麼服務器會爲其保留連接池並持續等待後續信息直到連接超時
3.通常配置不太好的的服務器的併發連接池數並不多,當攻擊者連續不間斷的建立連接並佔滿server的連接池資源之後,server就不能爲正常用戶提供服務,達到DoS攻擊效果
如果對上述原理不太理解,筆者給大家描述一個生活中常見的場景:當大家在麥當勞點餐的時候,最前面點餐的那個人點了一個漢堡,然後他還準備點其他東西,但是又一直不說要啥,就一直霸站着收銀臺導致後面的客人無法點餐,如果德克士的每個收銀臺都被這樣的客人霸佔着,那麼最後就會導致麥當勞無法做生意了,也就造成了DoS
Slowloris攻擊實戰
環境準備:
Mac端的Slowhttptest
靶機metasploitable 2.0 IP=192.168.1.103

實戰演示:
ulimit -n 1024 && slowhttptest -c 1000 -H -g -o /Users/apple1/Desktop/my_header_stats -i 10 -r 100 -t GET -u https://host.example.com/index.html -x 24 -p 3

參數解釋:
[ ulimit -n 1024 ] 指定同一時間能併發打開的文件數爲 1024;

[ -c 1000 ] 指定測試過程中與目標建立的連接數爲1000;

[ -H ] 指定開始SlowLoris攻擊模式併發送未完成的HTTP請求;

[ -g -o my_header_stats ] 讓Slowhttptest生成CSV和HTML的報告文件,並指定路徑/文件名 ;

[ -i 10 ] Specifies the interval between follow up data ;

[ -r 100 ] 指定連接速率爲100/s ; [ -t GET ] 通過GET方式連接 ;

[ -u https://host.example.com/index.html ]指定URL;

[ -x 24 ] 啓用慢速讀取測試;

[ -p 3 ] 官方:在判斷server被DoS之前,發送連接請求之後,等待HTTP response的時間間隔爲3S || 筆者:client發送request請求3S內沒接收到server的response就標誌服務器被DoS

三、Slow Http Post模式

Slow Http Post攻擊原理
1.Slow Http Post也稱作Slow body,其本質也是通過耗盡服務器的連接池來達到攻擊目的,而且攻擊過程和上面提到的Slowloris差不多
2.在Post攻擊中http header頭是完整發送的,但是這裏會利用header頭裏面的content-length字段,正常情況下content-length的長度就是所要發送的數據長度,但是攻擊者可以定製client發送的content-length,於是如果攻擊者發送一個content-length特別大的值,那麼server就會等待後續沒有傳完的body內容
3.此時攻擊者會延遲發送後續的body甚至是不發送,但是server端依舊會在等待併爲其保留連接池並持續等待後續信息直到連接超時
4.問題來了,如果攻擊者與服務器建立大量連接,而且都告訴server後續還要傳輸數據,那麼server的連接池到達一定程度時就會被佔滿達到DoS攻擊
如果對上述原理不太理解,筆者給大家描述一個生活中常見的場景:當大家在麥當勞點餐的時候,最前面點餐的那個人點了一個漢堡,於是開始付錢,先付了一毛,給收銀員說等我找找錢放哪了再付剩下的錢,但是又一直找不到不給,就一直霸站着收銀臺導致後面的客人無法點餐,如果德克士的每個收銀臺都被這樣的客人霸佔着,那麼最後就會導致麥當勞無法做生意了,也就造成了DoS
Slow Http Post攻擊實戰

ulimit -n 4096 && slowhttptest -c 3000 -B -g -o /Users/apple1/Desktop/my_body_stats -i 110 -r 100 -s 8192 -t GET -u http://host.example.com/loginform.html -x 10 -p 3
參數解釋:
[ -B ] 啓用Slow Http Post模式發送未完成的HTTP消息體;

[ -s ] 指定content-length長度爲8192;

四、Slow Read attack模式

Slow Read attack攻擊原理
1.正如名字所描述的那樣,就是慢速讀取server傳輸過來的數據,如果大家看過我的sockstress那篇文章可知client可以通過控制TCP的window size來控制傳輸速率
2.如果攻擊者將window size置爲一個特別小的值,但是卻又請求一個特別大的資源,那麼服務器就會與這個連接進行長時間通信,如果建立的連接數足夠大就會塞滿server的連接池
3.當server端緩衝區未發送的資源堆積過多時還會導致緩衝區溢出,也無法響應其他請求
4.正如漏斗一樣,漏斗口很小,但是我們卻一個勁的往裏面裝沙子,這樣遲早把漏斗漲滿
Slow Read attack攻擊實戰
ulimit -n 8000 && slowhttptest -c 8000 -X -r 100 -g -o /Users/apple1/Desktop/my_header_stats -w 512 -y 1024 -n 5 -z 32 -k 3 -u https://host.example.com/resources/index.html -p 3
**參數解釋**
[ -X ] 指定使用Slow Read attack模式,緩慢讀取HTTP響應請求;

[ -w 512 -y 1024 ] 指定window size大小爲512~1024 byte;

[ -n 5 ] 指定讀取數據的間隔爲5S;

[ -z 32 ] 指定每次從接收數據的緩衝區中讀取數據的長度爲5 byte;

[ -k 3 ] 在同一連接中重複請求的次數爲3次

這次服務器不僅被DoS了,而且因爲緩衝區溢出導致CPU被大量佔用,導致無法執行其它系統命令

五、防禦策略

1.將標題和消息體限制在最小的合理長度上。針對接受數據的每個資源,設置更嚴格的特定於URL的限制。
2.設置合理的連接超時時間
3.定義最小傳入數據速率,並刪除比該速率慢的連接
4.如果Web服務器從相同的IP接收到數千個連接,同一個用戶代理在短時間內請求相同的資源,直接禁掉IP並且記錄日誌
具體的防禦策略大家可以參考這篇文章:
http://blog.shekyan.com/2011/11/how-to-protect-against-slow-http-attacks.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章