0x00 前言
之前筆者仔細學習了arp協議和arp欺騙的原理和細節,這裏通過kali linux和其他虛擬機完成一個實驗
實驗環境: kali linux 2018.2(32位) winxp(32位) ,均爲虛擬機
實驗工具:arpspoof,driftnet(獲取靶機圖片)
0x01 實驗
首先打開kali linux 和winxp 虛擬機,xp的命令行輸入
arp -a
在kali中首先可以用fping對局域網進行掃描,這裏由於是已知目標ip,就不多做贅述了。
然後在kali命令行中使用工具arpspoof,實現arp欺騙或者流量轉發。
具體步驟如下:
1、命令行輸入
arpspoof -i (網卡) -t ip1(目標主機) ip2(網關)
在本實驗中就是
arpspoof -i eth0 -t 192.168.0.5 192.168.0.1
2、觀察目標arp緩存的變化
再次在xp機命令行中輸入
arp -a
可見,對於xp來說,已經成功受到arp欺騙,這時如果xp相要通過網關訪問互聯網是不行的
3、然後再在kali 命令行中輸入指令
表示數據包可轉發。
4、最後再利用driftnet截取通過本機網卡的圖片,語法爲
driftnet -i (interface),在此實驗中即爲
driftnet -i eth0
跳出一個框
5、最後使用xp訪問網頁,可以在kali機上看到xp上面獲得的圖片
xp百度搜索 kali 跳出下列界面
然後觀察kali中driftnet的情況
可以看到,確實已經得到了xp上面訪問的圖片
0x02 原理
上面爲操作過程,但是原理也同樣重要。
在之前的文章中,筆者寫過有關於arp相關的一些知識,有興趣的還請去看看,說得不清楚或者不正確的可以告訴我,我會及時修改。這裏對arp的原理就不多說了。
首先,arpspoof工具的原理其實就是欺騙IP1,告訴IP1自己是IP2,這裏筆者和網上一些文章所寫有所出入。
在語法 arpspoof -i interface -t ip1 ip2 中,一些文章說是告訴IP2自己是IP1,經過筆者利用arp -a測試,得出的結論是告訴ip1自己是ip2。有興趣的朋友可以試一試,對理解arp原理很有幫助,而且我也有可能寫錯了,瞭解的朋友還請指正。
另外,十分重要的一個指令
允許數據包轉發對於是十分重要的,如果沒有這一條指令,那麼你只是欺騙了內網中的一個用戶,告訴它網關是你,然後由於默認不允許轉發,你的主機也不能轉發該用戶的數據包,那麼它將處於斷網狀態,這時他會十分敏感地感受到異常,可能會及時處理異常網絡情況,導致本次攻擊失敗。而如果轉發了,經過實測,目標機的網速比起沒有攻擊時會變慢,可能是由於本機將作爲一個必經口會多出來一跳,但是我個人感覺這一跳影響不會大,具體爲什麼會慢許多,有可能是虛擬機本身自己的情況,因爲就算不實驗,我感覺虛擬機網速也挺慢。
最後說一說driftnet的原理,其實這個原理最好理解,目標機的數據包都通過你的網卡再轉發一次了,那麼它在網上乾的事情你也自然全都瞭解了。聽說還有比driftnet更好用的工具,之後幾天可能會出相關文章。
0x03 總結和本次實驗得失
說實話,本次實驗我個人走了許多誤區,總的來說歸結爲以下幾點。
1、arp協議的理解和arpspoof的利用問題
主要還是新工具的使用,arpspoof的參數順序實驗進行了一段時間纔出結論,不過也對該知識的理解透徹了不少
2、爲何要實現數據包轉發,這個光靠說很難理解它的重要性,但只要你實驗一下你立刻就可以意識到它的意義。僅僅斷網對於進一步的工作是無意義的。
3、虛擬機、實機的選用
一開始是想用kali來攻擊我的本機的,但僅僅實現了斷網這一步,關於數據包轉發這一步怎麼也沒有做到,可以確定的是那個重要參數確定是設置爲1了的,需要轉發。最後看網上說可能是因爲實機和虛擬機間的不同造成的,於是選擇了兩個虛擬機來進行實驗,之後準備做一下兩個實機間的實驗。
4、局域網的安全問題
可以看到,局域網中本身幾乎是沒有安全可言的,如果你和攻擊者處於同一局域網下,極其難以防禦,所以那些外面的網絡不能亂連,尤其是那些隨地可以見的,不要密碼的wifi。