◆卜佑軍 王涵 胡靜萍 張橋
(1.中國人民解放軍戰略支援部隊信息工程大學 河南 450002;2.網絡通信與安全紫金山實驗室 江蘇211100)
滲透測試是指滲透測試人員模擬黑客使用的信息系統滲透技術、滲透方法和漏洞測評技術,對目標系統的脆弱性做深入的分析,發現系統漏洞的過程[1]。滲透測試的結果可以作為信息系統脆弱性解決的依據,有助于確定組織信息系統資源面臨的安全威脅,降低組織的ⅠT 安全成本,發現和解決存在的安全威脅,掌握漏洞的基本原理、設計和執行,為組織提供一個相對安全的信息系統運行環境[2]。
滲透測試是基于漏掃工具對目標信息系統進行掃描并結合已知的漏洞利用工具對信息系統漏洞進行滲透和測試,以此來獲取系統控制權限。在滲透測試過程中,目前使用較為廣泛的開源滲透測試工具有metasploit 滲透測試框架,僅僅利用metasploit 滲透測試框架加載漏洞掃描工具目前依然無法滿足全面、完整的智能化滲透測試需求。目前已公開的滲透測試系統存在以下共性問題:
(1)滲透測試過程需要調用各式各樣的安全性分析工具,由于各類工具的滲透策略、功能及使用方式都不相同,所以無法滿足高效的、智能化的滲透測試需求。
(2)缺乏有效的人工和自動化相結合的測試平臺,滲透測試所調用的各類工具間的數據格式無法統一,很難進行自主交互,需要相關人員花費大量的時間和精力進行數據整合。
該自動化滲透系統的設計基于如下方法:(1)采用關聯規則挖掘算法Apriori 對滲透測試數據進行建模分析;(2)基于CVE、CPE、OVAL 等一系列標準來分析目標信息系統漏洞。
Apriori 算法是一種最有影響力的挖掘布爾關聯規則的頻繁項集的算法,該算法使用一種稱作逐層搜索的迭代方法,k-項集用于探索(k+1)-項集。關聯規則的一般步驟:(1)找到頻繁集;(2)在頻繁集中通過可信度篩選獲得關聯規則。關聯規則的應用:Apriori 算法應用廣泛,可用于消費市場價格分析、高校管理信息系統、移動通信領域、網絡安全領域等,在網絡安全領域主要應用于網絡入侵檢測技術中。
非營利性組織MⅠTRE 在漏洞評估方面采用了CVE、CPE、OVAL等一系列標準來評估信息系統,這些標準可以用來進行信息系統的滲透測試,通過與多源漏洞庫對比掃描出被測網絡及設備的漏洞,可以有效提高漏洞評估的準確性和完整性[3]。
CVE(Common Vulnerabilities and Exposures)是信息安全通用漏洞披露庫,該庫只是一個漏洞描述的標準或者說是列表[4]。
CPE(Common Platform Enumeration)以標準化方式為軟件應用程序、操作系統及硬件命名的方法[5]。例如:cpe:/{part}:{vendor}:{product}:{version}:{update}:{edition}:{language}格式。
OVAL(Open Vulnerability and Assessment Language)是開放漏洞評估語言,明確規定了漏洞的定義、漏洞的特征、漏洞的評估算法以及漏洞評估各個階段產生的文檔表示形式[6]。
針對以上所述的問題,本論文設計了一種人工和自動化相結合的安全滲透測試系統,該系統通過建立滲透測試平臺,針對目標信息系統進行人工與自動化相結合的測試方法,分析目標信息系統的脆弱性。本系統采用的技術方案是:建立滲透測試平臺,通過人工和自動化相結合的手段對信息系統拓撲結構和主機狀態進行深度的掃描和分析。在分析漏洞過程中,調用漏洞驗證庫中驗證腳本對目標信息系統進行滲透測試,并在滲透測試結束后對整個滲透測試結果以及測試過程進行分析并生成測試報告,具體如圖1、圖2 所示。

圖1 系統流程圖

圖2 滲透測試流程圖
根據圖1、圖2 所示,本論文所設計的系統基于Python 開發并采用標準接口,能夠與其他安全系統對接(Nessus、Nexpose、Appscan、WVS 等)。本系統支持人工和自動化相結合的滲透方式,包括常見的滲透測試方法,可以對網絡、WEB 應用、數據庫、網絡設備、移動終端等進行滲透測試。本論文所設計的系統功能都是模式化式開發,支持多線程操作,可以滿足不同的滲透測試需求,具體實施步驟如下:
步驟0:自動化響應模型訓練,建立對應模型。
步驟0.1:通過眾測或其他方式,持續收集人工滲透測試的過程信息,保存滲透測試過程中的<目標信息,掃描工具>、<漏洞信息,攻擊策略>、<攻擊策略,攻擊工具>。
步驟0.2:在大量人工滲透的訓練數據的基礎上,將這3 個記錄元組作為訓練集,通過關聯規則或特征選擇分析,可分別獲得不同元組對應的支持度和置信度,統一表示為權重,對權重設置閾值,認為大于閾值的元組才是有意義的。那么可以獲得如下相應關系:
目標-掃描工具:
a 目標-b1 掃描工具-權重0.8,
a 目標-b2 掃描工具-權重0.15;
漏洞-策略:
c 漏洞-d 策略-權重0.4;
策略-攻擊工具:
d 策略-e 攻擊工具-權重0.8;
其中,響應關系的權重可看成采取這種響應的優先級。a,b1,b2,c,d,e 依次序分別表示需掃描的目標系統、一種漏洞掃描工具、一種與之前不同的掃描工具、一種攻擊策略以及一種漏洞攻擊工具,符號-表示響應關系,并表示-連接的前后2 項具有關聯性,權重是對他們關聯性的衡量;
步驟0.3:將訓練結果保存數據庫,分別構成目標信息與掃描工具響應模型、漏洞信息與攻擊策略響應模型和攻擊策略與工具響應模型,作為自動化滲透測試的依據。
步驟1:根據需要對目標信息系統進行全方位掃描并獲取主機信息。
步驟1.1:掃描目標信息系統網段內的主機,通過掃描得到目標信息系統主機狀態以及拓撲結構,初步獲取主機的操作系統的版本信息。
步驟1.2:根據提供的漏洞信息,針對滲透測試目標主機并配置參數。
步驟1.3:掃描主機的詳細信息,包括操作系統類型、MAC 地址、ⅠP 地址、網絡端口等具體信息。
步驟1.4:將獲取的目標系統和主機信息經過數據分析、數據提取、整合等處理后儲存到數據庫中。
步驟2:掃描目標信息系統,獲取系統脆弱性信息。
步驟2.1:分析步驟1.4 得到的目標信息,從目標信息與掃描工具響應模型中調用優先級最高的工具掃描目標信息系統漏洞。
步驟2.2:對比公開的CVE(Common Vulnerabilities and Exposures)漏洞庫和人工滲透過程中建立的通用型漏洞信息數據庫,提取漏洞公開的描述、漏洞類型、載體信息、漏洞的觸發條件、漏洞脆弱性等信息。
步驟2.3:將掃描整合的漏洞基本信息進行分類后存儲到漏洞信息表。
步驟3:根據步驟1 和步驟2 獲取的主機和漏洞信息,基于攻擊策略庫建立攻擊模型,根據攻擊模型對目標系統嘗試滲透測試并獲取反饋結果。
步驟3.1:分析目標主機以及漏洞信息,解析可進行攻擊利用的目標信息,包括目標ⅠP 地址、系統端口號等攻擊入口信息及漏洞載體、漏洞類型(SQL、XSS 等)、觸發條件等攻擊利用信息。
步驟3.2:判斷是否有可以進行攻擊利用的漏洞,若有漏洞,轉下一步;若無漏洞,結束。
步驟3.3:查找攻擊策略庫是否有相關漏洞,在大量收集歷史滲透測試數據的基礎上,正常情況下可以認為系統已包含現階段全量漏洞信息和攻擊策略。但是對于訓練集中沒有出現過的漏洞,這種一般可以認為是新型漏洞,只能以人工滲透為主,只有在有穩定漏洞測試過程后加入對應模型。若沒有漏洞記錄相關策略,則有滲透測試人員根據經驗制定個性化的攻擊策略,包括滲透目標、攻擊方法、工具選型、預期結果等內容,形成人工滲透測試;若有相關漏洞,從漏洞信息與攻擊策略響應模型中調用優先級最高的攻擊策略,轉下一步。
步驟3.4:從攻擊策略與攻擊工具響應模型中調用優先級最高的工具,轉下一步。
步驟3.5:按照策略的執行步驟,運行工具執行滲透測試,多次執行攻擊直到攻擊成功返回預期的結果并記錄相關結果。當調用的某攻擊工具沒有攻擊成功時,則會回到步驟3.4,調用優先級低一位的攻擊工具,當攻擊工具嘗試次數達到設定的閾值時,回到步驟3.3。
步驟3.3,調用優先級低一位的攻擊策略并繼續下一步攻擊工具選擇,以此類推,當攻擊策略嘗試次數達到閾值時,會提示由滲透測試人員制定個性化的攻擊策略,包括滲透目標、攻擊方法、工具選型、預期結果等內容,形成人工滲透測試。
步驟4:綜合分析滲透測試過程,梳理測試步驟、使用的工具等內容,生成滲透測試報告。測試報告將詳細記錄目標系統存在的安全漏洞信息并提出脆弱性修復的解決方案。
步驟5:響應模型自適應更新,各模型元組響應策略會自動調整。每次通過該系統進行滲透的新數據則會組成一個測試集,用來驗證形成的對應模型的準確率并加以調整。在有新的自動化或人工滲透數據增加時,根據步驟3.5 的攻擊嘗試次數、結果或成功率,調整對應模型權重或系數,從而改變優先級高的響應關系,使整個系統更加智能化。
自動化響應模型訓練,建立對應模型的算法是基于Apriori 算法的關聯規則挖掘算法。
例如一條漏洞,攻擊策略與攻擊工具的關聯規則:
SQL 注入,枚舉數據庫名—>sqlmap,其中support=2%,confidence=80%
表示的意思是所有的滲透測試記錄中,有2%的滲透測試者提交的過程是:發現SQL 注入漏洞,采用枚舉數據庫名策略,且采用sqlmap 工具進行滲透;并且發現SQL 注入漏洞,采用枚舉數據庫名策略的情況下,有80%的滲透者使用了sqlmap 工具?;陉P聯規則的挖掘過程中,通常會設定最小閾值(支持度、最小置信度等),如果某條關聯規則滿足最小支持度閾值和最小置信度閾值,則認為該規則可以給用戶帶來感興趣的信息。
如果事件A 中包含k 個元素,那么稱這個事件A 為k 項集,并且事件A 滿足最小支持度閾值的事件稱為頻繁k 項集。
Apriori 算法使用頻繁項集的先驗知識,使用一種稱作逐層搜索的迭代方法,即“k-1 項集”用于搜索“k 項集”。
首先,通過掃描所有記錄,找出所有的頻繁1 項集,該集合記做L1,然后利用L1 找頻繁2 項集的集合L2,L2 找L3,如此下去,確定不能再找到任何頻繁k 項集時結束。最后,基于所有的頻繁集中找出強規則,即產生有用的關聯規則。找每個Lk 都需要一次數據庫掃描?;谒惴ǖ暮诵乃枷?,更為具體的描述如下:
1、發現頻繁項集,過程為:
(1)掃描
(2)計數
(3)比較
(4)產生頻繁項集
(5)連接、剪枝,產生候選項集
2、重復步驟(1)~(5)直到不能發現更大的頻繁項集。
3、由頻繁項集產生關聯規則。
本論文所設計的一種自動化的安全滲透測試系統主要有如下優勢:
(1)綜合考慮了滲透測試過程中人工和自動化相結合的測試方式,盡量利用公開的安全性分析工具,設計自動化滲透測試模塊并封裝各類工具,實現了工具的自動調用和執行,提高了滲透測試過程的效率以及準確性。
(2)實現對不同模塊間數據交互,自動化分析整理安全性分析工具的結果輸出,減少了測試人員手動調用工具、人工分析結果數據的時間花費和勞動力消耗,提高了滲透測試的自動化程度。
(3)通過持續收集人工滲透的過程數據,產生響應模型訓練集,更好地把機器學習技術應用于滲透測試過程中。例外,攻擊策略庫、攻擊工具庫和其他自動化響應模型都具備自學習功能,可以自適應地學習和更新響應模型的優先級。
當然,實現該技術方案的方法和途徑有很多,以上所述僅是本論文的優選實施方式。后續將對該系統進行更多的功能設計優化,比如融合機器學習技術使該系統更加自動化、智慧化。