TCP協(xié)議與攻擊_第1頁
TCP協(xié)議與攻擊_第2頁
TCP協(xié)議與攻擊_第3頁
TCP協(xié)議與攻擊_第4頁
TCP協(xié)議與攻擊_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 2011 綠盟科技TCP協(xié)議與攻擊綠盟科技 張鋒2012年4月 1 TCP的面向連接3 TCP/IP攻擊2 TCP的可靠性Protocol LayerNetwork AssociatesTCP/IP協(xié)議棧應(yīng)用層會(huì)話層表示層傳輸層TCPUDP網(wǎng)絡(luò)層ICMPRARPARPIGMPIP數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)接口層由底層網(wǎng)絡(luò)定義的協(xié)議SMTPFTPTELNETDNSSNMPNFSTFTP提供應(yīng)用程序間接口建立端到端連接提供編址和路由功能物理介質(zhì)訪問二進(jìn)制數(shù)據(jù)流傳輸U(kuò)DP協(xié)議UDP提供無連接的不可靠的數(shù)據(jù)報(bào)服務(wù)。 l UDP是無連接的傳輸層協(xié)議n發(fā)送數(shù)據(jù)之前不需要建立連接l UDP是一個(gè)不可靠的傳輸層協(xié)

2、議n沒有確認(rèn)機(jī)制n不對(duì)報(bào)文排序n沒有超時(shí)機(jī)制n沒有流量控制機(jī)制傳輸速度快數(shù)據(jù)不可靠,易丟失和溢出使用UDP的應(yīng)用程序,需要承擔(dān)可靠性方面的全部工作偽首部源端口目的端口長 度檢驗(yàn)和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報(bào)用戶數(shù)據(jù)報(bào) UDP 有兩個(gè)字段:數(shù)據(jù)字段和首部字段。首部字段有 8 個(gè)字節(jié),由 4 個(gè)字段組成,每個(gè)字段都是兩個(gè)字節(jié)。 UDP報(bào)文格式TCP協(xié)議TCP是一種可靠的、面向連接的基于字節(jié)流的傳輸層協(xié)議。由IETF的RFC 793說明。工作在OSI模型的第四層,UDP是同一層內(nèi)另一個(gè)重要傳

3、輸協(xié)議。TCP報(bào)文結(jié)構(gòu)8TCP首部目 的 端 口首部長度檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FIN32 位SYNRSTPSHACKURG位 0 8 16 24 31填 充TCP 數(shù)據(jù)部分TCP 首部TCP 報(bào)文段IP 數(shù)據(jù)部分IP 首部發(fā)送在前20 字節(jié)的固定首部TCP面向連接面向連接意味著兩個(gè)使用TCP的應(yīng)用(通常是一個(gè)客戶端和一個(gè)服務(wù)器)在彼此交換數(shù)據(jù)之前必須先建立一個(gè)TCP連接。lSYN,ACK,SYN+ACK:建立TCP連接lFIN,ACK,F(xiàn)IN+ACK:主動(dòng)關(guān)閉TCP連接lRST:Reset,重置連接。n錯(cuò)誤的syn+ack包;n

4、直接關(guān)閉窗口(telnet,IE)lPSH:push,由應(yīng)用程序處理。建立完連接,傳輸應(yīng)用數(shù)據(jù)時(shí),使用push+ack。 TCP連接建立與關(guān)閉TCP連接建立與關(guān)閉(Flag標(biāo)志位、序列號(hào)、確認(rèn)號(hào))TCP連接建立TCP連接建立:三次握手發(fā)送發(fā)送 SYN ,請求建立連接請求建立連接(seq=100 ctl=SYN)Host AHost B1發(fā)送發(fā)送 SYN 、ACK(seq=300 ack101 ctl=SYN、ACK)23發(fā)送發(fā)送ACK(seq=101 ack301ctl=ACK)TCP連接關(guān)閉TCP連接關(guān)閉:四次揮手發(fā)送發(fā)送 FIN,請求斷開連接請求斷開連接(seq=101 ,ack=301,

5、ctl=FIN,ACK)Host AHost B1發(fā)送發(fā)送 ACK(seq=301,ack=102ctl=ACK)24發(fā)送發(fā)送ACK(seq=102,ack=302 ctl=ACK)Seq100Seq300Ack1013發(fā)送發(fā)送 FIN,請求斷開連接請求斷開連接(seq=301,ack=102 ctl=FIN,ACK)TCP狀態(tài)機(jī)TCP有限狀態(tài)機(jī)lTCP 有限狀態(tài)機(jī)的圖中每一個(gè)方框都是 TCP 可能具有的狀態(tài)。l每個(gè)方框中的大寫英文字符串是 TCP 標(biāo)準(zhǔn)所使用的 TCP 連接狀態(tài)名。狀態(tài)之間的箭頭表示可能發(fā)生的狀態(tài)變遷。l箭頭旁邊的字,表明引起這種變遷的原因,或表明發(fā)生狀態(tài)變遷后又出現(xiàn)什么動(dòng)作

6、。l圖中有三種不同的箭頭。l粗實(shí)線箭頭表示對(duì)客戶進(jìn)程的正常變遷。l粗虛線箭頭表示對(duì)服務(wù)器進(jìn)程的正常變遷。l另一種細(xì)線箭頭表示異常變遷。 CLOSEDESTABLISHEDLISTENCLOSE_WAITFIN_WAIT_1SYN_RCVDFIN_WAIT_2CLOSINGTIME_WAITSYN_SENTLAST_ACK主動(dòng)打開被動(dòng)打開被動(dòng)關(guān)閉主動(dòng)關(guān)閉起點(diǎn)被動(dòng)打開主動(dòng)打開 發(fā)送 SYN同時(shí)打開收到 SYN,發(fā)送 SYN, ACK收到 ACK數(shù)據(jù)傳送 階段 關(guān)閉發(fā)送 FIN 關(guān)閉發(fā)送 FIN 關(guān)閉發(fā)送 FIN收到 RST 收到 SYN發(fā)送 SYN, ACK 關(guān)閉或超時(shí)收到 ACK 收到 SYN,

7、 ACK發(fā)送 ACK收到 ACK收到 ACK收到 FIN發(fā)送 ACK收到 FIN, ACK 發(fā)送 ACK收到 FIN發(fā)送 ACK同時(shí)關(guān)閉收到 FIN發(fā)送 ACK發(fā)送 SYN定時(shí)經(jīng)過兩倍報(bào)文段壽命后關(guān)閉TCP狀態(tài)機(jī)1 TCP面向連接3 TCP/IP安全2 TCP可靠性TCP可靠性TCP可靠性:l分段傳輸(MSS,建立連接時(shí)協(xié)商)l數(shù)據(jù)校驗(yàn)和l流量控制滑動(dòng)窗口l超時(shí)重傳l擁塞控制慢啟動(dòng)、擁塞避免、快速重傳、快速恢復(fù)、SACK TCP流量控制TCP流量控制滑動(dòng)窗口l滑動(dòng)窗口協(xié)議:我們能夠一次發(fā)送許多數(shù)據(jù)包,然后等待收到一個(gè)確認(rèn)收到全部數(shù)據(jù)包的ACK信息。但連續(xù)發(fā)送的報(bào)文數(shù)不超過一定限制。l客戶端發(fā)送

8、一次,服務(wù)器確認(rèn)一次(ack),再發(fā)送,再確認(rèn)效率低 既能充分利用網(wǎng)絡(luò)能力,又能提供可靠性?;瑒?dòng)窗口協(xié)議滑動(dòng)窗口協(xié)議lTCP 采用大小可變的滑動(dòng)窗口進(jìn)行流量控制l當(dāng)一個(gè)連接建立時(shí),連接的每一端分配一個(gè)緩沖區(qū)來保存輸入的數(shù)據(jù),并將緩沖區(qū)的尺寸發(fā)送給另一端。當(dāng)數(shù)據(jù)到達(dá)時(shí),接收方發(fā)送確認(rèn),其中包含了自己剩余的緩沖區(qū)尺寸。剩余的緩沖區(qū)空間的大小被稱為窗口( w i n d o w)接收窗口l滑動(dòng)窗口:通信的過程中,接收端可根據(jù)自己的資源情況,隨時(shí)動(dòng)態(tài)地調(diào)整對(duì)方的發(fā)送窗口上限值。l發(fā)送端要發(fā)送 900 字節(jié)長的數(shù)據(jù),劃分為 9 個(gè) 100 字節(jié)長的報(bào)文段,而發(fā)送窗口確定為 500 字節(jié)。l發(fā)送端只要收到

9、了對(duì)方的確認(rèn),發(fā)送窗口就可前移。l發(fā)送 TCP 要維護(hù)一個(gè)指針。每發(fā)送一個(gè)報(bào)文段,指針就向前移動(dòng)一個(gè)報(bào)文段的距離?;瑒?dòng)窗口協(xié)議l發(fā)送端已發(fā)送了 400 字節(jié)的數(shù)據(jù),但只收到對(duì)前 200 字節(jié)數(shù)據(jù)的確認(rèn),同時(shí)窗口大小不變。l現(xiàn)在發(fā)送端還可發(fā)送 300 字節(jié)。 滑動(dòng)窗口協(xié)議l發(fā)送端收到了對(duì)方對(duì)前 400 字節(jié)數(shù)據(jù)的確認(rèn),但對(duì)方通知發(fā)送端必須把窗口減小到 400 字節(jié)。l現(xiàn)在發(fā)送端最多還可發(fā)送 400 字節(jié)的數(shù)據(jù)。 滑動(dòng)窗口協(xié)議利用可變窗口大小進(jìn)行流量控制滑動(dòng)窗口協(xié)議Host AHost B123Ack=301,win=3Seq=300,ack=101,win=3Seq=100,win=3Ack=1

10、04,win=1Seq=101,win=3Seq=102,win=3Seq=103,win=3Seq=104,win=3030132發(fā)送窗口大小為發(fā)送窗口大小為3通報(bào)窗口大小為通報(bào)窗口大小為1緩沖區(qū)滿緩沖區(qū)滿應(yīng)用程序讀取應(yīng)用程序讀取了了1個(gè)數(shù)據(jù)段個(gè)數(shù)據(jù)段實(shí)際發(fā)送窗口大小實(shí)際發(fā)送窗口大小變?yōu)樽優(yōu)?通報(bào)窗口大小為通報(bào)窗口大小為3TCP可靠性什么是TCP超時(shí)重傳?lTCP通過在發(fā)送時(shí)設(shè)置一個(gè)超時(shí)定時(shí)器來解決這個(gè)問題,如果定時(shí)器超時(shí),TCP重傳該數(shù)據(jù)l由于IP層面的不可靠,TCP在傳輸數(shù)據(jù)時(shí),數(shù)據(jù)本身和確認(rèn)都有可能丟失l問題:等待多長時(shí)間之后超時(shí)?n太長:低效,延時(shí)長,帶寬利用率低n太短:造成不必要的

11、重傳(占用額外的帶寬)nTCP采用的是一種自適應(yīng)的重傳計(jì)時(shí)策略TCP可靠性TCP超時(shí)重傳思路l基本思路:定時(shí)器的時(shí)間應(yīng)該比數(shù)據(jù)往返時(shí)間長一些l術(shù)語:nRTO:定時(shí)器時(shí)間(超時(shí)重傳時(shí)間)nRTT:數(shù)據(jù)往返時(shí)間data-1ack-1data-2T1T2T3RTT=T3-T1data-1data-1T1T2RTO=T2-T1未收到ack,重傳data報(bào)文lSRTT;RTTAVRTCP可靠性TCP超時(shí)重傳算法lTCP采用一種適應(yīng)性重傳算法: Timeout RTT其中 為一個(gè)大于1的常數(shù)加權(quán)因子,RTT為估算的往返時(shí)間。lRTT計(jì)算如下: RTT (舊的RTT) (1 ) (新的往返時(shí)延樣本)為修正因

12、子,決定了以前估計(jì)的RTT的權(quán)重,一般取值為7/8。TCP可靠性TCP擁塞控制lTCP要能夠感知擁塞,并緩解擁塞。l什么是擁塞?n網(wǎng)絡(luò)中數(shù)據(jù)包的總數(shù)超過了網(wǎng)絡(luò)的處理能力,路由器開始丟棄數(shù)據(jù)包,產(chǎn)生擁塞;nTCP使用超時(shí)重傳,導(dǎo)致大量報(bào)文重傳,加重?fù)砣?。l如何感知?n重傳定時(shí)器超時(shí)擁塞嚴(yán)重n亂序,收到重復(fù)確認(rèn)包擁塞程度尚可TCP可靠性TCP如何緩解擁塞?l兩個(gè)控制變量n擁塞窗口(cwnd)n慢啟動(dòng)門限(ssthresh)l五個(gè)算法n慢啟動(dòng)算法n擁塞避免算法n快速重傳算法n快速恢復(fù)算法n選擇性應(yīng)答算法(SACK)TCP可靠性兩個(gè)窗口l接收窗口:與接收方的可用緩存大小有關(guān),由接收方通告(rwnd);

13、l擁塞窗口:是發(fā)送方感受到的網(wǎng)絡(luò)擁塞的估計(jì)(cwnd).TCP能夠發(fā)送的字節(jié)數(shù): 許可窗口=min 擁塞窗口,接收窗口TCP可靠性慢啟動(dòng)算法l剛建立連接時(shí),cwnd=1 MSS;Host Aone segmentRTTHost Btimetwo segmentsfour segmentsackackackackl直到達(dá)到ssthresh門限或產(chǎn)生丟包l能夠正常收到ACK,cwnd呈指數(shù)增長;TCP可靠性擁塞避免算法 當(dāng)擁塞窗口cwnd的值超過了門限值ssthresh,就進(jìn)入擁塞避免階段。此時(shí)cwnd是線性增長。慢啟動(dòng)擁塞避免門限值TCP可靠性慢啟動(dòng)與擁塞避免工作過程l(1)初始化cwnd為1個(gè)

14、MSS, ssthresh為65535字節(jié)l(2)當(dāng)新的數(shù)據(jù)被對(duì)方確認(rèn)時(shí),就增加cwndn如果cwnd=ssthresh,就進(jìn)行擁塞避免,cwnd線性增長l(3)擁塞發(fā)生時(shí), ssthresh設(shè)置為cwnd的一半n如果超時(shí),cwnd設(shè)為1 MSS,進(jìn)入慢啟動(dòng)n如果收到重復(fù)確認(rèn),cwnd設(shè)置為擁塞時(shí)cwnd值的一半,進(jìn)入擁塞避免TCP可靠性TCP可靠性慢啟動(dòng)和擁塞避免總結(jié)l不能完全避免擁塞l使網(wǎng)絡(luò)不容易出現(xiàn)擁塞TCP可靠性快速重傳算法l在某些情況下,不需要等待超時(shí)重傳,可更早地重傳丟失的報(bào)文段。發(fā)送方接收方發(fā)送 M1 確認(rèn) M1t 確認(rèn) M2 發(fā)送 M2發(fā)送 M3發(fā)送 M4發(fā)送 M5發(fā)送 M6

15、重復(fù)確認(rèn) M2 立即重傳 M3 重復(fù)確認(rèn) M2 重復(fù)確認(rèn) M2 t發(fā)送 M7收到三個(gè)連續(xù)的對(duì) M2 的重復(fù)確認(rèn)立即重傳 M3丟失TCP可靠性快速恢復(fù)算法l發(fā)送端連續(xù)收到3個(gè)重復(fù)確認(rèn),將慢啟動(dòng)門限設(shè)置為發(fā)送窗口的一半,然后執(zhí)行擁塞避免算法。242468101214161820220048121620傳輸輪次擁塞窗口 cwnd收到 3 個(gè)重復(fù)的確認(rèn)執(zhí)行快重傳算法慢啟動(dòng)“乘法減小”擁塞避免“加法增大”TCP Reno版本TCP Tahoe 版本(已廢棄不用)ssthresh 的初始值擁塞避免“加法增大”新的 ssthresh 值慢啟動(dòng)快恢復(fù)TCP可靠性SACK選擇性應(yīng)答算法(SACK)lSACK改變

16、TCP確認(rèn)機(jī)制l普通的TCP只確認(rèn)已連續(xù)收到的數(shù)據(jù)lSACK把亂序信息告訴對(duì)方,減少重傳盲目性。l例如:序號(hào)1,2,3,5,7的數(shù)據(jù)收到了,n普通TCP:只確認(rèn)1,2,3,;ack號(hào)=4nSACK:全部確認(rèn),ack號(hào)=4,同時(shí)告知5,7已經(jīng)收到。一般TCP的ACK過程data-1data-1data-2data-3data-4data-5ack-data-1data-3data-4data-5ack-data-1ack-data-1ack-data-1data-2data-3data-4data-5data-2丟失服務(wù)器中間設(shè)備客戶端ack-data-1ack-data-1ack-data-1

17、ack-data-1問題:僅有data-2丟失,雖然客戶端已經(jīng)收到其他的data,但是,服務(wù)器卻要將data-2以及data-2之后的其他Data重傳一次效率低下!TCP選項(xiàng)中的SACK功能就是針對(duì)這種情況提出的解決方法SACK的確認(rèn)過程data-1data-1data-2data-3data-4data-5ack-data-1data-3data-4data-5sack-data-3sack-data-4sack-data-5data-2data-2丟失服務(wù)器中間設(shè)備客戶端ack-data-1sack-data-3sack-data-4sack-data-5TCP攻擊利用TCP 重傳機(jī)制、擁

18、塞控制機(jī)制的攻擊lTCP小窗口慢啟動(dòng)攻擊n降低傳輸效率,占用連接資源,消耗服務(wù)器性能。 l快速重傳、TCP SACK選擇性重傳攻擊n帶寬放大攻擊(小包換大包)n攻擊發(fā)送少量的包,占用大量下行帶寬,消耗服務(wù)器資源。 1 TCP面向連接3 TCP/IP安全2 TCP可靠性TCP/IP安全TCP/IP安全lARP安全lDHCP安全lTCP安全lUDP安全lDNS安全lHTTP安全lHTTPS安全ARP安全ARP欺騙DHCP安全DHCP私接欺騙DHCP安全DHCP Snooping利用ARP、DHCP的攻擊利用ARP、DHCP的攻擊lARP欺騙報(bào)文劫持返回錯(cuò)誤DNS信息釣魚網(wǎng)站lDHCP欺騙虛假DNS

19、服務(wù)器釣魚網(wǎng)站TCP安全SYN Flood我沒發(fā)過請求SYN_RECV狀態(tài)半開連接隊(duì)列遍歷,消耗CPU和內(nèi)存SYN|ACK 重試SYN Timeout:30秒2分鐘無暇理睬正常的連接請求拒絕服務(wù)SYN (我可以連接嗎?)ACK (可以)/SYN(請確認(rèn)!)攻擊者受害者偽造地址進(jìn)行SYN 請求為何還沒回應(yīng)就是讓你白等不能建立正常的連接!SYN Flood 攻擊原理攻擊表象TCP安全Connection Flood攻擊者受害者大量tcp connect這么多?不能建立正常的連接正常tcp connect正常用戶正常tcp connect攻擊表象正常tcp connect正常tcp connect正

20、常tcp connect正常tcp connect 利用真實(shí) IP 地址(代理服務(wù)器、廣告頁面)在服務(wù)器上建立大量連接 服務(wù)器上殘余連接(WAIT狀態(tài))過多,效率降低,甚至資源耗盡,無法響應(yīng) 蠕蟲傳播過程中會(huì)出現(xiàn)大量源IP地址相同的包,對(duì)于 TCP 蠕蟲則表現(xiàn)為大范圍掃描行為 消耗骨干設(shè)備的資源,如防火墻的連接數(shù)Connection Flood 攻擊原理TCP安全CC攻擊攻擊者受害者(Web Server)正常HTTP Get請求不能建立正常的連接正常HTTP Get Flood正常用戶正常HTTP Get Flood攻擊表象利用代理服務(wù)器向受害者發(fā)起大量HTTP Get請求主要請求動(dòng)態(tài)頁面,

21、涉及到數(shù)據(jù)庫訪問操作數(shù)據(jù)庫負(fù)載以及數(shù)據(jù)庫連接池負(fù)載極高,無法響應(yīng)正常請求正常HTTP Get Flood正常HTTP Get Flood正常HTTP Get Flood正常HTTP Get Flood正常HTTP Get Flood受害者(DB Server)DB連接池用完啦!DB連接池占用占用占用HTTP Get Flood 攻擊原理Attack ToolsCC & BotnetSnooping防止(SYN Flood)SYNSYN+ACKACKSYNSYN+ACKACKClient ProxyServerSnooping防止( HTTP Flood/CC)SourceAnti-SpoofingSyn(c#)Hash-function(SrcIP,port,t)ack(c#,s#)SrcIP, port#=Redirect(c#,s#)Synack(c#,s#)Syn(c#)request(c#,s#)TargetVerified connectionssynack(c#,s#)GET requestDNS安全電信主DNS電信輔DNS企業(yè)DNS代理服務(wù)器用戶根域服務(wù)器代理,緩存緩存(遞歸、查詢)服務(wù)器CN服務(wù)器HK服務(wù)器授權(quán)域

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論