實驗環境:
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
安裝工具
1、Wireshark
sudo apt-get install wireshark
2、Netwag
sudo apt-get install netwag
3、Netwox
sudo apt-get install netwox
檢查安裝情況
1、Wireshark
wireshark
2、Netwag
netwag
3、Netwox
netwox
克隆連接三個虛擬機
1、查ip地址
ifconfig
2、使用ping命令檢查互相連接情況
ping 10.211.55.2*
實驗一、APR緩存中毒(ARP cache poisoning)
實驗原理
ARP緩存是ARP協議的重要組成部分。ARP協議運行的目標就是建立MAC地址和IP地址的映射,然後把這一映射關系保存在ARP緩存中,使得不必重復運行ARP協議。因為ARP緩存中的映射表並不是一直不變的,主機會定期發送ARP請求來更新它的ARP映射表,利用這個機制,攻擊者可以偽造ARP應答幀使得主機錯誤的更新自己的ARP映射表,這個過程就是ARP緩存中毒。
這樣的後果即使要麼使主機發送MAC幀到錯誤的MAC地址,導致數據被竊聽;要麼由於MAC地址不存在,導致數據發送不成功。
虛擬機MAC地址和IP地址
Machine IndexHWAddrIPAddr
100:1c:42:6f:5b:ee10.211.55.27
200:1c:42:cc:87:b610.211.55.29
300:1c:42:2e:73:dc10.211.55.28
清空ARP緩存
因為之前測試幾個虛擬機之間是否連接成功的時候進行了ping命令,這個時候在各個虛擬機的時候已經進行了ARP緩存,如果進行實驗的話,將不會有ARP協議的數據包,因為會直接在ARP緩存庫裡面取得相應的MAC地址。
所以這裡我要先對ARP緩存進行清理。以下是ARP命令的使用說明:
arp: 顯示所有的表項。
arp -d address: 刪除一個arp表項。
arp -s address hw_addr: 設置一個arp表項。
先用ARP命令查看已經緩存的ARP信息,然後再根據需要刪除我們需要刪除的ARP緩存。
實驗內容實現
老師給的參考文檔裡面使用的是Telnet命令,但是可能因為虛擬機設置和VMWare不同的原因,在用Telnet命令的時候會出現connection refused的錯誤,所以我嘗試使用ssh命令來實現實驗內容。第一次建立ssh連接的時候就會產生ARP的數據包,可以用wireShark捕捉,我們一樣用第三台虛擬機用虛假的ARP信息進行廣播,那麼應該ssh連接會失敗。
正常狀態下,我用虛擬機#3連接虛擬機#1,可以看到抓取到的ARP數據包如下:
對照前面我們記錄的MAC地址和IP地址可以看到,在正常的狀態下ARP是正確緩存的,並且可以連接ssh:
然後按照老師的教程,用虛擬機#1進行虛假ARP信息廣播:
sudo netwox 80 "00:1c:42:6f:5b:ee" -i "10.211.55.29"
我們可以在虛擬機#3的Wireshark裡面看到這個周期性的廣播信息:
虛擬機#3連接虛擬機#2的時候,程序出錯了,然後我們用arp命令查arp緩存,可以看到虛擬機#2的IP地址10.211.55.29對應的MAC地址已經被改成了虛擬機#1的MAC地址00:1c:42:6f:5b:ee。
說明攻擊成功。
注意:①WireShark在正常情況下我的環境裡並找不到端口,所以我用了管理員權限打開WireShark,就能正常工作了。②我在第一次實驗的時候發現雖然廣播了但是沒有被修改,第二次就成功了,查了WireShark找到原因,是因為剛好連接建立的時候沒有廣播到。。
實驗二、ICMP重定向攻擊
實驗原理
ICMP重定向攻擊
ICMP重定向信息是路由器向主機提供實時的路由信息,當一個主機收到ICMP重定向信息時,它就會根據這個信息來更新自己的路由表。由於缺乏必要的合法性檢查,如果一個黑客想要被攻擊的主機修改它的路由表,黑客就會發送ICMP重定向信息給被攻擊的主機,讓該主機按照黑客的要求來修改路由表。
實驗准備
安裝traceroute:sudo apt-get install traceroute
虛擬機網絡配置
Machine IndexHWAddrIPAddr
100:1c:42:6f:5b:ee10.211.55.27
200:1c:42:cc:87:b610.211.55.29
300:1c:42:2e:73:dc10.211.55.28
網關00:1c:42:00:00:1810.211.55.1
虛擬機#3檢查正常情況下的網關
使用命令sudo traceroute baidu.com來嘗試路由追蹤連接到百度時候的路由表情況,並且打開WireShark監視網絡。
由上圖可知,路由追蹤過程中因為有防火牆屏蔽了ICMP信息,所以沒有返回任何結果而是*。但是沒有關系,我們可以從WireShark抓到的數據包看到默認網關。
由上圖可以看到虛擬機#3的默認網關在正常狀態下是00:1c:42:00:00:18|10.211.55.1。
虛擬機#1進行ICMP重定向攻擊
為了讓虛擬機#3認為默認網關已經被修改成了虛擬機#1,需要不斷廣播ICMP重定向信息。為了實現這個廣播,可以使用netwox命令sudo netwox 86 -d "Eth0" --gw "10.211.55.27" -i "10.211.55.1",這個命令代表廣播ICMP重定向信息,把10.211.55.1重定向為10.211.55.27,前者為默認網關,後者為虛擬機#1。
注意:為了讓虛擬機#1能夠正常轉發數據包,需要對虛擬機#1進行如下設置:sudo sysctlnet.ipv4.ip_forward=1
虛擬機#3檢查被攻擊情況下的網關
打開WireShark監視網絡,使用traceroute命令訪問baidu.com。觀察抓包情況:
由上圖可以驗證虛擬機#1的廣播生效了。
由上圖可以驗證虛擬機#3發送的數據包的默認網關已經被改成了虛擬機#1,說明攻擊成功。