Lab Overview
實驗環境下載:https://seedsecuritylabs.org/Labs_16.04/Networking/TCP_Attacks/
本實驗涵蓋以下課題:
• TCP SYN flood attack, and SYN cookies
• TCP reset attack
• TCP session hijacking attack
• Reverse shell
LabEnvironment
3台主機在同一內網中
工具:
Netwox:netwox 是由 lauconstantin 開發的一款網絡工具集,適用群體為網絡管理員和網絡黑客,它可以創造任意的 TCP、UDP 和 IP 數據報文,以實現網絡欺騙,並且可以在 Linux 和 Windows 系統中運行。Kali Linux 系統自帶 netwox 工具。
Scapy:Scapy是一款強大的交互式數據包處理工具、數據包生成器、網絡掃描器、網絡發現工具和包嗅探工具。Kali Linux 系統自帶 Scapy工具。項目地址:https://github.com/secdev/scapy
LabTasks
Task1: SYNFloodingAttack
我們的目標是攻擊服務器,阻止它接受來自任何主機的telnet連接。
在攻擊之前,我們首先做一個telnet 從用戶機器到服務器,之后我們將檢查是否SYN洪水攻擊影響存在的連接。
同時,我們需要在服務器上關閉SYN cookie,SYN cookie是抵御SYN洪泛攻擊的一種防御機制。如果機器檢測到它受到了SYN洪泛攻擊,該機制就會啟動。可以使用sysctl命令打開/關閉SYN cookie機制:
在開始攻擊之前,檢查一下當前服務器上的半開放連接數:
發現都是listen,並沒有SYN_RECV
使用netwox 76 來進行SYN flooding攻擊
-s選項選擇raw意味着在IP4/IP6級別上進行欺騙,而不是在鏈接級別上進行欺騙
再看一下服務器網絡連接情況:netstat -ant
已經遭受SYN泛洪攻擊
用戶機器無法telnet到服務器:
SYN flooding攻擊成功。
Task2: TCP RST Attacks on telnet and ssh Connections
在這個任務中,我們需要啟動TCP RST攻擊來中斷A和B之間的現有telnet連接。然后,嘗試對ssh連接進行相同的攻擊。
關閉TCP連接的方式:
(1)當TCP連接的一端(比方說A)沒有數據要發送到另一端時,它會向另一端(比方說B)發送一個FIN包,FIN是TCP報頭中的六個代碼位之一。B收到包后,它用一個ACK包進行應答。這樣,連接的A-to-B方向關閉,但另一個方向(B-to-A)仍然打開。如果b想要關閉那個方向,它發送一個FIN包給a, a會回復一個ACK包。此時,整個TCP連接被關閉。這是TCP FIN協議[Postel, 1981)
(2)一方只需向另一方發送一個TCP RST包,立即斷開連接。RS T也是TCP報頭中的六個代碼位之一。這種方法主要用於緊急情況,當沒有時間執行FIN協議時。當檢測到一些錯誤時,還會發送RST數據包。例如,在針對TCP服務器的SYN洪泛攻擊中,如果欺騙的源IP地址確實屬於正在運行的計算機,那么它將從服務器接收SYN + ACK包。但是,由於機器從來沒有初始化過連接請求,它知道有什么地方出錯了,因此,根據協議,它用一個RST包進行應答,基本上就是告訴服務器關閉半開的連接。因此,RST對於TCP協議非常重要。
Telnet服務:
首先在用戶機器上與服務器建立telnet連接: seed dees
使用netwox 78 來進行TCP RST攻擊
用戶機器無法與服務器建立telnet連接:
攻擊成功。
SSH服務:
首先在用戶機器上與服務器建立ssh連接: seed dees
使用netwox 78 來進行TCP RST攻擊
用戶機器無法與服務器建立ssh連接:
攻擊成功。
Task4: TCP Session Hijacking
TCP會話劫持攻擊的目的是通過向會話注入惡意內容來劫持兩個受害者之間的現有TCP連接(會話)。如果該連接是telnet會話,攻擊者可以將惡意命令(例如刪除重要文件)注入該會話,從而導致受害者執行惡意命令。下圖描述了攻擊的工作方式。在本任務中,我們需要演示如何在兩台計算機之間劫持telnet會話。目標是讓telnet服務器運行來自我們的惡意命令
由於TCP協議沒有對TCP的數據包驗證,所以攻擊者只要知道⼀個TCP連接中的seq和ack信息后就可以很容易的偽造數據包冒充受害者進行數據傳輸,如果攻擊者發送正確seq和ack的數據包給TCP連接的對方,TCP會話便被攻擊者劫持,受害者再次發送TCP數據包的時候seq和ack都不正確,也就是失去TCP的會話。
開始實驗:
先在攻擊機上開啟wireshark
用戶機器連接服務器telnet
找到最后一個數據包的源ip、目標ip、源端口、目的端口、Next sequence number:
使用netwox 40 來進行TCP會話劫持攻擊(數據要以16進制形式發送)
發送之后,可以在wireshark中看到我們偽造的數據成功發送:
攻擊成功。
Task5: Creating Reverse Shell usingTCP Session Hijacking
前幾步和Task4一樣。
在攻擊機開啟監聽
將反彈shell命令轉換成16進制
使用netwox 40 來進行TCP會話劫持攻擊
netcat接受到反彈回來的shell