剖析ARP緩存感染攻擊
對人們撒謊,即所謂的“社會工程”,還包含了策略(已獲罪的黑客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關聯起來。#p#
嘿ARP,你知道哪個騙你的設備不在你的字典中嗎?
網絡的設計者可能出于高效的考慮將ARP的對話過程設計得如此簡單。不幸的是,這種簡單也帶來了巨大的安全隱患。知道為什么在我對ARP的簡短描述中沒有提到任何形式的認證方法嗎?答案是,ARP根本就沒有。
ARP認為通信雙方都是安全可信的,實際上就是好騙的。當一個網絡中的設備發出去一個廣播ARP請求時,它只是簡單的相信當收到一個ARP響應時,這個響應真的是來自正確的設備 (因為按照協議只有IP地址對應的設備才會發出相應報文,譯者注)。ARP沒有提供任何方法去認證響應的設備就真是如它報文里所說的那臺。實際上,許多操作系統實現ARP時都是盡管沒有發出任何ARP請求但仍然接受來自其他設備的ARP響應。
好了,想象自己是一個惡意的黑客。你剛剛才知道ARP協議沒有任何認證ARP響應的方法。你已經知道了很多設備在沒有發出任何請求的情況下仍然接受響應。嗯,我為什么不能制造一個完美有效但是惡意的,包含任何我自己選擇的IP地址和MAC地址的ARP響應報文?由于受害者的計算機會盲目地接受這個ARP響應并添加到它的ARP映射表中,因此讓受害者那極易受騙的計算機將任何我選的IP地址關聯到任何MAC地址。更進一步,我能廣播我做的假冒ARP響應到受害者的整個網絡中,欺騙網絡中所有的計算機。哇哈哈哈哈!
回到現實中來?,F在你可能知道了為什么這種常用技術叫做ARP緩存中毒 (或者叫ARP中毒):攻擊者欺騙你的局域網中的設備,誤導或者 “毒害” 它所知道其他設備的位置。這種恐怖而又簡單的攻擊使攻擊者給網絡帶來了巨大的危害,后面將會描述到。
你的所有ARP報文都是我們的!
這種使攻擊者能關聯任何IP地址和MAC地址的能力讓其可以進行很多種攻擊,包括拒絕服務攻擊(DoS, Denial of Service),中間人攻擊(Man in the Middle)和MAC洪泛(MAC Flooding)。
拒絕服務
一個黑客可以只做簡單的操作就將一個重要的IP地址和一個錯誤的MAC地址綁定。例如,黑客可以發送一個ARP響應報文 (到你的計算機) 將你所在網絡的路由器 (即我們常說的網管,譯者注) IP地址和一個根本不存在的MAC地址綁定起來。你的計算機一位它知道默認網關在哪,但是事實上它的所有數據包,其目的地址都不在這個網絡的網段上 (因為那個不存在的MAC不在此局域網的網段上,譯者注) ,它們最后消逝在了無盡的比特流中 (即因數據包的生命周期到了而信號消失,譯者注)。僅僅這一下,黑客就能阻止你連上因特網。#p#
中間人攻擊
黑客利用ARP緩存中毒來截獲你的局域網中兩臺設備之間的網絡信息。例如,我們假象黑客想要竊聽你的計算機,192.168.0.12,和你的網絡路由器 (即網關,譯者注) ,192.168.0.1,之間的通信信息。黑客先發送一個惡意的ARP “響應” ( 因為在此之前根本沒有請求) 到你的路由器,將他的計算機的MAC地址和192.168.0.12綁定 (如圖3).
現在你的路由器以為這個黑客的計算機就是你的計算機了。
然后,黑客在發送一個惡意的ARP響應到你的計算機,將他的MAC地址和192.168.0.1綁定起來。(如圖4).
現在你的機器以為黑客的計算機是你的路由器了。
最后,黑客開啟一個叫IP轉發的系統功能。這個功能讓黑客能將所有來自你的計算機的網絡信息轉發到路由器 (如圖5).
現在,只要你嘗試上網,你的計算機就會將網絡信息發送到黑客的機器上,然后黑客再將其轉發到路由器。由于黑客仍然將你的信息轉發到網絡路由器,所以你并不會察覺到他已經截獲了所有你的網絡信息,或許還竊聽了你的明文密碼或者劫持了你曾經安全的網絡會話。#p#
MAC洪泛
MAC洪泛是一種旨在網絡交換機的ARP緩存中毒技術。當這些交換機流量超載時它們常常進入到 “集線器” 模式。在 “集線器” 模式中,交換機由于太過繁忙而不能執行它的端口安全檢測功能,而是僅僅向網絡中的每一臺計算機廣播所有的網絡數據。利用大量的假冒ARP響應數據包去洪泛一臺交換機的ARP映射表,黑客能使大多數制造商的交換機超載,然后當交換機進入 “集線器” 模式時,就可以發送 (惡意的) 包去嗅探你的局域網。
害怕了?好,現在冷靜下來!
這是可怕的東西。ARP緩存中毒能夠利用一些微不足道的手段卻造成網絡的巨大危害。但是,當你進入到高度戒備狀態時,注意到一個重要的緩解因素:只有也在局域網中的攻擊者才能利用ARP的缺陷 (因為ARP協議只會在局域網(子網)中進行) 。黑客他要不是在你的網絡中找個接口插入而連接上你的局域網,要不就是控制一個局域網內的機器,這樣才能進行ARP緩存中毒攻擊。ARP的缺陷不能在被遠程利用。
那就是說,黑客會被知道他接入了這個網絡。優秀的網絡管理員應該能意識到ARP緩存中的技術。
由于ARP緩存中毒源于一個協議的缺陷,但是這個協議對于TCP/IP網絡的運轉又是必須的,你不能去修改它。但是你可以運用以下技術來防止ARP攻擊。
面向小型網絡
如果你管理著一個小型網絡,你或許可以試試使用靜態IP地址和靜態ARP映射表。用命令行輸入,比如在Windows中是 “ipconfig/all” ,在NIX中是 “ifconfig” ,你就可以查看在你的網絡中的所有設備的IP地址和MAC地址了。然后使用 "arp-s" 命令,你可以為你所知道的設備添加靜態ARP映射。“靜態” 就是不會變化;這可以防止黑客的欺騙ARP進入你的網絡設備中。你甚至可以創建一個登錄腳本當它們啟動時自動添加這些靜態ARP到你的計算機中。
然而,靜態ARP很難被維護;在大型網絡中更是不可能。那是因為你每加入一臺設備到你的網絡中都需要你手動地編寫ARP腳本或輸入每臺設備的ARP映射表。但是如果你是管理一個少于兩打的設備,這個技術或許適合于你。
面向大型網絡
如果你是管理著一個大型網絡,好好去研究一下你的網絡交換機的 “端口安全” 功能。有一個 “端口安全” 功能是允許你強制使你的交換機在每個端口只允許 (IP地址對應的) 一個MAC地址通過。這個功能會阻止黑客改變他機器的MAC地址或試圖映射多個MAC地址到他的機器上。這種技術常常用于幫助防御基于ARP的中間人攻擊。
面向所有網絡
你最好的防御方法就是掌握ARP中毒的機制并監視它。我強烈建議安裝一個ARP監視工具,比如ARPwatch,當有不正常的ARP通信時它會提醒你。這種警惕也是對付所有類型攻擊的最有力武器——就如Robert Louis Stevenson所寫的,“最殘酷的謊言常常是悄無聲息地說出來的”。
【編輯推薦】























