簡述ARP攻擊原理與防範

前段時間,終於狠下來給自己的手提換了個固態硬盤,那隨着而來的肯定是得裝個系統在那裏。反正要裝,就裝個新的來體驗一下吧,直接就裝了個Win8.1的。win8.1的各種東西讓我折騰了好久,部分特徵讓我好糾結,不過界面還蠻不錯的。固態硬盤就是爽,飛一般的感覺,打開VS一下子快多了,查閱文檔,快多了。各種爽,固態硬盤,你值得擁有。畢竟在使用校園網,有時候一個不小心就來個arp工具上不了網就糟糕,但在我找遍整個360發現原來的arp防火牆找不到時,我就鬱悶了。也不想裝其他什麼東西,料想也沒啥好的。於是就自己來折騰了下,順便科普一下arp攻擊與防範措施。


ARP攻擊,這是個煩人的東西。好一點的,arp攻擊只是單純讓你上不了網,惡意的arp攻擊可能還將竊取你的資料,或者推送一些木馬過來。所以瞭解與杜絕ARP工具是我們安全上網的一個重要步伐。


在專用網PN中,也就是局域網,比如校園網,我們的電腦想要上網,必須先要經過路由器的網絡地址轉換(NAT)協議,路由器充當一箇中間人,將我們的請求(Request)轉換後發送出去,然後將得到的反饋(Response)轉換後,發回來。


這裏有個問題,我們的電腦怎麼知道路由器在哪裏呢?在本地電腦上,我們有一個ARP緩衝表,保存着IP地址跟MAC地址。我們在windows下的cmd窗口裏面輸入arp –a就可以看到這個表了。如下圖:



那麼,這個表是怎麼來的呢?我們僅僅考慮本地這個的情況。這就涉及到ARP協議了。下面在百科裏copy的部分內容:


地址解析協議,即ARP(AddressResolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。其功能是:主機將ARP請求廣播到網絡上的所有主機,並接收返回消息,確定目標IP地址的物理地址,同時將IP地址和硬件地址存入本機ARP緩存中,下次請求時直接查詢ARP緩存。地址解析協議是建立在網絡中各個主機互相信任的基礎上的,網絡上的主機可以自主發送ARP應答消息,並且當其他主機收到應答報文時不會檢測該報文的真實性就將其記錄在本地的ARP緩存中,這樣攻擊者就可以向目標主機發送僞ARP應答報文,使發送的信息無法到達相應的主機,構成一個ARP欺騙。ARP命令可用於查詢本機ARP緩存中IP地址和MAC地址的對應關係、添加或刪除靜態對應關係等。相關協議有RARP、代理ARP。NDP用於在IPv6中代替地址解析協議。


這裏說下ARP的實質性意義,在互聯網裏面,是使用IP地址作爲標識目標主機的,舊的是IPv4,新的是IPv6。隨着時代的發展,IPv4已經不能滿足需求了,但依然由於各種原因一直沒有撤出歷史舞臺,而只能採用漸進過渡的方式,在未來一段時間內都將是IPv4與IPv6並存的方式。上面的是在公網裏面的同學,對於內網呢,也就是局域網上,採用的就是MAC(Media Access Control,MAC地址用來定義網絡設備的位置,每個網卡或者路由器等都會有一個MAC地址。原則上這個地址是全球唯一的,注意這裏說的是原則上,自己想象下。

)地址通訊了,至於原因,也許是計算機網絡發展的早期,各個廠商之間的不協調導致的吧。雖然內部是使用MAC地址通訊,但是在編程或者使用上面,我們還是採用IP的方式,而由操作系統進行轉換。怎麼轉換呢,就是靠ARP協議了,ARP協議將IP地址轉換爲MAC地址,而RARP則逆轉過來。


回到ARP協議上來。要是攻擊者僞造一個ARP報文,告訴目標主機,將路由IP跟另外一個MAC地址綁定,目標主機將找不到路由器,於是將無法上網。說得通俗一點就是,攻擊者A告訴受害者B,路由器在XX地方,而受害者B不對這個消息的準確性產生懷疑,於是受害者B每次去找路由器都去XX地方找,但是路由器壓根不在那裏,受害者B找不到路由器,那麼自然而然地就上不了網了。好了,這裏的那個xx地方,也就是一個MAC地址。要是這個MAC地址是一個不存在的地址,那我們反跟蹤的時候將會發現找不到該地址。這只是單純的上不了網,還不是很糟糕。設想一種情況,要是這個MAC地址指向的是另外一個主機,然後這個主機模擬路由器充當中間人給我們轉發信息,那麼我們所有信息不就可以讓它知道了,然後,要是它將修改過的信息反饋回來,這時候,危害就大了。


攻擊者會以一定的時間間隔,不斷地發送換個僞造的arp報文,來達到讓目標主機無法連接網絡。一個防範措施很明顯的,就是以比攻擊者更快的速度將正確的arp報文還原。但這個並不是好辦法,下面說一個簡單的並且可以得到windows原生支持的方法:靜態綁定。


在上面的arp緩衝表中,我們可以看到後面類型一欄中有着動態兩個字,這代表這些是通過arp報文來動態綁定的,有沒有可以讓它固定的方法呢?有。


1、  使用“管理員權限”打開CMD命令行窗口。

2、  在命令提示符中運行“netshi i show in”查看要進行ARP綁定的網卡的idx編號。

3、  在命令提示符中運行“netsh-c “i i”add neighbors idx IP MAC”進行ARP綁定,這裏的idx就是上一步查到的網卡的idx編號,IP和MAC就是你要綁定的IP地址和MAC地址。

比如我輸入的是netsh -c "i i" add neighbors “21 172.16.80.254” “00-1a-a9-08-7a-01”

 

成功後,並不會有什麼提示的,這時候可以輸入arp –a看下效果。

 



當然了,當我們也可以對其解除綁定。

 

解除綁定:netsh -c“i i” delete neighbors IDX (IDX改爲相應的數字) 纔可刪除MAC地址綁定,然後重啓系統。

 

這是我目前簡單地使用的一種方式,對於Win8.1確實沒找到啥好的arp防火牆,只能自己手動來弄了。


還有沒有其他的方法呢?有,肯定有。比如在驅動編程裏面,可以在接收到arp報文但還沒有交付時對其進行過濾。或者其他的過濾方式,這裏不一一詳述。


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