IPv6全球單播地址,顧名思義,是用于互聯(lián)網(wǎng)通訊的IPv6地址(而不是,比方說,僅用于本地子網(wǎng)內(nèi)通訊的本地地址)。它類似于IPv4:全球路由前綴通常由上游供應(yīng)商分配,本地網(wǎng)絡(luò)管理員將組織網(wǎng)絡(luò)分成多個(gè)邏輯子網(wǎng),而接口ID(IID)用來確定該子網(wǎng)中的特定網(wǎng)絡(luò)接口。
在選擇接口ID(IPv6地址的低階64位)時(shí)有很多選擇,包括:
• 嵌入MAC地址
• 采用低字節(jié)地址
• 嵌入IPv4地址
• 使用“繁復(fù)”的地址
• 使用隱私或臨時(shí)地址
• 依賴于過渡技術(shù)或共存技術(shù)
不幸的是,這些因素都減小了潛在的搜索空間,使IPv6主機(jī)掃描攻擊變得更容易實(shí)現(xiàn)。以下部分解釋了具體的原因:
嵌入式MAC地址
大多數(shù)IPv6主機(jī)是根據(jù)非營利組織互聯(lián)網(wǎng)協(xié)會(huì)(Internet Society)開發(fā)的無狀態(tài)地址自動(dòng)分配(SLAAC)來生成它們的地址。SLAAC獲取MAC地址,在中間插入一個(gè)16位數(shù)字,在以太網(wǎng)的中,這讓接口ID(還是地址的低階64位)使用下面的語法:
在這種情況下,接口ID至少有16位是都知道的。接口ID的其余位(從底層以太網(wǎng)地址借來的位)也是按照特定的模式。
因此,在規(guī)劃IPv6主機(jī)掃描攻擊時(shí),攻擊者可能已經(jīng)知道了目標(biāo)企業(yè)購買網(wǎng)絡(luò)設(shè)備的供應(yīng)商的情況。攻擊者可以據(jù)此減少搜索空間到只有這些 OUI(企業(yè)唯一標(biāo)識(shí)符),也就是分配到該供應(yīng)商的標(biāo)識(shí)符。然后他們可以進(jìn)一步縮小搜索空間,因?yàn)橐蕴W(wǎng)地址的低階24位通常是根據(jù)制造的網(wǎng)絡(luò)接口卡按順 序分配的。例如,如果企業(yè)從相應(yīng)供應(yīng)商購買了400個(gè)系統(tǒng),這些系統(tǒng)可能有連續(xù)的以太網(wǎng)地址(并且連續(xù)的IPv6地址)。只要攻擊者通過嘗試隨機(jī)地址發(fā)現(xiàn) 目標(biāo)網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn),就可以根據(jù)嘗試連續(xù)地址,得到其他節(jié)點(diǎn)。
虛擬化技術(shù)是一個(gè)有趣的特殊情況,因?yàn)榇蠖鄶?shù)虛擬化產(chǎn)品對虛擬機(jī)的網(wǎng)絡(luò)接口卡采用了特定的IEEE OUI,也就是說,當(dāng)攻擊者瞄準(zhǔn)虛擬機(jī)時(shí),搜索空間將被縮小為虛擬技術(shù)采用的已知的OUI。
這些情況都說明了只需要知道或者發(fā)現(xiàn)一些地址,攻擊者就能夠縮小他的搜索范圍,使IPv6主機(jī)掃描攻擊成為可能。
低字節(jié)地址
低字節(jié)地址是接口ID全是0的IPv6地址,除了最后8或16位(例如2001:db8::1、2001:db8::2等)。這些地址通常是手動(dòng)配 置的(通常用于基礎(chǔ)設(shè)施),但是也可能是使用了一些動(dòng)態(tài)主機(jī)配置協(xié)議版本6(DHCPv6)服務(wù)器,這些服務(wù)器會(huì)從特定地址范圍按順序分配IPv6地址。 當(dāng)采用低字節(jié)地址時(shí),IPv6地址搜索空間被縮小到(最多)216個(gè)地址,這使IPv6主機(jī)掃描攻擊變得更為可行。
嵌入式IPv4地址
互聯(lián)網(wǎng)工程任務(wù)組(IETF)規(guī)范允許IPv6地址以“2001:db8::W.X.Y.Z”的形式來表達(dá),而IPv4地址的形式為 “W.X.Y.Z”。這種生成地址的形式通常出現(xiàn)在基礎(chǔ)設(shè)施設(shè)備中,因?yàn)槿绻撛O(shè)備的IPv4地址是已知的,就更容易“記住”設(shè)備的IPv6地址。其余的 地址都是已知的或者可猜測出,所以采用嵌入式IPv4地址的網(wǎng)絡(luò)將有助于攻擊者將IPv6地址搜索空間縮小到與IPv4網(wǎng)絡(luò)相同的搜索空間。
“繁復(fù)”的地址
IPv6地址采用十六進(jìn)制(而不是小數(shù))符號(hào),這在手動(dòng)配置地址時(shí),增加一些創(chuàng)意。例如,F(xiàn)acebook的域名映射到IPv6地址是 “2a03:2880:2110:3f02:face:b00c::”。確定這些“繁復(fù)”的地址的搜索空間并不簡單,當(dāng)然,與整個(gè)264個(gè)IPv6空間相比時(shí),搜索空間還是有所減少了。曾經(jīng)有針對“繁復(fù)”地址的基于字典的IPv6主機(jī)掃描攻擊。
隱私/臨時(shí)地址
為了響應(yīng)主機(jī)跟蹤問題,IETF在RFC 4941中標(biāo)準(zhǔn)化了“無狀態(tài)地址自動(dòng)配置的隱私擴(kuò)展”。在本質(zhì)上,RFC 4941規(guī)定接口ID應(yīng)該是隨機(jī)的,會(huì)隨著時(shí)間的變化而變化,以創(chuàng)建一個(gè)不可預(yù)見的地址。
然而,RFC 4941規(guī)定除了傳統(tǒng)SLAAC地址外還要生成臨時(shí)地址(而不是替代它們),臨時(shí)地址用于出站通訊,而傳統(tǒng)SLAAC地址用于服務(wù)器功能(例如入站通 訊)。因此,這些地址并不能緩解主機(jī)掃描攻擊,因?yàn)樵诓捎门R時(shí)地址的主機(jī)上仍然配置了可預(yù)測的SLAAC地址(但OpenBSD除外,OpenBSD在啟 用隱私地址時(shí),禁用了傳統(tǒng)SLAAC地址)。
過渡/共存技術(shù)
有很多IPv4到IPv6的過渡技術(shù)或者共存技術(shù)(例如6to4和Teredo)為IPv6全球單播地址指定了特殊語法,在大多數(shù)情況下是在 IPv6中嵌入IPv4地址,作為IPv6的地址的一部分。由于有很多這方面的技術(shù),本文將不深入到具體細(xì)節(jié),但需要注意這些地址遵循特定的模式,所以能減小IPv6地址搜索范圍。
如何緩解IPv6主機(jī)掃描攻擊
緩解IPv6主機(jī)掃描攻擊最聰明的辦法是從IPv6地址刪除任何明顯的模式。IETF的6man工作組目前正在研究一種生成IPv6地址的方法,它有以下特點(diǎn):
• 產(chǎn)生的接口ID不容易被預(yù)測出
• 產(chǎn)生的接口ID在每個(gè)子網(wǎng)內(nèi)是穩(wěn)定的,但是當(dāng)主機(jī)從一個(gè)網(wǎng)絡(luò)移動(dòng)到另一個(gè)網(wǎng)絡(luò)時(shí),接口ID會(huì)跟著變化
• 產(chǎn)生的接口ID獨(dú)立于底層鏈路層地址
為了確保IPv6部署的安全性,IETF必須完成此標(biāo)準(zhǔn)化工作,并且更重要的是,需要供應(yīng)商部署它。一旦這些工作都到位了,這些不可預(yù)測的地址將讓攻擊者的IPv6主機(jī)掃描攻擊更難以執(zhí)行。
其他緩解IPv6主機(jī)掃描攻擊的措施包括使用基于網(wǎng)絡(luò)的入侵防御系統(tǒng)(IPS):當(dāng)在本地子網(wǎng)接收到大量針對不同IPv6地址的探測數(shù)據(jù)包時(shí) (尤其是當(dāng)很多目標(biāo)地址不存在時(shí)),可以從特定來源地址阻止入站數(shù)據(jù)包,來應(yīng)對主機(jī)掃描攻擊活動(dòng)。另一種方法是為基于DHCPv6和手動(dòng)配置的系統(tǒng)配置不 可預(yù)測的地址。雖然windows系統(tǒng)生成不可預(yù)測地址,所有其他端點(diǎn)(包括基于思科和Linux的設(shè)備)還需要一些額外的配置,既可以啟用DHCPv6 服務(wù)器來發(fā)布不可預(yù)測地址,也可以手動(dòng)配置系統(tǒng),這樣他們就可以使用不可預(yù)測地址。很顯然,DHCPv6的方法應(yīng)該是首選方法,因?yàn)樗菀讛U(kuò)展。然而, 并不是所有DHCPv6軟件都有這個(gè)功能,因此可能唯一的方法應(yīng)該是手動(dòng)配置每個(gè)系統(tǒng)的IPv6地址(當(dāng)然這個(gè)工作會(huì)非常痛苦)。
讀了本文關(guān)于IPv6地址在互聯(lián)網(wǎng)上的分配方式的分析,大家應(yīng)該提高認(rèn)識(shí):雖然IPv6的主機(jī)掃描攻擊在很大程度上受到了阻止,但I(xiàn)ETF和供應(yīng)商仍然有很多工作要做,以增加IPv6主機(jī)掃描攻擊的難度。