CC攻擊原理
CC主要是用來攻擊頁面的.大家都有這樣的經曆,就是在訪問論壇時,如果這個論壇比較大,訪問的人比較多,開啟頁面的速度會比較慢,對不?!一般來說,訪問的人越多,論壇的頁面越多,資料庫就越大,被訪問的頻率也越高,佔用的系統資源也就相當可觀,現在知道為什麼很多空間服務商都說大家不要上傳論壇,聊天室等東西了吧.
一個靜態頁面不需要伺服器多少資源,甚至可以說直接從記憶體中讀出來發給你就可以了,但是論壇就不一樣了,我看一個文章,系統需要到資料庫中判斷我是否有讀讀文章的許可權,如果有,就讀出文章裡面的內容,顯示出來——這裡至少訪問了2次資料庫,如果資料庫的體積有200MB大小,系統很可能就要在這200MB大小的資料空間搜尋一遍,這需要多少的CPU資源和時間?如果我是尋找一個關鍵字,那麼時間更加可觀,因為前面的搜尋可以限定在一個很小的範圍內,比如使用者權限只查使用者表,文章內容只查文章表,而且查到就可以馬上停止查詢,而搜尋肯定會對所有的資料進行一次判斷,消耗的時間是相當的大.
CC就是充分利用了這個特點,類比多個使用者(多少線程就是多少使用者)不停的進行訪問(訪問那些需要大量資料操作,就是需要大量CPU時間的頁面).
攻擊現象:
伺服器的流量瞬間可達到幾十M以上,網站打不開。重啟iis會發現流量馬上就降下來。查看IIS日誌會發現很多不同的IP都反覆訪問一個相同的檔案。查看C:WINDOWSsystem32LogFilesHTTPERR 會發現很多出錯的IIS日誌,如下:
2007-08-22 06:05:28 61.140.127.206 61905 61.139.129.56 80 HTTP/1.1 GET /list.asp?
ProdId=0961 503 30 ConnLimit pool21
2007-08-22 06:05:28 221.8.137.99 3916 61.139.129.56 80 HTTP/1.1 GET /list.asp?ProdId=0961
503 30 ConnLimit pool21
2007-08-22 06:05:28 220.187.143.183 4059 61.139.129.56 80 HTTP/1.1 GET /list.asp?
ProdId=0961 503 30 ConnLimit pool21
2007-08-22 06:05:28 218.18.42.231 1791 61.139.129.56 80 HTTP/1.1 GET /list.asp?
ProdId=0961 503 30 ConnLimit pool21
2007-08-22 06:05:28 125.109.129.32 3030 61.139.129.56 80 HTTP/1.1 GET /list.asp?
ProdId=0961 503 30 ConnLimit pool21
2007-08-22 06:05:28 58.216.2.232 1224 61.139.129.56 80 HTTP/1.1 GET /list.asp?ProdId=0961
503 30 ConnLimit pool21
...
可以看出很多不同的IP都在訪問list.asp這個檔案。以上現象就是CC攻擊的特徵。根據發動CC攻擊所使用的肉機數量,小的攻擊可以導致網站很慢或者不穩定,大的攻擊可以讓網站一直都無法開啟。
因這類攻擊,是類比正常使用者不斷請求一個網頁。所以一般的防火牆很難防禦。下面我們根據實際工作經驗,講一下如何不用防火牆來解決這個攻擊問題。
因為CC攻擊都是使用的肉機或代理來訪問我們的伺服器的,它跟synflood攻擊不一樣。synfoold一直是不斷變化的虛假IP,而CC攻擊的IP都是真實的IP而基本上不變化的,只要我們用安全性原則把這些IP全部封掉就可以了。
看過有網友介紹的方法,不過是手工一條一條地封,而攻擊IP一般都是數千個不同的IP。用手工封IP的辦法太麻煩。下面我們用程式來實現自動封這些IP!
程式主要是讀取這個網站的iis日誌,分析出其中的IP地址,用安全性原則自動封閉。VBS代碼如下:
複製代碼 代碼如下: '代碼開始
Set fileobj=CreateObject("Scripting.filesystemobject")
logfilepath="E:w3logW3SVC237ex070512old.log" '注意指定受攻擊網站的日誌路徑。
'如果是虛擬機器主機,要查是哪個網站受攻擊,可以查看:C:WINDOWSsystem32LogFilesHTTPERR ,
根據錯誤記錄檔很容易分析出來。
writelog "netsh ipsec static add policy name=XBLUE"
writelog "netsh ipsec static add filterlist name=denyip"
overip=""
f_name=logfilepath
'指定記錄檔
'程式功能:把logfiles中的IP提取成ipsec需要的過濾格式,匯入ipsec中過濾。適合某個網站受大量CC攻擊的情況。
set fileobj88=CreateObject("Scripting.FileSystemObject")
Set MYFILE=fileobj88.OpenTextFile(f_name,1,false)
contentover=MYFILE.ReadAll()
contentip=lcase(contentover)
MYFILE.close
set fileobj88=nothing
on error resume next
myline=split(contentip,chr(13))
for i=0 to ubound(myline)-1
myline2=split(myline(i)," ")
newip=myline2(6)
'指定分離的標識字串!
if instr(overip,newip)=0 then '去除重複的IP。
overip=overip&newip
dsafasf=split(newip,".")
if ubound(dsafasf)=3 then
writelog "netsh ipsec static add filter filterlist=denyip srcaddr="&newip&" dstaddr=Me
dstport=80 protocol=TCP"
end if
else
wscript.echo newip &" is exits!"
end if
next
writelog "netsh ipsec static add filteraction name=denyact action=block"
writelog "netsh ipsec static add rule name=kill3389 policy=XBLUE filterlist=denyip
filteraction=denyact"
writelog "netsh ipsec static set policy name=XBLUE assign=y"
Sub writelog(errmes) '匯出IPsec的策略檔案為一個bat檔案。
ipfilename="denyerrorip.bat"
Set logfile=fileobj.opentextfile(ipfilename,8,true)
logfile.writeline errmes
logfile.close
Set logfile=nothing
End Sub
'代碼結束
把上述代碼存為一個.vbs檔案,設定好其中日誌的路徑。雙擊運行即可,運行完畢後產生一個denyerrorip.bat檔案,這個是ipsec所需要的策略檔案,直接雙擊運行即可。
運行完畢即可解決CC攻擊問題。