王 軍,黃 皎,吳 穹,雷 鳴,盧 程
(河海大學,常州 213022)
隨著網絡的普及和發展,越來越多的嵌入式設備具備了網絡通信的能力。信息在方便快捷傳輸的同時,其通信的質量和安全也面臨著挑戰。ARP(Address Resolution Protocol)[1]地址解析協議屬于TCP/IP協議族中網絡層協議,通過使用ARP協議能夠獲取局域網內其他設備的IP地址和MAC地址的映射關系,從而使網絡設備之間能夠相互通信,所以在嵌入式網絡設備通信過程中,ARP協議扮演著十分重要的角色。但是ARP協議是無狀態協議,很容易受到惡意設備的攻擊和欺騙。通過ARP攻擊,攻擊方能夠阻塞網絡,竊取重要信息。所以尋求一種有效的抵御ARP攻擊的方法尤為重要。針對這一問題,從網絡化嵌入式設備出發,在原有的地址解析協議基礎上加以補充,提出了一種能有效抵御ARP攻擊的解決方案。
ARP的功能分為兩部分:一部分在發送數據包時請求獲得目的方的物理地址;另一部分向請求物理地址的設備發送解析結果[2]。通過使用ARP協議,局域網內的設備能夠獲得給定IP主機的MAC地址。MAC地址唯一的標識每臺網絡設備,在局域網通信中,每個以太網幀的頭部都包含有接收方的MAC地址,因此用于獲取接收方MAC地址的ARP協議在網絡通信中至關重要。
ARP協議的安全缺陷來源于協議自身設計上的不足。ARP協議工作在局域網中,早期的協議設計者認為局域網是可信賴的,同時為了考慮傳輸效率,沒有加入安全機制。在通常情況下,每個設備的ARP緩存表中都保存有正確的IP地址和MAC地址的映射關系,設備間能夠正常通信。但是,當網絡中的設備接收到其它設備發送的ARP回應信息后,不論之前是否發送過ARP請求,它自身的ARP緩存表都會得到更新。在這種情況下,如果惡意設備B向設備A發送偽造的ARP回應信息,設備A在接收到ARP回應信息后,ARP緩存就會得到錯誤的更新。
此外,當向指定的IP設備發送ARP請求時,接收方在接收到ARP請求后,為了方便后期通信,也會更新ARP緩存。這種缺陷,同樣也會給惡意攻擊設備留下可乘之機。
設備在接收到網絡中的ARP請求或者ARP應答后會更新本地的ARP緩存。利用這一規則,惡意設備可以發送包含有偽造IP地址和MAC地址映射關系的ARP請求或者ARP應答,其他設備在接收到該請求或者應答后,由于無法檢查地址的正確性,就會錯誤的更新本地的ARP緩存。中毒的設備在利用錯誤的緩存表項時,由于表項中的MAC地址不存在,就會造成信息無法送達接收方。
惡意設備監聽到局域網中設備A向設備B發送ARP請求后,向A連續多次發送ARP應答信息或請求信息,在應答或者請求信息中,攜帶有接收方B的IP地址和惡意設備的MAC地址。此時A利用惡意設備發送過來的偽造的IP地址和MAC地址映射進行更新。此后,A向B發送信息時,信息將全部被惡意設備截獲。利用這種方法同樣也可以欺騙兩臺主機,使兩臺主機的流量都流經惡意主機,這樣惡意主機就可以獲取這兩臺主機的通信內容。APR攻擊是其他惡劣攻擊的組成部分,比如DoS攻擊,MITM攻擊。因此抵御ARP攻擊十分重要。
文獻[3]提出的Arpwatch監測軟件能夠監測可疑的ARP信息。當IP地址和MAC地址映射發生改變時,監測軟件以電子郵件的形式發出警報。但是它依賴于網絡管理員能否準確判別非惡意事件和ARP攻擊事件的能力,并且在發生攻擊時能否采取及時有效的措施。文獻[4]提出的Snort也能進行ARP攻擊監測,當攻擊發生時能夠產生警報通知管理員。但是Snort有很高的誤報率。此外以上采用監測軟件的方法適合運行在計算機中,由于嵌入式設備的資源有限,難以運行。RFC 2390[5]提出了向某個MAC地址發送“逆ARP”請求來避免MAC地址欺騙攻擊。根據響應來判斷某個MAC地址是否被克隆。但是這種方法抵御攻擊的種類有限。文獻[6]提出在交換機中安裝OpenWrt,并且在局域網中增設服務器用于保存IP地址和MAC地址,通過修改交換機的固件,使原來廣播的ARP請求全部轉發到服務器中,通過服務器進行應答。這種方法的缺點在于增設了額外的服務器,增加了網絡成本。
以上方法可以分為兩類:一類通過運行監控軟件來監測ARP攻擊,并由管理員作出決策,這種方式依賴于管理員的經驗而且不適合應用于嵌入式設備中;另一種是在網絡中增設監控硬件,缺點是增加了原有網絡的成本。由于嵌入式設備代碼透明,開發人員可以十分方便的對網絡協議部分進行編寫和修改,利用此特點,提出了一種在原有的ARP協議基礎上進行改進的方法,通過改進的協議來抵御ARP攻擊。
原ARP緩存表項的更新完全依賴于接收到的ARP請求和回應信息,不論接收到的信息正確與否,都將被用來直接更新本地的ARP緩存表。改進方法,從處理ARP請求和回應信息角度出發,借助于原有的ARP請求和回應報文格式,重新設計了ARP請求和回應規則。具體的規則如表1所示。下面對ARP請求和回應規則進行詳細闡述。
ARP緩存表的每個表項中設有3個元素:IP地址、MAC地址和生存時間。IP地址和MAC地址是一一對應的關系,生存時間表示每個表項的生存時間,其中網關表項的生存時間設定為T,其他表項的生存時間設定為2T。由于每臺設備都在特定的局域網中,因此設備所在網絡網關的IP地址和MAC地址也就唯一確定,將設備所在網絡網關的IP地址和MAC地址寫入設備中,并作為信任地址,確保設備對網關的可靠綁定。
ARP緩存表中每一表項包含有生存時間,當生存時間到期后,主動發送ARP請求。當設備中網關表項的生存時間到期后,所做的處理流程如圖1所示。首先向網關發送ARP請求,此時ARP請求以正常的廣播形式向外發送,網關收到請求后,發送回應報文。發送設備在接收到ARP回應信息后,利用已保存的網關IP地址和MAC地址,核對幀頭中源MAC地址以及報文中源MAC地址、源IP地址是否均為網關地址,若三個地址都正確,則將緩存中網關表項的生存時間更新為T;如果回應的以太網幀中的源MAC地址和網關實際的MAC地址不符,說明有惡意設備克隆了網關的IP地址和MAC地址,如果ARP回應幀中的源MAC地址和源IP地址不匹配,則說明有惡意設備試圖修改ARP表項,以上情況都不更新網關表項的生存時間,也不更新IP地址和MAC地址,繼續向網關發送ARP請求。

表1 改進的ARP協議規則

圖1 網關表項生存時間到期后處理流程圖
當設備ARP緩存表中普通表項的生存時間到期后,例如A表項在2T的時間內未得到更新,在2T時間到來時,將發送針對A的單播的ARP請求,如果接收到A的回應請求,則更新ARP表項,否則將A的ARP表項刪除。流程如圖2所示。

圖2 普通表項生存時間到期后處理流程圖
通常情況下,如果網絡中廣播了ARP請求,當發出請求的一方接收到該請求之后,其ARP緩存表項就會得到更新,其他設備即使接收到了ARP請求,也不會進行任何操作。與上述更新ARP緩存表項的方法不同,修改的規則中,對ARP緩存更新的方法進行了重新設計,具體方法如下:每個設備的ARP緩存表中都保存有生存時間為T的網關映射表項,假設A中網關表項生存時間T到期后,A向網關發送ARP請求,由于該請求是廣播形式,局域網中所有設備都可以接收到,其他設備在監聽到該請求后,判斷該請求是否是向網關發送的ARP請求,如果是,則向A發送單播的ARP請求(封裝在以太網幀中的單播ARP請求報文格式如表2所示)。設備A在接收到請求后發送ARP回應信息,其他設備在收到ARP回應信息后更新本地緩存表中A對應的ARP表項,并且生存時間更新為2T,如果沒有收到ARP回應報文則不做任何處理。對于來自其它設備的ARP請求,該設備在接收到后同樣會進行回應,但不更新本地緩存。上述過程的流程如圖3所示。

表2 單播ARP請求報文
在ARP緩存表中,網關表項的生存時間為T,其他表項的生存時間為2T。在本規則的設計中,當設備A中網關表項的生存時間T到期后,會以廣播形式發送針對網關的ARP請求,此時其他設備中A的緩存表項就會在T時間時得到更新,表項的生存時間更新為2T。實際上每個設備緩存表中每個表項在間隔T時間后都會得到更新,設置2T的生存時間實際上是考慮到設備在收到針對網關的ARP廣播請求后,從發送ARP單播請求到最后接收到ARP回應信息要花費一段時間,2T時間留有了充足的裕量。

圖3 ARP回應信息處理流程圖
與通常情況下接收到任意的ARP請求立即更新緩存不同,在本設計中ARP緩存的更新全部依賴于每個設備向網關發送的ARP廣播請求,但是每個設備在接收到ARP請求后,同樣會發送回應信息。
為了測試上述方案抵御ARP攻擊的能力,將兩個EasyArm8962開發板和一臺主機接入局域網中。在開發板上將上述方案實現,并通過串口將ARP緩存表中的表項實時顯示在上位機中。接入局域網的主機上運行有ARP攻擊軟件WinArpAttacker,用來對兩個開發板進行ARP攻擊。通過觀察開發板發送到上位機中的ARP緩存表項來對該方案進行測試。
試驗中,將兩個開發板分別編號為設備A,設備B。A 的IP 地址為10.4.100.154,MAC 地址為00-14-97-F0-07-73;B 的 IP地址為 10.4.100.155,MAC地址為00-24-81-38-9B-08。網關的 IP地址為10.4.100.254,MAC 地址為00-1A -A9-15-FD-42。
WinArpAttacker中的Send功能能夠發送內容任意的ARP請求和回應報文。利用該功能分別不間斷的發送冒充來自網關和其他主機的ARP請求和回應報文,發送不存在的IP和MAC地址映射表項,通過觀察上位機接收到的ARP緩存表項,未發現有異常的表項出現。實驗結果如圖4、圖5所示。

圖4 設備A中的ARP緩存
針對嵌入式網絡設備易于遭受攻擊的問題,從嵌入式設備的角度考慮,利用其代碼透明易于修改的特點,在原有的ARP協議基礎上,設計出了適用于網絡化嵌入式設備的改進版本的ARP協議。通過實驗驗證,具有一定的抵御ARP攻擊的能力,為網絡化嵌入式設備抵御ARP攻擊提供了一種可行的方案。

圖5 設備B中的ARP緩存
[1]David C.Plummer.Ethernet Address Resolution Protocol[DB/OL].SanDeigo,Calif:IETE,1982[June17,012].http://www.rfc - editor.org/pdfrfc/rfc826.txt.pdf.
[2]蘭少華,楊余旺,呂建永.TCP/IP網絡與協議[M].北京:清華大學出版社,2006.
[3]L. N. R. Group.Arpwatch,the ethernetmonitor program;for keeping track of ethernet/ip address pairings[J/OL].2001[June 17,2012].ftp://ftp.ee.lbl.gov/arpwatch.tar.gz.
[4]Martin Roesch.The Snort:The open source network intrusion detection system[DB/OL].1998[July 20,2012].http://www.snort.org.
[5]T.Bradley.Inverse address resolution protocol[DB/OL].SanDeigo,Calif:IETE,1998[July20,2012].http://www.rfc - editor.org/pdfrfc/rfc2390.txt.pdf.
[6]Ortega A P,Marcos X E,Chiang L D,Abad C L.Preventing ARP cache poisoning attacks:A proof of concept using OpenWrt[A].In:Network Operations and Management Symposium[C].2009:29-31.