DOS攻擊之死亡之ping詳解,dos攻擊,俗稱拒絕服務攻擊,經過發送大量的無用請求數據包給服務器,耗盡服務器資源,從而沒法經過正常的訪問服務器資源,致使服務器崩潰。windows
若是多個ip經過發起對一個服務器的攻擊,若是無防護措施,無論服務器內存多大,寬帶多寬,CPU多快,都沒法抵禦這種攻擊。緩存
死亡之ping代碼:安全
打開系統的命令窗口,windows電腦按win+R ,輸入cmd命令後進入命令界面:服務器
輸入: ping -l 65500 目標ip -t
(65500 表示數據長度上限,-t 表示不停地ping目標地址) 這就是簡單的拒絕服務攻擊。網絡
死亡之ping是如何工做的呢?
首先是由於以太網長度有限,IP包片斷被分片。當一個IP包的長度超過以太網幀的最大尺寸(以太網頭部和尾部除外)時,包就會被分片,做爲多個幀來發送。接收端的機器提取各個分片,並重組爲一個完整的IP包。在正常狀況下,IP頭包含整個IP包的長度。當一個IP包被分片之後,頭只包含各個分片的長度。分片並不包含整個IP包的長度信息,所以IP包一旦被分片,重組後的整個IP包的總長度只有在所在分片都接受完畢以後才能肯定。
在IP協議規範中規定了一個IP包的最大尺寸,而大多數的包處理程序又假設包的長度超過這個最大尺寸這種狀況是不會出現的。所以,包的重組代碼所分配的內存區域也最大不超過這個最大尺寸。這樣,超大的包一旦出現,包當中的額外數據就會被寫入其餘正常區域。這很容易致使系統進入非穩定狀態,是一種典型的緩存溢出(Buffer Overflow)攻擊。在防火牆一級對這種攻擊進行檢測是至關難的,由於每一個分片包看起來都很正常。
因爲使用ping工具很容易完成這種攻擊,以致於它也成了這種攻擊的首選武器,這也是這種攻擊名字的由來。固然,還有不少程序均可以作到這一點,所以僅僅阻塞ping的使用並不能徹底解決這個漏洞。預防死亡之ping的最好方法是對操做系統打補丁,使內核將再也不對超過規定長度的包進行重組。tcp
常見攻擊與防範工具
SYN Flood攻擊:
問題就出在TCP鏈接的三次握手中,假設一個用戶向服務器發送了SYN報文後忽然死機或掉線,那麼服務器在發出SYN+ACK應答報文後是沒法收到客戶端的ACK報文的(第三次握手沒法完成),這 種狀況下服務器端通常會重試(再次發送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的鏈接,這段時間的長度咱們稱爲SYN Timeout,通常來講這個時間是分鐘的數量級(大約爲30秒 -2分鐘);一個用戶出現異常致使服務器的一個線程等待1分鐘並非什麼很大的問題,但若是有一個惡意的攻擊者大量模擬這種狀況,服務器端將爲了維護一個很是大的半鏈接列表而消耗很是多的資源----數以萬計的半鏈接,即便是簡單的保存並遍歷也會消耗很是多的CPU時間和內存,況且還要不斷對這個列表中的IP進行SYN+ACK的重試。實際上若是服務器的TCP/IP棧不夠強大,最 後的結果每每是堆棧溢出崩潰---即便服務器端的系統足夠強大,服務器端也將忙於處理攻擊者僞造的TCP鏈接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率很是之小),此時從 正常客戶的角度看來,服務器失去響應,這種狀況咱們稱做:服務器端受到了SYN Flood攻擊(SYN洪水攻擊)。
防範:
第一種是縮短SYN Timeout時間
第二種方法是設置SYN Cookie,就是給每個請求鏈接的IP地址分配一個Cookie,若是短期內連續受到某個IP的重複SYN報文,就認定是受到了攻擊,之後從這個IP地址來的包會被一律丟棄。
>netstat -n -p tcp >result.txtspa
Smurf攻擊:
發送假裝的ICMP數據包,目的地址設爲某個網絡的廣播地址,源地址設爲要攻擊的目的主機,使全部收到此ICMP數據包的主機都將對目的主機發出一個迴應,使被攻擊主機在某一段時間內收到 成千上萬的數據包
防範:
在cisco路由器上配置以下能夠防止將包傳遞到廣播地址上:
Router(config-if)# no ip directed-broadcast
Ping of Death:
"ping ofdeath"攻擊就是咱們常說的"死亡Ping"
這種攻擊經過發送大於65536字節的ICMP包使操做系統崩潰;一般不可能發送大於65536個字節的ICMP包,但能夠把報文分割成片斷,而後在目標主機上重組;最終會致使被攻擊目標緩衝區溢出,引發拒絕服務攻擊。有些時候致使telne和http服務中止,有些時候路由器重啓。
teardown攻擊:
對於一些大的IP數據包,每每須要對其進行拆分傳送,這是爲了迎合鏈路層的MTU(最大傳輸單元)的要求。好比,一個6 000字節的IP包,在MTU爲2 000的鏈路上傳輸的時候,就須要分紅3個IP 包。在IP報頭中有一個偏移字段和一個拆分標誌(MF)。若是MF標誌設置爲1,則表示這個IP包是一個大IP包的片斷,其中偏移字段指出了這個片斷在整個IP包中的位置。例如,對一個6 000字 節的IP包進行拆分(MTU爲2 000),則3個片斷中偏移字段的值依次爲0,2000,4 000。這樣接收端在所有接收完IP數據包後,就能夠根據這些信息從新組裝這幾個分次接收的拆分IP包。在這 裏就有一個安全漏洞能夠利用了,就是若是黑客們在截取IP數據包後,把偏移字段設置成不正確的值,這樣接收端在收到這些分拆的數據包後,就不能按數據包中的偏移字段值正確組合這些拆分的數據包,但接收端會不斷嘗試,這樣就可能導致目標計算機操做系統因資源耗盡而崩潰。
Land(LandAttack)攻擊:
在Land攻擊中,黑客利用一個特別打造的SYN包--它的原地址和目標地址都被設置成某一個服務器地址進行攻擊。此舉將致使接受服務器向它本身的地址發送SYN-ACK消息,結果這個地址又發回ACK消息並建立一個空鏈接,每個這樣的鏈接都將保留直到超時,在Land攻擊下,許多UNIX將崩潰,NT變得極其緩慢(大約持續五分鐘)。操作系統
IP欺騙:
這種攻擊利用TCP協議棧的RST位來實現,使用IP欺騙,迫使服務器把合法用戶的鏈接復位,影響合法用戶的鏈接。假設有一個合法用戶(100.100.100.100)已經同服務器建了正常的鏈接,攻擊者構造攻擊的TCP數據,假裝本身的IP爲100.100.100.100,並向服務器發送一個帶有RST位的TCP數據段。服務器接收到這樣的數據後,認爲從100.100.100.100發送的鏈接有錯誤,就會清空緩衝區中已創建好的鏈接。這時,合法用戶100.100.100.100再發送合法數據,服務器就已經沒有這樣的鏈接了,該用戶就被拒絕服務而只能從新開始創建新的鏈接。線程