ARP攻擊與檢測

本文轉自:http://51runaway.blog.163.com/blog/static/24028688201002611363468/

我們知道,當我們在瀏覽器裏面輸入網址時,DNS服務器會自動把它解析爲IP地址,瀏覽器實際上查找的是IP地址而不是網址。那麼IP地址是如何轉換爲第二層物理地址(即MAC地址)的呢?在局域網中,這是通過ARP協議來完成的。ARP協議對網絡安全具有重要的意義。通過僞造IP地址和MAC地址實現 ARP欺騙,能夠在網絡中產生大量的ARP通信量使網絡阻塞。所以網管們應深入理解ARP協議。


一、什麼是ARP協議 

        ARP協議是“Address Resolution Protocol”(地址解析協議)的縮寫。在局域網中,網絡中實際傳輸的是“幀”,幀裏面是有目標主機的MAC地址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得的呢?它就是通過地址解析協議獲得的。所謂“地址解析”就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。

二、ARP協議的工作原理 

        在每臺安裝有TCP/IP協議的電腦裏都有一個ARP緩存表,表裏的IP地址與MAC地址是一一對應的,如下表所示。

主機                    IP地址                             MAC地址
A                     192.168.16.1                     aa-aa-aa-aa-aa-aa
B                     192.168.16.2                     bb-bb-bb-bb-bb-bb

C                     192.168.16.3                     cc-cc-cc-cc-cc-cc
D                     192.168.16.4                     dd-dd-dd-dd-dd-dd

        我們以主機A(192.168.1.5)向主機B(192.168.1.1)發送數據爲例。

        當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標 IP地址。如果找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀裏面發送就可以了;如果在ARP緩存表中沒有找到相對應的IP地址,主機A 就會在網絡上發送一個廣播,目標MAC地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網段內的所有主機發出這樣的詢問: “192.168.1.1的MAC地址是什麼?”網絡上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的迴應: “192.168.1.1的MAC地址是00-aa-00-62-c6-09”。這樣,主機A就知道了主機B的MAC地址,它就可以向主機B發送信息了。同時它還更新了自己的ARP緩存表,下次再向主機B發送信息時,直接從ARP緩存表裏查找就可以了。ARP緩存表採用了老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度。

三、如何查看ARP緩存表 

        ARP緩存表是可以查看的,也可以添加和修改。在命令提示符下,輸入“arp -a”就可以查看ARP緩存表中的內容了,如附圖所示。 

        用“arp -d”命令可以刪除ARP表中某一行的內容;用“arp -s”可以手動在ARP表中指定IP地址與MAC地址的對應。

四、ARP欺騙 

        其實,此起彼伏的瞬間掉線或大面積的斷網大都是ARP欺騙在作怪。ARP欺騙攻擊已經成了破壞網吧經營的罪魁禍首,是網吧老闆和網管員的心腹大患。 

        從影響網絡連接通暢的方式來看,ARP欺騙分爲二種,一種是對路由器ARP表的欺騙;另一種是對內網PC的網關欺騙。 

        第一種ARP欺騙的原理是——截獲網關數據。它通知路由器一系列錯誤的內網MAC地址,並按照一定的頻率不斷進行,使真實的地址信息無法通過更新保存在路由器中,結果路由器的所有數據只能發送給錯誤的MAC地址,造成正常PC無法收到信息。第二種ARP欺騙的原理是——僞造網關。它的原理是建立假網關,讓被它欺騙的PC向假網關發數據,而不是通過正常的路由器途徑上網。在PC看來,就是上不了網了,“網絡掉線了”。 

        一般來說,ARP欺騙攻擊的後果非常嚴重,大多數情況下會造成大面積掉線。有些網管員對此不甚瞭解,出現故障時,認爲PC沒有問題,交換機沒掉線的“本事”,電信也不承認寬帶故障。而且如果第一種ARP欺騙發生時,只要重啓路由器,網絡就能全面恢復,那問題一定是在路由器了。爲此,寬帶路由器背了不少 “黑鍋”。 

        作爲網吧路由器的廠家,對防範ARP欺騙不得已做了不少份內、份外的工作。一、在寬帶路由器中把所有PC的IP-MAC輸入到一個靜態表中,這叫路由器 IP-MAC綁定。二、力勸網管員在內網所有PC上設置網關的靜態ARP信息,這叫PC機IP-MAC綁定。一般廠家要求兩個工作都要做,稱其爲IP- MAC雙向綁定。

五、如何實現ARP攻擊?針對ARP原理的例子:

        瞭解上面這些常識後,現在就可以談在網絡中如何實現ARP欺騙了,可以看看這樣一個例子:

        一個入侵者想非法進入某臺主機,他知道這臺主機的防火牆只對192.0.0.3(假設)這個ip開放23口(telnet),而他必須要使用telnet來進入這臺主機,所以他要這麼做: 
        1、他先研究192.0.0.3這臺主機,發現這臺95的機器使用一個oob就可以讓他死掉。 
        2、於是,他送一個洪水包給192.0.0.3的139口,於是,該機器應包而死。 
        3、這時,主機發到192.0.0.3的ip包將無法被機器應答,系統開始更新自己的arp對應表。將192.0.0.3的項目搽去。 
        4、這段時間裏,入侵者把自己的ip改成192.0.0.3 
        5、他發一個ping(icmp 0)給主機,要求主機更新主機的arp轉換表。 
        6、主機找到該ip,然後在arp表中加入新的ip-->mac對應關係。 
        7、防火牆失效了,入侵的ip變成合法的mac地址,可以telnet了。

六、其他相關知識:

        tcp/ip:TCP/IP協議(Transmission Control Protocol/Internet Protocol)叫做傳輸控制/網際協議,又叫網絡通訊協議,這個協議是Internet國際互聯網絡的基礎。 

        TCP/IP是網絡中使用的基本的通信協議。雖然從名字上看TCP/IP包括兩個協議,傳輸控制協議(TCP)和網際協議(IP),但TCP/IP實際上是一組協議,它包括上百個各種功能的協議,如:遠程登錄、文件傳輸和電子郵件等,而TCP協議和IP協議是保證數據完整傳輸的兩個基本的重要協議。通常說 TCP/IP是Internet協議族,而不單單是TCP和IP。 

        TCP/IP是用於計算機通信的一組協議,我們通常稱它爲TCP/IP協議族。它是70年代中期美國國防部爲其ARPANET廣域網開發的網絡體系結構和協議標準,以它爲基礎組建的INTERNET是目前國際上規模最大的計算機網絡,正因爲INTERNET的廣泛使用,使得TCP/IP成了事實上的標準。 

        之所以說TCP/IP是一個協議族,是因爲TCP/IP協議包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等許多協議,這些協議一起稱爲TCP/IP協議。以下我們對協議族中一些常用協議英文名: 

        TCP(Transmission Control Protocol)傳輸控制協議 

        IP(Internet Protocol)網際協議 

        UDP(User Datagram Protocol)用戶數據報協議 

        ICMP(Internet Control Message Protocol)互聯網控制信息協議 

        SMTP(Simple Mail Transfer Protocol)簡單郵件傳輸協議 

        SNMP(Simple Network manage Protocol)簡單網絡管理協議 

        FTP(File Transfer Protocol)文件傳輸協議 

        ARP(Address Resolation Protocol)地址解析協議 

        從協議分層模型方面來講,TCP/IP由四個層次組成:網絡接口層、網絡層、傳輸層、應用層。

其中:

        網絡接口層 這是TCP/IP軟件的最低層,負責接收IP數據報並通過網絡發送之,或者從網絡上接收物理幀,抽出IP數據報,交給IP層。 

        網絡層負責相鄰計算機之間的通信。其功能包括三方面。一、處理來自傳輸層的分組發送請求,收到請求後,將分組裝入IP數據報,填充報頭,選擇去往信宿機的路徑,然後將數據報發往適當的網絡接口。二、處理輸入數據報:首先檢查其合法性,然後進行尋徑--假如該數據報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報尚未到達信宿,則轉發該數據報。三、處理路徑、流控、擁塞等問題。 

        傳輸層 提供應用程序間的通信。其功能包括:一、格式化信息流;二、提供可靠傳輸。爲實現後者,傳輸層協議規定接收端必鬚髮回確認,並且假如分組丟失,必須重新發送。 

        應用層向用戶提供一組常用的應用程序,比如電子郵件、文件傳輸訪問、遠程登錄等。遠程登錄TELNET使用TELNET協議提供在網絡其它主機上註冊的接口。 TELNET會話提供了基於字符的虛擬終端。文件傳輸訪問FTP使用FTP協議來提供網絡內機器間的文件拷貝功能。 

        前面我們已經學過關於OSI參考模型的相關概念,現在我們來看一看,相對於七層協議參考模型,TCP/IP協議是如何實現網絡模型的。 

        OSI中的層 功能 TCP/IP協議族 

        應用層 文件傳輸,電子郵件,文件服務,虛擬終端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 

        表示層 數據格式化,代碼轉換,數據加密 沒有協議 

        會話層 解除或建立與別的接點的聯繫 沒有協議 

        傳輸層 提供端對端的接口 TCP,UDP 

        網絡層 爲數據包選擇路由 IP,ICMP,RIP,OSPF,BGP,IGMP 

        數據鏈路層 傳輸有地址的幀以及錯誤檢測功能 SLIP,CSLIP,PPP,ARP,RARP,MTU 

        物理層 以二進制數據形式在物理媒體上傳輸數據 ISO2110,IEEE802。IEEE802.2 

        數據鏈路層包括了硬件接口和協議ARP,RARP,這兩個協議主要是用來建立送到物理層上的信息和接收從物理層上傳來的信息; 

        網絡層中的協議主要有IP,ICMP,IGMP等,由於它包含了IP協議模塊,所以它是所有機遇TCP/IP協議網絡的核心。在網絡層中,IP模塊完成大部分功能。ICMP和IGMP以及其他支持IP的協議幫助IP完成特定的任務,如傳輸差錯控制信息以及主機/路由器之間的控制電文等。網絡層掌管着網絡中主機間的信息傳輸。 

        傳輸層上的主要協議是TCP和UDP。正如網絡層控制着主機之間的數據傳遞,傳輸層控制着那些將要進入網絡層的數據。兩個協議就是它管理這些數據的兩種方式:TCP是一個基於連接的協議(還記得我們在網絡基礎中講到的關於面向連接的服務和麪向無連接服務的概念嗎?忘了的話,去看看);UDP則是面向無連接服務的管理方式的協議。 

        應用層位於協議棧的頂端,它的主要任務就是應用了。上面的協議當然也是爲了這些應用而設計的,具體說來一些常用的協議功能如下: 

        Telnet:提供遠程登錄(終端仿真)服務,好象比較古老的BBS就是用的這個登陸。 

        FTP :提供應用級的文件傳輸服務,說的簡單明瞭點就是遠程文件訪問等等服務; 

        SMTP:不用說拉,天天用到的電子郵件協議。 

        TFTP:提供小而簡單的文件傳輸服務,實際上從某個角度上來說是對FTP的一種替換(在文件特別小並且僅有傳輸需求的時候)。 

        SNTP:簡單網絡管理協議。看名字就不用說什麼含義了吧。 

        DNS:域名解析服務,也就是如何將域名映射城IP地址的協議。 

        HTTP:這個就更不講了。

七、檢測是否有ARP攻擊的方法:

        扯了這麼多,其實就這點有用:

        思路:不斷清空ARP緩存,然後Ping一個域名,比如百度,這個最近也挨攻擊,還是google吧。用windump工具檢測就可以了:

1.    arpTest.bat:

       @echo off
       :Goon
       cd \
       arp -d
      SET LX-T1=ping 127.0.0.1 -n
      %LX-T1% 2 > nul
      ping www.google.cn

      goto Goon

        命令解釋:goto,就是一個死循環;ping 127.0.0.1這段幹嘛的?計時用的,ping一次的時間大約是一秒,一個循環也就是2秒循環一次,就像sleep函數。

2.    windump檢測:

         windump -i 3 -n arp and host 192.168.1.1 >> d:\arpTest.log

        參數解釋:-i 3 標示我的本地網卡編號,也許你的網卡編號不是這樣,用windump -D參數查看仔細;192.168.1.1:我的網關地址,一段時間後查看一下日誌,輸入到D盤的arpTest.log文件裏去了。如果網關repley的物理地址不是你網關的物理地址,則恭喜你,你成功檢測到arp攻擊,就這麼簡單。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章