馬鉞 中國人民解放軍陸軍工程大學 楊旭 大連理工大學
隨著計算機互聯網應用的飛速發展,人們對網絡越來越依賴,而網絡信息安全也隨之成為當今社會關注的熱點問題。深刻了解網絡攻擊原理,并針對攻擊手段來做好網絡安全防護,就顯得非常重要。
常見的網絡攻擊手段包括網絡掃描、口令攻擊、緩沖區溢出攻擊、網絡監聽、網絡協議攻擊、拒絕服務攻擊、木馬攻擊等。其中,利用網絡協議的缺陷或漏洞進行攻擊是很常見的一種手段。ARP是局域網中必不可少的基礎協議,但因自身存在的明顯缺陷,也成為了黑客實施網絡攻擊的重點目標。
ARP是地址解析協議(Address Resolution Protocol)的英文縮寫,它是一個鏈路層協議,用于在局域網中根據IP地址獲取物理地址。
在局域網中,當主機或其它網絡設備有數據要發送給另一個主機或設備時,它不僅需要知道對方的IP地址,還必須知道對方的以太網MAC地址。因為二層的以太網交換設備并不能識別32位的IP地址,它們是以48位以太網MAC地址來識別對方的。必須將網絡層的IP數據報文填上源和目的的MAC地址,封裝成以太網數據幀才能在鏈路層傳輸,因此主機要知道目標IP地址與MAC地址的映射關系。
ARP協議就是用于根據IP獲取到MAC地址,來完成IP到MAC地址映射的協議。主機可以通過發送和接收ARP報文來詢問和獲取目的MAC地址,并將這種映射關系保存在本地ARP緩存中,以便下回使用。
ARP協議報文分為ARP請求和ARP應答報文,報文格式如圖1所示。

圖1 ARP報文格式
(1)硬件類型:表示硬件地址的類型。它的值為1表示以太網地址;
(2)協議類型:表示要映射的協議地址類型。它的值為0x0800即表示IP地址;
(3)硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節為單位。對于以太網上IP地址的ARP請求或應答來說,它們的值分別為6和4;
(4)OP(操作類型):1表示ARP請求,2表示ARP應答;
(5)發送端MAC地址:發送方設備的硬件地址;
(6)發送端IP地址:發送方設備的IP地址;
(7)目標MAC地址:接收方設備的硬件地址;
(8)目標IP地址:接收方設備的IP地址。
假設局域網中的主機A要向主機B發送信息,根據 A與B是否在同一網段,可分為兩種情況。
如果A(192.168.1.1)與B(192.168.1.2)在同一網段,ARP地址解析過程如下:
(1)主機A首先查看自己的ARP緩存,確定其中是否包含有主機B對應的ARP緩存項。如果找到了對應的MAC地址,則主機A直接利用ARP緩存中的MAC地址,對IP數據包進行幀封裝,并將數據包發送給主機B。
(2)如果主機A在ARP緩存中找不到對應的MAC地址,則將緩存該數據報文,然后以廣播方式發送一個ARP請求報文。ARP請求報文中的發送端IP地址和發送端MAC地址為主機A的IP地址和MAC地址,目標IP地址和目標MAC地址為主機B的IP地址和全0的MAC地址。由于ARP請求報文以廣播方式發送,該網段上的所有主機都可以接收到該請求,但是并不是所有的主機都會回復這個ARP請求包,只有當接收者的IP地址與ARP請求包中的Target IP address中標識的目的IP地址一致時才會進行回復。其他主機收到該請求報文后,發現自己的IP地址和ARP請求報文中的目標IP地址不相同,則丟棄該報文,不予響應。
(3)主機B發現自己的IP地址和ARP請求報文中的目標IP地址相同,則將ARP請求報文中的發送端(即主機A)的IP地址和MAC地址存入自己的ARP緩存中。之后以單播方式發送ARP響應報文給主機A,其中包含了自己的MAC地址。
(4)主機A收到ARP響應報文后,將主機B的MAC地址加入到自己的ARP緩存中以用于后續報文的轉發,同時將IP數據包進行封裝后發送出去。

圖2 同網段主機ARP地址解析過程
如果主機A和主機B不在同一網段時,主機A就會先向網關發出ARP請求,ARP請求報文中的目標IP地址為網關的IP地址。當主機A從收到的響應報文中獲得網關的MAC地址后,將報文封裝并發給網關。如果網關沒有主機B的MAC地址,網關會廣播ARP請求,目標IP地址為主機B的IP地址,當網關從收到的響應報文中獲得主機B的MAC地址后,就可以將報文發給主機B;如果網關已經有主機B的MAC地址,網關直接把報文發給主機B。
可以看出,在局域網通信中,ARP協議扮演著不可缺少的角色。
為了避免每次通信都進行ARP廣播,主機使用一個ARP高速緩存,存放最新的IP地址到MAC硬件地址之間的映射記錄。主機獲取到目的MAC地址后,將會在自己的ARP緩存中增加一條目的主機IP和MAC地址的映射表項,以用于后續到同一目的地報文的轉發。
ARP緩存中的表項分為動態ARP表項和靜態ARP表項。動態ARP表項由ARP協議通過ARP報文自動生成和維護,定期老化,當到達系統預設的老化時間時,相應的動態ARP表項會被刪除。動態表項也可以被新收到的ARP報文更新,遵循“后到優先”的更新原則。當主機收到來自某IP的ARP報文時,就會更新現有ARP表項中已經存在該IP對應的ARP表項。
靜態ARP表項通過手工配置和維護,不會老化和更新。
ARP協議有一個明顯的安全缺陷,即默認通信雙方都是絕對安全可信的,只要主機接收到一個ARP報文,即使該報文不是該主機所請求的對方主機發出的應答報文,該主機也會將ARP報文中的發送者的MAC地址和IP地址加入或更新到ARP緩存中。更甚至,許多操作系統在自己沒有發出任何ARP請求時,仍然接受來自其他設備的ARP響應報文,并更新ARP緩存。這種不做任何驗證和判斷的緩存更新機制,使得ARP攻擊成為局域網中一種常見又危害巨大的攻擊手段。
攻擊者可以在ARP報文中填入不正確或虛假的MAC地址,并在局域網中主動大量發送偽造的ARP報文,促使網內其他主機或網關更新ARP緩存,記錄錯誤的IP和MAC映射關系,從而不能將數據發往正確的目標。這稱為ARP緩存投毒。
利用ARP緩存投毒,攻擊者可以發起很多類型的攻擊,包括ARP泛洪、ARP欺騙和中間人攻擊等。這些攻擊可以干擾局域網內的正常通信,導致用戶流量受限,直至斷網,也可以竊取通信數據,非法獲取用戶帳號和密碼,造成經濟上的重大損失。
ARP泛洪:網絡設備在處理ARP報文時需要占用系統資源,同時因為系統內存限制和查找ARP緩存效率的要求,一般網絡設備會限制ARP緩存的大小。攻擊者就利用這一點,通過偽造大量源IP地址變化的ARP報文,使設備ARP緩存不斷刷新,直至溢出,正常主機的ARP報文不能生成有效的ARP表項,導致正常通信中斷。
ARP欺騙:攻擊者偽造一個ARP響應報文,在源IP地址位置填入真實網關的IP,偽造一個錯誤或是不存在的MAC地址填入源MAC地址,將受害者的IP地址和MAC地址填入目的地址,并在局域網中大量發送該報文。當受害主機接收到這些偽造的ARP報文時,就會更新自己的ARP緩存中網關IP所映射的MAC地址,從而將本應該發給網關的數據發向了一個錯誤或不存在的MAC地址,導致主機無法訪問其他網段的主機或網絡服務。(見圖3)

圖3 仿冒網關ARP欺騙
中間人攻擊:如果攻擊者在ARP響應報文的源MAC中填入自己的MAC地址,就可以將自己偽裝成其他IP的主機或網關,從而截取到其他主機發來的數據包。如果既對受害者主機偽裝成網關,同時又對網關偽裝成受害者,那么攻擊者就可以變成受害主機和網關之間通信的“中間人”,可以竊聽獲取、甚至修改偽造正常通信數據。
演示環境:

主機角色 IP 網關 操作系統攻擊者 192.168.75.131 192.168.75.1 Kali Linux A受害者 192.168.75.135 192.168.75.1 Windows XP B
攻擊步驟:
在主機A上尋找目標主機B,可以使用fping命令探嗅本地局域網內部機器IP,而后選擇對該主機實施ARP欺騙。
在主機A上對主機B實施網關ARP欺騙。使用命令
arpspoof -i eth0 -t 192.168.75.135 192.168.75.1
arpspoof是一個可用于ARP欺騙的開源工具。該命令作用是對主機B發送ARP報文,其中源IP為網關192.168.75.1,源MAC地址為網絡接口eth0的MAC地址。
主機B收到大量來自A的ARP報文,B的ARP緩存表中網關192.168.75.1對應的MAC地址被刷新成了A的MAC地址,B發往網關的數據包將被錯誤地發往A。
由于主機A默認未開啟IP數據包轉發功能,B發往網關的數據包被錯誤的發往A,達到不了真正的網關,此時可以看到主機B無法正常連接網絡。

圖4 ARP欺騙成功,目標機器無法連接網絡
(1)在主機A上對網關實施主機ARP欺騙。使用命令arpspoof -i eth0 -t 192.168.75.1 192.168.75.135
該命令將對網關發送ARP報文,其中源IP為主機B的192.168.75.135,源MAC地址為網絡接口eth0的MAC地址。網關發往B的數據將被發往A。
(2)在主機A上開啟端口轉發,允許主機A像路由器那樣轉發數據包。
echo 1 > /proc/sys/net/ipv4/ip_forward
(3)由于A開啟了IP數據包轉發,主機B和網關之間傳輸的數據包可經由A的轉發到達對方。此時A成為B與網關之間通信的中間人。
(4)在A上另外打開一個終端,鍵入命令
driftnet -i eth0
driftnet是一款圖片捕獲工具,可以在網絡數據包中抓取圖片。由于此時B和網關之間的數據包都經由A轉發,A即可截取B網絡應用中的圖片,A通過ARP欺騙成功獲取目標B的信息。(見圖5和圖6)

圖5 被攻擊機器瀏覽網頁

圖6 欺騙成功(左側終端進行欺騙,右側終端讀取圖片信息)
ARP攻擊是局域網中很容易實施的攻擊。在了解攻擊原理之后,可以在終端主機和網絡交換設備上部署一些針對性的防范措施。
在終端主機上,防護重點是保護本地ARP緩存,可配置的防護手段包括:
配置靜態ARP緩存表項。將網關和常用的通信主機的IP和MAC地址綁定為靜態表項,不允許ARP解析更新。
安裝ARP防火墻。其工作原理一般有兩種:第一種是定期廣播ARP報文,宣告正確的本地IP地址和MAC地址,以保持其他設備中正確的ARP緩存表項。第二種是防止惡意攻擊篡改本機的ARP緩存表項,尤其是網關的MAC地址。
網絡交換和路由設備上的防范主要從兩個方面考慮:建立正確的ARP映射關系、檢測并過濾偽造的ARP報文,保證經過其轉發的ARP報文正確合法;抑制短時間內大量ARP報文的沖擊。在交換機上可配置的一些安全策略包括:
ARP報文有效性檢查。設備收到ARP報文時,對以太報文頭中的源、目的MAC地址和ARP報文數據區中的源、目的MAC地址進行一致性檢查。如果以太報文頭中的源、目的MAC地址和ARP報文數據區中的源、目的MAC地址不一致,則直接丟棄該ARP報文。否則允許該ARP報文通過。
禁止接口學習ARP表項的功能。在設備上禁止指定接口學習ARP表項的功能,可以有效應對ARP泛洪攻擊,防止ARP表項溢出。
ARP表項嚴格學習。設備僅學習自己發送的ARP請求報文的應答報文,并不學習其它設備向路由器發送的ARP請求報文,即可以拒絕掉大部分的ARP請求報文攻擊。
ARP表項限制。設備基于接口限制學習ARP表項的總數目,可以有效的防止ARP表項溢出。
ARP報文限速。設備對ARP報文進行數量統計,在一定時間內,如果ARP報文數量超出了配置的閾值,超出部分的ARP報文將被忽略,設備不作任何處理,有效防止ARP表項溢出。
當在局域網中部署了如上較完整的安全策略之后,基本可以防范絕大部分的ARP攻擊。
由于ARP協議自身存在明顯的安全缺陷,在局域網中很容易實施ARP攻擊,會對網絡信息安全造成很大的影響。在了解了ARP攻擊的原理后,只要在終端主機和網絡交換設備上部署相應的安全策略,就基本可以防范絕大部分的ARP攻擊。
[1] 凱文R.福爾(Kevin R. Fall).TCP/IP詳解卷1:協議[M].機械工業出版社出版,2016-07-01
[2]郭會茹,楊斌,牛立全. ARP攻擊原理分析及其安全防范措施[J]. 網絡安全技術與應用,2015年,06期
[3]顧靜.局域網環境下的ARP攻擊行為與防御措施[J].信息系統工程,2016年,10期
[4]靳燕.ARP攻擊實驗仿真及防范技術分析[J].網絡安全技術與應用,2016年,07期