ARP欺騙的攻擊與防范
如同現實社會一樣,網絡虛擬社會也存在著各式各樣的虛假信息,從黑客攻擊掉網絡釣魚甚至社會工程學欺詐,我們所要面對的安全問題比比皆是。ARP(Address Resolution Protocol)是地址解析協議,是一種將IP地址轉化成物理地址的協議。一些攻擊者通過利用ARP欺騙技術實現對數據的截取和偵聽。
一、ARP欺騙
ARP協議用于IP地址到MAC地址的轉換,此映射關系存儲在ARP緩存表中,若ARP緩存表被他人非法修改,則會導致發送給正確主機的數據包發送給另外一臺由攻擊者控制的主機。ARP欺騙(ARP spoofing),也叫ARP毒藥(ARP poison),即可完成這些功能。
假設攻擊者和目標主機在同一個局域網中,并且想要截獲和偵聽目標主機到網關間的所有數據。當然,對于使用集線器的局域網環境,攻擊者只需要把網卡設置為混雜模式即可。但是現在的局域網都是交換機了,不僅可以提高局域網的容量,而且可以提高安全性。在這種情況下,攻擊者首先會試探交換機是否存在失敗保護模式(fail-safe mode),是交換機所處的特殊模式狀態。交換機維護IP地址和MAC地址的映射關系時會花費一定處理能力,當網絡通信時出現大量虛假MAC地址時,某些類型的交換機會出現過載情況,從而轉換到失敗保護模式。若交換機不存在失敗保護模式,則需要使用ARP欺騙技術。
攻擊者主機需要兩塊網卡,IP地址分別是192.168.0.5和192.168.0.6,插入交換機的兩個端口,準備截獲和偵聽目標主機192.168.0.3和路由器192.168.0.1之間的所有通信。另外攻擊者主機還需要有IP數據包轉發功能,此項功能在Linux下只需要執行命令echo 1> /proc/sys/net/ipv4/ip_forward就可以。以192.168.0.4的網絡通信為例,正常的ARP轉換如下:
1.主機A192.168.0.4想要與路由器192.168.0.1通信,從而接入Internet。
2.主機A以廣播的方式發送ARP請求,希望得到路由器的MAC。
3.交換機收到ARP請求,并把此請求發送給連接到交換機的各個主機。同時,交換機將更新它的MAC地址和端口之間的映射表,即將192.168.0.4綁定它所連接的端口。
4.路由器收到A的ARP請求后,發出帶有自身MAC地址的ARP響應。
5.路由器更新ARP緩存表,綁定A的IP地址和MAC地址。
6.交換機收到了路由器對A的ARP響應后,查找它的MAC地址和端口之間的映射表,把此ARP響應數據包發送到相應的端口。同時,交換機更新它的MAC地址和端口之間的影射表,即將192.168.0.1綁定它所連接的端口。
7.主機A收到ARP響應數據包,更新ARP緩存表,綁定路由器的IP地址和MAC地址。
8.主機A使用更新后的MAC地址信息把數據發送給路由器,通信通道就此建立。
ARP欺騙需要攻擊者迅速地誘使目標主機192.168.0.3和路由器192.168.0.1都和它建立通信,從而使自己成為中間人MiM(Man in Middle)。換句話說,攻擊者的主機此時相當于一個被攻擊者完全控制的路由器,目標主機和路由器之間的所有數據通信都要由攻擊者主機轉發,攻擊者也就能對數據作各種處理。要達到同時欺騙目標主機和路由器的目的,攻擊者應打開兩個命令界面,執行兩次ARP欺騙:一次誘使目標主機認為攻擊者的主機有路由器的MAC地址,這可以利用IP地址欺騙技術,偽造路由器的IP地址,從攻擊者主機的一塊網卡上發送給目標主機ARP請求包,則錯誤的MAC地址和IP地址的映射將更新到目標主機;另一次使路由器相信攻擊者的主機具有目標主機的MAC地址,方法和前面相似。
ARP欺騙的防范:
中毒的網絡,就會一直有發送arp病毒包的,這些arp病毒包會誤導你的機器對網關mac地址的解析。所以需要綁定mac地址。兩種方法:
1、列出局域網內所有機器的MAC地址。
# arpAddress HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:07:E9:2A:6F:C6,然后,綁定MAC地址, #arp -s 192.168.1.1 00:07:E9:2A:6F:C6
注意:假如用戶的網關設置了hostname的話,這里192.168.1.1就有可能需要換成hostname。
2、創建一個/etc/ethers文件,比如你要綁定網關,那就在/etc/ethers里寫上:192.168.1.1 00:07:E9:2A:6F:C6,然后執行 #arp -f ,每次重啟機器后需要重新綁定MAC地址。
另外,mac地址的綁定需要雙向的,即機器a綁定了機器b,機器b也要綁定機器a,這樣arp病毒才會被徹底擋住。
【編輯推薦】

















