IPv6協議及安全淺談
1、前言
在我國,IPv6一直在穩步發展,早已不是多年前只在實驗環境中存在的場景了,很多互聯網大廠、高校都用上了IPv6,部分地址寬帶用戶也使用了IPv6。就在前些日子,安全研究員Dirk-jan Mollema發表基于委派攻擊并結合NTLM Relaying,實現對同網段的在域主機進行攻擊文章詳情,其中就使用了基于IPv6的mitm6工具,通過IPv6網絡實現攻擊。
盡管IPv6發展了很多年,但相對很多人而言,它還是一個陌生的對象,需要我們逐步去了解和認識,以備后續的工作和生活需要。IPv6內容很多,由于篇幅有限,無法詳細描述,本文僅介紹IPv6相對關鍵的組成部分及其相關安全性。
2、IPv6協議
2.1、從一個包結構認識IPv6
(圖片來源:https://pcedu.pconline.com.cn/1038/10387664.html)
IPv6在RFC2460中描述,相比IPv4,IPv6具有以下特征:
- 固定的報文結構,更高效的封裝和性能。
- Source/Destination Address:128位bit的地址空間,號稱地球上每個沙子都能分配到獨立的IP地址。
- Flow Label:流標簽能力,實現流量標記區分。
- 可擴展頭部:在固定頭部后面,可以鏈式附加許多擴展頭部,實現更多功能支持。
2.2、看懂IPv6地址
和IPv4不同,IPv6采用16進制來表示,將整個地址分為8個段,每段之間用冒號隔開,每段的長度為16位,表示如下: XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX/X,并且IPv6有地址簡化的寫法,通過下圖可以了解簡化寫法。
(圖片來源:https://baijiahao.baidu.com/s?id=1611121709439510290&wfr=spider&for=pc)
2.3、不同地址作用大不相同
在RFC2373定義了IPv6的地址類型,我們需要了解的主要類型如下:
- 全局單播地址:IPv6公網地址,所有以2或3開頭的地址屬于該類地址,掩碼是64位。
- 鏈路本地地址:鏈路本地地址非常重要,用于鄰居發現、地址配置、路由協議的協商等。顧名思義,它僅用于本地鏈路通訊,在本地鏈路有效,無法跨下一跳。所有以 FE80開頭的地址屬于該類地址。通常情況下,啟用IPv6協議的接口會根據MAC地址,自動生成一個鏈路本地地址,這個機制稱為EUI-64。
- 站點本地地址:站點本地地址類似IPv4中的私網地址,這些地址無法在互聯網上進行路由。所有以 FEC0開頭的地址屬于該類地址。
- 組播地址:組播地址用來表示一組設備或接口,所有以 FF開頭的地址屬于該類地址。其中 FF02::1表示本地鏈路上的所有主機, FF02::2表示本地鏈路上的所有路由器。
3、鄰居發現協議(NDP)
3.1、NDP是什么
在IPv6網絡中,采用NDP協議取代ARP來學習MAC地址,NDP的數據封裝在ICMP v6包中,它主要實現了以下功能:
- 鏈路地址管理:維護一個IP地址和MAC的關系狀態表
- 無狀態地址自動配置(SLAAC):能夠在沒有DHCP服務器的情況下實現主機自動學習配置IPv6地址
- 路由器重定向:與IPv4一樣
3.2.1、主機之間如何通信
鏈路地址管理既然是替代ARP的功能,它所實現的就是幫助主機找到目標IP的MAC地址,并且維護這些IP地址和MAC的對應關系,在必要的時候進行刪除和更新。在IPv6網絡中,為了學習一個MAC地址,一個簡單的NDP交互過程大致如下:
(圖片來源:https://blog.csdn.net/qq_38265137/article/details/80466128)
- 當一個主機第一次與對方通信時,它會在網絡中發送一個鄰居請求(NS)包,這個NS包攜帶了發送者的IP和MAC地址,以及發送者需要請求MAC地址的目標IP,這個NS包被發送到一個“被請求節點多播地址”;
- 擁有目標IP的主機會偵聽“被請求節點多播地址”,當它收到這個NS數據包后,就知道誰要找它,然后這個主機會用一個鄰居通告(NA)單播回應NS請求,告訴對方自己的MAC地址信息。
通過這樣一個簡單的過程,雙方就能夠學習并創建一條IP-MAC對應記錄。NDP有復雜的狀態機制,這里不做詳細介紹。想了解的可查看H3C IPv6鄰居發現經典講義。
這里需要解釋一個名詞,那就是“被請求節點組播地址”,這是一種特殊的組播地址,每一個主機配置好單播IPv6地址后,都會根據這個IP地址自動生成一個對應的“被請求節點組播地址”,這個“被請求節點組播地址”只在本地鏈路上有效,且在鏈路上唯一。這個“被請求節點組播地址”的前綴是:FF02::1:FFxx:xxxx/104,后24位是接口IPv6地址的后24位。
3.2.2、無感知的IP地址自動配置
在IPv6網絡中,我們可以不需要DHCP實現主機自動獲取網絡的前綴信息、鏈路環境信息、并檢測地址沖突等,完成節點無感知接入網絡。一個簡單的地址配置交互過程如下:
(圖片來源:https://blog.csdn.net/qq_38265137/article/details/80466128)
- 在IPv6網絡中,網關會周期性發送RA數據包到多播地址 fe02::1以宣布自己的存在。這個時候,網絡上的主機會接收到RA包,通過RA包攜帶的信息,主機可以學習到接入網絡所需要配置的地址信息,從而自動進行IP地址的配置。
- 反過來,當主機接入到一個IPv6網絡中時,主機會自動發起一個RS包請求地址配置,目的地址為標識所有路由器的多播地址( fe02::2)。路由器收到RS包后,需要馬上發送一個RA包以回應該主機,以便主機進行地址配置。
3.2.3、DAD-地址沖突檢測機制
主機獲取到IPv6地址后,并非馬上就能使用該地址進行通信,需要做一個重復地址的檢測,確保網絡上沒有相同地址的主機存在。為了檢測地址沖突,主機會在網絡上發送一個該IP生成的被請求組播地址,源地址為::,如果有節點應答,即收到一個鄰居通告(NA)包,說明該地址已被使用,如果在重傳時間內未檢測出重復地址,則認為地址可以使用。
(圖片來源:https://blog.csdn.net/qq_38265137/article/details/80466128)
4、IPv6過渡技術
目前IPv6仍處于發展階段,雖然運營商、互聯網公司及高校都在逐步建設,但是互聯網基礎設施和應用大部分還在使用IPv4。由于IPv4和IPv6本身的不兼容性,為了適應這種情況,把各自的網絡孤島進行連接,出現了幾種過渡解決方法,分別是:
- 雙棧技術:在網絡節點中同時啟用IPv4和IPv6兩種協議,使得網絡可以同時支持兩種協議。
- 隧道技術:采用數據包封裝技術,將IPv6數據封裝到IPv4數據包中,利用IPv4的網絡中進行通信。
- 翻譯技術:采用類似NAT的方式進行的轉換。
雙棧技術相對比較好理解,節點主要根據應用的通訊的地址,選擇相應的網絡進行傳輸即可。
而關于IPv6隧道技術,本質上是數據包的二次封裝,借助IPv4網絡,來實現IPv6節點的互聯。隧道技術有多種實現,如ipv6 in ipv4、6to4、GRE、ISATAP、Teredo隧道等。
4.1、6to4隧道
當孤立IPv6站點之間需要通信時,通過在IPv4網絡中創建隧道,實現兩個孤立站點之間的互聯。6to4隧道將IPv6數據包封裝在IPv4數據包中,通過IPv4網絡進行通信。6to4借助特殊的配置和條件,實現了隧道自動建立。如下圖:
(圖片來源:http://blog.sina.com.cn/s/blog_5ec353710101e45y.html)
隧道的建立是由雙棧主機觸發,IPv6 6to4隧道具有以下特點:
- 自動隧道建立:路由器通過提取ipv6數據包目標地址后32位來作為隧道封裝的目的地址,以此來自動建立隧道。
- 自動前綴分配:使用6to4隧道互聯的IPv6網絡,其前綴都必須基于IANA分配的2002::/16地址空間,每個6to4站點必須在6to4路由器上配置固定的公網IPv4地址,這個IPv4結合IANA前綴,最終形成本站點的IPv6前綴(2002:ipv4-address::/48)。以此,6to4路由器的IPv4地址決定了整個IPv6站點的地址前綴,如果后期6to4路由器的IPv4地址做了變更,對整個站點的影響是全局的。
- 6to4中繼 :為了幫助那些6to4站點與非6to4的IPv6網絡進行通信,6to4隧道技術定義了6to4中繼路由器,這些中繼路由器一方面能和6to4路由器建立隧道,同時也接入了IPv6骨干網,通過這些中繼路由器,6to4站點就能訪問IPv6互聯網了。如下圖:
(圖片來源:http://blog.sina.com.cn/s/blog_5ec353710101e45y.html)
RFC 3068中為中繼路由器定義了一個任意播前綴,這樣6to4站點路由器就能找到離自己最近的中繼。另外,IANA為中繼分配了一個任意播前綴192.88.99.0/24,轉換為IPv6前綴就是: 2002:c058:6301::/48,6to4邊界路由器配置一個默認路由到這個地址就可以。
注:單獨的雙棧主機也可以與其他6to4路由器建立隧道。
4.2、ISATAP隧道
站內自動隧道尋址協議(ISATAP: IntraSite Automatic Tunnel Addressing Protocol) 采用了雙棧和隧道技術,能實現主機與主機、主機與路由器之間的通信。ISATAP隧道不僅能實現隧道功能,還可以通過IPv4網絡承載IPv6網絡的ND協議,從而使跨IPv4網絡的設備仍然可以進行IPv6設備的自動配置。
在內部網絡中,一個簡單的ISATAP隧道示例如下:
(圖片來源:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc781672(v=ws.10)#isatap)
- 雙棧主機自動使用特殊的地址格式配置本地鏈路地址, FE80::0:5efe:a.b.c.d ,其中后64比特中5efe為固定,a.b.c.d為接口的IPv4地址。
- 當兩個主機通信時,自動抽取出IPv4地址建立隧道,只要彼此間IPv4網絡保持通暢即可實現。
一般情況下,使用私有IPv4地址的主機只能在本地網絡中與其他雙棧主機建隧道,如果想訪問其他外部的IPv6網絡,則需要借助ISATAP路由器,通過ISATAP路由器,獲取公網IPv6前綴,實現外部路由。
(圖片來源:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc781672(v=ws.10)#isatap-router)
- ISATAP路由器通過發送RA,為內網的雙棧主機分配IPv6前綴
- 內網的雙棧主機根據RA,自動配置IPv6地址,并將ISATAP路由器作為默認網關
- 借助ISATAP路由器,與外部的IPv6節點建立隧道,轉發數據。
4.3、NAT64與DNS64技術
在IPv4網絡中,NAT有無可取代的作用,通過NAT技術,內網主機實現了互聯網訪問的需求。在IPv6過渡技術中,NAT技術也有一席之地。NAT64一般與DNS64協同工作,不需要在IPv6客戶端或IPv4服務器端做任何修改,實現不同網絡之間互訪。
NAT64:如名字所示,NAT64是一種網絡地址與協議轉換技術,通過地址翻譯,實現IPv6節點訪問IPv4網絡。與NAT一樣,NAT64也支持靜態映射,實現IPv4網絡主動發起連接訪問IPv6網絡。NAT64可實現TCP、UDP、ICMP協議下的IPv6與IPv4網絡地址和協議轉換。
DNS64:DNS64服務器本身也是是雙棧主機,當IPv6主機向DNS64服務器查詢域名時,如果所查詢的域名沒有AAAA記錄,則DNS64會將A記錄(IPv4地址)合成到AAAA記錄(IPv6地址)中,然后返回合成的AAAA記錄用戶給IPv6側用戶。
注:以下內容引用:http://bbs.ruijie.com.cn/thread-33426-1-1.html
NAT64和DNS64的流程如下:
- IPv6主機發起到DNS64 server的IPv6域名解析請求(主機配置的DNS地址是DNS64),解析域名為www.abc.com;
- DNS64觸發到DNS server中查詢IPv6地址;
- 若能查詢到則返回域名對應的IPv6地址,若查詢不到,則返回空;
- DNS64再次觸發到DNS server中查詢IPv4地址;
- DNS server返回www.abc.com的IPv4記錄(192.168.1.1);
- DNS64合成IPv6地址(64::FF9B::192.168.1.1),并返回給IPv6主機;
- IPv6主機發起目的地址為64::FF9B::192.168.1.1的IPv6數據包;由于NAT64在IPv6域內通告配置的IPv6 Prefix,因此這個數據包轉發到NAT64設備上;
- NAT64執行地址轉換和協議轉換,目的地址轉換為192.168.1.1,源地址根據地址狀態轉換(3ffe:100:200:1::1)->(172.16.1.1);在IPv4域內路由到IPv4 server;
- IPv4數據包返回,目的地址為172.16.1.1;
- NAT64根據已有記錄進行轉換,目的地址轉換為3ffe:100:200:1::1,源地址為加了IPv6前綴的IPv4 server地址64::FF9B::192.168.1.1,發送到IPv6主機,流程結束。
5、IPv6 安全
就IPv6安全性而已,盡管在設計之初就引入了安全的設計理念,如認證、加密擴展頭部,結構化的地址規劃等。但是IPv6本身設計上也不斷進行更新,不同時期的實現都有所差異。如下圖,類似NDP就有過幾次變化。
(圖片來源:https://www.blackhat.com/docs/sp-14/materials/arsenal/sp-14-Schaefer-Workshop-Slides.pdf)
針對IPv6協議、IPv6應用、過渡階段使用的技術等方面,安全研究人員不斷發現了相關的安全脆弱。目前在 CVE 漏洞庫中已有 300 余個與 IPv6 相關的安全漏洞被發布,也有專門針對IPv6安全的工具套件,如: thc-ipv6 SI6 Networks' IPv6 Toolkit Chiron scapy6 ip6sic ERNWfuzzing toolkit LOKI 下面參考學習網上各類大神研究成果,為大家做一下分享。
5.1、鏈路安全
IPv6使用NDP維護鏈路信息,本質和ARP一樣,在局域網中通過沒有認證的的交互過程,學習相關的鏈路信息。因此和ARP一樣,面臨著網絡欺騙、DoS攻擊等安全威脅。來自thc-ipv6的工具套件可針對NDP實現多種攻擊。
網絡欺騙
- 針對前面NDP協議所介紹的NS、NA、RS、RA,包括DHCP等過程,均是沒有認證來源,意味著攻擊者可以在網絡中實施欺騙,從而將流量引導到攻擊主機中。
- 通過偽造DHCP服務器,可以分發攻擊者自己DNS服務器,讓主機的應用訪問解析到攻擊者服務器。
- 發送虛假重定向,引導流量到攻擊者主機。
下面使用thc-ipv6工具,模擬一個RA通告欺騙,讓內網主機自動配置我們虛假的IPv6前綴:
1.在kali中啟用RA欺騙,如下圖:
2.同網段的windows 2008,一開始只有本地鏈路ipv6地址,后面自動獲取了2001開頭的IPv6地址,如下圖:
在thc-ipv6中,用于鏈路層欺騙的工具非常多,有NS、NA、DHCP等,通過了解前面介紹的NDP協議,大家可以自己進行測試。
拒絕服務
- 攻擊者可在DAD過程不斷響應NA包,讓主機認為地址有沖突,一直獲取不到地址,讓主機無法接入網絡。
- 攻擊者通過偽造大量的NS/RS報文,發送給網關,填充虛假記錄導致網關的表項溢出,造成網關無法提供正常的服務,進而導致DoS。
- 攻擊者可以模擬大量用戶發送DHCPv6請求報文,占用服務器大量的地址資源,導致合法終端沒有地址資源可以分配。
- 通過偽造DHCP請求報文,消耗網絡地址,使其他終端無法獲得地址。
- CVE-2010-4669:在windows xp、2003、vista、2008和7中,由于IPv6實現的問題,發送大量的不同源地址的RA消息(可使atk6-flood_router6),會導致系統CPU飆升(此項未測試)
下面模擬DAD拒絕服務攻擊:
1.啟動一個RA前綴分配,讓同網段的主機可以獲取地址前綴自動配置;
2.啟動一個DAD攻擊,如下圖:
3.禁用并啟用windows 2008的網卡,報地址沖突:
4.在攻擊主機上,可以看到相應的輸出:
其他flood類型的攻擊,在thc-ipv6工具中都有相關的支持,大家可自行測試驗證:
防護措施
設備防護
網絡欺騙的本質上是沒有對來源進行驗證,IPv4網絡中,針對ARP欺騙、DHCP欺騙等攻擊,在接入設備上都有相關的安全特性,如Port Security、DHCP Snooping、IP Source Guard、信任端口等。
在IPv6中,也可采用同樣的防護手段。目前主流廠商的交換機都能同樣支持類似的安全防護特性。這類防護的本質是在接入層交換機上建立的一張IP、MAC、Port的可信表項,獲取用戶IP地址與MAC地址的對應關系。在建立了綁定表項之后,能夠保證一個已經獲取了IP地址的用戶只能使用已獲取的地址進行通信,過濾掉所有的不在綁定表項中的IPv6的非法用戶發送的報文。
另外一種防御手段是通過在端口配置數據包偵聽,一旦收到某些類似的數據包,則將端口關閉,例如cisco的RA Guard或root Guard之類。 相關的防護技術匯總:ND snooping、DHCP snooping、RA Trust、DHCP Trust、RA Guard、DHCPv6 Guard。
其中ND snooping、DHCP snooping是一種動態獲取用戶IP、MAC、Port對應關系的技術,由接入交換機實現。通過已經建立的綁定表項,交換機偵聽網絡上的NDP報文,比較已經獲取到的可信表項中的IP與MAC地址,對ND報文進行過濾,丟棄異常的報文。
RA Trust、DHCP Trust屬于信任端口技術:通過將連接DHCP服務器、網關路由器的端口配置信任端口,交換機將只轉發來自信任端口的DHCP通告包以及RA包,從而防御DHCP服務器和RA偽造。
RA Guard、DHCPv6 Guard屬于非信任端口技術,一旦收到RA或DHCP通告數據包,則將端口關閉。 另外還有限速技術,能有效限制端口收發數據包的速率。
主機防護
- 采用靜態IP配置
- 關閉RA功能:
- windows: netsh intipv6 setint[index]routerdiscovery=disabled
- Linux: sysctl -w net.ipv6.conf.eth1.accept_ra=0Free
- BSD: sysctl net.inet6.ip6.accept_rtadv=0
5.2、擴展頭安全
在IPv6中,節點必須從IPv6報頭開始,處理/緊跟IPv6報頭鏈中的每個擴展報頭,直到發現最后一個報頭,以此來對上層協議的內容進行檢測。如下圖:
由于IPv6擴展頭具有可變性,除了逐跳選項外,并沒有嚴格限制順序。某些安全設備或者無法識別多個擴展頭,因此無法檢查應用層內容,導致安全策略繞過,甚至拒絕服務。例如:
另外,針對IPv6不同的擴展頭部,具體的功能選項由頭部中相關的字段和內容決定,攻擊者通過構建特殊的包頭數據,可以針對不同擴展頭實現不同的攻擊方式。
5.2.1、Smurf Attacks
Smurf Attacks發生在“目標選項”擴展頭中,如下圖,目標選項擴展頭中,Option Type里面8個bit中,前2個bit的值決定了節點対于該數據包的回復動作。當值設置為10時,收到該數據包的節點會丟棄該數據包,并且返回一個ICMP消息包。
看到這里,大家應該已經知道這個攻擊的思路,如下:
采用受害者地址作為源IP,構造以10開頭的Option Type值,將數據包發送到標識所有主機的組播地址: FF02::1,收到數據包的主機,都會回送一個icmp給到受害者。
5.2.2、分片安全
概述
在IPv6網絡中,只有發起者可以進行IP分片,節點會根據鏈路MTU的大小自動進行分片,IPv6支持的鏈路層最小MTU是1280字節。針對分片包,中間節點只會簡單進行傳遞,只有接收節點才進行分片重組,因為路由器不能對數據報進行分片,當要傳遞一個過大的數據報時就只能將其丟棄,并返回一個 ICMPv6 Packet Too Big 信息。 一個分片擴展包頭如下:
需要關注的字段如下:
- Next Header:標識下一個擴展頭的類型。
- Fragment Offset:分片的偏移量。
- M:1表示還有分片,0表示當前是最后一個分片。
- Identification:定義屬于同一數據包的分片,同屬1個數據包的分片該標識內容一致。
一個分片的示例如下:
從上圖可以看到,IPv6 數據包分為兩部分
- 不可分段部分 (Unfragmentable Part):主報頭和某些指定擴展頭,如Hop-By-Hop Options, Destination Options、Routing。
- 可分段部分 (Fragmentable Part):數據包的數據部分和其他擴展頭,如AH、ESP 、Destination Options等。
另外,關于分片還有以下規定:
- 如果在接收第一個到達的分片后的60秒內沒有接收到其他的分片,則必須放棄此數據包的重新組裝,并且必須丟棄接收到的該數據包的所有片段并返回一個ICMP包。[RFC 2460, 1998]
- 除了最后一個分片,每個分片必須都是8字節的整數倍,否則目標節點將會丟棄該數據包并返回一個ICMP包。[RFC 2460, 1998]
- 如果組裝后的數據包長度超過65535個字節,則必須丟棄該數據包并返回一個ICMP包。[RFC 2460, 1998]
- 當重新組裝IPv6數據報時,如果確定其一個或多個組成分片存在重疊的部分,那么整個數據報(以及任何組成片段,包括那些尚未接收到的片段)必須被靜靜地丟棄。[RFC 5722, 2009]
IPv6分片的安全問題主要來源于以上這些規定,通過構造不符合上述規定的數據包,可能導致以下問題:
- 繞過安全設備:有些安全設備無法進行分片包重組或有效識別,將攻擊payload拆分為分片,可以繞過安全設備的檢查。
- 繞過安全特性:例如RA Guard。
- 拒絕服務:通過發送大量的分片包,來消耗目標節點的性能,有些節點不能很好的處理分片,也可能導致拒絕服務。
- 根據不同的響應信息,檢測目標機器的指紋信息。
- 遠程代碼執行。
根據上面的介紹,針對IPv6分片主要攻擊方式如下:
- Atomic Fragments
- Tiny Fragments
- Packet Too Big messages
- Predictable Fragment IDs
- Fragmentation Overlapping
下面的截圖來自:(https://kb.juniper.net/InfoCenter/index?page=content&id=JSA10780&pmv=print&actp=&searchid=&type=currentpaging),廠商已經修復。
在kali的thc-ipv6工具中,atk6-firewall6 、atk6-fragmentation6 、atk6-implementation6等工具可以測試IPv6實現和分片支持情況,另外scapy也可以用于靈活的構建數據包。
防護措施
- 在安全設備選型上,要測試設備是否能檢測分片包并對分片包進行重組及識別,一般情況下,通過IPv6 Ready Phase-2認證的產品應該沒問題。
- 配置分片的最長等待時間。
- 如果網絡中MTU滿足情況,可以配置策略直接丟棄分片包。
- 安全設備配置默認禁止的策略。
5.2.3、秘密通道
IPv6擴展包頭,大的負載能力,默認啟用的協議棧,過渡期間的各自自動化隧道等能力特別合適構建傳輸通道,通過在合適的包頭位置填充數據,就能利用IPv6構建通道,傳輸數據。 來自thc-ipv6的工具就帶了類似的支持:
5.2.4、其他
類似的擴展頭安全問題還有”IPv6路由頭部“,這個擴展頭部為發送方提供了一種IPv6數據包路徑控制機制,以控制數據包通過網絡的路徑。路由擴展頭部有兩個不同版本,分別稱為類型0(RH0)和類型2(RH2)。正是RH0會出現DoS的安全隱患。出于安全方面的考慮已被否決[RFC5095], RH2被定義為與移動IP共同使用。RH0本質是因為它可以在擴展頭中攜帶多個數據包經過的路由器節點列表,攻擊者可以多次指定相鄰兩個路由器,在兩個路由器之間形成路由環路。 其他擴展頭部安全問題,主要是利用構造畸形的數據包,導致處理設備出錯或者消耗性能等。在kali的thc-ipv6工具中,有專門針對擴展頭的構造攻擊工具,如下圖:
另外,針對擴展頭還有一個很強大的工具:chiron
5.3、過渡階段安全
5.3.1、雙棧機制安全風險
1.過渡期間雙棧部署的網絡中同時運行著IPv4、IPv6兩套網絡,增加了設備/系統的暴露面,也意味著防火墻、安全網關等防護設備需同時配置雙棧策略,導致策略管理復雜度加倍,防護被穿透的機會加倍。在windows中,啟用了防火墻的系統,IPv6也能得到防護;在linux系統中,IPv6采用ip6tables,可能存在沒有任何防護策略的情況。
2.在IPv4網絡中,多數設備缺省啟動了IPv6協議,并且自動配置了鏈路本地地址,使得IPv4網絡中存在隱蔽的 IPv6 通道,由于該 IPv6 通道并沒有進行防護配置,攻擊者可以利用IPv6通道實施攻擊。例如前言部分介紹的MITM6案例,就是利用了IPv6網絡攻擊IPv4。
3.雙棧系統的復雜性也會增加網絡節點的數據轉發負擔,導致網絡節點的故障率增加。
建議在沒有使用IPv6的情況下,關閉該協議棧。
5.3.2、自動隧道安全
1.利用IPv6隧道機制,可作為攻擊者外聯通道。目前很多設備默認開啟了IPv6協議,并且邊界安全設備可能沒有配置完善IPv6檢測策略,另外自動化隧道機制可以非常簡單的啟用一個外聯通道。早在2003年,來自blackhat的資料,就已經講述了IPv6控制通道的情況。如下圖:
(截圖來源:https://www.blackhat.com/presentations/bh-federal-03/bh-federal-03-warfield/bh-fed-03-paper-warfield.doc)
2.構造欺騙數據包,形成路由環路,造成拒絕服務。下面引用(https://www.usenix.org/legacy/events/woot09/tech/slides/nakibly.pdf))的示例,介紹基于隧道的路由環路攻擊場景:
(示例來源:https://www.usenix.org/legacy/events/woot09/tech/slides/nakibly.pdf)
- 攻擊者在ISATAP內部,發送一個構造的隧道數據包,源地址是2002::*,目標地址是::0200:5EFE:。
- ISATAP路由器收到該數據包后,從目的地址取出IPb,作為隧道的目標地址,將IPv6數據包封裝進去,通過IPv4網絡發給IPb。
- 6to4路由器接收到該數據包,解封后發現目標IP是::0200:5EFE:,通過查找路由表,將數據包通過IPv6網絡發回ISATAP路由器。
- ISATAP路由器收到該數據包后,繼續該過程,形成環路。
5.3.3、防護措施
- 要盡可能采用靜態配置隧道,以降低動態隧道的偽造和非法接入威脅。
- 防火墻要設置對非授權隧道報文的過濾,同時識別各種隧道協議(一般是協議號41),能夠對隧道報文的內嵌封裝報文做訪問控制。
- 在防火墻設備上實現出站過濾,只允許授權隧道端點,避免惡意外聯隧道。
- 不使用IPv6的情況下,關閉主機的IPv6協議棧。
5.6、結尾
我們無法去論斷IPv6在什么時候會真正普及起來,但不可否認的是,它已經進入了我們生活。提前籌備,未雨綢繆,總歸是對的。 本文內容源于網上相關文章資料的學習和參考,如有不正之處或侵權,請及時聯系修正,謝謝。
參考資料
《TCP/IP詳解-卷一:協議》W.Richard Stevens
RFC3587
RFC2460
RFC2373
RFC1981
RFC2461
IPv6 Attack & Defense Strategies
SeND (RFC 3971, March 2005)
RA-Guard, PACL (RFC 6105, February 2011)
A Complete Guide on IPv6 Attack and Defense
Security challenges in IPv6 from the campus perspective
IPv6的接入層安全技術 IPv6系列安全篇——SAVI技術解析
淺談IPv6協議安全及攻擊
Attacking IPv6 Implementation Using Fragmentation
中國移動-ipv6安全白皮書

















































