简单的Dos攻击-死亡之Ping
本文為joshua317原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自joshua317博客?https://www.joshua317.com/article/50
簡(jiǎn)單的Dos攻擊-死亡之Ping
最簡(jiǎn)單的基于IP的攻擊可能要數(shù)著名的死亡之ping,這種攻擊主要是由于單個(gè)包的長(zhǎng)度超過(guò)了IP協(xié)議規(guī)范所規(guī)定的包長(zhǎng)度。產(chǎn)生這樣的包很容易,事實(shí)上,許多操作系統(tǒng)都提供了稱為ping的網(wǎng)絡(luò)工具。在為Windows操作系統(tǒng)中開(kāi)一個(gè)DOS窗口,輸入ping -l 65500 目標(biāo)ip -t (65500 表示數(shù)據(jù)長(zhǎng)度上限,-t 表示不停地ping目標(biāo)地址)就可達(dá)到該目的。UNIX系統(tǒng)也有類似情況。
通俗來(lái)說(shuō),就是對(duì)方IP內(nèi)存溢出,達(dá)到使對(duì)方系統(tǒng)崩潰的效果
一、如何工作呢?
死亡之ping是如何工作的呢?首先是因?yàn)橐蕴W(wǎng)長(zhǎng)度有限,IP包片段被分片。當(dāng)一個(gè)IP包的長(zhǎng)度超過(guò)以太網(wǎng)幀的最大尺寸(以太網(wǎng)頭部和尾部除外)時(shí),包就會(huì)被分片,作為多個(gè)幀來(lái)發(fā)送。接收端的機(jī)器提取各個(gè)分片,并重組為一個(gè)完整的IP包。在正常情況下,IP頭包含整個(gè)IP包的長(zhǎng)度。當(dāng)一個(gè)IP包被分片以后,頭只包含各個(gè)分片的長(zhǎng)度。分片并不包含整個(gè)IP包的長(zhǎng)度信息,因此IP包一旦被分片,重組后的整個(gè)IP包的總長(zhǎng)度只有在所在分片都接受完畢之后才能確定。
在IP協(xié)議規(guī)范中規(guī)定了一個(gè)IP包的最大尺寸,而大多數(shù)的包處理程序又假設(shè)包的長(zhǎng)度超過(guò)這個(gè)最大尺寸這種情況是不會(huì)出現(xiàn)的。因此,包的重組代碼所分配的內(nèi)存區(qū)域也最大不超過(guò)這個(gè)最大尺寸。這樣,超大的包一旦出現(xiàn),包當(dāng)中的額外數(shù)據(jù)就會(huì)被寫(xiě)入其他正常區(qū)域。這很容易導(dǎo)致系統(tǒng)進(jìn)入非穩(wěn)定狀態(tài),是一種典型的緩存溢出(Buffer Overflow)攻擊。在防火墻一級(jí)對(duì)這種攻擊進(jìn)行檢測(cè)是相當(dāng)難的,因?yàn)槊總€(gè)分片包看起來(lái)都很正常。
由于使用ping工具很容易完成這種攻擊,以至于它也成了這種攻擊的首選武器,這也是這種攻擊名字的由來(lái)。當(dāng)然,還有很多程序都可以做到這一點(diǎn),因此僅僅阻塞ping的使用并不能完全解決這個(gè)漏洞。預(yù)防死亡之ping的最好方法是對(duì)操作系統(tǒng)打補(bǔ)丁,使內(nèi)核將不再對(duì)超過(guò)規(guī)定長(zhǎng)度的包進(jìn)行重組。
二、現(xiàn)象
這個(gè)問(wèn)題出現(xiàn)在早期的Windows內(nèi),不過(guò)在接近Windows Me的時(shí)候已經(jīng)見(jiàn)不到了。不僅已經(jīng)ping不到65500以上,各大網(wǎng)站限制數(shù)據(jù)包傳入大小來(lái)防止有人用多臺(tái)電腦同時(shí)ping一個(gè)ip導(dǎo)致癱瘓,一般大型網(wǎng)站把數(shù)據(jù)包壓到3000以下;而服務(wù)器或者dns一般把數(shù)據(jù)包壓到10000以下來(lái)防止這個(gè)問(wèn)題,超過(guò)數(shù)值會(huì)提示連接超時(shí)。
-
不要大數(shù)據(jù)ping自己的ip地址。
-
不要亂ping網(wǎng)站網(wǎng)址
-
不要ping自己的IP地址
三、操作
DOS攻擊之死亡之ping,俗稱拒絕服務(wù)攻擊,通過(guò)發(fā)送大量的無(wú)用請(qǐng)求數(shù)據(jù)包給服務(wù)器,耗盡服務(wù)器資源,從而無(wú)法通過(guò)正常的訪問(wèn)服務(wù)器資源,導(dǎo)致服務(wù)器崩潰。
如果多個(gè)ip通過(guò)發(fā)起對(duì)一個(gè)服務(wù)器的攻擊,如果無(wú)防御措施,不管服務(wù)器內(nèi)存多大,寬帶多寬,CPU多快,都無(wú)法抵御這種攻擊。
? 死亡之ping代碼:
? 打開(kāi)系統(tǒng)的命令窗口,windows電腦按win+R ,輸入cmd命令后進(jìn)入命令界面:
? 輸入:
ping -l 65500 目標(biāo)ip -t(65500 表示數(shù)據(jù)長(zhǎng)度上限,-t 表示不停地ping目標(biāo)地址) 這就是簡(jiǎn)單的拒絕服務(wù)攻擊。
四、常見(jiàn)攻擊與防范
SYN Flood攻擊:
問(wèn)題就出在TCP連接的三次握手中,假設(shè)一個(gè)用戶向服務(wù)器發(fā)送了SYN報(bào)文后突然死機(jī)或掉線,那么服務(wù)器在發(fā)出SYN+ACK應(yīng)答報(bào)文后是無(wú)法收到客戶端的ACK報(bào)文的(第三次握手無(wú)法完成),這 種情況下服務(wù)器端一般會(huì)重試(再次發(fā)送SYN+ACK給客戶端)并等待一段時(shí)間后丟棄這個(gè)未完成的連接,這段時(shí)間的長(zhǎng)度我們稱為SYN Timeout,一般來(lái)說(shuō)這個(gè)時(shí)間是分鐘的數(shù)量級(jí)(大約為30秒 -2分鐘);一個(gè)用戶出現(xiàn)異常導(dǎo)致服務(wù)器的一個(gè)線程等待1分鐘并不是什么很大的問(wèn)題,但如果有一個(gè)惡意的攻擊者大量模擬這種情況,服務(wù)器端將為了維護(hù)一個(gè)非常大的半連接列表而消耗非常多的資源----數(shù)以萬(wàn)計(jì)的半連接,即使是簡(jiǎn)單的保存并遍歷也會(huì)消耗非常多的CPU時(shí)間和內(nèi)存,何況還要不斷對(duì)這個(gè)列表中的IP進(jìn)行SYN+ACK的重試。實(shí)際上如果服務(wù)器的TCP/IP棧不夠強(qiáng)大,最 后的結(jié)果往往是堆棧溢出崩潰---即使服務(wù)器端的系統(tǒng)足夠強(qiáng)大,服務(wù)器端也將忙于處理攻擊者偽造的TCP連接請(qǐng)求而無(wú)暇理睬客戶的正常請(qǐng)求(畢竟客戶端的正常請(qǐng)求比率非常之小),此時(shí)從 正常客戶的角度看來(lái),服務(wù)器失去響應(yīng),這種情況我們稱作:服務(wù)器端受到了SYN Flood攻擊(SYN洪水攻擊)。
防范:
第一種是縮短SYN Timeout時(shí)間 第二種方法是設(shè)置SYN Cookie,就是給每一個(gè)請(qǐng)求連接的IP地址分配一個(gè)Cookie,如果短時(shí)間內(nèi)連續(xù)受到某個(gè)IP的重復(fù)SYN報(bào)文,就認(rèn)定是受到了攻擊,以后從這個(gè)IP地址來(lái)的包會(huì)被一概丟棄。 >netstat -n -p tcp >result.txt
Smurf攻擊: 發(fā)送偽裝的ICMP數(shù)據(jù)包,目的地址設(shè)為某個(gè)網(wǎng)絡(luò)的廣播地址,源地址設(shè)為要攻擊的目的主機(jī),使所有收到此ICMP數(shù)據(jù)包的主機(jī)都將對(duì)目的主機(jī)發(fā)出一個(gè)回應(yīng),使被攻擊主機(jī)在某一段時(shí)間內(nèi)收到 成千上萬(wàn)的數(shù)據(jù)包 防范: 在cisco路由器上配置如下可以防止將包傳遞到廣播地址上: Router(config-if)# no ip directed-broadcast
Ping of Death:
"ping ofdeath"攻擊就是我們常說(shuō)的"死亡Ping" 這種攻擊通過(guò)發(fā)送大于65536字節(jié)的ICMP包使操作系統(tǒng)崩潰;通常不可能發(fā)送大于65536個(gè)字節(jié)的ICMP包,但可以把報(bào)文分割成片段,然后在目標(biāo)主機(jī)上重組;最終會(huì)導(dǎo)致被攻擊目標(biāo)緩沖區(qū)溢出,引起拒絕服務(wù)攻擊。有些時(shí)候?qū)е聇elne和http服務(wù)停止,有些時(shí)候路由器重啟。
teardown攻擊:
對(duì)于一些大的IP數(shù)據(jù)包,往往需要對(duì)其進(jìn)行拆分傳送,這是為了迎合鏈路層的MTU(最大傳輸單元)的要求。比如,一個(gè)6 000字節(jié)的IP包,在MTU為2 000的鏈路上傳輸?shù)臅r(shí)候,就需要分成3個(gè)IP 包。在IP報(bào)頭中有一個(gè)偏移字段和一個(gè)拆分標(biāo)志(MF)。如果MF標(biāo)志設(shè)置為1,則表示這個(gè)IP包是一個(gè)大IP包的片段,其中偏移字段指出了這個(gè)片段在整個(gè)IP包中的位置。例如,對(duì)一個(gè)6 000字 節(jié)的IP包進(jìn)行拆分(MTU為2 000),則3個(gè)片段中偏移字段的值依次為0,2000,4 000。這樣接收端在全部接收完IP數(shù)據(jù)包后,就可以根據(jù)這些信息重新組裝這幾個(gè)分次接收的拆分IP包。在這 里就有一個(gè)安全漏洞可以利用了,就是如果黑客們?cè)诮厝P數(shù)據(jù)包后,把偏移字段設(shè)置成不正確的值,這樣接收端在收到這些分拆的數(shù)據(jù)包后,就不能按數(shù)據(jù)包中的偏移字段值正確組合這些拆分的數(shù)據(jù)包,但接收端會(huì)不斷嘗試,這樣就可能致使目標(biāo)計(jì)算機(jī)操作系統(tǒng)因資源耗盡而崩潰。
Land(LandAttack)攻擊:
在Land攻擊中,黑客利用一個(gè)特別打造的SYN包--它的原地址和目標(biāo)地址都被設(shè)置成某一個(gè)服務(wù)器地址進(jìn)行攻擊。此舉將導(dǎo)致接受服務(wù)器向它自己的地址發(fā)送SYN-ACK消息,結(jié)果這個(gè)地址又發(fā)回ACK消息并創(chuàng)建一個(gè)空連接,每一個(gè)這樣的連接都將保留直到超時(shí),在Land攻擊下,許多UNIX將崩潰,NT變得極其緩慢(大約持續(xù)五分鐘)。
IP欺騙: 這種攻擊利用TCP協(xié)議棧的RST位來(lái)實(shí)現(xiàn),使用IP欺騙,迫使服務(wù)器把合法用戶的連接復(fù)位,影響合法用戶的連接。假設(shè)有一個(gè)合法用戶(100.100.100.100)已經(jīng)同服務(wù)器建了正常的連接,攻擊者構(gòu)造攻擊的TCP數(shù)據(jù),偽裝自己的IP為100.100.100.100,并向服務(wù)器發(fā)送一個(gè)帶有RST位的TCP數(shù)據(jù)段。服務(wù)器接收到這樣的數(shù)據(jù)后,認(rèn)為從100.100.100.100發(fā)送的連接有錯(cuò)誤,就會(huì)清空緩沖區(qū)中已建立好的連接。這時(shí),合法用戶100.100.100.100再發(fā)送合法數(shù)據(jù),服務(wù)器就已經(jīng)沒(méi)有這樣的連接了,該用戶就被拒絕服務(wù)而只能重新開(kāi)始建立新的連接。
本文為joshua317原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自joshua317博客?https://www.joshua317.com/article/50
總結(jié)
以上是生活随笔為你收集整理的简单的Dos攻击-死亡之Ping的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java面试题及答案2020 (二十五)
- 下一篇: SLAM十四讲中的第五讲点云拼接