日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

從TCP協(xié)議的原理來談?wù)剅st復(fù)位攻擊

 mrjbydd 2012-06-27
在談RST攻擊前,必須先了解TCP:如何通過三次握手建立TCP連接、四次握手怎樣把全雙工的連接關(guān)閉掉、滑動窗口是怎么傳輸數(shù)據(jù)的、TCP的flag標(biāo)志位里RST在哪些情況下出現(xiàn)。下面我會畫一些盡量簡化的圖來表達(dá)清楚上述幾點(diǎn),之后再了解下RST攻擊是怎么回事。
   
1、TCP是什么?
 
TCP是在IP網(wǎng)絡(luò)層之上的傳輸層協(xié)議,用于提供port到port面向連接的可靠的字節(jié)流傳輸。我來用土語解釋下上面的幾個關(guān)鍵字:
 
port到port:IP層只管數(shù)據(jù)包從一個IP到另一個IP的傳輸,IP層之上的TCP層加上端口后,就是面向進(jìn)程了,每個port都可以對應(yīng)到用戶進(jìn)程。
 
可靠:TCP會負(fù)責(zé)維護(hù)實(shí)際上子虛烏有的連接概念,包括收包后的確認(rèn)包、丟包后的重發(fā)等來保證可靠性。由于帶寬和不同機(jī)器處理能力的不同,TCP要能控制流量。
 
字節(jié)流:TCP會把應(yīng)用進(jìn)程傳來的字節(jié)流數(shù)據(jù)切割成許多個數(shù)據(jù)包,在網(wǎng)絡(luò)上發(fā)送。IP包是會失去順序或者產(chǎn)生重復(fù)的,TCP協(xié)議要能還原到字節(jié)流本來面目。
 \
 
 
從上面我用PowerPoint畫的TCP協(xié)議圖可以看到,標(biāo)志位共有六個,其中RST位就在TCP異常時出現(xiàn),也是我這篇文章重點(diǎn)關(guān)注的地方。
 
 
 
 
2、通過三次握手建立連接
 
下面我通過A向B建立TCP連接來說明三次握手怎么完成的。
 \ 
 
為了能夠說清楚下面的RST攻擊,需要結(jié)合上圖說說:SYN標(biāo)志位、序號、滑動窗口大小。
 
建立連接的請求中,標(biāo)志位SYN都要置為1,在這種請求中會告知MSS段大小,就是本機(jī)希望接收TCP包的最大大小。
 
發(fā)送的數(shù)據(jù)TCP包都有一個序號。它是這么得來的:最初發(fā)送SYN時,有一個初始序號,根據(jù)RFC的定義,各個操作系統(tǒng)的實(shí)現(xiàn)都是與系統(tǒng)時間相關(guān)的。之后,序號的值會不斷的增加,比如原來的序號是100,如果這個TCP包的數(shù)據(jù)有10個字節(jié),那么下次的TCP包序號會變成110。
 
滑動窗口用于加速傳輸,比如發(fā)了一個seq=100的包,理應(yīng)收到這個包的確認(rèn)ack=101后再繼續(xù)發(fā)下一個包,但有了滑動窗口,只要新包的seq與沒有得到確認(rèn)的最小seq之差小于滑動窗口大小,就可以繼續(xù)發(fā)。
 
 
 
 
3、滑動窗口
 
滑動窗口毫無疑問是用來加速數(shù)據(jù)傳輸?shù)?。TCP要保證“可靠”,就需要對一個數(shù)據(jù)包進(jìn)行ack確認(rèn)表示接收端收到。有了滑動窗口,接收端就可以等收到許多包后只發(fā)一個ack包,確認(rèn)之前已經(jīng)收到過的多個數(shù)據(jù)包。有了滑動窗口,發(fā)送端在發(fā)送完一個數(shù)據(jù)包后不用等待它的ack,在滑動窗口大小內(nèi)可以繼續(xù)發(fā)送其他數(shù)據(jù)包。舉個例子來看吧。
 \ 
大家看上圖,標(biāo)志位為.表示所有的flag都為0。標(biāo)志位P表示flag為PSH的TCP包,用于快速傳輸數(shù)據(jù)。
 
前三個包是三次握手,客戶端表示自己的滑動窗口大小是65535(我的XP機(jī)器),服務(wù)器端表示滑動窗口是5840(屏幕寬了,沒截出來)。從第四個包開始,客戶端向服務(wù)器發(fā)送PSH包,數(shù)據(jù)長度是520字節(jié),服務(wù)器發(fā)了ack確認(rèn)包。注意此時win窗口大小發(fā)生了改變哈。以此類推。
 
倒數(shù)第二、三包,服務(wù)器在滑動窗口內(nèi)連續(xù)向客戶端發(fā)包,客戶端發(fā)送的ack 124同時確認(rèn)了之前的兩個包。這就是滑動窗口的功能了。
 
如果談到TCP攻擊就需要注意,TCP的各種實(shí)現(xiàn)中,在滑動窗口之外的seq會被扔掉!下面會講這個問題。
 
 
 
 
4、四次握手的正常TCP連接關(guān)閉
 
先畫張簡單的正常關(guān)閉連接狀態(tài)變遷圖。
 
 
 \
 
FIN標(biāo)志位也看到了,它用來表示正常關(guān)閉連接。圖的左邊是主動關(guān)閉連接方,右邊是被動關(guān)閉連接方,用netstat命令可以看到標(biāo)出的連接狀態(tài)。
 
FIN是正常關(guān)閉,它會根據(jù)緩沖區(qū)的順序來發(fā)的,就是說緩沖區(qū)FIN之前的包都發(fā)出去后再發(fā)FIN包,這與RST不同。
 
 
 
 
5、RST標(biāo)志位
 
RST表示復(fù)位,用來異常的關(guān)閉連接,在TCP的設(shè)計(jì)中它是不可或缺的。就像上面說的一樣,發(fā)送RST包關(guān)閉連接時,不必等緩沖區(qū)的包都發(fā)出去(不像上面的FIN包),直接就丟棄緩存區(qū)的包發(fā)送RST包。而接收端收到RST包后,也不必發(fā)送ACK包來確認(rèn)。
 
TCP處理程序會在自己認(rèn)為的異常時刻發(fā)送RST包。例如,A向B發(fā)起連接,但B之上并未監(jiān)聽相應(yīng)的端口,這時B操作系統(tǒng)上的TCP處理程序會發(fā)RST包。
 
又比如,AB正常建立連接了,正在通訊時,A向B發(fā)送了FIN包要求關(guān)連接,B發(fā)送ACK后,網(wǎng)斷了,A通過若干原因放棄了這個連接(例如進(jìn)程重啟)。網(wǎng)通了后,B又開始發(fā)數(shù)據(jù)包,A收到后表示壓力很大,不知道這野連接哪來的,就發(fā)了個RST包強(qiáng)制把連接關(guān)了,B收到后會出現(xiàn)connect reset by peer錯誤。
 
 
 
 
6、RST攻擊
 
A和服務(wù)器B之間建立了TCP連接,此時C偽造了一個TCP包發(fā)給B,使B異常的斷開了與A之間的TCP連接,就是RST攻擊了。實(shí)際上從上面RST標(biāo)志位的功能已經(jīng)可以看出這種攻擊如何達(dá)到效果了。
 
那么偽造什么樣的TCP包可以達(dá)成目的呢?我們至頂向下的看。
 
假定C偽裝成A發(fā)過去的包,這個包如果是RST包的話,毫無疑問,B將會丟棄與A的緩沖區(qū)上所有數(shù)據(jù),強(qiáng)制關(guān)掉連接。
 
如果發(fā)過去的包是SYN包,那么,B會表示A已經(jīng)發(fā)瘋了(與OS的實(shí)現(xiàn)有關(guān)),正常連接時又來建新連接,B主動向A發(fā)個RST包,并在自己這端強(qiáng)制關(guān)掉連接。
 
 
 
 
這兩種方式都能夠達(dá)到復(fù)位攻擊的效果。似乎挺恐怖,然而關(guān)鍵是,如何能偽造成A發(fā)給B的包呢?這里有兩個關(guān)鍵因素,源端口和序列號。
 
一個TCP連接都是四元組,由源IP、源端口、目標(biāo)IP、目標(biāo)端口唯一確定一個連接。所以,如果C要偽造A發(fā)給B的包,要在上面提到的IP頭和TCP頭,把源IP、源端口、目標(biāo)IP、目標(biāo)端口都填對。這里B作為服務(wù)器,IP和端口是公開的,A是我們要下手的目標(biāo),IP當(dāng)然知道,但A的源端口就不清楚了,因?yàn)檫@可能是A隨機(jī)生成的。當(dāng)然,如果能夠?qū)ΤR姷腛S如windows和linux找出生成source port規(guī)律的話,還是可以搞定的。
 
序列號問題是與滑動窗口對應(yīng)的,偽造的TCP包里需要填序列號,如果序列號的值不在A之前向B發(fā)送時B的滑動窗口內(nèi),B是會主動丟棄的。所以我們要找到能落到當(dāng)時的AB間滑動窗口的序列號。這個可以暴力解決,因?yàn)橐粋€sequence長度是32位,取值范圍0-4294967296,如果窗口大小像上圖中我抓到的windows下的65535的話,只需要相除,就知道最多只需要發(fā)65537(4294967296/65535=65537)個包就能有一個序列號落到滑動窗口內(nèi)。RST包是很小的,IP頭+TCP頭也才40字節(jié),算算我們的帶寬就知道這實(shí)在只需要幾秒鐘就能搞定。
 
 
 
 
那么,序列號不是問題,源端口會麻煩點(diǎn),如果各個操作系統(tǒng)不能完全隨機(jī)的生成源端口,或者黑客們能通過其他方式獲取到source port,RST攻擊易如反掌,后果很嚴(yán)重

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多