ARP欺騙與中間人攻擊

一、實驗目的

  1. 掌握ARP欺騙攻擊
  2. 掌握ARP欺騙攻擊全過程
  3. 學會防範ARP欺騙

二、實驗環境

  1. 系統環境:Windows環境,kail環境,XP環境
  2. 軟體工具:packEth,

三、實驗原理

  • ARP快取
  1. 在每台安裝有TCP/IP協議的電腦里都有一個ARP快取表,表裡的IP地址與MAC地址是一一對應的,如下圖所示是window7主機的ARP快取表:

    在上圖所示的ARP快取表中,IP地址192.168.70.129映射的MAC地址為00-50-56-2b-68-41,下面我們以主體X(192.168.70.129)向主機Y(192.168.70.134)發送數據為例,說明ARP工作過程。
  • 當主機X發送數據時,它會在自己的ARP快取表中尋找是否有主機Y的IP地址。如果找到了,也就知道了主機Y的MAC地址,直接把目標MAC地址寫入數據包裡面發送就可以了;如果在ARP快取表中沒有找到主機Y的IP地址,主機X就會在網路上發送一個廣播,目標MAC地址是「FF-FF-FF-FF-FF-FF」,這個表示向同一網段內的所有主機發出這樣的詢問:192.168.70.129的MAC地址是什麼?網路上其他主機並不響應ARP詢問,只有主機Y接收到這個數據包時,才會向主機X做出這樣的回應:192.168.70.129的MAC地址是00-50-56-2b-68-41。這樣,主機X就知道了主機Y的MAC地址,他就可以向主機Y發送資訊了,同時它還更新了自己的ARP快取表,下次再向主機Y發送資訊時,直接從ARP快取表裡查找就可以了。ARP快取表採用了老化機制,在一段時間內如果表中的某一行沒有使用就會被刪除,這樣可以大大減少ARP快取表的長度,加快查詢速度。
  1. ARP欺騙定義
    從前面的介紹可以看出,ARP的致命缺陷是:他不具備任何的認證機制,當有個人請求某個IP地址的MAC時,任何人都可以用MAC地址進行回復,並且這種響應也會被認為是合法的。
    ARP並不只在發送了ARP請求後才接收ARP應答。當主機接收到ARP應答數據包的時候,就會對本機的ARP快取進行更新,將應答中的IP和MAC地址存儲在ARP快取表中。此外,由於區域網中數據包不是根據IP地址,而是按照MAC地址進行傳輸的。所有對主機實施ARP欺騙就成為可能。

  2. ARP常用命令:

arp -a 用於查看快取表中的所有項目
arp -a ip 只顯示包含指定IP的快取表項目
arp -s ip mac 向ARP快取表中添加靜態目錄,該項目在電腦啟動過程中一直有效
arp -d ip 刪除ARP快取表中靜態項目

四、實驗步驟

  1. 下面PC2要對PC1進行ARP欺騙攻擊,目標是更改PC1快取表中網關的MAC地址更新為aa:aa:aa:aa:aa:aa實施欺騙,導致PC1無法正常上網
  • 更新前:PC1的快取表如下圖所示網關IP:192.168.70.2對應的MAC地址是:00-50-56-e5-d2-ff

    此時PC1是可以正常上網的如下圖所示:

    打開Windows7將packEth壓縮包解壓成文件夾後,找到packEth.exe文件雙擊打開

    打開packEth.exe文件,選擇第二個網卡,選擇ARP packet模式

    發送方IP和MAC填寫網關的真實IP地址和此處修改MAC地址為aa:aa:aa:aa:aa:aa以達到欺騙效果,選擇Arp packet功能以及ARP reply 應答包,MAC Header處填寫目標真實MAC地址(此處為PC1的MAC地址),源MAC地址填寫修改的MAC地址(此處為aa:aa:aa:aa:aa:aa)設置好後點擊Send開始發包
  • 更新後:此時我們返回到PC1里使用命令arp -a 查看網關的MAC地址成功被我們修改成了aa:aa:aa:aa:aa:aa

    此時我們再次驗證PC1是否能正常上網,發現已經無法正常上網了,如下圖所示:
  • PC2向PC1發送一個自己偽造的ARP應答包,而這個應答數據中發送方IP地址是網關的192.168.70.2映射的MAC更新為aa:aa:aa:aa:aa:aa(網關的MAC地址本來應該是00-50-56-e5-d2-ff,此時已經被我們偽造了)。當PC1收到PC2偽造的ARP應答,就會更新本地的ARP快取表(PC1不知道MAC已經被偽造了),而且PC1不知道這個ARP應答包是從PC2發送過來的。這樣PC1發送給網關的數據包都變成了發給PC2了。PC1對所發生的變化一點兒都沒有意識到,但是接下來的事情就讓PC1產生了懷疑,因為它無法正常上網了,這是因為PC2隻是接收PC1發給網關的數據,並沒有轉發給網關。
  1. PC2做「maninthemiddle」(中間人),進行ARP重定向。打開自己的IP轉發功能,將PC1發送過來的數據包轉發給網關,就好比一個路由器一樣,而網關接收到數據包完全認為是PC1發送過來的。不過,網關發送的數據包又直接傳遞給PC1,倘若再次進行對網關的ARP欺騙,那麼PC2就完全成為PC1和網關的中間橋樑,對於PC1與網關的通訊就可以了如指掌了(如果你被人ARP監控了,想想是不是很可怕)

    啟動kali虛擬機,打開終端,輸入命令:ettercap -G 如圖所示:

    在進行中間人攻擊之前首先需要掃描當前區域網中存在的活動主機,確認攻擊目標機器,點擊Unified sniffing開啟嗅探,如下圖所示:

    選擇當前網卡eth0,點擊OK進入嗅探,如下圖所示:

    點擊菜單中的Hosts,選中Scan for hosts 掃描和本機(kali)同網關所有的主機,如下圖所示:

    點擊菜單Hosts,選中Host list 列出同網關所有互動的主機,掃描結果如下圖所示:192.168.70.133為Windows7主機的IP地址,192.169.70.2為網關IP地址

    接下來選擇攻擊目標,右鍵Windows目標IP點擊Add to Target 1,選擇第二個攻擊目標IP(網關),右鍵網關目標IP點擊Add to Target 2,如下圖所示:


    然後確定攻擊方式,此處點擊菜單Mitm,選中ARP posoning採用ARP欺騙的攻擊方式,如下圖所示:

    勾選Sniff remote connections,點擊確認按鈕,如下圖所示:
    點擊菜單start,選中Start sniffing,開始監聽
  • 在Windows7虛擬機中,打開cmd命令控制窗口,輸入arp -a查看arp快取表,結果發現網關(192.168.70.2)的MAC地址變成了和kali主機的MAC地址相同,如下圖所示:

    到此為止我們開始驗證ARP中間人欺騙是否成功了
    返回到Windows7虛擬機,打開瀏覽器訪問一個登錄介面,輸入登錄用戶名和密碼,點擊確認登陸,如下圖所示:

    返回到kali主機我們已成功獲取到Windows7主機訪問某網站已經登錄的用戶名和密碼,如下圖所示:

五、ARP攻擊防範:

  1. 雙向綁定:
    一般來說,在小規模網路中,比較推薦使用雙向綁定,也就是在路由器和終端上都進行IP-MAC綁定的措施,它可以對ARP欺騙的兩邊,偽造網關 和截獲數據,都具有約束的作用。這是從ARP欺騙原理上進行的防範措施,也是最普遍應用的辦法。它對付最普通的ARP欺騙是有效的。

  2. ARP防火牆:
    在一些殺毒軟體中加入了ARP防火牆的功能,它是通過在終端電腦上對網關進行綁定,保證不受網路中假網關的影響,從而保護自身數據不被竊取的措施。ARP防火牆使用範圍很廣,但也會有問題,如,它不能保證綁定的網關一定是正確的。如果一個網路中已經發生了ARP欺騙,有人在偽造網關,那麼,ARP防火牆上來就會綁定這個錯誤的網關,這是具有極大風險的。

  3. VLAN和交換機埠綁定:
    通過劃分VLAN和交換機埠綁定來防範ARP,也是常用的防範方法。做法是細緻地劃分VLAN,減小廣播域的範圍,使ARP在小範圍內起作 用,而不至於發生大面積影響。同時,一些網管交換機具有MAC地址學習的功能,學習完成後,再關閉這個功能,就可以把對應的MAC和埠進行綁定,避免了病毒利用ARP攻擊篡改自身地址。也就是說,把ARP攻擊中被截獲數據的風險解除了。