攻擊者借助代理伺服器生成指向受害主機的合法請求,實作DOS,和僞裝就叫:cc(ChallengeCollapsar)。
CC主要是用來攻擊頁面的。大家都有這樣的經曆,就是在通路論壇時,如果這個論壇比較大,通路的人比較多,打開頁面的速度會比較慢,通路的人越多,論壇的頁面越多,資料庫就越大,被通路的頻率也越高,占用的系統資源也就相當可觀。
一個靜态頁面不需要伺服器多少資源,甚至可以說直接從記憶體中讀出來發給你就可以了,但是論壇就不一樣了,我看一個文章,系統需要到資料庫中判斷我是否有讀讀文章的權限,如果有,就讀出文章裡面的内容,顯示出來——這裡至少通路了2次資料庫,如果資料庫的體積有200MB大小,系統很可能就要在這200MB大小的資料空間搜尋一遍,這需要多少的CPU資源和時間?如果我是查找一個關鍵字,那麼時間更加可觀,因為前面的搜尋可以限定在一個很小的範圍内,比如使用者權限隻查使用者表,文章内容隻查文章表,而且查到就可以馬上停止查詢,而搜尋肯定會對所有的資料進行一次判斷,消耗的時間是相當的大。
CC就是充分利用了這個特點,模拟多個使用者(多少線程就是多少使用者)不停的進行通路(通路那些需要大量資料操作,就是需要大量CPU時間的頁面).這一點用一個一般的性能測試軟體就可以做到大量模拟使用者并發。
簡介
假設伺服器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請求,肯定會進入隊列,不論連接配接是否已經斷開,而且伺服器是并發的,不是順序執行,這樣使得更多的請求進入記憶體請求,對伺服器負擔更大.[1]
2名稱起源
CC = Challenge Collapsar,其前身名為Fatboy攻擊,是利用不斷對網站發送連接配接請求緻使形成拒絕服務的目的,
CC攻擊是DDOS(分布式拒絕服務)的一種,相比其它的DDOS攻擊CC似乎更有技術含量一些。這種攻擊你見不到真實源IP,見不到特别大的異常流量,但造成伺服器無法進行正常連接配接。最讓站長們憂慮的是這種攻擊技術含量低,利用更換IP代理工具和一些IP代理一個初、中級的電腦水準的使用者就能夠實施攻擊。是以,大家有必要了解CC攻擊的原理及如果發現CC攻擊和對其的防範措施。
3CC攻擊的原理
CC攻擊的原理就是攻擊者控制某些主機不停地發大量資料包給對方伺服器造成伺服器資源耗盡,一直到當機崩潰。CC主要是用來攻擊頁面的,每個人都有這樣的體驗:當一個網頁通路的人數特别多的時候,打開網頁就慢了,CC就是模拟多個使用者(多少線程就是多少使用者)不停地進行通路那些需要大量資料操作(就是需要大量CPU時間)的頁面,造成伺服器資源的浪費,CPU長時間處于100%,永遠都有處理不完的連接配接直至就網絡擁塞,正常的通路被中止。
4防CC攻擊
CC攻擊可以歸為DDoS攻擊的一種。他們之間的原理都是一樣的,即發送大量的請求資料來導緻伺服器拒絕服務,是一種連接配接攻擊。CC攻擊又可分為代理CC攻擊,和殭屍電腦CC攻擊。代理CC攻擊是黑客借助代理伺服器生成指向受害主機的合法網頁請求,實作DOS,和僞裝就叫: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攻擊可以通過多種方法,禁止網站代理通路,盡量将網站做成靜态頁面,限制連接配接數量,修改最大逾時時間等。
5攻擊症狀
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攻擊中是非常有用的,可以勾選。另外,如果你對安全的要求比較高,可以在“正常”頁籤下對“新日志計劃”進行設定,讓其“每小時”或者“每一天”進行記錄。為了便于日後進行分析時好确定時間可以勾選“檔案命名和建立使用當地時間”。
6解決方式
取消域名綁定
一般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防火牆即可開啟防護,傻瓜式配置界面,預設參數即可防護網站,誤封較少,智能識别蜘蛛。
7流傳誤區
網絡流傳一種說法,就是把被攻擊的域名解析到127.0.0.1這個位址上,造成攻擊者本地回環IP,進而實作攻擊者攻擊自己的目的,其實這是不正确的說法,說起CC攻擊,其實更确切的說是對資料庫的攻擊,排除對IIS連接配接數、帶寬的限制,危害最大的就是不斷通過頁面造成對資料庫堵塞,進而導緻伺服器假死,而這一系列都是建立在服務之上,作為攻擊者的PC,本身沒有開啟IIS服務,是以即使将域名解析到127.0.0.1也不能對攻擊者造成影響,更何況沒有SQL server的影響,而上述解決方法是早期一些WEB程式員單層次的想法,并非權威的實際考證;另外将域名解析到政府或網警網站也是不可行,因為憑借權威部門的技術分析,不難判斷攻擊源所針對的網站。