對人們撒謊,即所謂的“社會工程”,還包含了策略(已獲罪的黑客Kevin Mitnick有具體實施),例如假扮成一個公司的雇員這樣就可以和真正的雇員交換公司機密。要騙過計算機則包括許多不同的技術,一個常用的是——ARP緩存中毒(ARP Cache Poisoning)——這是本文的核心。ARP中毒能讓局域網內的黑客在其網內造成巨大的網絡破壞。由於它通常是“不可治愈”的,因此每一個網絡管理員都應該明白這種攻擊究竟是如何進行的。
回顧ARP
在“計算機網絡基礎:什麼是NIC, MAC和ARP?” ( 參見譯者的這篇譯文 ) 一文中,我們解釋了地址解析協議 (ARP, Address Resolution Protocol) 是如何將網絡設備的MAC地址和其IP地址關聯起來的,這樣在同一個局域網內的設備就能相互知道彼此的存在。ARP基本上就是一種網絡上的點名。
ARP,一個十分簡單的協議,僅僅只包含了4種消息類型:
1. ARP請求。計算機A詢問整個局域網,“Who has this IP address?” (“誰的IP地址是這個?”,英文為本來報文裡的ASCII碼消息,譯者注)
2. ARP響應。計算機B告訴計算機A,“I have that IP. My MAC address is [whatever it is].” (我的IP地址是那個。我的MAC地址是[XX:XX:XX:XX:XX:XX])
4. 反向ARP請求。和ARP請求的概念一樣,但是計算機A詢問,“Who has this MAC address?” (誰的MAC地址是這個?)
4. 反向ARP響應。計算機B告訴計算機A,“I have that MAC. My IP address is [whatever it is]” (我的MAC地址是那個。我的IP地址是XXX. XXX. XXX. XXX)
所有的網絡設備都有一個ARP映射表,就是內存裡的一小段存儲著目前該設備已經匹配的IP地址和MAC地址對。ARP映射表確保該設備不會向它已經通訊過的設備重復發送ARP請求。
這裡是一次常規的ARP通信的例子。Jessica,一個接待員,告訴Word(指我們使用的微軟文檔編輯器,譯者注)打印最新的公司通信錄。這是她今天的第一個打印任務。她的計算機 (IP地址是192.168.0.16) 希望發送這個打印任務到辦公室的惠普LaserJet打印機 (IP地址是192.168.0.45)。所以Jessica的計算機就會像整個局域網廣播一個ARP請求去詢問,“Who has the IP address, 192.168.0.45?” (誰的IP地址是192.168.0.45?),如圖1.
局域網內所有的設備都會忽略這個ARP請求,除了惠普LaserJet打印機。這台打印機發現它的IP地址就是請求裡的IP地址,於是它發送一個ARP響應:“嘿,我的IP地址是192.168.0.45. 這是我的MAC地址:
00:90:7F:12:DE:7F”,如圖2.
現在Jessica的計算機知道了這台打印機的MAC地址。它現在能將這個打印任務發給正確的設備(打印機,譯者注),並且在它的ARP映射表裡將打印機的MAC地址00:90:7F:12:DE:7F和它的IP地址192.168.0.45關聯起來。