如果企業(yè)正著手準備部署IPv6,那么一定要了解“友鄰發(fā)現(xiàn)(ND)”及其漏洞。
IPv6友鄰發(fā)現(xiàn)是IPv6協(xié)議套件的一個核心部件。它可用于IPv6解析和IPv6無狀態(tài)地址自動配置。本文主要介紹各種基于友鄰發(fā)現(xiàn)(ND)的攻擊,以及闡述IT管理員如何使用一個開源IPv6工具套件來評估所有可能受此類問題影響的安全設備的有效性。
IPv6友鄰發(fā)現(xiàn)(ND)是IPv6協(xié)議套件的一個關鍵組件,它部署在IPv6節(jié)點,包含許多的功能:
· IPv6地址解析
· 無狀態(tài)地址自動配置
· 重復地址檢測
· 友鄰中斷檢測
IPv6地址解析包括將一個友鄰節(jié)點的IPv6地址映射到相應的鏈路層地址上。在IPv4中,執(zhí)行相同功能的是地址解析協(xié)議(Address Resolution Protocol, ARP)。無狀態(tài)地址自動配置(Stateless address autoconfiguration, SLAAC)包括發(fā)現(xiàn)鄰近路由器和獲取用于建立IPv6連接的網(wǎng)絡配置信息。重復地址檢測(Duplicate address detection, DAD)是一個在部署一個IPv6網(wǎng)絡通信地址之前用于檢測重復IPv6地址的功能。最后,友鄰中斷檢測(NUD)可用于評估一條通向相鄰節(jié)點路徑的可達性。在遇到節(jié)點中斷時,可以部署一條替代路徑。
友鄰發(fā)現(xiàn)使用互聯(lián)網(wǎng)控制消息協(xié)議v6消息控制它的所有功能;它不同于ARP,后者直接運行在底層的鏈路層協(xié)議之上。雖然這種設計方式看起來“更整潔一些”(因為ND不會綁定到任何一種鏈路層技術上),但是這里也包含一些重要影響。例如,任何用于監(jiān)控ND流量或防御ND攻擊的設備或技術都必須應對IPv6數(shù)據(jù)包的多樣性及其復雜性。又例如,IPv6碎片和IPv6擴展頭信息就被證實可能會影響任何ND安全性、監(jiān)控設備或技術。
IPv6地址解析及其工作方式
當IPv6數(shù)據(jù)包發(fā)送到本地鏈路時,一個相鄰節(jié)點的IPv6地址(可以是最終目標或中間路由器)需要映射到相應的鏈路層地址。
想要搞壞地址解析功能的最簡單方法是部署nDisc6 IPv6診斷工具的ndisc6工具(開源)。ndisc6工具可以破壞兩個功能:解析得到的IPv6地址和用于執(zhí)行地址解析的網(wǎng)絡接口。例如,它可能將IPv6地址fc00:1::1解析為下面的鏈路層地址:
圖1:解析一個IPv6地址
一個IPv6實現(xiàn)在一個名為友鄰發(fā)現(xiàn)緩存(與之對應的是IPv4的ARP緩存)中保存著IPv6地址到鏈路層地址的映射列表。在手工評估一個節(jié)點是否下載了錯誤地址映射(可能由攻擊造成的錯誤)的過程中,檢查友鄰緩存是非常有用的。所有IPv6實現(xiàn)都提供了用于檢測友鄰緩存的方法或工具。例如,在GNU/Linux系統(tǒng)中,使用“ip”命令就可以檢查友鄰緩存:
圖2:檢查友鄰發(fā)現(xiàn)緩存
結(jié)果中每一行包含一個IPv6地址、友鄰所在的網(wǎng)絡接口、相應的鏈路層地址、表示地址是否指向一個路由器的關鍵字(router)和這個記錄的狀態(tài)(例如,友鄰是否可達、映射信息是否失效等)。
在BSD系列操作系統(tǒng)中,則可以使用ndp檢查友鄰緩存的內(nèi)容: