伺服器處理
假設伺服器A對Search.asp的處理時間需要0.01S(多執行緒只是時間分割,對結論沒有影響),也就是說他一秒可以保證100個用戶的Search請求,伺服器允許的最大連線時間為60s,那么使用CC模擬120個用戶並發連線,那么經過 1分鐘,伺服器的被請求了7200次,處理了6000次,於是剩下了1200個並發連線沒有被處理.有的朋友會說:丟連線!丟連線!問題是伺服器是按先來後到的順序丟的,這1200個是在最後10秒的時候發起的,想丟?!還早,經過計算,伺服器滿負開始丟連線的時候,應該是有7200個並發連線存在佇列, 然後伺服器開始120個/秒的丟連線,發動的連線也是120個/秒,伺服器永遠有處理不完的連線,伺服器的CPU 100%並長時間保持,然後丟連線的60秒伺服器也判斷處理不過來了,新的連線也處理不了,這樣伺服器達到了超級繁忙狀態.
假設伺服器處理Search只用了0.01S,也就是10毫秒(這個速度你可以去各個有開放時間顯示的論壇看看),使用的執行緒也只有120,很多伺服器的丟連線時間遠比60S長,使用執行緒遠比120多,可以想像可怕了吧,而且客戶機只要傳送了斷開,連線的保持是代理做的,而且當伺服器收到SQL請求,肯定會進入佇列,不論連線是否已經斷開,而且伺服器是並發的,不是順序執行,這樣使得更多的請求進入記憶體請求,對伺服器負擔更大.
名稱起源
CC = Challenge Collapsar,意為“挑戰黑洞”,其前身名為Fatboy攻擊,是利用不斷對網站傳送連線請求致使形成拒絕服務的目的。業界賦予這種攻擊名稱為CC(Challenge Collapsar,挑戰黑洞),是由於在DDOS攻擊發展前期,絕大部分都能被業界知名的“黑洞”(Collapsar)抗拒絕服務攻擊系統所防護,於是在黑客們研究出一種新型的針對http的DDOS攻擊後,即命名Challenge Collapsar,聲稱黑洞設備無法防禦,後來大家就延用CC這個名稱至今。有趣的是,黑洞(現改名為ADS)後來也能全面防禦CC攻擊,但這個段子中的攻防較量仍然被傳為一段佳話。
CC攻擊是DDOS(分散式拒絕服務)的一種,相比其它的DDOS攻擊CC似乎更有技術含量一些。這種攻擊你見不到真實源IP,見不到特別大的異常流量,但造成伺服器無法進行正常連線。最讓站長們憂慮的是這種攻擊技術含量低,利用更換IP代理工具和一些IP代理一個初、中級的電腦水平的用戶就能夠實施攻擊。因此,大家有必要了解CC攻擊的原理及如果發現CC攻擊和對其的防範措施。
CC攻擊的原理
CC攻擊的原理就是攻擊者控制某些主機不停地發大量數據包給對方伺服器造成伺服器資源耗盡,一直到宕機崩潰。CC主要是用來攻擊頁面的,每個人都有這樣的體驗:當一個網頁訪問的人數特別多的時候,打開網頁就慢了,CC就是模擬多個用戶(多少執行緒就是多少用戶)不停地進行訪問那些需要大量數據操作(就是需要大量CPU時間)的頁面,造成伺服器資源的浪費,CPU長時間處於100%,永遠都有處理不完的連線直至就網路擁塞,正常的訪問被中止。
防CC攻擊
CC攻擊可以歸為DDoS攻擊的一種。他們之間的原理都是一樣的,即傳送大量的請求數據來導致伺服器拒絕服務,是一種連線攻擊。CC攻擊又可分為代理CC攻擊,和肉雞CC攻擊。代理CC攻擊是黑客藉助代理伺服器生成指向受害主機的合法網頁請求,實現DDoS,和偽裝就叫:cc(Challenge Collapsar)。而肉雞CC攻擊是黑客使用CC攻擊軟體,控制大量肉雞,發動攻擊,相比來後者比前者更難防禦。因為肉雞可以模擬正常用戶訪問網站的請求。偽造成合法數據包。
一個靜態頁面不需要伺服器多少資源,甚至可以說直接從記憶體中讀出來發給你就可以了,但是論壇之類的動態網站就不一樣了,我看一個帖子,系統需要到資料庫中判斷我是否有讀帖子的許可權,如果有,就讀出帖子裡面的內容,顯示出來——這裡至少訪問了2次資料庫,如果資料庫的體積有200MB大小,系統很可能就要在這200MB大小的數據空間搜尋一遍,這需要多少的CPU資源和時間?如果我是查找一個關鍵字,那么時間更加可觀,因為前面的搜尋可以限定在一個很小的範圍內,比如用戶許可權只查用戶表,帖子內容只查帖子表,而且查到就可以馬上停止查詢,而搜尋肯定會對所有的數據進行一次判斷,消耗的時間是相當的大。
CC攻擊就是充分利用了這個特點,模擬多個用戶(多少執行緒就是多少用戶)不停的進行訪問(訪問那些需要大量數據操作,就是需要大量CPU時間的頁面,比如asp/php/jsp/cgi)。很多朋友問到,為什麼要使用代理呢?因為代理可以有效地隱藏自己的身份,也可以繞開所有的防火牆,因為基本上所有的防火牆都會檢測並發的TCP/IP連線數目,超過一定數目一定頻率就會被認為是Connection-Flood。當然也可以使用肉雞發動CC攻擊。肉雞的CC攻擊效果更可觀。致使伺服器CPU%100,甚至當機的現象。
使用代理攻擊還能很好的保持連線,這裡傳送了數據,代理轉發給對方伺服器,就可以馬上斷開,代理還會繼續保持著和對方連線(我知道的記錄是有人利用2000個代理產生了35萬並發連線)。
當然,CC也可以利用這裡方法對FTP、遊戲連線埠、聊天房間等進行攻擊,也可以實現TCP-FLOOD,這些都是經過測試有效的。
防禦CC攻擊可以通過多種方法,禁止網站代理訪問,儘量將網站做成 靜態頁面 ,限制連線數量,修改最大逾時時間等。
攻擊症狀
CC攻擊有一定的隱蔽性,那如何確定伺服器正在遭受或者曾經遭受CC攻擊呢?可以通過以下三個方法來確定。
命令行法
一般遭受CC攻擊時,Web伺服器會出現80連線埠對外關閉的現象, 因為這個連線埠已經被大量的垃圾數據堵塞了正常的連線被中止了。可以通過在命令行下輸入命令netstat -an來查看, “SYN_RECEIVED”是TCP連線狀態標誌,意思是“正在處於連線的初始同步狀態 ”,表明無法建立握手應答處於等待狀態。這就是攻擊的特徵,一般情況下這樣的記錄一般都會有很多條,表示來自不同的代理IP的攻擊。
批處理法
上述方法需要手工輸入命令且如果Web伺服器IP連線太多看起來比較費勁,可以建立一個批處理檔案,通過該腳本代碼確定是否存在CC攻擊。打開記事本鍵入如下代碼保存為CC.bat:
@echo off
time /t >>log.log
netstat -n -p tcp |find ":80">>Log.log
notepad log.log
exit
上面的腳本的含義是篩選出當前所有的到80連線埠的連線。當感覺伺服器異常時就可以雙擊運行該批處理檔案,然後在打開的log.log檔案中查看所有的連線。如果同一個IP有比較多的到伺服器的連線,那就基本可以確定該IP正在對伺服器進行CC攻擊。
查看系統日誌
Web日誌一般在C:\WINDOWS\system32\LogFiles\HTTPERR目錄下,該目錄下用類似httperr1.log的日誌檔案,這個檔案就是記錄Web訪問錯誤的記錄。管理員可以依據日誌時間屬性選擇相應的日誌打開進行分析是否Web被CC攻擊了。
默認情況下,Web日誌記錄的項並不是很多,可以通過ⅡS進行設定,讓Web日誌記錄更多的項以便進行安全分析。其操作步驟是:“開始→管理工具”打開“Internet信息伺服器”,展開左側的項定位到到相應的Web站點,然後右鍵點擊選擇“屬性”打開站點屬性視窗,在“網站”選項卡下點擊“屬性”按鈕,在“日誌記錄屬性”視窗的“高級”選項卡下可以勾選相應的“擴展屬性”,以便讓Web日誌進行記錄。比如其中的“傳送的位元組數”、“接收的位元組數”、“所用時間”這三項默認是沒有選中的,但在記錄判斷CC攻擊中是非常有用的,可以勾選。另外,如果你對安全的要求比較高,可以在“常規”選項卡下對“新日誌計畫”進行設定,讓其“每小時”或者“每一天”進行記錄。為了便於日後進行分析時好確定時間可以勾選“檔案命名和創建使用當地時間”。
解決方式
取消域名綁定
一般CC攻擊都是針對網站的域名進行攻擊,比如網站域名是“xxx”,那么攻擊者就在攻擊工具中設定攻擊對象為該域名然後實施攻擊。
對於這樣的攻擊措施是在ⅡS上取消這個域名的綁定,讓CC攻擊失去目標。具體操作步驟是:打開“ⅡS管理器”定位到具體站點右鍵“屬性”打開該站點的屬性面板,點擊IP位址右側的“高級”按鈕,選擇該域名項進行編輯,將“主機頭值”刪除或者改為其它的值(域名)。
實例模擬測試,取消域名綁定後Web伺服器的CPU馬上恢復正常狀態,通過IP進行訪問連線一切正常。但是不足之處也很明顯,取消或者更改域名對於別人的訪問帶來了不便,另外,對於針對IP的CC攻擊它是無效的,就算更換域名攻擊者發現之後,他也會對新域名實施攻擊。
更改Web連線埠
一般情況下Web伺服器通過80連線埠對外提供服務,因此攻擊者實施攻擊就以默認的80連線埠進行攻擊,所以,我們可以修改Web連線埠達到防CC攻擊的目的。運行ⅡS管理器,定位到相應站點,打開站點“屬性”面板,在“網站標識”下有個TCP連線埠默認為80,我們修改為其他的連線埠就可以了。
ⅡS禁止IP
我們通過命令或在查看日誌發現了CC攻擊的源IP,就可以在ⅡS中設定禁止該IP對Web站點的訪問,從而達到防範ⅡS攻擊的目的。在相應站點的“屬性”面板中,點擊“目錄安全性”選項卡,點擊“IP位址和域名現在”下的“編輯”按鈕打開設定對話框。在此視窗中我們可以設定“授權訪問”也就是“白名單”,也可以設定“拒絕訪問”即“黑名單”。比如我們可以將攻擊者的IP添加到“拒絕訪問”列表中,就禁止了該IP對於Web的訪問。
IPSec封鎖
IPSec是優秀的系統防火牆,在排除其他還有別的類型的DDOS攻擊時,針對CC攻擊可以用設定IP策略來對付攻擊。以219.128.*.43這個IP為例子,筆者實際操作對該IP的訪問封鎖。
第一步:“開始→管理工具”,打開“本地安全設定”,右鍵點擊“IP安全策略,在本地機器”選擇“創建IP安全策略”,然後點擊“下一步”,輸入策略“名稱”和“描述”。然後默認一路“下一步”創建了一個名為“封CC攻擊”的IPSec策略。
第二步:右鍵點擊“IP安全策略,在本地機器”選擇“管理IP篩選器表和篩選器操作”,在打開的視窗中點“添加”,在“IP 篩選器列表”視窗添入同第一步的名稱和描述信息。取消“使用添加嚮導”的勾選,然後點擊“添加”。在“IP 篩選器 屬性”視窗的“地址”選項下設定“源地址”為“192.168.1.6”,目標地址為“我的IP位址”,取消對“鏡像”的勾選;點擊“協定”選項卡,設定“協定類型”為“TCP”,設定“協定連線埠”為“從任意連線埠”到“此連線埠80”最後確定退出。
第三步:在“新規則 屬性”視窗中點選剛才創建的“封CC攻擊”規則,點擊“篩選器操作”選項卡下的“添加”,點選“安全措施”下的“阻止”,在“常規”選項卡下為該篩選器命名為“阻止CC攻擊”然後確定退出。
第四步:點選剛才創建的“阻止CC攻擊”篩選器,一路“確定”退出IP策略編輯器,可以看到在組策略視窗的中創建成功一個名為“封CC攻擊”的策略,然後右鍵點擊該策略選擇“指派”。這樣就實現了對該IP的封鎖。
防火牆
除了利用上述方法外,還可以通過第三方的防火牆進行防範,打開防護牆防火牆可以了,筆者以天鷹ddos防火牆為例進行演示。安裝好天鷹ddos防火牆即可開啟防護,傻瓜式配置界面,默認參數即可防護網站,誤封較少,智慧型識別蜘蛛。
流傳誤區
網路流傳一種說法,就是把被攻擊的域名解析到127.0.0.1這個地址上,造成攻擊者本地迴環IP,從而實現攻擊者攻擊自己的目的,其實這是不正確的說法,說起CC攻擊,其實更確切的說是對資料庫的攻擊,排除對IIS連線數、頻寬的限制,危害最大的就是不斷通過頁面造成對資料庫堵塞,從而導致伺服器假死,而這一系列都是建立在服務之上,作為攻擊者的PC,本身沒有開啟IIS服務,所以即使將域名解析到127.0.0.1也不能對攻擊者造成影響,更何況沒有SQL server的影響,而上述解決方法是早期一些WEB程式設計師單層次的想法,並非權威的實際考證;另外將域名解析到政府或網警網站也是不可行,因為憑藉權威部門的技術分析,不難判斷攻擊源所針對的網站。
總結
總體說來CC攻擊屬於技術技巧強的攻擊,防護手段足以解決諸如此類的攻擊,然而帶給我們巨大的挑戰的是巨型流量的攻擊,在頻寬資源緊缺的情況下任何的防護措施都會消耗很大的成本,我們期待不久的雲概念被炒作的沸沸揚揚,至於能否起到實實在在的作用就不可而知了。希望上述資料能給您幫助。