首先還是得說一下什么是ARP。如果你在UNIX Shell下輸入 arp -a (9x下也是),你的輸出看起來應該是這樣的:
Interface: xxx.xxx.xxx.xxx
Internet Address Physical Address Type
xxx.xxx.xxx.xxx 00-00-93-64-48-d2 dynamic
xxx.xxx.xxx.xxx 00-00-b4-52-43-10 dynamic
...... ......... ....
這里第一列顯示的是ip地址,第二列顯示的是和ip地址對應的網絡接口卡的硬件地址(MAC),第三列是該ip和mac的對應關系類型。
可見,arp是一種將ip轉化成以ip對應的網卡的物理地址的一種協議,或者說ARP協議是一種將ip地址轉化成MAC地址的一種協議。它靠維持在內存中保存的一張表來使ip得以在網絡上被目標機器應答。
為什么要將ip轉化成mac呢?簡單的說,這是因為在tcp網絡環境下,一個ip包走到哪里,要怎么走是靠路由表定義。但是,當ip包到達該網絡后,哪臺機器響應這個ip包卻是靠該ip包中所包含的mac地址來識別。也就是說,只有機器的mac地址和該ip包中的mac地址相同的機器才會應答這個ip包。因為在網絡中,每一臺主機都會有發送ip包的時候。所以,在每臺主機的內存中,都有一個 arp--> mac 的轉換表。通常是動態的轉換表(注意在路由中,該arp表可以被設置成靜態)。也就是說,該對應表會被主機在需要的時候刷新。這是由于以太網在子網層上的傳輸是靠48位的mac地址而決定的。
通常主機在發送一個ip包之前,它要到該轉換表中尋找和ip包對應的mac地址。如果沒有找到,該主機就發送一個ARP廣播包,看起來象這樣子:
"我是主機xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip為xxx.xxx.xxx.xx1的主機請告之你的mac來"
ip為xxx.xxx.xxx.xx1的主機響應這個廣播,應答ARP廣播為:
"我是xxx.xxx.xxx.xx1,我的mac為xxxxxxxxxx2"
于是,主機刷新自己的ARP緩存,然后發出該ip包。
了解這些常識后,現在就可以談在網絡中如何實現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了。
現在,假如該主機不只提供telnet,它還提供r命令(rsh,rcopy,rlogin等)那么,所有的安全約定將無效,入侵者可以放心的使用這臺主機的資源而不用擔心被記錄什么。
有人也許會說,這其實就是冒用ip嘛。是冒用了ip,但決不是ip欺騙,ip欺騙的原理比這要復雜的多,實現的機理也完全不一樣。
上面就是一個ARP的欺騙過程,這是在同網段發生的情況。但是,提醒注意的是,利用交換集線器或網橋是無法阻止ARP欺騙的,只有路由分段是有效的阻止手段。(也就是ip包必須經過路由轉發。在有路由轉發的情況下,ARP欺騙如配合ICMP欺騙將對網絡造成極大的危害。從某種角度講,入侵者可以跨過路由監聽網絡中任何兩點的通訊,如果設置防火墻,請注意防火墻有沒有提示過類似“某某IP是局域IP但從某某路由來”等這樣的信息。
新聞熱點
疑難解答