The security implications of IPv6 author:Keith Barker source:Network Security, Volume 2013, Issue 6, June 2013, Pages 5-9 speaker :顏嘉穎 Good afternoon The topic of my presentation is The security implications of IPv6 The author of the article is Keith Barker
Outline 一、abstract 二、IPv6 ICMP vulnerabilities 三、Multiple protocol stack vulnerabilities 四、The lack of experience in countermeasures for IPv6 attacks 五、Increasingly, hacking tools now support IPv6 六、IPv6 multicast vulnerabilities 七、IPv6 header information vulnerabilities 八、Tunnelling IPv6 through IPv4 network This article has eight parts
一、摘要 隨著行動設備的激增,IPv4位址正迅速的消耗。 歐洲正式耗盡IPv4的位址,是在2012年底,但現在IPv4仍被internet廣大的使用。 雖然多數企業現在正準備向IPv6遷移,但從IPv4的切換帶來一系列的安全問題。
二、IPv6的ICMP漏洞(1/10) 假設某網路的拓樸如下圖:
二、IPv6的ICMP漏洞(2/10) 鄰居發現協議(Neighbor Discovery Protocol): ICMPv6的功能之一,負責在鏈路上發現其它節點和相應的地址。 當電腦在IPv6網路上,並在IPv6的協議棧上執行 ,他會去嘗試找尋IPv6網路當前是否正在連接另外的網路。 簡稱:NDP或ND 並確定可用的路由和維護關於可用路徑和其他活動節點的信息可達性。 ------ 协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程 協議棧(英語:Protocol stack),又稱協議堆疊,是計算機網路協議套件的一個具體的軟體實現。 協議套件中的一個協議通常是只為一個目的而設計的,這樣可以使得設計更容易。因為每個協議模塊通常都要和其他兩個通信,它們通常可以想像成是協議棧中的層。最低級的協議總是描述與硬體的物理交互。每個高級的層次增加更多的特性。用戶應用程序只是處理最上層的協議。(參見OSI模型)
二、IPv6的ICMP漏洞(3/10) 若要執行這個動作,他會發送一個路由器請求(RS, Router Solicitation)到網路,藉此詢問訊息。 在協定分析器(protocol analyser)看到的RS內容,如下圖所示。 這是從IPv6Windows電腦的未指定位置(unspecified address)發送,尚未完成對link-local address的重複地址檢測(DAD) RS被發送到所有路由器的multicast address(FF02::2)(表示連結端主機網段所有路由器位址)(Destination->目的地) 路由器請求一個ICMPv6的訊息類型是133 未指定位址: ::/128- 所有位元皆為零的位址稱作未指定位址。這個位址不可指定給某個網路介面,並且只有在主機尚未知道其來源IP時,才會用於軟體中。路由器不可轉送包含未指定位址的封包。 Link- Local: 位址僅用在單一個連結上 (同一個子網路中),不可被繞送到其他連結或網際網路上。 它的功用如同 IPv4 的 APIPA 位址(169.254.X.X),僅在一個特定的網路區段使用,這類位址的封包不能通過路由器。 圖:RS的內容
二、IPv6的ICMP漏洞(4/10) 為了回應,本地網段上必須回應一個路由器通公告(RA,Router Advertisement),這個訊息是類型134。 Router MAC:00:00:11:11:11:11 首碼訊息:2001:DB8:1::/64 這個RA的封包來源router的link-local address為FE80::1(source) 接收這個封包的路由器已加入了FF02::2的群播群組,如此才能收到RS 回覆的目標則是FF02::1(在IPv6中,這表示連接端主機所在網段所有節點位址)(Destination) 圖:RA的內容
二、IPv6的ICMP漏洞(5/10) 重複地址檢測(Duplicate Address Detection,DAD) 任何人發出的回應RS的RA,可能可以欺騙客戶端,使其相信這個RA是在不同的子網路。 無狀態定址自動配置(Stateless Address Auto-configuration): 客戶端可以透過RS/RA的交換,來動態學習網路位址。 重複地址檢測(Duplicate Address Detection,DAD) DAD細節不講
二、IPv6的ICMP漏洞(6/10) 客戶端可以使用DAD來確認介面ID是不是正在使用中。 上圖表示正在使用DAD看到RS的客戶端,並以RA回覆,這個動作是沒有經過身分驗證或限制的 這表示,任何人都可以發出RA回應來欺騙發送RS的客戶端,並使用非法設備的IPv6link-local address做為優先的默認閘道 (將原本預設通道修改為攻擊者的惡意設備)
二、IPv6的ICMP漏洞(7/10) 攻擊者(設備也在subnet1),運行 fake_router6 eth0 2001:db8:6783::/64的命令 這個命令會導致使用Linux的主機執行這個攻擊指令,並且以一個RS回覆RA。 這個假冒的首碼會被當作命令的一部分來執行,同時會對RA表示該RA是最好的(preferred)。
二、IPv6的ICMP漏洞(8/10) 假冒的RA: 圖5中可以看到,除了不正確的子網內容以外,還將路由器的優先權變成了高,導致設備會優先選用該路由器 如果攻擊者計畫中間人攻擊,他現在已在兩端之間;如果攻擊者準備DoS,那攻擊隨時可以開始 IPv6首碼(Prefix) IPv6位址需要定義一個首碼,例如 /3,表示前面3個bits,是固定不變的。很像IPv4的遮罩,但它是不同的意義。
二、IPv6的ICMP漏洞(9/10) 在命令列上,可以看到封包傳送的偏好路線已被修改: 輸出上指出指標值(metric)為16,這是對於流氓router的狀況。 而針對合法的router(R1),指標值則是256,指標值越低是越好的。 當然,我們可以保持合法路由器忙於其他事件(例如處理DoS攻擊等等),這樣可以減少路由器針對那些要求回應的RS優先回覆RA的狀況 這個流氓RA只是如何破壞IPv6網路的一個例子
二、IPv6的ICMP漏洞(10/10) fake_router6: 這種攻擊類似中間人攻擊,在默認的情況下不需要經過任何的驗證。 攻擊者會嘗試發送RA,並且將PC做為網路上的預設設備。 這會導致客戶端發送網路數據,而攻擊者只需要使用Wireshark就可以輕鬆捕獲這些數據。 在fake_router6的腳本,事實上只發送一個RA,而攻擊者必須將他的設備當成網路上合法的路由器 而該RA就是為了將合法的連結導向到攻擊者的設備
三、多重協議堆疊的漏洞(1/3) 現在大多數使用IPv4桌電或筆電大多數也支援IPv6,並且有多數是默認開啟IPv6的。 正在運作雙架構(dual stack)的基礎設施,無須任何額外的設備就可以同時使用IPv4與IPv6。 在針對IPv6的相關設備進行安全性評估以前,上網是會有安全風險的。 Dual stack:IPv4/IPv6雙重架構機制 有這個功能的設備可以同時使用IPv4以及IPv6
三、多重協議堆疊的漏洞(2/3) 如果每一個子網路的客戶端都要能成功連接互聯網,那有兩個前提: (一)該公司需要有自己的IPv6位址,結合IPv6路由, 並使用雙重架構機制。 (二)IPv6服務供應商連接到R3,或者公司使用通道 代理人(TB)連接到已啟用的IPv6網路。 通道代理人(TB):能夠讓IPv4與IPv6互通的方法 Tunnel Broker(以下簡稱TB)是通道代理人的意思,IPv4/IPv6 雙架構Client主機可藉由它的協助, 透過 IPv4 網路與 IPv6 網路中的節點進行網路通訊。其主要原理是在TB及Client之間, 利用IPv4網路建立起一條虛擬的隧道(Tunnel),將IPv6的封包封裝在IPv4封包裡面傳送
三、多重協議堆疊的漏洞(3/3) 所有的IPv4安全防護有漏洞的地方通常是在攻擊者與受害者之間。 由於IPv6使用不同於以往的協議,大量設備開始使用的情況下,可能會比IPv4更容易有漏洞。 因為對於IPv6路由協議的認證還沒有被常態配置。
四、缺乏對於IPv6攻擊的對策與經驗(1/3) 當廠商已經提供了多種解決方案,並將其整合在switch、router等設備上時,我們可以簡單的防禦針對IPv4的攻擊。 但許多在IPv4能被實現的攻擊,仍可用於IPv6,如果廠商所提供的策略或是工程師自身沒有注意到的話,那很容易變成一個漏洞。
四、缺乏對於IPv6攻擊的對策與經驗(2/3) 搭載IPv6的主機使用舊有的位置做為連接接口(不論是 link-local或是global address),他會使用DAD來驗證有無其他人使用這地址。 假設有一台惡意主機,接收所有鄰居透過使用DAD發出的NS請求,表明該位置已經被使用的話會如何?
四、缺乏對於IPv6攻擊的對策與經驗(3/3) 圖:linux輸出的5項DAD欺騙內容 透過指令"dos-new-ipv6 eth0"使用本地端的eth0網路介面對subnet1發動攻擊,並回覆每個DAD的NS 圖7中,我們看到Linux的命令視窗顯示出5個偽造DAD的回應,其中一個用於link-local address,其餘則是global addresses 這種攻擊可以透過第2層來源位置做應對,如此可以緩解這類型的攻擊(前提是每個來源MAC必須是唯一的) Port Security:Port 的安全管理 泛指可以針對port下指令,令其拒絕或者放行特定的封包等等功能 例如公司需要透過申請自機MAC才能連網,否則會被拒絕,就是port security的一種應用 而第二層的設備,如switch等等 圖:協定分析器捕獲到的DAD欺騙內容
五、越來越多支援IPv6的駭客程式(1/2) 更多在關注IPv6以及實際套用的設施在增加,某些時候IPv6甚至成為主要使用的協議。 兩個攻擊都是這些工具的例子,還有另一個工具叫做redir6。 圖:在subnet1的路由的快取訊息 他顯示了R1的link-local address為他的下一節點(next hop) 關於遠端(remote)subnet4的IPv6目標位址(2001:db8:4::3/64)
五、越來越多支援IPv6的駭客程式(2/2) 攻擊者可以從subnet1發出一個命令,如下圖: 客戶端上的路由器快取會相信下一節點的目的地是ff80::777。 如果是攻擊者,那會形成類似中間人攻擊,或者他是偽造的link-local adderss,那可能會有DoS攻擊的風險 在客戶端,你可以看到快取遭到毒害的後果 下圖:redir6攻擊之後,客戶端所看到的結果
六、IPv6多點傳輸的弱點(1/2) IPv6的建立是為了避免使用廣播,但其中有很多IPv6是正在使用群播地址。 由於IPv6很可能有數億台主機,由一個ping去掃描全部的subnet是不切實際的。 然而,由於全部的主機都加入了某群播群組的話,一個ping到該地址,就可以顯示該網路上的全部設備。 Multicast IPv6 的 Multicast 用於單一位址對多個位址的資料傳送。Multicast 會標識一組接收位址,指定為 Multicast 的封包會傳送到Multicast 指定接收組的所有位址。
六、IPv6多點傳輸的弱點(2/2) 圖:ping的結果 圖:使用Nmap的工具對設備逐個進行掃描 上圖:ping的結果
七、IPv6標頭訊息的漏洞(1/3) IPv6能夠使用延伸標頭(extension headers),以指出IPv6封包中的下一個標頭。 由於這些標頭的靈活性,被惡意製作的標頭可能會消耗過多的資源在路由器的路徑上,進而造成目標位址遭受DoS攻擊的風險。
七、IPv6標頭訊息的漏洞(2/3) 圖:封包分析器顯示一個封包指向某個分段的標頭 顯示了一個封包,他指向一個2C(十進制下為44)的封包標頭,並且另一端則指著0x06(TCP) 這樣的布置是使用Scapy完成的,她允許指定任何一個標頭或者承載資料(payload)制下為44)的封包標頭,並且另一端則指著0x06(TCP) scapy可用来发送、嗅探、解析和伪造网络数据包,常常被用到网络攻击和测试中。 圖:封包分析器顯示一個封包指向某個分段的標頭
七、IPv6標頭訊息的漏洞(3/3) 圖:Hop-by-hop標頭 Hop-by-Hop option(跳躍選項):用於指定到目的的路徑上每個躍點處的參數。 這可以改變中繼節點的路徑 圖:Hop-by-hop標頭
八、從IPv6到IPv4的傳輸 網路安全設備在IPv4的部分,我們的網路可能不需準備深度封包檢測來測試IPv6的流量。 在隧道的端點(endpoints),協定或者應用程序的檢查是在交換的過程中就該做的,但是因為核心設備可能需要多餘的計算而忽略的檢查。 所謂深度封包檢測是相對於一般封包分析而言的一種新技術,一般封包檢測僅僅分析IP封包第四層以下的內容,包括來源位址、目的位址、來源埠、目的埠以及協議類型,而DPI則在此基礎上增加了應用層分析,可辨識別出各種應用及其內容。
Q&A