萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> 洪流來襲 - 剖析拒絕服務攻擊

洪流來襲 - 剖析拒絕服務攻擊

一、洪水—大自然對人類的報復

  每一年,自然界都要用各種方式去報復人們對它做的一切,例如洪水。
  每一年,人們都要為洪水後滿地的狼籍和可能造成的人員傷亡和財產損失而發愁。
  為了抵抗洪水,人們砍伐樹木挖采巖石建造更高的堤壩;為了破壞這些堤壩,大自然發起更猛烈的洪水沖垮這些防護措施。
  在大自然與人類抗衡的同時,網絡上也有人與人之間的抗衡。
  每一年,有些人總要不斷試驗各種令某些網站長時間無法訪問的攻擊方法。
  每一年,投資者都要因為這些網站被惡意停止所造成的經濟損失頭痛。
  為了抵抗這些人的攻擊,技術人員研究各種方法讓這些攻擊造成的損失降低;為了各種目的,攻擊者們研究更多的攻擊方法讓網站再次癱瘓。
  這種攻擊被稱為“Denial of Service(DoS)”,臭名昭著的“拒絕服務”攻擊。
  它通常使用不只一台機器進行攻擊,攻擊者能同時控制這些機器,這種結構就是“Distributed”,分布式。所以,我們要討論的拒絕服務,默認都是指“Distributed Denial of Service(DDoS)”,分布式拒絕服務。

  二、面對洪水……

  1.洪水以外的東西——被濫用的SYN拒絕服務(Synchronize Denial of Service)

  當一個地區即將發生洪水(或者已經發生)的時候,當地居民的表現很少有鎮定的:東奔西跑的、收拾財物的、不知所措的……整個城鎮亂成一鍋粥,造成的後果就是街道交通混亂,誰也跑不了。

  這個問題到了網絡上,就變成了一堆數據包只能在服務器外面亂撞而不入。

  為什麼會這樣?因為攻擊者使用了SYN攻擊。

  要明白SYN攻擊的原理,要從連接建立的過程開始說起。從我們輸入一個網址到我們能看到這個網頁,機器在非常短的時間內為我們做了三件重要的事情:

  1.機器發送一個帶有“ SYN”(同步)標志的數據包給服務器,請求連接;

  2.服務器返回一個帶有SYN標志和ACK(確認)標志數據包給機器;

  3.機器也返回一個ACK確認標志數據包給服務器,數據傳輸建立。

  這三步就叫做“三次握手”。

  那麼所謂的SYN攻擊是什麼呢?讓我們再看第二步,服務器返回數據後,並不會跑開,而是等待對方再次返回確認,問題就出在這裡。如果一台計算機發送SYN數據包後由於意外斷開了網絡,服務器返回的ACK就得不到回應,而規范標准規定它必須“不見不散”,所以服務器就癡癡的等到夕陽下山,這期間內它拒絕其他機器的連接請求。於是在其它機器看來,它們開不了某個服務器的頁面了。幸好在服務器的時間裡,“夕陽下山”不過一瞬間,所以偶爾意外的一兩台機器不回答它也很少影響大局。可是對於惡意攻擊者來說,這不是問題——他們使用一些特殊工具大量產生這種導致服務器等待的虛假IP地址的SYN數據包,由於這個IP地址根本沒有機器存在,自然不會有任何回應,所以服務器只有傻乎乎的為這些數據包做了個列表,然後一個一個等下去!這些等待花去的時間累加起來就變成了影響正常數據傳輸的原因,因為攻擊者不停發送SYN數據包,服務器就無限的等下去,其他數據包就進不去服務器了,於是,一切都完了。這是最常見最濫用的拒絕服務模式,現成的攻擊工具也很多,例如流行的Lion SYN Flood、xdos、獨裁者等,這些工具幾乎不需要什麼高深知識就能用,因此SYN成為服務器和網絡管理員最恨最怕的攻擊。

  其實SYN攻擊的出現與系統自身設計的疏忽有關,首先,SYN是利用了TCP協議規范的疏忽;其次,是系統做的後台!*nix和Win2000/XP的網絡架構允許用戶通過編程手動設置IP頭部,包括源IP、目標IP等,這是產生虛假SYN包的關鍵。Win9x/Me的網絡架構不允許用戶這樣做,因此別指望Win9x/Me下使用這些工具能對服務器構成威脅了。

  目前依然沒有任何有效的軟措施能抵擋SYN攻擊,唯一的辦法只有使用硬件防火牆,它從物理線路上直接過濾掉虛假的SYN數據包,但是價格昂貴,很多人只能痛心的看著他們的服務器被SYN數據包折磨得CPU持久不下100%……

  有人說了,“難怪我的機器經常慢,原來有人SYN我!”等等等等,先聽我說完。SYN攻擊因為數據包很小,不能造成阻塞網絡的危害,對沒有開任何TCP服務的用戶是不起作用的,即使有人正在SYN攻擊你,你也察覺不到異常情況,除非你開了WEB服務之類。

  記得有句話怎麼說來著?慌亂的人群比災難本身更可怕。

  2.洪水來了——常見的各種報文洪水攻擊(Flood DoS)

  任何東西都會有個極限,人類做的防御工事也一樣。再堅固的石頭在流水猛烈的撞擊下也會破裂,洪水瞬間溢了出來,淹沒了所有東西。

  嗜好拒絕服務攻擊的集體們當然沒理由不用洪水攻擊,SYN不是萬能藥。某些時候阻止對方正常通訊要比SYN有用些,於是一種攻擊方式又誕生了,這就是報文洪水。

  網絡中傳輸的數據都以一定的速度和大小傳輸著,用過撥號的朋友都知道,當你下載幾個文件的時候,網頁打開的速度會變得很慢,這是因為下載文件數據已經占滿了你得到的網絡帶寬,就和公路塞車一樣,所以其他數據只能擠進來。“報文洪水”因此產生,攻擊者用工具不停向受害者發送一堆數據包,它們通常體積很小,所以速度很快,這些無用數據包迅速塞滿了你的網絡帶寬,於是網絡就慢下來了,如果數據包很多很快或者你的網絡速度比較慢,這時候對你而言就是你已經和網絡斷開了。在這種攻擊模式裡,ICMP報文是最佳首選,因為它沒有流量控制,幾乎是橫沖直撞!防火牆無法防止這種攻擊,因為它阻塞的是防火牆前面那條信息公路,而不是要進入機器。制造洪水的工具也多,,如蝸牛炸彈、AnGryPing等。早期的洪水只是單純的塞路而已,現在某些特殊報文已經能達到讓CPU滿負荷的效果,例如ICMP的時間戳洪水。報文洪水不僅危害到服務器,個人用戶更受其害——帶寬更小。

  通常,報文洪水的內容並沒有什麼實際意義,它們只是為了每一個數據包的大小而已,十六個A和十六個順序字母的作用是一樣的。。

  阻止報文洪水的方法只有兩個:增大自己的網絡帶寬或者在數據傳輸的路上截斷它(在路由器上禁止符合某些條件的數據包通過)。

  3.泥石流——反射式拒絕服務(Reflection Denial of Service)

  你見過泥石流嗎?這是大自然最可怕的報復之一。以噸計算的泥在水的幫助下向前卷動著,勢力非常大,輕易能卷斷一棵樹苗和地上的一切不牢固的東西。這些被卷入的物品又成了泥石流加大攻擊力的武器。面對泥石流中的動物屍體,我們很難說清楚它是被水窒息死的,還是被泥漿包裹是的,甚至是被裡面的雜物撞死的——泥土和雜物應該都是無辜的,可是洪水卻讓它們變成了凶器。

  當SYN和一般的報文洪水都不好用後,研究者們把眼光放在了協議規范和正常工作的服務器上……

  反射式拒絕服務(RDoS),其實它也是洪水方式的拒絕服務,同樣以阻塞帶寬為目的,但是它用了借刀殺人的方法,就如水混合了泥沙而變得更可怕一樣,RDoS攻擊借用了正常的服務器來做武器。我們都知道,網絡最重要是交互,就是“你問我答”,如果有人不遵守規則,變成“我冒充他問你”,你當然會要求被冒充的人回答,那個被冒充的就麻煩了。RDoS就是這樣不守規矩的典型之一:它冒充受害者給各大服務器發送一個請求回復的數據包,那些服務器可不知道這些是騙局,就老實回復數據包到受害者那裡,終於,這條路又塞車了。在受害者那裡開嗅探抓到的是從正常服務器發過來的洪水,不能找到真正的攻擊者。反射式拒絕服務在國內的應用還比較少,但也不是沒有,一些工具如R-Series、DRDOS就能做到。

  當然,反射拒絕服務應用比較少的最大原因就在於它的特殊性:它的攻擊數據是進入正常服務器,再由正常服務器出來,首先速度就慢了一點;然後被利用的服務器(反射源)有可能無法那麼快做出回應,那麼攻擊者的願望實現反而更遠;最後,它把SYN報文改成了反射源回復的ACK報文,性質馬上相差十萬八千裡,相對可怕的SYN變成了報文洪水性質的ACK詢問……

  不過,反射式拒絕服務攻擊的優點也不得不提,它使攻擊者的隱蔽性更上一層樓,在這個貓抓老鼠的世界裡還是好用的。

  三、與洪水抗爭

  人類不會屈服於洪水,無論大自然發起多大的攻擊,人類都會用各種手段去對抗;網絡管理員也不會屈服於拒絕服務攻擊,於是各個廠商和技術人員一起致力研究抵抗DoS的方法。如同抵抗洪水一樣,對DoS也只能抵抗,因為DoS往往都是用虛假的IP地址在被入侵的機器上發起的,所以很難找得到源頭。就和洪水一樣,人們總不可能在它沒發生之前就知道哪個地方會決堤吧。

  2003年初發生的SQL蠕蟲充分說明了這一點。全球13台根域名服務器一天內被超過幾萬台電腦發出的洪水淹沒,整個世界網絡癱瘓。沒有人能預測到這事件,雖然它僅僅是一次單純的UDP報文洪水。

  SYN攻擊最可怕的一點是它無法用軟件手段阻擋,只能靠硬件防火牆,可是硬件防火牆實在太昂貴;報文洪水雖然不能達到降低機器性能的程度,可是它把通訊的道路阻塞了;反射式服務攻擊力相對比較弱,尤其是反射ACK,它要求反射源的物理位置和受害者很近,否則攻擊效率會大大降低。不要試圖在受害機器上嗅探IP,沒用的,幾乎都是假的,只有原始數據通過的節點能暴露,可是不是任何人都有權力去查看這些設備裡的記錄的。所以,要找到發起拒絕服務的人很困難。

  抵抗洪水方式的拒絕服務只有增大自己的帶寬,讓洪水不能阻塞完整個通道。或者在它到達之前“引流”——讓它打空。

  對付SYN只能用硬件防火牆從線路上直接消去SYN數據包。但是,最重要的是價格問題。修改協議規范是最好的方法,可是我們的專家不得不面對整個世界的網絡結構都要改動所帶來的麻煩。
copyright © 萬盛學電腦網 all rights reserved