大家別誤會了,這邊說的DoS不是DOS系統那個DOS,

而是Denial of Services的縮寫:DoS

說簡單一點,DoS就是讓系統無法使用,或是資源過載

(白話文:讓對方主機掛掉...(  ̄ c ̄)y▂ξ  )

以致於合法的使用者無法來連結或使用系統。

套句新聞常看到的字眼:得不到就毀了你!

如果攻擊方試盡各種方法都無法獲得機器的連線權力,

則最後一步可能就是利用DoS來摧毀或者干擾該台機器...﹨(╯▽╰)∕

 

和其他攻擊手法不一樣的是,DoS較容易發動的原因在於它並非取得連線,

而是去阻止合法的使用者來連線,想想看...

是費盡心思追一個正妹比較容易,還是讓她討厭比較容易....= =

其要做的事情最簡單的不過就是一直發送大量(假的、垃圾)封包就好了...

 

以下舉出一些DoS的攻擊型態分類,供大家參考一下...^^

1. Smurf:

簡單一個字,就是「ping」!藉由發送ICMP echo到一個網路的廣播位址,

只是正常的ping來源是自己,而Smurf的來源卻是...無辜的第三者啊!
001.smurf.jpg 

如上圖所示,攻擊方發送大量的ICMP echo到區域內的主機,

但區域內的電腦所做的回應卻是回應到另一台主機,別小看這小小的流量...

一旦多起來,這些流量就足夠以淹沒整個網路連線,讓網路(主機)掛掉...

 

【註:另一個類似的手法稱為fraggle,不同的地方在於是使用UDP echo】


2.Buffer Overflow-緩衝區溢出:

其實這問題有在寫程式的人多少都會遇到,用比較白話的方式來說明,

假設現在有一打蘋果都要放進一個盒子裡,正常來說都是一個蘋果一個「洞」,

或至少你可以放的「洞」一定要多於蘋果數量,這樣才放的下;

但如果今天有二打蘋果,卻只有一個盒子,那硬要放進去的結果-塞爆!

現實生活如此,電腦內也是如此!

當程式要將資料寫入緩衝區時,而這個緩衝區比被分到的空間還要大,

會發生蝦咪情況呢?~~~當然不是電腦炸掉,而是資料放不下

這時就會發生緩衝區溢出的情況了...
002.緩衝區溢出.jpg 

 如上圖所示,如果攻擊方可以劫持程式的控制,

進而執行攻擊者代碼(Attacker's Code)而非原本的程序碼(Process Code)時,

便可以發動Buffer Overflow,在最大流量限制200的網路中傳送256的流量,

接著電腦就會「秀逗」...因為已經沒有空間可以塞蘋果了!


3.Ping of Death:

俗稱「死亡之ping」!ping的數量不在多,而是多在裡頭包含的東西...

一般正常的ping頂多就是幾十byte,不信?ping自己看看~
003.ping-1.jpg  

 

那如果今天送出的ping是很大很大的呢?掛!

也不用太多...基本上大於65536位元就可以了...(65535位元多大?自己算一下吧!)

有種東西叫做區塊分割(Fragmentation)的玩意,它允許一個單一的封包被分割,

來變成更小的數據區段(Segments),類似某個廣告...切切切切切

問題來了,Fragmentation能允許大於65535位元,但我們的系統可受不了啊!

如同一台戰鬥機就算可以設定做出承受好幾十G動作,但人可不行...

假設主機接受了這樣的「死亡之ping」,下場顯而易見的...

系統可能被凍結掉(進而重新啟動),或只是一個「小小的」當機...( ︶︿︶)_╭∩╮

 

也別太擔心,這東西在區網內比較容易發生,

但話說回來...在區網內...那是不是要更小心這類的攻擊呢?

(相信有不少人電腦打開就是連到區網吧?)


4.Teardrop:

好!把這個字拆開來看:tear-drop,啥?淚滴丟棄?當然不是!

Teardrop是一種UDP的攻擊型態,使用的是重疊位移領域,讓系統掛掉~~

 

IP在要求一個很大的封包時,如果有路由器檔著,就會被切切切割成小區塊(Fragment);

正常來講的話,(是不是有發現不少「正常來講」這類的字? ^^")

切割送出去後在到達時會重新組合為原來的封包,
004.切割-1.jpg 

【照理說對方收到後會按照順序組合回來】

 

登登~如果「有心人士」在IP放入一個補償參數(Offset Value)呢?

又很剛好的放的位置恰恰是第二個或是最後一個區塊內呢?
004.切割-2.jpg 

好嘛!收是收到了...但怎麼組合呢?不管怎麼組合都不對...(/‵′)/~ ╧╧

不能組合的下場?不過就是系統掛掉而已...


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分散式阻斷服務)

正所謂眾志成城(?!)一台電腦做不出來的東西,就讓很多台電腦來做吧!

單一電腦發動的攻擊雖然微量,但如果很多台電腦發動很多微量的攻擊呢?
05.DDoS.jpg 

海賊王內有隻跑得快,但在這個範例中則是...死的快!

想像一下,你被一塊錢硬幣丟到不會有事,但如果一百萬個一塊錢硬幣呢?

對不起~死定了...(  ̄ c ̄)y▂ξ

系統的ping是一致的,如果對單一攻擊者來講,

伺服器提供的頻寬動力都是壓倒性(你家電腦可以和Yahoo的伺服器抗衡嗎?)

但在DDoS的凌辱下,ping的數量則是壓倒性的大勝啊!

不信?2000年的時候,Yahoo就因為這樣被掛了一次,更別說近年的Slammer了...= =

seskywalker0981 發表在 痞客邦 PIXNET 留言(3) 人氣()


留言列表 (3)

發表留言
  • 蜜兒
  • 又上了一課,蠻佩服你的,都可以這麼詳細的寫出來。好有耐性阿~~~~~~
  • 多謝誇獎的啦...^^
    其實這邊只是舉一些而已,DoS還有不少...
    還不包含DDoS...= =

    seskywalker0981 於 2009/01/06 18:18 回覆

  • 路人
  • 其實 應該不是DOS 應該叫DDOS 分段式阻斷服務攻擊才對= =
  • 其實DDoS...說簡單一點算是很多很多的DoS..^^"

    seskywalker0981 於 2011/07/01 18:20 回覆

  • kinmen
  • Dos跟ddos不同
    DOS由漏洞送一個封包就可以達成跟DDOS依樣的攻擊
    有時還跟封包沒關西
    http://www.exploit-db.com/exploits/35326/
    這就是一個例子
    藉由menu觸發windows的DOS
    DDOS是用多主機大流量來達成DOS的攻擊