大家別誤會了,這邊說的DoS不是DOS系統那個DOS,
而是Denial of Services的縮寫:DoS。
說簡單一點,DoS就是讓系統無法使用,或是資源過載
(白話文:讓對方主機掛掉...(  ̄ c ̄)y▂ξ )
以致於合法的使用者無法來連結或使用系統。
套句新聞常看到的字眼:得不到就毀了你!
如果攻擊方試盡各種方法都無法獲得機器的連線權力,
則最後一步可能就是利用DoS來摧毀或者干擾該台機器...﹨(╯▽╰)∕
和其他攻擊手法不一樣的是,DoS較容易發動的原因在於它並非取得連線,
而是去阻止合法的使用者來連線,想想看...
是費盡心思追一個正妹比較容易,還是讓她討厭比較容易....= =
其要做的事情最簡單的不過就是一直發送大量(假的、垃圾)封包就好了...
以下舉出一些DoS的攻擊型態分類,供大家參考一下...^^
1. Smurf:
簡單一個字,就是「ping」!藉由發送ICMP echo到一個網路的廣播位址,
只是正常的ping來源是自己,而Smurf的來源卻是...無辜的第三者啊!
如上圖所示,攻擊方發送大量的ICMP echo到區域內的主機,
但區域內的電腦所做的回應卻是回應到另一台主機,別小看這小小的流量...
一旦多起來,這些流量就足夠以淹沒整個網路連線,讓網路(主機)掛掉...
【註:另一個類似的手法稱為fraggle,不同的地方在於是使用UDP echo】
2.Buffer Overflow-緩衝區溢出:
其實這問題有在寫程式的人多少都會遇到,用比較白話的方式來說明,
假設現在有一打蘋果都要放進一個盒子裡,正常來說都是一個蘋果一個「洞」,
或至少你可以放的「洞」一定要多於蘋果數量,這樣才放的下;
但如果今天有二打蘋果,卻只有一個盒子,那硬要放進去的結果-塞爆!
現實生活如此,電腦內也是如此!
當程式要將資料寫入緩衝區時,而這個緩衝區比被分到的空間還要大,
會發生蝦咪情況呢?蹦~~~當然不是電腦炸掉,而是資料放不下,
如上圖所示,如果攻擊方可以劫持程式的控制,
進而執行攻擊者代碼(Attacker's Code)而非原本的程序碼(Process Code)時,
便可以發動Buffer Overflow,在最大流量限制200的網路中傳送256的流量,
接著電腦就會「秀逗」...因為已經沒有空間可以塞蘋果了!
3.Ping of Death:
俗稱「死亡之ping」!ping的數量不在多,而是多在裡頭包含的東西...
一般正常的ping頂多就是幾十byte,不信?ping自己看看~
那如果今天送出的ping是很大很大的呢?掛!
也不用太多...基本上大於65536位元就可以了...(65535位元多大?自己算一下吧!)
有種東西叫做區塊分割(Fragmentation)的玩意,它允許一個單一的封包被分割,
來變成更小的數據區段(Segments),類似某個廣告...切切切切切!
問題來了,Fragmentation能允許大於65535位元,但我們的系統可受不了啊!
如同一台戰鬥機就算可以設定做出承受好幾十G動作,但人可不行...
假設主機接受了這樣的「死亡之ping」,下場顯而易見的...
系統可能被凍結掉(進而重新啟動),或只是一個「小小的」當機...( ︶︿︶)_╭∩╮
也別太擔心,這東西在區網內比較容易發生,
但話說回來...在區網內...那是不是要更小心這類的攻擊呢?
(相信有不少人電腦打開就是連到區網吧?)
4.Teardrop:
好!把這個字拆開來看:tear-drop,啥?淚滴丟棄?當然不是!
Teardrop是一種UDP的攻擊型態,使用的是重疊位移領域,讓系統掛掉~~
IP在要求一個很大的封包時,如果有路由器檔著,就會被切切切割成小區塊(Fragment);
正常來講的話,(是不是有發現不少「正常來講」這類的字? ^^")
【照理說對方收到後會按照順序組合回來】
登登~如果「有心人士」在IP放入一個補償參數(Offset Value)呢?
好嘛!收是收到了...但怎麼組合呢?不管怎麼組合都不對...(/‵′)/~ ╧╧
不能組合的下場?不過就是系統掛掉而已...
5.Syn攻擊:
網路中最基本的三向交握(Three-way handshake)無意間成了攻擊利用的缺陷...
==============================================================
【註:三向交握--三分鐘原理簡短說明】
a.節點A要對B要求建立連線時,會先發出『連線請求』的訊息封包(訊息上帶有SYN的符號)
b.節點B收到訊息之後,如果確定接受A的連線,就會回應一個『確認請求』的訊息封包給A,
(上面則帶有SYN/ACK符號(也是封包裡面的結構);
c.節點A再度回應給B一個『確認連線』的封包,帶有ACK的符號(進入了資料傳送的階段)
d.當節點A資料傳送完畢之後,A會發送一個『終止連線』的訊息封包,
得到 B 回應的『確認終止』訊息之後,就結束了該次連線!
==============================================================
套句俗話就是:會吵的小孩有糖吃!
攻擊方在傳送一個偽造的TCP SYN需求給對方後,
對方主機就會對這個連線分配資源,或者是記憶體;
問題來了...不見得每個需求都是正當需求啊!你一直要,他就一直給...
就會造成合法的使用者要不到糖...阻止了伺服器對合法的請求來做出回應。
換個角度來想,一群大量惡意欺騙的TCP SYN封包,對於被攻擊方來講,
就是一個阻斷服務(DoS)攻擊...
在這邊僅舉出五類,隨著技術的進步...越來越多的DoS型態被發明,
包含了由DoS延伸的DDoS-Distributed Denial of Services(分散式阻斷服務)
正所謂眾志成城(?!)一台電腦做不出來的東西,就讓很多台電腦來做吧!
單一電腦發動的攻擊雖然微量,但如果很多台電腦發動很多微量的攻擊呢?
海賊王內有隻跑得快,但在這個範例中則是...死的快!
想像一下,你被一塊錢硬幣丟到不會有事,但如果一百萬個一塊錢硬幣呢?
對不起~死定了...(  ̄ c ̄)y▂ξ
系統的ping是一致的,如果對單一攻擊者來講,
伺服器提供的頻寬和動力都是壓倒性(你家電腦可以和Yahoo的伺服器抗衡嗎?)
但在DDoS的凌辱下,ping的數量則是壓倒性的大勝啊!
不信?2000年的時候,Yahoo就因為這樣被掛了一次,更別說近年的Slammer了...= =