喬 路
(湖北珞格科技發展有限公司,湖北 武漢 430000)
信息時代下,網絡的作用越來越大,與此同時,網絡安全問題也備受關注。為提高網絡的安全性,要采取有效的方法,評估網絡安全等級,在各種測評方法中,滲透測試的效果較好,它可以檢測出系統中的安全漏洞,避免攻擊者破壞網絡,使漏洞在完全暴露前得到修復。借此下面就滲透測試在網絡安全等級保護測評中的應用展開研究。
滲透測試是針對網絡安全提出的一種機制,主要是為證明網絡的安全防御能力。目前,滲透測試尚無統一的標準定義,按照它的用途,可將之定義:針對目標網絡真實攻擊的仿真。從技術層面看,滲透測試是對計算機系統全面的安全檢測,其目的是發現系統中潛在的漏洞,能夠對系統基礎組件的行為加以評估,如網絡設備、應用程序等。可見,滲透測試在確保網絡系統安全方面具有不可替代的作用。
滲透測試方法較多,常用的有以下幾種:開源安全測試、系統安全評估、信息安全測試與評估、開放式Web 應用安全項目等。上述滲透測試方法各具特點,如開源安全測試是一個滲透測試框架,可用于衡量網絡安全性,能夠為安全質量提供較為準確的度量;系統安全評估可檢查網絡或是應用程序的安全性,以特定的技術目標作為關注對象,如操作系統、路由器、交換機和虛擬網絡等;信息安全測試與評估是高級別的網絡滲透測試方法;開放式Web 應用安全項目是一種基于HTTP 的測試框架,包含的信息較為詳細,可對項目風險全面描述。
1.2.1 計劃階段
滲透測試計劃階段要根據行業標準、安全策略和實踐需求等因素,定義測試目標、測試范圍以及時間限制,完成所有計劃與準備工作,獲取客戶正式授權許可。具體包括:確定特定IP 地址、測試技術清單、測試時限、測試受限主機、測試目標系統及測試信息采集等方面。
1.2.2 發現階段
滲透測試根據計劃進入發現階段,具體分為以下4 個環節:(1)目標發現。收集系統版本、安全漏洞、通信區域等公開信息。(2)目標偵察。通過模仿、垃圾搜索、網絡踩點等技術手段獲取相關信息。(3)目標掃描。識別目標網絡的活動系統、過濾端口、操作系統指紋和網絡路徑等。(4)目標枚舉。確定共享文件、已知安全漏洞等信息。
1.2.3 評估階段
滲透測試評估要對目標網絡進行檢查評價,采用PacketStrom 漏洞數據庫中提供的公開漏洞信息確定潛在威脅,分析漏洞的真實性,識別漏洞可能產生的風險,判斷目標網絡的安全狀態,進而針對性制定安全措施。
1.2.4 攻擊階段
在確定攻擊目標后執行具體攻擊,利用滲透測試框架節省測試程序執行時間,在獲得成功后提升權限。如,獲取本地系統訪問權限、root 權限、網絡訪問權限等,攻擊結束時出具測試報告[1]。
1.2.5 報告階段
滲透測試報告主要內容為漏洞與潛在風險評估,描述目標組織的整體安全狀況,并提出相關防御建議,保證測試結果的準確性。
網絡安全評估系統是基于網絡安全形勢與網絡體系結構進行確定,為使網絡系統的安全得到保障,除要明確具體的安全要求外,還要了解網絡系統的脆弱性及其造成的危害,以及針對脆弱性應采取的措施,上述目標的實現,需要評估網絡系統的安全性。網絡安全評估的最終目的是借助測試技術,找出網絡系統中存在的安全漏洞,評估網絡風險程度,依據評估結果,制定安全策略與措施,為網絡安全提供保障。
評估網絡的整體安全狀況是網管的重要工作內容之一,為更加高效地完成此項工作,需要有一套功能強大、性能穩定的測評工具,通過該工具對網絡安全等級保護進行評測,及時了解并掌握網絡的安全情況。基于此,下面依托滲透測試,設計開發一款網絡安全評估系統。本次設計的系統采用當前較為流行的B/S 架構體系,自Web 興起后,這種架構在系統設計中的應用越來越廣泛,基本上已經取代C/S 架構,成為主流架構。系統具備如下功能:用戶可以利用Web 瀏覽器,對服務器進行訪問,并向服務器提交相關的掃描任務,如端口掃描、IP 設置等[2];當服務器端接收到用戶提交的掃描數據后,便會對指定的網絡做安全檢測,發現目標網絡存在的漏洞;依據漏洞信息,評估漏洞的風險等級和網絡設備面臨的風險程度,并對網絡安全作出整體性評價,提出合理可行的解決方案;以用戶指定的格式,反饋評估結果。
功能模塊是系統的核心部分,是系統設計開發的重要內容,本系統主要有以下模塊:用戶配置、系統控制、網絡安全評估、漏洞庫以及插件庫等。
2.3.1 用戶配置
網絡安全漏洞掃描任務信息需要通過用戶配置模塊進行建立,掃描任務信息是該模塊實現的主要功能,具體包括以下信息:掃描任務主機、掃描任務配置以及掃描任務插件等。通過輸入相應的指令,可對漏洞掃描任務的啟、停加以控制,該模塊能夠對掃描策略進行定義,并完成掃描參數的設定。依托該模塊,用戶可自行定制網絡安全漏洞掃描任務。
2.3.2 系統控制
系統控制模塊可以協調其他模塊,接受掃描請求,依據預先設定好的掃描策略,向各功能模塊下達指令,并對插件庫內的腳本測試插件進行調用,按配置的安全規則,掃描目標網絡,將結果發送給處理模塊。系統控制模塊的功能較多,如完成初始化、響應客戶端發出的各種請求。系統在初始化的過程中,會調用腳本檢測插件,這個過程較為復雜,可由插件選擇與組織兩個模塊完成。插件選擇模塊會將選好的插件傳給組織模塊,而組織模塊會通過分析得出需要使用的插件,并為插件的執行編排順序,這樣能夠使腳本解釋器的執行效率得到大幅度提升。組織模塊按可執行的插件建立關系樹,據此確定插件的執行順序[3]。
2.3.3 網絡安全評估
網絡安全評估是本系統中較為重要的功能模塊之一,該模塊由漏洞風險評估、權重計算等部分組成,能夠對目標網絡面臨的風險大小進行判定。在評估網絡設備風險大小時,依據最薄弱環節公理,即網絡中最薄弱的部分決定了安全性的強度等級,換言之網絡設備的風險大小等于掃描發現的漏洞風險大小,而漏洞的風險大小,可以通過插件的矢量定義求取。
2.3.4 漏洞庫
系統的每個安全漏洞均有屬于自己的特征,不同的漏洞有不同的應對措施,漏洞庫的作用就是對當前已知的漏洞特征及應對措施加以存儲。在開發測評系統時,需要建立一個與通用漏洞披露(CVE)相兼容的漏洞庫[4]。由于CVE 會定期更新,所以漏洞庫能夠追蹤到最新的漏洞,為測評提供條件。一個完整的漏洞庫由以下信息組成:基本信息、評價要素信息和其他信息。其中基本信息包含漏洞編號、漏洞名稱、漏洞描述和漏洞級別等內容;評價要素信息包含攻擊途徑、攻擊的復雜程度、機密性、完整性及可用性等內容;其他信息包含保留字段、解決方案等內容,以上信息可存儲于二維表中。漏洞信息可通過相關的網站進行采集,可以自動采集,也可手動收集。
2.3.5 插件庫
漏洞檢測腳本編寫完畢后,需要存放在插件庫中,一個插件與一個網絡安全漏洞相對應,通過系統控制模塊能夠調用插件。編制插件時,要遵循簡潔明了的原則,插件代碼的組成部分越少越好,在保證應用的前提下,單個插件的代碼應由以下兩個部分組成:一部分為屬性描述,另一部分為掃描代碼。前者包含與網絡安全漏洞相關的各種基本屬性,后者可為漏洞檢測提供穩定的功能函數,以發送數據包的方式,模擬惡意攻擊,檢測目標主機是否存在安全漏洞。插件的執行需要通過解釋器完成,NASL 自帶插件解釋器功能,為腳本擴展提供了便利條件。
2.4.1 端口掃描的實現
網絡滲透測試前,需要了解測評目標開啟的端口情況及提供的網絡服務類型,這部分信息的獲取可以利用端口掃描完成。本文所設計的系統采用半開式掃描,即TCP SYN[5]。之所以選擇這種掃描方式,主要是因為它能夠快速且完整的完成3 次握手過程,當SYN請求包發出后,返回的數據包為SYN/ACK 時,表明端口此時正處于監聽狀態,若是返回的數據包為RST,則說明端口的狀態為關閉。由于掃描過程不會在系統上留下任何記錄,故很難被發現。在TCP SYN 掃描方式下,TCP 首部中不包含以下信息:源地址、目標地址等,檢測時,需要賦予TCP 一個偽首部,以此增強檢測的有效性,偽首部主要是用于計算,不需要發送。端口掃描的實現過程如下:套接字初始化,按檢測任務創建套接字,并對套接字選項合理設置,可以使用相關的函數對所創建的套接字IP 頭進行設置,計算出TCP 的校驗,在具體計算時,要包含TCP 偽首部;發送數據包,調用相應的函數接收數據包,最后對接收到的數據包全面分析。
2.4.2 操作系統探測的實現
當端口掃描完成后,便可探測操作系統,為加快探測速度,在系統設計中,引入以下兩種探測技術,其中一種是探測返回數據包的TTL,即生存時間值,另一種是探測通信協議棧指紋。
(1)從操作系統的角度看,TTL 具有固定性的特點,對目標主機返回的TTL 進行分析,能夠判斷出主機操作系統的類型。在探測操作系統時,可以先用TTL 做初步判定,再以協議棧指紋對初步判定結果加以確認,提高探測效率。發送SYN 探測包可以獲得TTL,SYN探測包的發送歸屬于協議棧探測技術的范疇,由此使得探測包能夠與指紋相匹配[6]。當二者的判斷結果吻合時,便不需要協議棧指紋探測,可直接得出最終的探測結果。
(2)用通信協議棧指紋判斷網絡主機的操作系統類型時,需要先按端口掃描結果,判斷主機中TCP 端口的情況,除正常開放的TCP 端口外,還要有一個關閉的TCP 和UDP 端口[7]。隨后系統會自行構造出一種格式特定的數據包,并發送給目標主機,檢測目標主機對數據包的響應情況,用返回的結果與指紋數據匹配,找出目標主機操作系統的具體類型。操作系統的探測方法實質上就是通過發送不同的套接字包作為探測數據包,再通過端口將有利用價值的數據包過濾出來,并加以分解,最后將這些數據與指紋數據庫內的數據做匹配,獲取操作系統信息,實現探測目標主機操作系統的目的。
2.4.3 漏洞掃描的實現
在漏洞掃描時,需要借助相應的插件,由此使得掃描插件的選取成為重點內容。通過掃描引擎,對封裝有漏洞掃描方法的插件進行調用,便可快速完成網絡安全漏洞掃描。當需要添加新的功能時,對更多的漏洞進行掃描,則可安裝更多的插件。本系統設計時,選用NASL 語言作為掃描插件,這是一款專為漏洞編寫開發的具有解釋性功能的掃描腳本,可以提供非常豐富的函數,用于網絡操作,由此使編寫出的掃描腳本代碼比較精煉,僅有數十行,為新掃描腳本的編制和舊腳本的維護帶來極大便利。按照NASL 的結構以及該語言所提供的函數情況,在已知網絡脆弱性的前提下,可編寫安全漏洞掃描插件,對目標主機中的漏洞進行檢測[8]。
2.5.1 測試用例
為進一步驗證本次設計的測評系統的可用性,對已知拓撲結構的計算機網絡開展安全等級保護測評。待測網絡中包含路由器(1 個)、防火墻(1 個)、Web 服務器(1 個)、客戶端設備(3 臺)。安全漏洞掃描參數的設定情況如下:對整個網絡中的所有安全漏洞進行測試,最大并發線程為100 個,主機數量10 個[9]。
2.5.2 測試結果
網絡安全漏洞掃描用時為77 分12 秒,存活的主機數量為6 個,安全漏洞數量為3 個,警告數量為5個,提示數量為7 個。經滲透測試后,獲取到的網絡安全漏洞信息如下。主機一:發現安全警告;主機二:發現安全漏洞、安全警告和安全提示;主機三:發現安全漏洞和安全提示;主機四:發現安全漏洞和安全提示;主機五:發現安全漏洞和安全提示;主機六:發現安全警告。由上述檢測結果可以看出,本次設計的測評系統,在網絡安全等級保護測評中具有良好的應用效果,能夠發現網絡存在的安全問題。系統采用多進程和多線程設計,掃描速度大幅度提升,插件技術的運用,使系統具備可擴展性,評估方法合理可行,結果準確,可在計算機網絡安全評估中推廣應用。
綜上所述,網絡安全等級保護測評是一項非常重要的工作,為提高測評結果的準確性,可以運用滲透測試構建測評系統。本文所設計的基于滲透測試的網絡安全等級保護測評系統,在網絡安全評估方面具有良好的應用效果,具備一定的推廣使用價值。未來一段時期,可對系統逐步改進,使其性能更加完善,更好地為網絡安全服務。