IPv6地址掃描實踐分享
一. IPv6地址簡介
隨著物聯網、5G的發展,網路應用對IP地址的需求呈現爆炸式增長,IPv4地址空間早已分配枯竭,並且分配十分不均勻,美國佔全球地址空間的一半左右,中國全國的IPv4地址加起來都沒有美國一所大學擁有的地址多。IPv6憑藉充足的網路地址和廣闊的創新空間,已經成為實現萬物互聯,促進生產生活數字化、網路化、智慧化發展的關鍵要素,為我國網路設施升級、技術產業創新、經濟社會發展提供了重大契機。 2019年4月,工信部發布《關於開展2019年IPv6網路就緒專項行動的通知》,以全面提升IPv6使用者滲透率和網路流量為出發點,就推動下一代網際網路網路就緒提出主要目標、任務舉措和保障措施,持續推進IPv6在網路各環節的部署和應用[1] 。所以喊了這麼多年的IPv6,這一次它真的來了。
隨著IPv6地址使用的普及,安全漏洞和網路攻擊也定會隨之而來。所以IPv6地址的應用同樣面臨著資產管理和網路安全等方面的挑戰。網路地址掃描是資產資訊收集和漏洞發現的前提和手段。相比IPv4的32位地址,IPv6地址長度增加到128位,具有巨大的地址空間,而且在地址表示、地址配置等方面均有顯著不同。因此,傳統的地址掃描方法無法完全適用於IPv6網路,所以能夠對IPv6資產和服務準確的掃描測繪,對於網路安全具有著重要的意義。
二. IPv6掃描的困難性
目前IPv6資產掃描還是比較困難的,主要有以下原因: IPv6地址數量是IPv4的2^96倍,有人做了個比喻,IPv6地址空間可以為地球上每一粒沙子分配一個IP,而且還有剩餘。從這個地址量級來看,如果像IPv4資產的發現方式,透過對全網段掃描來發現IPv6資產,從時間和資源上都是不切實際的。此外,目前IPv6地址使用的實際數量較少,並且地址分佈的隨機性較大,這無形增加了掃描難度。當然,IPv6的地址掃描也並非是無從下手,本文接下來就分享IPv6地址分類掃描的實踐過程以及掃描思路。
三. 常見IPv6地址分類
IPv6的地址長度為128位,是IPv4地址長度的4倍。於是IPv4點分十進位制格式不再適用,採用十六進位制表示。常用冒分十六進位制法表示IPv6地址,格式為X:X:X:X:X:X:X:X,其中每個X表示地址中的16b,以十六進位制表示。例如:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,在某些情況下,一個IPv6地址中間可能包含很長的一段0,可以把連續的一段0壓縮為“::”。但為保證地址解析的唯一性,地址中“::”只能出現一次。根據不同的生成策略,常見的IPv6地址有以下幾類[2] [3] :
1. 低位地址
在某些情況下,節點的地址需要手動配置,例如路由器和伺服器的地址,出於配置簡單和容易記憶的考慮,通常會選擇一些低位地址,即地址除了最後幾位,其它地址位都是0。所以這部分IPv6地址的特徵是前面的地址為一致,只有地址的最後幾位隨機分佈。
圖1 低位地址隨機的IPv6地址
2. 部分位隨機的地址
部分位隨機的IPv6地址和低位地址類似,只不過並不是低位隨機,而是地址中的特定的幾位呈隨機分佈。
圖2 部分位隨機的IPv6地址
3. 內嵌MAC地址
內嵌MAC地址又稱為EUI-64地址,是透過裝置MAC地址產生的,首先在48位的MAC地址的中間位置,插入十六進位制數FFFE,並且要U/L(Universal/Local)位(從高位開始的第7位)設定為1[1], 最後得到的就是64位EUI-64格式地址。這類地址的主要特徵是地址中包含FFFE字元[4] 。
具體的轉換過程如下圖所示:
圖3 MAC地址嵌入型生產過程
圖4 MAC地址嵌入的IPv6地址
當然除了這些分類以外,還有埠嵌入地址、內嵌IPv4地址、臨時地址、IPv6過渡地址等等,感興趣可以查閱相關資產進一步瞭解,在這裡就不過多介紹。
四. IPv6地址掃描實踐
上文我們提到了IPv6地址分佈有一定特性,比如部分地址位隨機、MAC地址嵌入等等,我們可以利用這些分佈特性,加入一些掃描範圍或限制條件,來降低需要掃描的IPv6地址掃描地址空間。
接下來對上面的掃描思路進行測試,掃描測試使用的是開源的IPv6掃描外掛Scan6[5] [6] ,Scan6是IPv6地址掃描的工具,它是SI6 Networks IPv6工具包的一部分,包括了一些高階IPv6地址掃描方法。測試的資料來源來自於開源的Hitlist[7] 存活的IPv6地址集合。
1. 低位地址掃描
低位IPv6地址掃描和IPv4的掃描類似,除了地址的後幾個位元組,其他位均為0,所以只需掃描對應的地址段就可以發現這些地址。
掃描命令:scan6 -i eth0 -d ****:ff40:8::0000/112,其中引數-i是選擇掃描使用的網路卡,引數-d是選擇掃描的地址段,掩碼/112共有65535個地址,掃描這個數量的地址耗時約5分鐘,共發現15個存活地址。
2. 部分地址位隨機掃描
如果地址隨機位不在末端的部分位隨機的IPv6地址,Scan6可以使用十六進位制的區間來表示要掃描的地址範圍,實現的效果只遍歷掃描指定位地址,其它位的地址不變。
掃描命令:scan6 -i eth0 -d ****:983:0-3000::1,其中這個0-3000指的只掃描遍歷範圍所在位,掃描範圍是16進位制0-3000,也就是12288個地址。如下圖所示,共用了約1分鐘完成掃描,發現3853個存活的IPv6地址。
3. 內嵌MAC的地址掃描
MAC地址由兩部分組成,前24位是廠商的ID,由美國電氣和電子工程師協會(IEEE,全稱是Institute of Electrical and Electronics Engineers)唯一分配,後24位廠商的擴充套件ID由廠商自己編制,組合產生全球唯一的48位MAC地址(也稱IEEE 802地址),可以透過IEEE官網資料,來查詢廠商對應的MAC地址前24位的廠商ID,具體資訊格式如下圖所示。
圖5 MAC地址與廠商的對應資訊
利用MAC地址嵌入的生成規則,以及IEEE提供的廠商ID對照表,就可以透過掃描指定IPv6址區間內某個廠商的地址來縮小掃描範圍,進而縮短掃描時間。以H智慧裝置廠商MAC ID “BCAD28”為例,選取了一個有MAC地址嵌入資產存活的網段,做了如下掃描測試。
掃描命令:scan6 -i eth0 -d ****:****:5491:0:0000:0000:0000:0000/64 -K " **** Technology Co.,Ltd." 引數-K是廠商名稱,表示只掃描配配置檔案對應廠商的MAC地址段生成的IPv6地址。
掃描網段掩碼/64,掃描耗時約19個小時完成掃描,雖然只發現1個存活地址,但是初步可以證明,增加廠商引數掃描MAC嵌入型地址是可行的。因為提供了6位廠商MAC ID以及4位的FFFE,掃描的隨機的地址位從16位下降到6位,要掃描的地址數量就從2^64-1個下降到2^18-1,所以大大縮短了掃描時長。此外,MAC嵌入型的地址掃描,還有助於發現物聯網裝置的IPv6地址。透過輸入物聯網智慧裝置廠商的MAC,掃描存活地址大機率就是物聯網裝置。或者透過提取MAC嵌入地址中的MAC地址,並匹配廠商資訊,有助於對資產的裝置型別進行識別。
五. IPv6資產掃描思路
上文中簡單介紹了IPv6的地址分類,並且做了掃描測試,初步得出透過地址分佈特徵來縮小IPv6地址掃描範圍的方法來掃描存活資產是可行的。不難看出,IPv6的地址掃描過要比IPv4的全網掃描那種模式複雜的多,IPv6需要持續完善掃描的各個環節,簡單整理IPv6地址掃描運營思路,如下圖所示:
圖6 IPv6地址掃描運營思路
1. 地址收集
我們已經知道盲掃IPv6是不現實的,所以第一步我們需要收集可能存活的地址或者網段,明確掃描範圍。這個資料來源可以是開源的資料集、IPv6 DNS伺服器、公網流量中獲取等等。
2. 地址分類與掃描
地址集合積累到一定數量後,根據上文提到的地址分佈特徵進行分類,並且使用對應策略的掃描元件擴充套件掃描對應特徵的地址段存活的IPv6地址。其次還需要尋找沒有被分類的地址或地址段的特徵,對地址分類的種類需要持續更新。
3. 掃描地址集更新
掃描地址集合需要不斷更新,一方面是透過掃描的存活結果進行更新,還有就是持續增加新的地址資料來源。透過持續運營來積累更多的IPv6存活地址。
六. 總結
上文介紹的利用地址分佈特性的掃描方法,確實能大大縮小掃描的範圍,但缺點也是十分明顯的。一方面,需要提供存活地址或網段並且不斷更新;其次,這種方法並不能發現那些無規律隨機分佈的地址。當然還有一些其他的方式來發現IPv6地址,比如Cisco部落格中提到了透過UPnP服務發現IPv6地址,在我之前寫的微信文章也提到過[8] 。此外,還有DNS反向對映獲取、公網流量獲取、抽樣掃描等方法等等。目前,雖然IPv6地址掃描可能還沒有一個完美的掃描方法,但可以將主動掃描和被動流量獲取等多種發現方法相結合,透過持續的運營,來不斷的積累更多存活的IPv6地址。想了解更多的IPv6資產分析相關的內容,敬請期待我們綠盟科技《2019年物聯網安全年報》。
[1] IPv6網路就緒專項行動: http://www.cnii.com.cn/wlkb/rmydb/content/2019-10/24/content_2191350.htm
[2] 理解IPv6的地址分類https://yq.aliyun.com/articles/407098
[3] IPv6地址掃描技術的研究與應用 劉林波
[4] EUI-64格式生成https://blog.csdn.net/nbvnvnvbn/article/details/97902155
[5] Scan6使用文件 https://www.si6networks.com/tools/ipv6toolkit/scan6-manual.pdf
[6] Scan6 https://github.com/fgont/ipv6toolkit/blob/master/tools/scan6.c
[7] IPv6 Hiltlist https://ipv6hitlist.github.io/
威脅狩獵告別"刻舟求劍"——物聯網資產變化研究https://mp.weixin.qq.com/s/WBToOU72OrxPUlba9RcKMA[1] 在EUI-64的IPv6地址格式中,第7位為0表示本地管理,為1表示全球管理為每個網路卡生成一個Link-Local的IP地址,簡單點說就是一個固定的字首加上MAC地址,由於MAC地址全球唯一,所以這樣構成的IP地址是唯一的,有了這個地址後,就可以區域網進行通訊了,但是這種地址路由器是不會轉發的。
相關文章
- 京東掃描平臺EOS—JS掃描落地與實踐2021-02-03JS
- 使用sqlmapapi.py批次化掃描實踐2020-08-19SQLAPI
- W13Scan 掃描器挖掘漏洞實踐2020-12-03
- 掃描技術和掃描工具2017-11-30
- Go 實現埠掃描器2023-04-13Go
- AWVS掃描器掃描web漏洞操作2018-08-06Web
- [譯] UX 設計實踐:如何設計可掃描的 Web 介面2019-01-08UXWeb
- win10系統掃描器提示掃描不到掃描器如何解決2019-01-07Win10
- 【知識分享】漏洞評估掃描的步驟2022-11-07
- 安全科普:Waf實現掃描器識別 徹底抵擋駭客掃描2020-08-19
- 掃描王 for Mac專業圖片掃描工具2020-12-04Mac
- Nmap掃描教程之基礎掃描詳解2015-06-29
- GO語言 實現埠掃描2020-12-04Go
- Python 實現埠掃描器2017-10-31Python
- Oracle中存取資料掃描Table及索引的方式(全表掃描,索引掃描等)2009-05-27Oracle索引
- MySQL中的全表掃描和索引樹掃描2022-05-14MySql索引
- 埠掃描器2020-11-19
- 安全掃描工具2014-12-31
- 綜合掃描工具2024-09-10
- Android實現掃描二維碼2017-03-13Android
- SCAN掃描演算法 java實現2017-11-27演算法Java
- 主機掃描程式實現方法 (轉)2007-12-11
- DAST 黑盒漏洞掃描器 第四篇:掃描效能2022-06-22AST
- 藍芽掃描工具btscanner修復暴力掃描模式2018-02-27藍芽模式
- iOS 使用CIDetector掃描相簿二維碼、原生掃描2016-04-25iOSIDE
- 索引全掃描和索引快速全掃描的區別2012-02-07索引
- 電腦掃描檔案怎麼掃描 win10電腦掃描檔案方法介紹2022-10-18Win10
- oracle 全表掃描,索引範圍掃描與塊的理解2008-04-18Oracle索引
- Zenmap(埠掃描工具)2019-01-15
- 淺談掃描線2023-11-11
- python掃描埠2018-06-14Python
- python 埠掃描2016-08-23Python
- 域名掃描工具Fierce2017-01-06
- direasch目錄掃描2024-05-04
- sonar(二)掃描配置2024-05-09
- 掃描行為分析2024-09-19
- React Native 實現二維碼掃描2016-10-31React Native
- Nessus漏洞掃描教程之使用Nmap工具掃描識別指紋2015-07-13