1. 程式人生 > >TCP/IP協議攻擊實驗3

TCP/IP協議攻擊實驗3

實驗環境:
Linux ubuntu 3.13.0-24-generic 
#46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 
x86_64 x86_64 x86_64 GNU/Linux

安裝工具

Adobe Flash瀏覽器外掛安裝

hunt嗅探工具安裝

使用命令sudo apt-get install hunt即可。

實驗五、對視訊流應用程式的TCP RST攻擊

實驗原理

有三個條件可以產生RST包:
1. 建立連線的SYN到達某埠,但是該埠上沒有正在監聽的服務
如:IP為192.168.1.33的主機上並沒有開啟WEB服務(埠號為0x50),這時我們通過IE去訪問192.168.1.33,通過Wireshark抓包,可以看到,對此SYN包的回覆為RST。說明此伺服器(即IP192.168.1.33)是存在的,不過其上並沒有執行WEB Server(如apache)的程式
2. TCP想取消一個已有連線
基於什麼樣的情況才會取消一個已有的連線?
3. TCP接收到了一個根本不存在的的連線上的分節
我們知道,TCP在資料傳輸前,要通過三路握手(three-way handshake)建立連線,即連線建立起後,伺服器和客戶端都有一個關於此連線的描述,具體形式表現為套介面對,如果收到的某TCP分節,根據源 IP,源tcp port number,及目的IP,目的tcp port number在本地(指伺服器或客戶端)找不到相應的套介面對,TCP則認為在一個不存在的連線上收到了分節,說明此連線已錯,要求重新建立連線,於是發出了RST的TCP包!

虛擬機器MAC地址和IP地址

Machine Index HWAddr IPAddr
1 00:1c:42:6f:5b:ee 10.211.55.27
2 00:1c:42:cc:87:b6 10.211.55.29
3 00:1c:42:2e:73:dc 10.211.55.28

用虛擬機器#3開啟視訊播放頁面

我使用虛擬機器#3作為被攻擊方,先隨便開啟一個視訊網站,然後使用命令netstat | grep tcp看看建立的TCP連線情況。

這裡寫圖片描述

可以看到在播放網頁視訊的時候,建立了很多TCP連線。

使用虛擬機器#1進行攻擊

虛擬機器#1作為攻擊方,傳送RST包給虛擬機器#3。

攻擊命令為sudo netwox 78 -i "10.211.55.28"。(注意:這裡一定要用sudo命令,否則會出現沒有許可權訪問的錯誤。

這裡寫圖片描述

使用了攻擊命令之後,虛擬機器#3的視訊播放馬上停止了,然後再重新整理網頁就發現出錯了,這個時候我們再看看TCP連線,還是使用之前的命令,發現之前建立的TCP連線已經斷開了,說明攻擊成功。

實驗六、ICMP Blind Connection-Reset and Source-Quench攻擊

實驗原理

ICMP資料報可以進行 TCP/RESET攻擊,為了達到這個目的,黑客會發送一個ICMP報文給通訊雙方,暗示他們雙方的TCP通訊端出現硬體錯誤,連線必須終止。

虛擬機器#2和虛擬機器#3簡歷telnet連線

把虛擬機器#2作為伺服器端,虛擬機器#3作為客戶端,建立telnet連線。

這裡寫圖片描述

虛擬機器#1進行ICMP包偽造

虛擬機器#1作為攻擊方,攻擊虛擬機器#2,傳送偽造的ICMP包。命令為:

sudo netwox 82 -d "Eth0" -f "host 10.211.55.29 and tcp port 23" --code 2

進行攻擊之後,虛擬機器#2和虛擬機器#3都能捕捉到相應的ICMP資料包。

這裡寫圖片描述

這裡寫圖片描述

實驗結果

在攻擊之後,雖然受到了惡意的ICMP資料包,但是telnet並沒有斷開連線。資料上說是Ubuntu 10.xx的版本已經修復了這個漏洞。

實驗七、TCP報文劫持

攻擊原理

TCP報文劫持攻擊的目的是劫持一個現存的兩臺主機直接的TCP連線,然後在這個劫持的報文中注入惡意的內容。如果這個連線是一個Telnet連線,那麼黑客可以在這個劫持的報文中注入惡意的命令,讓被劫持的主機執行這個惡意的命令。

在沒有建立telnet連線時看看hunt工具

使用ifconfig命令看看網絡卡是在哪個硬體上,我的是在eth1上,所以使用的嗅探命令是sudo hunt -i eth1

輸入命令w看看建立的連線情況。

這裡寫圖片描述

可以看到並沒有建立任何連線。

建立telnet連線

虛擬機器#2和虛擬機器#3按照上一個實驗的方法建立telnet連線,可以從虛擬機器#1中的wireshark中看到telnet連線的資料包,按理說也可以在hunt工具中看到。

這裡寫圖片描述

我們再在hunt中輸入w命令,可以看到接收到的包數已經增加了,但是連線還是沒有,可能ubuntu的telnet設定了保護的機制,所以並沒有攻擊成功。

這裡寫圖片描述

注意:若使用hunt工具的w命令能嗅探到虛擬機器#2和虛擬機器#3之間的telnet連線,便可以繼續使用s命令來劫持這個telnet連線。劫持到當前的telnet連線後,向該報文中注入cat /etc/passwd 命令,便可以顯示虛擬機器#3上的passwd檔案。

實驗結果

雖然hunt工具並沒有成功嗅探虛擬機器#2和虛擬機器#3的telnet連線,因此沒有體驗到報文劫持的具體結果,但是基本原理和操作過程我們都已經熟知。

參考文件

  1. 北京交通大學 計算機網路安全實驗指南