偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

你猜一個(gè) TCP 重置報(bào)文的序列號(hào)是多少?

網(wǎng)絡(luò) 通信技術(shù)
TCP 重置攻擊是使用一個(gè)單一的數(shù)據(jù)包來(lái)執(zhí)行的,只有幾個(gè)字節(jié)大小。攻擊者制作并發(fā)送一個(gè)偽造的 TCP 重置包來(lái)干擾用戶和網(wǎng)站的連接,欺騙通信雙方終止 TCP 連接。

本文轉(zhuǎn)載自微信公眾號(hào)「 云原生實(shí)驗(yàn)室」,轉(zhuǎn)載本文請(qǐng)聯(lián)系 云原生實(shí)驗(yàn)室公眾號(hào)。

 TCP 重置攻擊是使用一個(gè)單一的數(shù)據(jù)包來(lái)執(zhí)行的,只有幾個(gè)字節(jié)大小。攻擊者制作并發(fā)送一個(gè)偽造的 TCP 重置包來(lái)干擾用戶和網(wǎng)站的連接,欺騙通信雙方終止 TCP 連接。我們偉大的 xx 長(zhǎng)城便運(yùn)用了這個(gè)技術(shù)來(lái)進(jìn)行 TCP 關(guān)鍵字阻斷[1]。

理解 TCP 重置攻擊并不需要具備深厚的網(wǎng)絡(luò)知識(shí)功底,只需要一臺(tái)筆記本就可以對(duì)自己進(jìn)行模擬攻擊。本文將會(huì)帶你了解 TCP 重置攻擊的原理,同時(shí)會(huì)幫助你理解很多關(guān)于 TCP 協(xié)議的特性。本文主要內(nèi)容:

  • 回顧 TCP 協(xié)議的基礎(chǔ)知識(shí)
  • 了解 TCP 重置攻擊的原理
  • 使用一個(gè)簡(jiǎn)單的 Python 腳本來(lái)模擬攻擊

下面開始分析 TCP 重置攻擊原理。

1. 偉大的 xx 長(zhǎng)城是如何利用 TCP 重置攻擊的?這一段略過(guò),原因你懂得,感興趣的請(qǐng)直接看原文。

2. TCP 重置攻擊的工作原理

在 TCP 重置攻擊中,攻擊者通過(guò)向通信的一方或雙方發(fā)送偽造的消息,告訴它們立即斷開連接,從而使通信雙方連接中斷。正常情況下,如果客戶端收發(fā)現(xiàn)到達(dá)的報(bào)文段對(duì)于相關(guān)連接而言是不正確的,TCP 就會(huì)發(fā)送一個(gè)重置報(bào)文段,從而導(dǎo)致 TCP 連接的快速拆卸。

TCP 重置攻擊利用這一機(jī)制,通過(guò)向通信方發(fā)送偽造的重置報(bào)文段,欺騙通信雙方提前關(guān)閉 TCP 連接。如果偽造的重置報(bào)文段完全逼真,接收者就會(huì)認(rèn)為它有效,并關(guān)閉 TCP 連接,防止連接被用來(lái)進(jìn)一步交換信息。服務(wù)端可以創(chuàng)建一個(gè)新的 TCP 連接來(lái)恢復(fù)通信,但仍然可能會(huì)被攻擊者重置連接。萬(wàn)幸的是,攻擊者需要一定的時(shí)間來(lái)組裝和發(fā)送偽造的報(bào)文,所以一般情況下這種攻擊只對(duì)長(zhǎng)連接有殺傷力,對(duì)于短連接而言,你還沒攻擊呢,人家已經(jīng)完成了信息交換。

從某種意義上來(lái)說(shuō),偽造 TCP 報(bào)文段是很容易的,因?yàn)?TCP/IP 都沒有任何內(nèi)置的方法來(lái)驗(yàn)證服務(wù)端的身份。有些特殊的 IP 擴(kuò)展協(xié)議(例如 IPSec)確實(shí)可以驗(yàn)證身份,但并沒有被廣泛使用??蛻舳酥荒芙邮?qǐng)?bào)文段,并在可能的情況下使用更高級(jí)別的協(xié)議(如 TLS)來(lái)驗(yàn)證服務(wù)端的身份。但這個(gè)方法對(duì) TCP 重置包并不適用,因?yàn)?TCP 重置包是 TCP 協(xié)議本身的一部分,無(wú)法使用更高級(jí)別的協(xié)議進(jìn)行驗(yàn)證。

盡管偽造 TCP 報(bào)文段很容易,但偽造正確的 TCP 重置報(bào)文段并完成攻擊卻并不容易。為了理解這項(xiàng)工作的難度,我們需要先了解一下 TCP 協(xié)議的工作原理。

3. TCP 協(xié)議工作原理

TCP 協(xié)議的目標(biāo)是向客戶端發(fā)送一份完整的數(shù)據(jù)副本。例如,如果我的服務(wù)器通過(guò) TCP 連接向你的計(jì)算機(jī)發(fā)送我的網(wǎng)站的 HTML,你的計(jì)算機(jī)的 TCP 協(xié)議棧應(yīng)該能夠以我發(fā)送的形式和順序輸出HTML。

 

然而現(xiàn)實(shí)生活中我的 HTML 內(nèi)容并不是按順序發(fā)送的,它被分解成許多小塊(稱為 TCP 分組),每個(gè)小塊在網(wǎng)絡(luò)上被單獨(dú)發(fā)送,并被重新組合成原來(lái)發(fā)送的順序。這種重新組合后的輸出被稱為 TCP 字節(jié)流。

 

將分組重建成字節(jié)流并不簡(jiǎn)單,因?yàn)榫W(wǎng)絡(luò)是不可靠的。TCP分組可能會(huì)被丟棄,可能不按發(fā)送的順序到達(dá)客戶端,也可能會(huì)被重復(fù)發(fā)送、報(bào)文損壞等等。因此,TCP 協(xié)議的職責(zé)是在不可靠的網(wǎng)絡(luò)上提供可靠的通信。TCP 通過(guò)要求連接雙方保持密切聯(lián)系,持續(xù)報(bào)告它們接收到了哪些數(shù)據(jù)來(lái)實(shí)現(xiàn)可靠通信,這樣服務(wù)端就能夠推斷出客戶端尚未接收到的數(shù)據(jù),并重新發(fā)送丟失的數(shù)據(jù)。

為了進(jìn)一步理解這個(gè)過(guò)程,我們需要了解服務(wù)端和客戶端是如何使用序列號(hào)(sequence numbers)來(lái)標(biāo)記和跟蹤數(shù)據(jù)的。

TCP 序列號(hào)

TCP 協(xié)議的通信雙方, 都必須維護(hù)一個(gè)序列號(hào)(sequence numbers),對(duì)于客戶端來(lái)說(shuō),它會(huì)使用服務(wù)端的序列號(hào)來(lái)將接收到的數(shù)據(jù)按照發(fā)送的順序排列。

 

當(dāng)通信雙方建立 TCP 連接時(shí),客戶端與服務(wù)端都會(huì)向?qū)Ψ桨l(fā)送一個(gè)隨機(jī)的初始序列號(hào),這個(gè)序列號(hào)標(biāo)識(shí)了其發(fā)送數(shù)據(jù)流的第一個(gè)字節(jié)。TCP 報(bào)文段包含了 TCP 頭部,它是附加在報(bào)文段開頭的元數(shù)據(jù),序列號(hào)就包含在 TCP 頭部中。由于 TCP 連接是雙向的,雙方都可以發(fā)送數(shù)據(jù),所以 TCP 連接的雙方既是發(fā)送方也是接收方,每一方都必須分配和管理自己的序列號(hào)。

確認(rèn)應(yīng)答

當(dāng)接收方收到一個(gè) TCP 報(bào)文段時(shí),它會(huì)向發(fā)送方返回一個(gè) ACK 應(yīng)答報(bào)文(同時(shí)將 TCP 頭部的 ACK 標(biāo)志位置 1),這個(gè) ACK 號(hào)就表示接收方期望從發(fā)送方收到的下一個(gè)字節(jié)的序列號(hào)。發(fā)送方利用這個(gè)信息來(lái)推斷接收方已經(jīng)成功接收到了序列號(hào)為 ACK 之前的所有字節(jié)。

TCP 頭部格式如下圖所示:

 

一個(gè)確認(rèn)應(yīng)答報(bào)文的 TCP 頭部必須包含兩個(gè)部分:

  • ACK 標(biāo)志位置位 1
  • 包含確認(rèn)應(yīng)答號(hào)(ACK number)

TCP 總共有 6 個(gè)標(biāo)志位,下文就會(huì)講到其中的 RST 標(biāo)志位。

 

TCP 頭部包含了多個(gè)選項(xiàng),其中有一個(gè)選擇確認(rèn)選項(xiàng)(SACK),如果使用該選項(xiàng),那么當(dāng)接收方收到了某個(gè)范圍內(nèi)的字節(jié)而不是連續(xù)的字節(jié)時(shí),就會(huì)發(fā)送 SACK 告知對(duì)方。例如,只收到了字節(jié) 1000~3000 和 4000~5000,但沒有收到 3001~3999。為了簡(jiǎn)單起見,下文討論 TCP 重置攻擊時(shí)將忽略選擇確認(rèn)選項(xiàng)。

如果發(fā)送方發(fā)送了報(bào)文后在一段時(shí)間內(nèi)沒有收到 ACK,就認(rèn)為報(bào)文丟失了,并重新發(fā)送報(bào)文,用相同的序列號(hào)標(biāo)記。這就意味著,如果接收方收到了重復(fù)的報(bào)文,可以使用序列號(hào)來(lái)判斷是否見過(guò)這個(gè)報(bào)文,如果見過(guò)則直接丟棄。網(wǎng)絡(luò)環(huán)境是錯(cuò)綜復(fù)雜的,往往并不是如我們期望的一樣,先發(fā)送的數(shù)據(jù)包,就先到達(dá)目標(biāo)主機(jī),反而它很騷,可能會(huì)由于網(wǎng)絡(luò)擁堵等亂七八糟的原因,會(huì)使得舊的數(shù)據(jù)包,先到達(dá)目標(biāo)主機(jī)。一般分兩種情況:

  1. 發(fā)送的數(shù)據(jù)包丟失了
  2. 發(fā)送的數(shù)據(jù)包被成功接收,但返回的 ACK 丟失了

這兩種情況對(duì)發(fā)送方來(lái)說(shuō)其實(shí)是一樣的,發(fā)送方并不能區(qū)分是哪種情況,所以只能重新發(fā)送數(shù)據(jù)包。

 

只要不頻繁重復(fù)發(fā)送數(shù)據(jù),額外的開銷基本可以忽略。

為偽造的重置包選擇序列號(hào)

構(gòu)建偽造的重置包時(shí)需要選擇一個(gè)序列號(hào)。接收方可以接收序列號(hào)不按順序排列的報(bào)文段,但這種容忍是有限度的,如果報(bào)文段的序列號(hào)與它期望的相差甚遠(yuǎn),就會(huì)被直接丟棄。

因此,一個(gè)成功的 TCP 重置攻擊需要構(gòu)建一個(gè)可信的序列號(hào)。但什么才是可信的序列號(hào)呢?對(duì)于大多數(shù)報(bào)文段(除了重置包,即 RST 包)來(lái)說(shuō),序列號(hào)是由接收方的接收窗口大小決定的。

TCP 滑動(dòng)窗口大小

想象一下,將一臺(tái)上世紀(jì) 90 年代初的古老計(jì)算機(jī),連接到現(xiàn)代千兆光纖網(wǎng)絡(luò)。閃電般快速的網(wǎng)絡(luò)可以以令人瞠目結(jié)舌的速度向這臺(tái)古老的計(jì)算機(jī)傳送數(shù)據(jù),速度遠(yuǎn)遠(yuǎn)超過(guò)該計(jì)算機(jī)的處理能力。但并沒有什么卵用,因?yàn)橹挥薪邮辗浇邮詹⑻幚砹藞?bào)文,才能認(rèn)為這個(gè)報(bào)文已經(jīng)被收到了。

 

TCP 協(xié)議棧有一個(gè)緩沖區(qū),新到達(dá)的數(shù)據(jù)被放到緩沖區(qū)中等待處理。但緩沖區(qū)的大小是有限的,如果接收方的處理速度跟不上發(fā)送方的發(fā)送速度,緩沖區(qū)就會(huì)被填滿。一旦緩沖區(qū)被填滿,多余的數(shù)據(jù)就會(huì)被直接丟棄,也不會(huì)返回 ACK。因此一旦接收方的緩沖區(qū)有了空位,發(fā)送方必須重新發(fā)送數(shù)據(jù)。也就是說(shuō),如果接收方的處理速度跟不上,發(fā)送方的發(fā)送速度再快也沒用。

緩沖區(qū)到底有多大?發(fā)送方如何才能知道什么時(shí)候可以一次發(fā)送更多的數(shù)據(jù),什么時(shí)候該一次發(fā)送很少的數(shù)據(jù)?這就要靠 TCP 滑動(dòng)窗口了。接收方的滑動(dòng)窗口大小是指發(fā)送方無(wú)需等待確認(rèn)應(yīng)答,可以持續(xù)發(fā)送數(shù)據(jù)的最大值。 假設(shè)接收方的通告窗口大小為 100,000 字節(jié),那么發(fā)送方可以無(wú)需等待確認(rèn)應(yīng)答,持續(xù)發(fā)送 100,000 個(gè)字節(jié)。再假設(shè)當(dāng)發(fā)送方發(fā)送第 100,000 個(gè)字節(jié)時(shí),接收方已經(jīng)發(fā)送了前 10,000 個(gè)字節(jié)的 ACK,這就意味著窗口中還有 90,000 個(gè)字節(jié)未被確認(rèn),發(fā)送方還可以再持續(xù)發(fā)送 10,000 個(gè)字節(jié)。如果發(fā)送了 10,000 個(gè)字節(jié)的過(guò)程中沒有收到任何的 ACK,那么接收方的滑動(dòng)窗口將被填滿,發(fā)送方將停止發(fā)送新數(shù)據(jù)(可以繼續(xù)發(fā)送之前丟失的數(shù)據(jù)),直到收到相關(guān)的 ACK 才可以繼續(xù)發(fā)送。

 

TCP 連接雙方會(huì)在建立連接的初始握手階段通告對(duì)方自己窗口的大小,后續(xù)還可以動(dòng)態(tài)調(diào)整。TCP 緩沖區(qū)大的服務(wù)器可能會(huì)聲明一個(gè)大窗口,以便最大限度提高吞吐量。TCP 緩沖區(qū)小的服務(wù)器可能會(huì)被迫聲明一個(gè)小窗口,這樣做會(huì)犧牲一定的吞吐量,但為了防止接收方的 TCP 緩沖區(qū)溢出,還是很有必要的。

 

換個(gè)角度來(lái)看,TCP 滑動(dòng)窗口大小是對(duì)網(wǎng)絡(luò)中可能存在的未確認(rèn)數(shù)據(jù)量的硬性限制。我們可以用它來(lái)計(jì)算發(fā)送方在某一特定時(shí)間內(nèi)可能發(fā)送的最大序列號(hào)(max_seq_no):

  1. max_seq_no = max_acked_seq_no + window_size 

其中 max_acked_seq_no 是接收方發(fā)送的最大 ACK 號(hào),它表示發(fā)送方知道接收方已經(jīng)成功接收的最大序列號(hào)。window_size 是窗口大小,它表示允許發(fā)送方最多發(fā)送的未被確認(rèn)的字節(jié)。所以發(fā)送方可以發(fā)送的最大序列號(hào)是:max_acked_seq_no + window_size。

TCP 規(guī)范規(guī)定,接收方應(yīng)該忽略任何序列號(hào)在接收窗口之外的數(shù)據(jù)。例如,如果接收方確認(rèn)了所有序列號(hào)在 15,000 以下的字節(jié),且接收窗口大小為 30,000,那么接下來(lái)接收方只能接收序列號(hào)范圍在 15,000 ~ 45,000 之間的數(shù)據(jù)。如果一個(gè)報(bào)文段的部分?jǐn)?shù)據(jù)在窗口內(nèi),另一部分?jǐn)?shù)據(jù)在窗口外,那么窗口內(nèi)的數(shù)據(jù)將被接收確認(rèn),窗口外的數(shù)據(jù)將被丟棄。注意:這里忽略了選擇確認(rèn)選項(xiàng),再?gòu)?qiáng)調(diào)一遍!

對(duì)于大多數(shù) TCP 報(bào)文段來(lái)說(shuō),滑動(dòng)窗口的規(guī)則告訴了發(fā)送方自己可以接收的序列號(hào)范圍。但對(duì)于重置報(bào)文來(lái)說(shuō),序列號(hào)的限制更加嚴(yán)格,這是為了抵御一種攻擊叫做盲目 TCP 重置攻擊(blind TCP reset attack),下文將會(huì)解釋。

TCP 重置報(bào)文段的序列號(hào)

對(duì)于 TCP 重置報(bào)文段來(lái)說(shuō),接收方對(duì)序列號(hào)的要求更加嚴(yán)格,只有當(dāng)其序列號(hào)正好等于下一個(gè)預(yù)期的序列號(hào)時(shí)才能接收。繼續(xù)搬出上面的例子,接收方發(fā)送了一個(gè)確認(rèn)應(yīng)答,ACK 號(hào)為 15,000。如果接下來(lái)收到了一個(gè)重置報(bào)文,那么其序列號(hào)必須是 15,000 才能被接收。

 

如果重置報(bào)文的序列號(hào)超出了接收窗口范圍,接收方就會(huì)直接忽略該報(bào)文;如果其序列號(hào)在接收窗口范圍內(nèi),那么接收方就會(huì)返回一個(gè) challenge ACK,告訴發(fā)送方重置報(bào)文段的序列號(hào)是錯(cuò)誤的,并告之正確的序列號(hào),發(fā)送方可以利用 challenge ACK 中的信息來(lái)重新構(gòu)建和發(fā)送重置報(bào)文。

其實(shí)在 2010 年之前,TCP 重置報(bào)文段和其他報(bào)文段的序列號(hào)限制規(guī)則一樣,但無(wú)法抵御盲目 TCP 重置攻擊,后來(lái)才采取這些措施施加額外的限制。

盲目 TCP 重置攻擊如果攻擊者能夠截獲通信雙方正在交換的信息,攻擊者就能讀取其數(shù)據(jù)包上的序列號(hào)和確認(rèn)應(yīng)答號(hào),并利用這些信息得出偽裝的 TCP 重置報(bào)文段的序列號(hào)。相反,如果無(wú)法截獲通信雙方的信息,就無(wú)法確定重置報(bào)文段的序列號(hào),但仍然可以批量發(fā)出盡可能多不同序列號(hào)的重置報(bào)文,以期望猜對(duì)其中一個(gè)序列號(hào)。這就是所謂的盲目 TCP 重置攻擊(blind TCP reset attack)。

在 2010 年之前 TCP 的原始版本中,攻擊者只需要猜對(duì)接收窗口內(nèi)的隨便哪一個(gè)序列號(hào)即可,一般只需發(fā)送幾萬(wàn)個(gè)報(bào)文段就能成功。采取額外限制的措施后,攻擊者需要發(fā)送數(shù)以百萬(wàn)計(jì)的報(bào)文段才有可能猜對(duì)序列號(hào),這幾乎是很難成功的。更多細(xì)節(jié)請(qǐng)參考 RFC-5963[2]。

4. 模擬攻擊

以下實(shí)驗(yàn)是在 OSX 系統(tǒng)中完成的,其他系統(tǒng)請(qǐng)自行測(cè)試。

現(xiàn)在來(lái)總結(jié)一下偽造一個(gè) TCP 重置報(bào)文要做哪些事情:

  • 嗅探通信雙方的交換信息。
  • 截獲一個(gè) ACK 標(biāo)志位置位 1 的報(bào)文段,并讀取其 ACK 號(hào)。
  • 偽造一個(gè) TCP 重置報(bào)文段(RST 標(biāo)志位置為 1),其序列號(hào)等于上面截獲的報(bào)文的 ACK號(hào)。這只是理想情況下的方案,假設(shè)信息交換的速度不是很快。大多數(shù)情況下為了增加成功率,可以連續(xù)發(fā)送序列號(hào)不同的重置報(bào)文。
  • 將偽造的重置報(bào)文發(fā)送給通信的一方或雙方,時(shí)其中斷連接。

為了實(shí)驗(yàn)簡(jiǎn)單,我們可以使用本地計(jì)算機(jī)通過(guò) localhost 與自己通信,然后對(duì)自己進(jìn)行 TCP 重置攻擊。需要以下幾個(gè)步驟:

在兩個(gè)終端之間建立一個(gè) TCP 連接。

編寫一個(gè)能嗅探通信雙方數(shù)據(jù)的攻擊程序。

修改攻擊程序,偽造并發(fā)送重置報(bào)文。

下面正式開始實(shí)驗(yàn)。

建立 TCP 連接

可以使用 netcat[3] 工具來(lái)建立 TCP 連接,這個(gè)工很多操作系統(tǒng)都預(yù)裝了。打開第一個(gè)終端窗口,運(yùn)行以下命令:

  1. $ nc -nvl 8000 

這個(gè)命令會(huì)啟動(dòng)一個(gè) TCP 服務(wù),監(jiān)聽端口為 8000。接著再打開第二個(gè)終端窗口,運(yùn)行以下命令:

  1. $ nc 127.0.0.1 8000 

該命令會(huì)嘗試與上面的服務(wù)建立連接,在其中一個(gè)窗口輸入一些字符,就會(huì)通過(guò) TCP 連接發(fā)送給另一個(gè)窗口并打印出來(lái)。

 

嗅探流量

編寫一個(gè)攻擊程序,使用 Python 網(wǎng)絡(luò)庫(kù) scapy 來(lái)讀取兩個(gè)終端窗口之間交換的數(shù)據(jù),并將其打印到終端上。完整的代碼參考我的 GitHub 倉(cāng)庫(kù)[4],代碼的核心是調(diào)用 scapy 的嗅探方法:

  1. t = sniff( 
  2.         iface='lo0'
  3.         lfilter=is_packet_tcp_client_to_server(localhost_ip, localhost_server_port, localhost_ip), 
  4.         prn=log_packet, 
  5.         count=50) 

這段代碼告訴 scapy 在 lo0 網(wǎng)絡(luò)接口上嗅探數(shù)據(jù)包,并記錄所有 TCP 連接的詳細(xì)信息。

  • iface : 告訴 scapy 在 lo0(localhost)網(wǎng)絡(luò)接口上進(jìn)行監(jiān)聽。
  • lfilter : 這是個(gè)過(guò)濾器,告訴 scapy 忽略所有不屬于指定的 TCP 連接(通信雙方皆為 localhost,且端口號(hào)為 8000)的數(shù)據(jù)包。
  • prn : scapy 通過(guò)這個(gè)函數(shù)來(lái)操作所有符合 lfilter 規(guī)則的數(shù)據(jù)包。上面的例子只是將數(shù)據(jù)包打印到終端,下文將會(huì)修改函數(shù)來(lái)偽造重置報(bào)文。
  • count : scapy 函數(shù)返回之前需要嗅探的數(shù)據(jù)包數(shù)量。

發(fā)送偽造的重置報(bào)文

下面開始修改程序,發(fā)送偽造的 TCP 重置報(bào)文來(lái)進(jìn)行 TCP 重置攻擊。根據(jù)上面的解讀,只需要修改 prn 函數(shù)就行了,讓其檢查數(shù)據(jù)包,提取必要參數(shù),并利用這些參數(shù)來(lái)偽造 TCP 重置報(bào)文并發(fā)送。

例如,假設(shè)該程序截獲了一個(gè)從(src_ip, src_port)發(fā)往 (dst_ip, dst_port)的報(bào)文段,該報(bào)文段的 ACK 標(biāo)志位已置為 1,ACK 號(hào)為 100,000。攻擊程序接下來(lái)要做的是:

  • 由于偽造的數(shù)據(jù)包是對(duì)截獲的數(shù)據(jù)包的響應(yīng),所以偽造數(shù)據(jù)包的源 IP/Port 應(yīng)該是截獲數(shù)據(jù)包的目的 IP/Port,反之亦然。
  • 將偽造數(shù)據(jù)包的 RST 標(biāo)志位置為 1,以表示這是一個(gè)重置報(bào)文。
  • 將偽造數(shù)據(jù)包的序列號(hào)設(shè)置為截獲數(shù)據(jù)包的 ACK 號(hào),因?yàn)檫@是發(fā)送方期望收到的下一個(gè)序列號(hào)。
  • 調(diào)用 scapy 的 send 方法,將偽造的數(shù)據(jù)包發(fā)送給截獲數(shù)據(jù)包的發(fā)送方。

對(duì)于我的程序而言,只需將這一行[5]取消注釋,并注釋這一行的上面一行,就可以全面攻擊了。按照步驟 1 的方法設(shè)置 TCP 連接,打開第三個(gè)窗口運(yùn)行攻擊程序,然后在 TCP 連接的其中一個(gè)終端輸入一些字符串,你會(huì)發(fā)現(xiàn) TCP 連接被中斷了!

 

進(jìn)一步實(shí)驗(yàn)

  1. 可以繼續(xù)使用攻擊程序進(jìn)行實(shí)驗(yàn),將偽造數(shù)據(jù)包的序列號(hào)加減 1 看看會(huì)發(fā)生什么,是不是確實(shí)需要和截獲數(shù)據(jù)包的 ACK 號(hào)完全相同。
  2. 打開 Wireshark,監(jiān)聽 lo0 網(wǎng)絡(luò)接口,并使用過(guò)濾器 ip.src == 127.0.0.1 && ip.dst == 127.0.0.1 && tcp.port == 8000 來(lái)過(guò)濾無(wú)關(guān)數(shù)據(jù)。你可以看到 TCP 連接的所有細(xì)節(jié)。
  3. 在連接上更快速地發(fā)送數(shù)據(jù)流,使攻擊更難執(zhí)行。

總的來(lái)說(shuō),TCP 重置攻擊既深?yuàn)W又簡(jiǎn)單,祝你實(shí)驗(yàn)順利。

文章鏈接:https://mp.weixin.qq.com/s/crgraQv6qQ-aVJd9L2u1eg

責(zé)任編輯:武曉燕 來(lái)源: 云原生實(shí)驗(yàn)室
相關(guān)推薦

2019-07-09 06:13:09

TCPHTTP網(wǎng)絡(luò)協(xié)議

2013-03-06 17:27:36

僵尸網(wǎng)絡(luò)

2009-09-04 08:17:04

Windows 7序列號(hào)檢查器

2009-09-14 08:36:21

Windows 7正版序列號(hào)

2011-04-19 09:25:51

2022-01-14 13:53:03

TCP進(jìn)程窗口

2017-11-22 09:46:53

分布式架構(gòu)系統(tǒng)

2012-11-20 12:38:29

2011-04-19 09:30:33

2009-02-09 15:51:48

Windows 7序列號(hào)免費(fèi)

2009-12-04 13:56:58

安裝Windows 7

2010-01-11 17:49:36

VB.NET硬盤序列號(hào)

2010-09-02 17:27:18

SQL Server安裝

2019-11-14 16:05:29

TCPHTTP前端

2009-12-07 17:17:00

Windows 7操作

2025-07-25 01:00:00

Redis+接口冪等性

2019-10-12 00:03:07

MyCat數(shù)據(jù)庫(kù)分庫(kù)分表

2023-12-29 08:22:52

lsblk命令存儲(chǔ)

2019-12-20 09:31:23

TCPHTTP瀏覽器

2022-08-26 01:10:32

TCPSYNLinux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)