TCP重置攻擊
TCP重置攻擊指的是使用偽造的TCP重置包干擾用戶和網站的連接。這個技術可以在善意的防火牆中應用,但也可用於網絡審查或是攻擊,惡意中斷Internet連接。中國的防火長城便運用了這個技術進行TCP關鍵字阻斷。使用IPsec可以避免TCP重置攻擊。
目錄
背景
本質上,Internet是用於單個計算機交換電子消息或IP數據包的系統。該系統包括用於承載消息的硬件(例如銅纜和光纖電纜)和用于格式化消息的形式化系統,稱為「協議」。互聯網上使用的基本協議是IP協議,通常與其他協議(例如TCP或UDP協議)結合使用。TCP/IP是用於電子郵件和Web瀏覽的協議集。每個協議都有一個信息塊,稱為包頭,包含在每個數據包的開頭附近。包頭含有關哪台計算機發送了數據包,哪台計算機應接收它,數據包大小等信息。
當兩台計算機之間需要雙向虛擬連接時,TCP與IP一起使用。(UDP是無連接IP協議。)兩台機器上的TCP軟件將通過交換數據包流進行通信(例如,裝有瀏覽器的電腦和Web服務器)。使用TCP連接為計算機提供了一種簡便的方法來交換對於單個數據包來說太大的數據項,例如視頻剪輯,電子郵件附件或音樂文件。儘管某些網頁對於單個數據包來說足夠小,但為方便起見,它們也是通過TCP連接發送的。
TCP重置
在TCP連接的數據包流中,每個數據包都包含一個TCP包頭。這些包頭中的每一個都包含一個稱為「復位」(RST)標誌的位。在大多數數據包中,該位設置為0,並且無效;但是,如果此位設置為1,則向接收計算機指示該計算機應立即停止使用TCP連接;它不應使用連接的標識號(端口)發送更多數據包,並丟棄接收到的帶有包頭的其他數據包,這些包頭指示它們屬於該連接。TCP重置基本上會立即終止TCP連接。
按照最初的設計,這是一個有用的工具。常見的應用是在進行TCP連接時計算機(計算機A)崩潰的情況。另一端的計算機(計算機B)將繼續發送TCP數據包,因為它不知道計算機A已崩潰。重新啟動計算機A後,它將從舊的崩潰前連接接收數據包。計算機A沒有這些數據包的上下文,也無法知道如何處理這些數據包,因此它可以向計算機B發送TCP重置。此重置使計算機B知道該連接不再起作用。計算機B上的用戶現在可以嘗試其他連接或採取其他措施[1]。
偽造TCP重置
在上述情況下,TCP重置是由作為連接端點之一的計算機發送的。但操作中,第三台計算機可以監視連接上的TCP數據包,然後將包含TCP重置的「偽造」數據包發送到一個或兩個端點。偽造數據包中的報頭必須錯誤地表明它來自端點,而不是偽造者。此信息包括端點IP地址和端口號。IP和TCP包頭中的每個字段都必須設置為令人信服的偽造值,以進行偽重置,以欺騙端點關閉TCP連接。正確格式化的偽造TCP重置可能是中斷偽造者可以監視的任何TCP連接的非常有效的方法[2]。
合法使用TCP重置注入
偽造的TCP重置的一個明顯的應用是在未經擁有端點的兩方同意的情況下惡意破壞TCP連接。但是,也有人設計了使用偽造TCP重置來保護網絡安全的系統。1995年被演示的一個原型「 Buster」軟件包,該軟件包會將偽造的重置發送到使用短列表中的端口號的任何TCP連接。Linux志願者在2000年提出了在Linux防火牆上實現此功能,而開源的Snort早在2003年就使用TCP重置來中斷可疑連接。
視頻
TCP重置攻擊 相關視頻
參考文獻
- ↑ TCP 重置攻擊的工作原理 ,知乎
- ↑ 偽造tcp數據包(tcp校驗和算法) ,CSDN博客, 2007-10-16