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 pool
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 /list.asp
? ProdId=0961 503 30 ConnLimit
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攻擊的情況。
' by 中國站長資料中心http://www.ixzz.com中國最大的虛擬主機服務商,12G全能空間350元!
' 2007-5-12
'此程式為本站原創,若要引用,請保留我們的網址。
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 &" 是 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攻擊問題。