對人們撒謊,即所謂的“社交工程”,還包含了策略(已獲罪的駭客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關聯起來。