文/封寒松
隨著IPv4 向IPv6 的逐步演進,IPv6 網(wǎng)絡(luò)已經(jīng)在各高校校園內(nèi)實現(xiàn)了規(guī)模部署。網(wǎng)絡(luò)協(xié)議升級是高校校園網(wǎng)改造過程中至關(guān)重要的一步,校園內(nèi)提供IPv4 協(xié)議與IPv6 協(xié)議同時接入的網(wǎng)絡(luò)服務(wù)也大幅增多。在網(wǎng)絡(luò)升級的同時,需要對網(wǎng)絡(luò)管理相關(guān)的其他服務(wù)進行相應(yīng)的升級。如在網(wǎng)絡(luò)管理、網(wǎng)絡(luò)安全及應(yīng)用服務(wù)等方面具有重要意義的主機發(fā)現(xiàn)與漏洞掃描服務(wù)。
IPv4 的網(wǎng)絡(luò)空間相對較小,網(wǎng)絡(luò)地址數(shù)量有限,傳統(tǒng)的網(wǎng)絡(luò)掃描工具已經(jīng)十分成熟,如NMap、ZMap、MassScan 等。然而,IPv4 網(wǎng)絡(luò)環(huán)境下的掃描策略,是面向全球范圍內(nèi)的全部IPv4 地址進行遍歷掃描,但同樣的思路和方法無法適用于IPv6 的網(wǎng)絡(luò)環(huán)境。IPv6 地址長度為128 位,理論上地址空間最大可以達到2 的128 次方,遠(yuǎn)遠(yuǎn)超過了IPv4 的2 的32 次方。以上海交通大學(xué)為例,學(xué)校擁有的可用IPv4 地址數(shù)量約為89632 個,即使加上范圍為10.0.0.0/8 的內(nèi)網(wǎng)地址,IPv4 的地址數(shù)量也只有1.68×107個,而IPv6 地址數(shù)量則約為7.9×1028個,是IPv4 地址數(shù)量的5×1021倍。
此外,IPv6 地址的復(fù)雜結(jié)構(gòu)也增加了掃描難度。采用無狀態(tài)地址自動分配(SLAAC)方式時,IPv6 地址可以由IPv6 客戶端自行決定,這種分配方式使得IPv6 地址結(jié)構(gòu)的復(fù)雜性進一步增加。同時,互聯(lián)網(wǎng)服務(wù)提供商(ISP)分別擁有大量的IPv6地址前綴,每個ISP 默認(rèn)大約有296個IP 地址可自由分配,不同ISP 的地址分配策略的自由性使得全網(wǎng)掃描所有子網(wǎng)IPv6 地址變得更加復(fù)雜。因此,對于IPv6 地址掃描,龐大的地址空間和復(fù)雜的地址結(jié)構(gòu)使得傳統(tǒng)的網(wǎng)絡(luò)遍歷掃描方法和掃描工具變得不可行。
本文從校園網(wǎng)的流量和IPv6 地址分配方式等角度出發(fā),提出了針對校園網(wǎng)內(nèi)IPv6 主機發(fā)現(xiàn)的高效方法,并與掃描器聯(lián)動,最終設(shè)計并開發(fā)了一套校園網(wǎng)IPv6 主機實時發(fā)現(xiàn)和漏洞掃描系統(tǒng),旨在應(yīng)對IPv6 網(wǎng)絡(luò)空間掃描困難,IPv6 地址變化頻繁等問題。
本文設(shè)計并開發(fā)了針對校園網(wǎng)內(nèi)部的IPv6 主機實時發(fā)現(xiàn)和漏洞檢測系統(tǒng),系統(tǒng)整體架構(gòu)如圖1 所示,旨在對校園網(wǎng)內(nèi)部所有活躍的IPv6 主機進行實時發(fā)現(xiàn)及高效的漏洞掃描,用于高校的網(wǎng)絡(luò)安全管理工作。
本系統(tǒng)分為三個主要模塊:
1.IPv6 地址觀測模塊:根據(jù)流量數(shù)據(jù)、DNS 數(shù)據(jù)、路由規(guī)則、已登記服務(wù)器地址等數(shù)據(jù)來源確定主機/網(wǎng)絡(luò)范圍。
2.IPv6 地址動態(tài)跟蹤模塊:通過對觀測結(jié)果的整理和清洗,進一步獲取IPv6 地址,并對數(shù)據(jù)進行有效性驗證。根據(jù)IPv6 地址的變化規(guī)律及驗證結(jié)果實現(xiàn)對IPv6 地址的動態(tài)跟蹤。
3.掃描模塊:對目標(biāo)主機進行操作系統(tǒng)識別、指定端口掃描、指定服務(wù)識別等掃描行為,獲取包括操作系統(tǒng)、開放服務(wù)狀態(tài)及服務(wù)的版本信息等。
圖1 系統(tǒng)整體架構(gòu)
在掃描模塊的工具可以復(fù)用的前提下,其余部分在面向IPv6 網(wǎng)絡(luò)時為重新設(shè)計并開發(fā),使其既能對校園內(nèi)的IPv6 網(wǎng)絡(luò)空間準(zhǔn)確高效的進行掃描,同時又能為信息搜集和漏洞檢測階段提供接口。
NetFlow 通過在路由器上收集流經(jīng)網(wǎng)絡(luò)出入口的TCP、UDP數(shù)據(jù)包,分析網(wǎng)絡(luò)流的源IP 地址、目的IP 地址、源端口號、目標(biāo)端口號、協(xié)議類型、TOS 字節(jié)、邏輯端口等屬性來區(qū)分網(wǎng)絡(luò)中的不同數(shù)據(jù)流量,并且對每個數(shù)據(jù)流進行單獨的跟蹤和計算,記錄其各方面特性,進一步感知網(wǎng)絡(luò)流量和擁塞情況。NetFLow 從v9 版本開始支持IPv6 協(xié)議,本文采用NetFlow v9版本分析流經(jīng)校園網(wǎng)出入口的全部流量,獲取其中出現(xiàn)過的所有IPv6 地址。
除此之外,本文還通過查找IPv6 地址映射記錄與反向IPv6地址映射記錄的方式來獲取IPv6 地址。IPv6 地址映射是從域名指向IPv6 地址的映射,以AAAA 記錄的形式存在于DNS 服務(wù)器中。IPv6 地址反向映射用來記錄客戶端IP 地址到一個完全合格域名,以PTR 記錄的形式存在于DNS 服務(wù)器中,PTR 記錄是A 記錄的逆向記錄,又稱做IP 反查記錄或指針記錄,負(fù)責(zé)將IP 反向解析為域名。其中IPv6 地址到域名由特殊DNS 區(qū)域執(zhí)行:ip6.arpa,即反向查找區(qū)域。在此區(qū)域中的域名將遵循x.x.x.x….x.x.x.x.ip6.arpa 的模式,其中x.x.x.x….x.x.x.x 對應(yīng)逆向?qū)懟氐腎Pv6 地址。
無論是內(nèi)部訪問或是外部訪問,所有指向IPv6 地址的域名記錄與反向解析記錄,都會在DNS 服務(wù)器中留下記錄。本文通過收集校內(nèi)DNS 服務(wù)器中的全部AAAA 記錄與PTR 記錄,過濾出其中的IPv6 地址,作為地址觀測模塊的另一種IPv6 地址來源。
IPv6 地址觀測作為后續(xù)工作的基礎(chǔ),必須達到高覆蓋率、高準(zhǔn)確率的要求。本文通過結(jié)合流量分析、反向映射等多種方法進行IPv6 地址觀測,盡可能獲取到校園內(nèi)全部活躍的IPv6地址。
IPv6 提供了兩種地址自動配置技術(shù),分別是Dynamic host configuration protocol for IPv6(有狀態(tài)地址自動配置,以下簡稱DHCPv6)和Stateless address auto-configuration(無狀態(tài)地址自動配置,以下簡稱SLAAC)。DHCPv6 是對IPv4 中的DHCP 的改進和擴展,其中的這種地址變化完全由DHCP 服務(wù)器進行管理和處理,節(jié)點不需要做任何處理。SLAAC 則是IPv6 提出的一種全新的完全分布式的地址自動配置技術(shù)。根據(jù)SLAAC 選擇接口ID 生成方式的不同,可以將通過SLAAC 得到的IPv6 地址分為兩類,一類是穩(wěn)定的IPv6 地址,另一類是不穩(wěn)定的IPv6地址。是否穩(wěn)定是通過在一段時間后,同一子網(wǎng)的接口ID 是否是會發(fā)生變化決定的,即由IPv6 地址是否會發(fā)生變化來確定IPv6 的穩(wěn)定性。
在IPv6 的地址自動配置中,一般把128 位的IPv6 地址分為前64 的網(wǎng)絡(luò)前綴和后64 位的Interface identifier(接口標(biāo)識,以下簡稱接口ID)。由于DHCPv6 類似于IPv4 中的DHCP,所以IPv6 地址的自動配置一般討論的都是SLAAC,在采用SLAAC 地址配置方式時,EUI-64 標(biāo)準(zhǔn)格式的IPv6 地址是由MAC 地址轉(zhuǎn)變而來的,因此地址掃描空間范圍可以由64 位降為48 位。同時,通過確定MAC 地址中前24 位OUI 地址(Organizationally unique identifier,又稱組織唯一標(biāo)識符),地址掃描空間范圍再一次從48 位降低到24 位。IPv6 地址掃描空間顯著降低,進而可以通過掃描24 位地址空間的方式來實現(xiàn)根據(jù)IPv6 地址觀測結(jié)果進行IPv6 地址動態(tài)跟蹤。
簡單來說,IPv6 地址動態(tài)跟蹤的過程可以分為兩步。首先,根據(jù)校園網(wǎng)網(wǎng)絡(luò)前綴固定與EUI-64 格式IPv6 地址的特性,128位的IPv6 地址中需要進行預(yù)測并掃描的地址長度可以縮減為24位,以收集到的IPv6 地址作為種子,可以生成24 位不定地址所對應(yīng)的預(yù)掃描地址空間。接下來,對該地址空間內(nèi)的IPv6 地址進行掃描探測,根據(jù)每次的掃描結(jié)果不斷更新目標(biāo)地址空間。掃描過程中,將命中率較高的節(jié)點置于掃描優(yōu)先隊列的最優(yōu)先位置,更新地址空間的同時也更新優(yōu)先隊列。由此可以保證預(yù)掃描的IPv6 地址空間中,密度較高的部分被更優(yōu)先的掃描到。基于此種掃描算法,可以跟蹤已有IPv6 地址的變化情況,并記錄最新的活躍IPv6 地址情況,最終實現(xiàn)對于校園內(nèi)IPv6 地址的動態(tài)跟蹤。
已有的研究方法大多通過熵和聚類算法解析IPv6 地址的前綴結(jié)構(gòu),本文根據(jù)校園網(wǎng)特性,將IPv6 地址的預(yù)測空間降低為24 位。同時,在對IPv6 地址進行活躍探測時加入了優(yōu)先隊列更新的策略,對常用的遍歷算法進行了改進,在探活過程中實時改進探測策略,以提高探測效率,大幅降低了掃描大地址空間所需的時間,對于解決IPv6 網(wǎng)絡(luò)空間掃描的主要問題起到了一定的幫助。
漏洞掃描一般是在端口掃描和服務(wù)識別的基礎(chǔ)上,通過漏洞檢測插件進一步檢測出目標(biāo)系統(tǒng)存在的安全漏洞。目前市面上常見的漏洞掃描軟件如NMap、Nessus 等,大多根據(jù)指定IPv4 地址或地址段進行遍歷掃描。由于IPv6 地址空間過大,這種掃描方式不能很好地應(yīng)用于IPv6 網(wǎng)絡(luò)環(huán)境。本文通過IPv6 地址觀測模塊與IPv6 地址動態(tài)跟蹤模塊,將IPv6 的大地址空間縮小為活躍IPv6 地址列表,并將常用的開源工具與獨立開發(fā)的腳本相結(jié)合,可以滿足針對校園內(nèi)IPv6 的漏洞掃描需求。本文提出的方法在滿足漏洞掃描需求的同時有效降低了需要掃描的地址數(shù)量,減少了漏洞掃描的時間,大大提高了漏洞掃描系統(tǒng)的工作效率。
本項目的攻擊腳本開發(fā)參照了NASL2 標(biāo)準(zhǔn),在滿足項目技術(shù)需求的同時,還具備快速、低耦合、高兼容的技術(shù)特點,并且可以實現(xiàn)多語言移植,包括但不限于C++、Python、Java 等常用語言,便于后續(xù)的模塊拓展使用。為了同時實現(xiàn)對于常見漏洞的檢測,本模塊還支持對于NMap、NCrack、W3F 等常見第三方安全工具的腳本化調(diào)用,以實現(xiàn)對于操作系統(tǒng)、數(shù)據(jù)庫、Web 應(yīng)用等常見系統(tǒng)組件的漏洞檢測;同時也可以集成常用的第三方安全軟件進行Web 滲透測試、常見應(yīng)用的弱口令檢測,包括但不限于網(wǎng)頁中存在的 Sql 注入、XSS 攻擊、CGI 漏洞、WebDAV 文件共享、目錄遍歷漏洞等安全問題。
圖2 2019 年9 月校園內(nèi)活躍IPv6 地址統(tǒng)計情況
圖3 校園網(wǎng)內(nèi)某主機掃描報告
整個系統(tǒng)包含的采集服務(wù)、掃描服務(wù)、數(shù)據(jù)庫服務(wù)、Web 服務(wù),均部署于Ubuntu 16.04 系統(tǒng)中,所依賴的軟件包括Nessus、ZMap、NMap、Python、MySQL 等。服務(wù)器的硬件環(huán)境為八核Intel 處理器、8GB 內(nèi)存等。
我們通過IPv6 地址觀測模采集了9 月1 日到9 月30 日期間的校園試驗區(qū)域內(nèi)活躍IPv6 地址,通過對獲取到的地址進行動態(tài)跟蹤,最終獲取到的IPv6 地址數(shù)量為49803 個,每天的IPv6地址活躍情況如圖2 所示。
當(dāng)有新的活躍I P v6 地址出現(xiàn)時,本文按照預(yù)設(shè)的掃描規(guī)則對其掃描,已掃描過一次以上的活躍I P v6 主機的掃描周期設(shè)置為7 天。每天僅需對新的活躍I P v6 地址以及部分舊地址進行掃描,數(shù)量為2000~3000 個,約為當(dāng)日活躍地址數(shù)量的一半,漏洞掃描模塊對其進行掃描的每日耗時約5 小時。減少了每次需要掃描的地址數(shù)量,同時保證了掃描系統(tǒng)對校園內(nèi)I P v6 地址的覆蓋率,大大提高了漏洞掃描效率。
通過調(diào)用Nessus 的漏洞掃描模塊,可以在Web 頁面中查詢歷次掃描的詳細(xì)信息,并可以根據(jù)已知IPv6 地址搜索掃描結(jié)果,單詞掃描結(jié)果如圖3 所示。
本文基于部署的校園網(wǎng)IPv6 主機實時發(fā)現(xiàn)和漏洞掃描系統(tǒng),對校園內(nèi)的活躍IPv6 地址進行采集,對采集到的IPv6地址進行了進一步測量與地址的動態(tài)跟蹤,對獲取到地址的IPv6 主機進行已知漏洞的掃描和分析,并對存在的問題及其可能的原因進行了具體分析。出于計算效率和存儲的考慮,本系統(tǒng)目前僅對當(dāng)月數(shù)據(jù)進行收集和測量,下一步工作可使用大數(shù)據(jù)計算平臺進行更長時間的IPv6 地址觀測與漏洞掃描。