觀點

你的ARP Cache被下毒了嗎?

2010 / 04 / 29
王瑞祥
你的ARP Cache被下毒了嗎?

ARP (Address Resolution Protocol)區域網路的魔術師,一個古老的網路協定,絶大部份的區域網路中都會用到ARP。但由於其協定在設計上之缺陷,即便在現今switched的網路環境中,也可被駭客利用而在區域網路中發動攻擊。針對ARP協定的攻擊在區域網路中破壞力強大,此種攻擊可損害資訊安全中對企業資產的保護必須達到的三個目標:可用性(Availability)、完整性(Integrity)及機密性(Confidentiality),其威脅程度不容小覻。本文將以網際網路上免費的軟體工具C工具,在區域網路中使用ARP協定攻擊,達成網址轉嫁(DNS Pharming)的效果,藉展示其可行性讓讀者了解此種攻擊手法之原理,進而思考防護之道,以避免企業內部遭此威脅攻擊。

 

偽冒ARP Reply ARP Cache中毒

ARP協定定義在IETF RFC826An Ethernet Address Resolution Protocol,依照RFC826中的定義,ARP的主要目的是用於將協定位址(Protocol Address,例如:IP位址)轉換為區址網路位址(Local Network Address,例如:Ethernet位址)。以我們實際在使用電腦時,只要有牽涉到區域網路的通訊時,都需要藉助ARP協定定位至目標電腦的MAC(Media Access Control)位址。例如當我們在電腦(來源電腦)ping另外一部電腦(目標電腦)時,下的參數雖然是IP位址,但是網路要將封包要送到目標電腦,必須要知道其MAC位址,填入Ethernet frame才能正確送達,此時ARP便介入協助。

 

來源電腦在執行ping之前,會先廣播(目標MAC位址填 FF: FF: FF: FF: FF: FF)一個ARP封包出去,即 ARP Request,詢問在此區域網路中:「誰是這個IP,請回覆我你的MAC!」,收到ARP Request的所有電腦中,擁有此IP的電腦便會回覆來源電腦ARP Reply的封包。接下來來源電腦才會送出PING(ICMP Echo Request)的封包。如1所示,由來源電腦192.168.1.101 PING 192.168.1.254 的封包側錄結果。2則為ARP Request的詳細內容,紅框處即為詢問IP 192.168.1.254 MAC位址,此時MAC填為 “00: 00: 00: 00: 00: 00”

 

在收到目標電腦回覆的ARP Reply之後,來源電腦會將對方的IP位址和MAC位址暫存在作業系統的ARP Cache中,在Cache Time-out前,下次要傳送封包前,來源電腦會先查詢ARP Cache中的目標電腦MAC位址,而不需要每次都廣播 ARP Request詢問。在Windows中可執行 arp –a 的指令查看ARP Cache的內容,如3所示。

 

看起來一切似乎都運作得很美好,不是嗎?不幸的是,ARP和大多數TCP/IP 的協定有著相同的安全問題:沒有身份認證機制,也沒有比對送出的Request和回覆的Reply的設計。也就是說在這個區域網路的所有電腦,都可以送出符合 RFC 826規範的ARP Reply封包給其他電腦,而收到ARP Reply的電腦也二話不說就照單全收,然後暫存在ARP Cache中,做為通訊前的MAC查詢參照。這樣會產生什麼樣的問題呢?如果這筆ARP Reply的內容是偽冒(spoofed)的,由電腦H送出,內容宣稱電腦AMAC MACH,此時收到這筆ARP Reply的電腦B會在ARP

Cache中暫存一筆記錄為:

 

IPA            MACH

 

電腦B在傳送封包給電腦A之前,查詢ARP Cache中的資料,將封包中資料鏈結層中的MAC位址填為 MACH,聰明的讀者,你應該猜得出來這個封包會送到那一部電腦吧?沒錯!正是電腦 H,也就是駭客的電腦。這種利用偽冒的ARP Reply篡改受害電腦的ARP Cache的手法,稱之為“ARP Cache Poisoning”、 “ARP Poisoning”或“ARP Spoofing”

 

此例中如果電腦H也對電腦B發動同樣的攻擊,且電腦H可以轉送(forwarding)電腦A與電腦B的網路封包,這種攻擊的架構稱之為中間人攻擊(MITM, Man-in-the-Middle)。電腦A與電腦B的使用者不會察覺到異狀,仍以為是在正常的通訊狀況下,此時電腦H便可以在中間側錄雙方之間的封包,甚至篡改封包內容後再轉送。利用 ARP Cache Poisoning MITM攻擊示意圖如4

 

利用工具 進行中間人攻擊

接下來我們使用某軟體工具(C工具代表)來說明上述的情境。測試的網路架構圖如5,其中電腦A和電腦H位於同網段,電腦B是無線寬頻路由器,連接網際網路。我們在電腦H上安裝C工具,進行ARP Cache Poisoning的展示。

 

首先執行C工具,選擇網路介面後,進入監聽模式。接下先掃描在區域網路上有那些電腦處於連網狀態,工具是以廣播 ARP Request 的方式,詢問網段中所有的IP,側錄封包如6

 

因為C工具不是使用 ICMP Echo Request(ping)的方式探測,所以不會被主機型防火牆阻擋,本測試中得到連網電腦的IPMAC7,其中第一部電腦即為電腦A,另外一部為電腦B,也就是路由器。

 

我們先查看電腦A在被攻擊前的 ARP Cache狀態(8),此時為正常的狀態。接下來檢查電腦B(Router)在攻擊前的狀態,電腦B在本例中是一台無線寬頻分享器,透過網頁查詢介面得到其ARP Cache狀態如9

 

接下來回到電腦H(Hacker)開始對電腦A及電腦B發動ARP Cache Poisoning攻擊(10),此時C工具分別發出偽冒的 ARP Reply 封包給電腦A及電腦B(11)

 

此時我們查詢電腦A ARP Cache,發現有一筆記錄已遭篡改(12紅框處),路由器的IP對應的MAC位址變成電腦HMAC了。再看電腦B(Router)ARP Cache,想當然也是慘遭毒駭,原本電腦AMAC也被篡改成電腦H(Hacker)MAC(見圖13)

 

執行完上述的步驟後,已經形成典型的中間人攻擊架構了,此時電腦A與電腦B所有的網路封包都會先通過電腦H,使用者若未查看ARP Cache的狀況不易察覺異狀。示意圖如圖14

 

可進行DNS Pharming攻擊

我們使用C工具的APR-DNS的功能,進行DNS Pharming攻擊。電腦H會在中間攔截電腦ADNS Query 封包,將封包內欲查詢的domain name,轉成駭客設定的IP,在此測試中,我們將

www.cnn.com對應至 Amazon的網站IP。當然,如果是真正的駭客或病毒,應該就不止這樣了。

 

C 工具執行APR-DNS的過程,以15中側錄的封包說明。

1.         15 No.778當電腦A的使用者瀏覽www.cnn.com時,必須先解析 domain name,於是作業系統會先發出 DNS Query的封包(),目標IP雖填為電腦B(router),目標MAC卻填為電腦H

2.          15 No.779:電腦H收到此封包後,將來源MAC改為自己,再轉送到電腦B

3.          15 No.782:電腦B(路由器)收到DNS(168.95.1.1)的回覆後,將正確的解析結果(www.cnn.com157.166.255.19)轉送給電腦A,但目標MAC填為電腦H

4.          15 No.783:電腦H收到後,依駭客預先的設定將封包內容篡改後www.amazon.comIP(www.cnn.com72.21.207.65),再回覆給電腦A

 

結果就是電腦A的使用者明明在網址列鍵入http://www.cnn.com

,看到的卻是Amazon (16)

 

當然只要 ARP Cache Poisoning 完成後,除了上述造成 DNS Pharming 的效果之外,駭客可以做的壞事還很多。諸如:竊聽網路封包中的機密資訊,如明文協定(FTP, POP3, 沒有加密的Web mail)中的認證資訊;或者截取加密過的認證資訊(如網路芳鄰),再使用破密軟體破解;中斷某部電腦的網路連線等,所以資訊安全要求的三個主要目標:機密性、完整性和可用性,駭客使用ARP Cache Poisoning 技巧一次搞定是不是很恐怖呢?

 

防範與偵測

那麼一般使用者或網管人員應該要怎麼防制及偵測ARP Cache Poisoning的攻擊呢?

1. 對重要的電腦可將其設為靜態ARP

重要的電腦例如路由器,可在 client 端電腦將其設定為靜態

ARP(Static ARP ),靜態 ARP 不受後續收到的ARP Reply影響,

因此可保護ARP Cache中的重要記錄不被篡改。在 Windows

的設定方式如圖17。不過要注意的是如果網路介面重新啟動

(例如網路拔掉重新接上),會清掉ARP Cache 的所有紀錄,

所以須重新設定。

 

2. 在交換器端阻擋        

有些網路設備的廠牌,其交換器可提供安全的IPMAC的對應功能以及ARP封包的檢驗機制,ARP封包要進入switch時,switch會檢驗該封包,如果是偽冒的ARP封包,將無法通過switch的驗證而被丟棄,藉此在switch端阻擋 ARP Cache Poisoning 的攻擊封包。

 

3. 考慮開啟交換器的Port Security功能

在企業組織的資安政策支持下,可考慮開啟switch的“port

security”功能,此功能可讓網管人員鎖定swtich port MAC,因

此如果不是預設可接取該switch port 的電腦連接該 switch port

無法連網;如果是偽冒的ARP封包,因來源MACswitch port

不匹配,所以無法進入switch,可達到防制ARP 攻擊的威脅。

 

總結 

許多的資安分析報告指出,50%~60%的資安事件都是組織內部

有意或無心所致,內部網路的安全不容忽視。前述的ARP攻擊

以目前的狀況看來,在沒有其他替代協定之前,區域網路中仍

會繼續使用ARP協定,任何有機會侵入內部網路的人員,都可

以使用網際網路上輕易取得的ARP Spoofing 工具進行攻擊,此

外,也不乏利用此協定缺陷的病毒,資安人員不可掉以輕心。

 

本文作者為CISSP/CEH 認證教育訓練課程講師