CC攻擊原理
CC主要是用來攻擊頁面的.大家都有這樣的經(jīng)歷,就是在訪問論壇時,如果這個論壇比較大,訪問的人比較多,打開頁面的速度會比較慢,對不?!一般來說,訪問的人越多,論壇的頁面越多,數(shù)據(jù)庫就越大,被訪問的頻率也越高,占用的系統(tǒng)資源也就相當可觀,現(xiàn)在知道為什么很多空間服務(wù)商都說大家不要上傳論壇,聊天室等東西了吧.
一個靜態(tài)頁面不需要服務(wù)器多少資源,甚至可以說直接從內(nèi)存中讀出來發(fā)給你就可以了,但是論壇就不一樣了,我看一個帖子,系統(tǒng)需要到數(shù)據(jù)庫中判斷我是否有讀讀帖子的權(quán)限,如果有,就讀出帖子里面的內(nèi)容,顯示出來——這里至少訪問了2次數(shù)據(jù)庫,如果數(shù)據(jù)庫的體積有200MB大小,系統(tǒng)很可能就要在這200MB大小的數(shù)據(jù)空間搜索一遍,這需要多少的CPU資源和時間?如果我是查找一個關(guān)鍵字,那么時間更加可觀,因為前面的搜索可以限定在一個很小的范圍內(nèi),比如用戶權(quán)限只查用戶表,帖子內(nèi)容只查帖子表,而且查到就可以馬上停止查詢,而搜索肯定會對所有的數(shù)據(jù)進行一次判斷,消耗的時間是相當?shù)拇?
CC就是充分利用了這個特點,模擬多個用戶(多少線程就是多少用戶)不停的進行訪問(訪問那些需要大量數(shù)據(jù)操作,就是需要大量CPU時間的頁面).
攻擊現(xiàn)象:
服務(wù)器的流量瞬間可達到幾十M以上,網(wǎng)站打不開。重啟iis會發(fā)現(xiàn)流量馬上就降下來。查看IIS日志會發(fā)現(xiàn)很多不同的IP都反復(fù)訪問一個相同的文件。查看C:WINDOWSsystem32LogFilesHTTPERR 會發(fā)現(xiàn)很多出錯的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這個文件。以上現(xiàn)象就是CC攻擊的特征。根據(jù)發(fā)動CC攻擊所使用的肉機數(shù)量,小的攻擊可以導(dǎo)致網(wǎng)站很慢或者不穩(wěn)定,大的攻擊可以讓網(wǎng)站一直都無法打開。
因這類攻擊,是模擬正常用戶不斷請求一個網(wǎng)頁。所以一般的防火墻很難防御。下面我們根據(jù)實際工作經(jīng)驗,講一下如何不用防火墻來解決這個攻擊問題。
因為CC攻擊都是使用的肉機或代理來訪問我們的服務(wù)器的,它跟synflood攻擊不一樣。synfoold一直是不斷變化的虛假IP,而CC攻擊的IP都是真實的IP而基本上不變化的,只要我們用安全策略把這些IP全部封掉就可以了。
看過有網(wǎng)友介紹的方法,不過是手工一條一條地封,而攻擊IP一般都是數(shù)千個不同的IP。用手工封IP的辦法太麻煩。下面我們用程序來實現(xiàn)自動封這些IP!
程序主要是讀取這個網(wǎng)站的iis日志,分析出其中的IP地址,用安全策略自動封閉。VBS代碼如下:
'代碼開始
Set fileobj=CreateObject("Scripting.filesystemobject")
logfilepath="E:w3logW3SVC237ex070512old.log" '注意指定受攻擊網(wǎng)站的日志路徑。
'如果是虛擬主機,要查是哪個網(wǎng)站受攻擊,可以查看:C:WINDOWSsystem32LogFilesHTTPERR ,
根據(jù)錯誤日志很容易分析出來。
writelog "netsh ipsec static add policy name=XBLUE"
writelog "netsh ipsec static add filterlist name=denyip"
overip=""
f_name=logfilepath
'指定日志文件
'程序功能:把logfiles中的IP提取成ipsec需要的過濾格式,導(dǎo)入ipsec中過濾。適合某個網(wǎng)站受大量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 '去除重復(fù)的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) '導(dǎo)出IPsec的策略文件為一個bat文件。
ipfilename="denyerrorip.bat"
Set logfile=fileobj.opentextfile(ipfilename,8,true)
logfile.writeline errmes
logfile.close
Set logfile=nothing
End Sub
'代碼結(jié)束
把上述代碼存為一個.vbs文件,設(shè)置好其中日志的路徑。雙擊運行即可,運行完畢后生成一個denyerrorip.bat文件,這個是ipsec所需要的策略文件,直接雙擊運行即可。
運行完畢即可解決CC攻擊問題。