賀彥鈞,朱 磊,黃 煒
(中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
隨著互聯(lián)網(wǎng)的迅速發(fā)展和智能化應(yīng)用的普及,對(duì)數(shù)據(jù)的隱私保護(hù)和安全性的要求越來(lái)越高。在網(wǎng)絡(luò)安全領(lǐng)域,指紋識(shí)別技術(shù)被廣泛用來(lái)識(shí)別和驗(yàn)證用戶的身份,以保護(hù)敏感信息和資源的安全。傳統(tǒng)的指紋識(shí)別技術(shù)主要集中在人體指紋的識(shí)別上,但隨著技術(shù)的進(jìn)步和應(yīng)用場(chǎng)景的改變,深度指紋識(shí)別技術(shù)逐漸引起了研究者和工程師的關(guān)注。深度指紋識(shí)別技術(shù)是一種基于機(jī)器學(xué)習(xí)的指紋識(shí)別方法,通過(guò)訓(xùn)練模型和學(xué)習(xí)特征來(lái)實(shí)現(xiàn)更準(zhǔn)確和可靠的指紋識(shí)別。與傳統(tǒng)的指紋識(shí)別技術(shù)相比,深度指紋識(shí)別技術(shù)具有更高的靈活性和擴(kuò)展性。它能夠識(shí)別各種類型的指紋,包括人體指紋、網(wǎng)絡(luò)活動(dòng)指紋、行為指紋等,以滿足不同領(lǐng)域的應(yīng)用需求。深度指紋識(shí)別技術(shù)是通過(guò)深度學(xué)習(xí)模型來(lái)提取和學(xué)習(xí)指紋數(shù)據(jù)的特征,從而實(shí)現(xiàn)指紋的分類和識(shí)別,并通過(guò)分析指紋的局部特征和上下文信息,達(dá)到更高的識(shí)別準(zhǔn)確率和魯棒性。
因此,本文面向信息安全測(cè)試領(lǐng)域,在應(yīng)用系統(tǒng)進(jìn)行漏洞檢測(cè)時(shí),針對(duì)如何快速獲取應(yīng)用系統(tǒng)指紋信息,如何根據(jù)應(yīng)用系統(tǒng)指紋信息進(jìn)行自適應(yīng)漏洞檢測(cè)等問(wèn)題,提出了“基于機(jī)器學(xué)習(xí)的深度指紋識(shí)別技術(shù)及應(yīng)用”思路,幫助測(cè)試人員快速準(zhǔn)確找到應(yīng)用系統(tǒng)漏洞,及時(shí)通知系統(tǒng)開(kāi)發(fā)人員進(jìn)行整改修復(fù),做好網(wǎng)絡(luò)安全防護(hù)工作,進(jìn)一步保障系統(tǒng)安全穩(wěn)定運(yùn)行。
目前針對(duì)Web 服務(wù)器指紋識(shí)別的主流研究主要通過(guò)分析大量HTML 數(shù)據(jù),包括HTML 源碼關(guān)鍵字和特殊文件及路徑,來(lái)識(shí)別Web 組件[1-2],探測(cè)以下幾個(gè)請(qǐng)求和返回信息進(jìn)行Web 應(yīng)用指紋判斷:網(wǎng)站響應(yīng)頭部信息(Response header)、HTML頁(yè)面內(nèi)META 標(biāo)簽信息、HTML 內(nèi)腳本語(yǔ)言信息(JavaScript,JS)、層疊樣式表(Cascading Style Sheets,CSS)等引用鏈接信息、特殊統(tǒng)一資源定位(Uniform Resource Locator,URL)地址及參數(shù)、特定文件名、文件內(nèi)容及文件的數(shù)字摘要(Hash 值)。
主流的Web 指紋識(shí)別技術(shù)是基于特征匹配實(shí)現(xiàn)的,包括特殊靜態(tài)文件Hash 值和關(guān)鍵字段兩類特征。特殊靜態(tài)文件可以是js、css 文件,也可以是圖片、默認(rèn)圖標(biāo)favicon.ico 等。關(guān)鍵字段特征包括HTTP 響應(yīng)頭里的關(guān)鍵字段特征信息、正?;蝈e(cuò)誤頁(yè)面里的關(guān)鍵字段特征、文件資源路徑里的關(guān)鍵字段特征。
本文通過(guò)基于機(jī)器學(xué)習(xí)的應(yīng)用系統(tǒng)深度指紋識(shí)別技術(shù)及應(yīng)用的研究,實(shí)現(xiàn)了一種使用基于機(jī)器學(xué)習(xí)的自動(dòng)化安全測(cè)試工具。該系統(tǒng)首先通過(guò)基于機(jī)器學(xué)習(xí)的數(shù)據(jù)對(duì)安裝在Web 服務(wù)器上的軟件(操作系統(tǒng)、中間件、框架、CMS 等)進(jìn)行標(biāo)識(shí)和深度識(shí)別;其次利用識(shí)別后的精確數(shù)據(jù),使用安全檢查工具(The Metasploit Framework,MSF)對(duì)標(biāo)識(shí)的軟件執(zhí)行有效的數(shù)據(jù)分析和安全測(cè)試;最后生成掃描結(jié)果報(bào)告。該系統(tǒng)自動(dòng)執(zhí)行上述處理,如圖1 所示。
圖1 系統(tǒng)處理步驟
用戶的操作只輸入目標(biāo)Web 服務(wù)器的頂部URL(TOP UR),系統(tǒng)就自動(dòng)爬取收集目標(biāo)服務(wù)器的數(shù)據(jù)信息,獲取域名信息,探測(cè)Web 應(yīng)用程序的目錄結(jié)構(gòu),識(shí)別Web 應(yīng)用程序的技術(shù)棧,發(fā)現(xiàn)敏感信息等。通過(guò)系統(tǒng)智能化分析,用戶可以在不花費(fèi)時(shí)間和精力的情況下自動(dòng)識(shí)別Web 服務(wù)器的構(gòu)建特征信息、組件信息和脆弱性信息等。
HTTP 信息收集爬蟲(chóng)技術(shù)是一種利用HTTP 協(xié)議進(jìn)行信息收集和抓取的技術(shù)方法。它通過(guò)模擬HTTP 請(qǐng)求,訪問(wèn)目標(biāo)網(wǎng)站的不同頁(yè)面,獲取網(wǎng)頁(yè)內(nèi)容并提取有用的信息。
本文利用爬蟲(chóng)技術(shù)收集目標(biāo)網(wǎng)站的HTTP 響應(yīng)報(bào)文包,在用戶輸入TOP URL 后,自動(dòng)擴(kuò)展目標(biāo)網(wǎng)站資源、路徑鏈接,進(jìn)行原始響應(yīng)數(shù)據(jù)的爬取。信息收集爬蟲(chóng)技術(shù)基本原理為:網(wǎng)絡(luò)爬蟲(chóng)通過(guò)HTTP 鏈接輸入并向目標(biāo)站點(diǎn)發(fā)起請(qǐng)求,即發(fā)送一個(gè)Request 請(qǐng)求,請(qǐng)求數(shù)據(jù)可以包含Headers(附加信息)、Cookies 等信息,等待后臺(tái)的響應(yīng)。后臺(tái)正常接收并響應(yīng)返回一個(gè)Response 響應(yīng)數(shù)據(jù),響應(yīng)報(bào)文中的響應(yīng)體包含網(wǎng)頁(yè)信息,可能有HTML、文檔、圖片、視頻等資源文件或者JSON 數(shù)據(jù)等[3]。HTML解析可以使用網(wǎng)頁(yè)解析庫(kù)和正則表達(dá)式進(jìn)行處理。如果是JSON 的話,可以直接轉(zhuǎn)成JOSN 對(duì)象進(jìn)行解析。如果是其他資源文件,就先保存等待爬取完成后處理。爬蟲(chóng)可以用不同種形式來(lái)存儲(chǔ)網(wǎng)頁(yè)信息、生成文本文檔,或者直接保存到數(shù)據(jù)庫(kù)。
本文通過(guò)Scrapy 框架來(lái)實(shí)現(xiàn)信息收集爬蟲(chóng)技術(shù)。Scrapy 是一個(gè)為了爬取網(wǎng)站內(nèi)容、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的開(kāi)源爬蟲(chóng)應(yīng)用框架。可以運(yùn)用在數(shù)據(jù)挖掘、信息處理或者存儲(chǔ)歷史數(shù)據(jù)等一系列程序中。使用Scrapy 框架可以方便地自定義爬蟲(chóng)的爬取規(guī)則,此外,還有很多穩(wěn)定的開(kāi)源庫(kù)幫助本文進(jìn)行前置后續(xù)處理。
HTTP 信息收集爬蟲(chóng)技術(shù)的實(shí)現(xiàn)步驟如下:
(1)確定目標(biāo)網(wǎng)站:首先需要確定要爬取的目標(biāo)網(wǎng)站,包括網(wǎng)站的URL 和要抓取的頁(yè)面。
(2)構(gòu)建爬蟲(chóng)程序:根據(jù)所選的編程語(yǔ)言和爬蟲(chóng)框架,編寫爬蟲(chóng)程序。爬蟲(chóng)程序需要實(shí)現(xiàn)URL管理、HTTP 請(qǐng)求、頁(yè)面分析以及數(shù)據(jù)存儲(chǔ)等功能。
(3)發(fā)送HTTP 請(qǐng)求:爬蟲(chóng)根據(jù)URL 隊(duì)列中的待訪問(wèn)URL,構(gòu)造HTTP 請(qǐng)求,并發(fā)送給目標(biāo)服務(wù)器。HTTP 請(qǐng)求中包含請(qǐng)求方法(GET、POST 等)、請(qǐng)求頭(headers)、請(qǐng)求體(body)等信息。
(4)處理服務(wù)器響應(yīng):爬蟲(chóng)接收到目標(biāo)服務(wù)器返回的HTTP 響應(yīng),并根據(jù)響應(yīng)的狀態(tài)碼和內(nèi)容進(jìn)行處理。常見(jiàn)的響應(yīng)狀態(tài)碼有200 表示成功,404 表示頁(yè)面不存在等。
(5)頁(yè)面分析和信息提?。号老x(chóng)對(duì)服務(wù)器返回的HTML 頁(yè)面進(jìn)行解析和分析,根據(jù)頁(yè)面分析技術(shù)提取出所需的信息,如文字、鏈接、圖片等。
(6)數(shù)據(jù)存儲(chǔ):將提取的信息進(jìn)行存儲(chǔ),可以選擇合適的存儲(chǔ)方式,如文本文件、數(shù)據(jù)庫(kù)等。
(7)循環(huán)迭代:根據(jù)需要,爬蟲(chóng)可以設(shè)置循環(huán)迭代的邏輯,不斷發(fā)送HTTP 請(qǐng)求,抓取多個(gè)頁(yè)面的信息,還可以通過(guò)設(shè)置抓取深度、時(shí)間間隔等方式進(jìn)行控制。
面向特定目標(biāo)的指紋識(shí)別技術(shù)主要利用基于字符串匹配的識(shí)別技術(shù)和基于機(jī)器學(xué)習(xí)的識(shí)別技術(shù),對(duì)前面的爬蟲(chóng)收集的HTTP 響應(yīng)數(shù)據(jù)集進(jìn)行處理分析,從而識(shí)別目標(biāo)的深度指紋信息。
2.2.1 基于字符串匹配識(shí)別
(1)原理
基于字符串匹配目標(biāo)指紋識(shí)別技術(shù)是一種通過(guò)字符串匹配來(lái)識(shí)別目標(biāo)的技術(shù)。它在文本、代碼、日志等數(shù)據(jù)中查找指定的字符串,從而實(shí)現(xiàn)目標(biāo)的定位和識(shí)別。
基于字符串匹配的目標(biāo)指紋識(shí)別技術(shù)的原理主要包括以下幾個(gè)方面。
①字符串匹配算法:字符串匹配算法是基于目標(biāo)字符串和待搜索字符串之間的比較,從而確定是否存在匹配的子串。常見(jiàn)的字符串匹配算法包括暴力匹配法、KMP(Knuth-Morris-Pratt)算法、BM(Boyer-Moore)算法等。本文通過(guò)KMP 算法實(shí)現(xiàn)字符串匹配和目標(biāo)識(shí)別。
②目標(biāo)定義和關(guān)鍵詞提?。涸谑褂米址ヅ淠繕?biāo)識(shí)別技術(shù)之前,需要明確目標(biāo)的定義和關(guān)鍵詞的提取。目標(biāo)可以是一個(gè)特定的字符串,也可以是一組字符串的組合。關(guān)鍵詞提取是通過(guò)文本分析和數(shù)據(jù)挖掘技術(shù),從大量的文本數(shù)據(jù)中提取出與目標(biāo)相關(guān)的關(guān)鍵詞,用于目標(biāo)識(shí)別和匹配。
③輸入數(shù)據(jù)預(yù)處理:在進(jìn)行字符串匹配目標(biāo)識(shí)別之前,通常需要對(duì)輸入數(shù)據(jù)進(jìn)行預(yù)處理。這包括去除無(wú)關(guān)字符、轉(zhuǎn)換大小寫、分割文本等操作。預(yù)處理可以提高匹配效率和準(zhǔn)確性,減少干擾和誤判。
④匹配模式設(shè)計(jì):匹配模式設(shè)計(jì)是指設(shè)計(jì)和實(shí)現(xiàn)匹配規(guī)則和模式,對(duì)目標(biāo)字符串進(jìn)行匹配。匹配模式可以是簡(jiǎn)單的字符串匹配,也可以是模式匹配、正則表達(dá)式匹配等更復(fù)雜的匹配方法。根據(jù)目標(biāo)的特征和匹配的需求,選擇合適的匹配模式進(jìn)行目標(biāo)識(shí)別。
⑤目標(biāo)識(shí)別和處理:基于字符串匹配的目標(biāo)識(shí)別技術(shù)可以通過(guò)掃描輸入數(shù)據(jù),并根據(jù)預(yù)先定義好的匹配模式和關(guān)鍵詞,檢測(cè)出目標(biāo)的位置和存在。一旦識(shí)別出目標(biāo),就可以進(jìn)行后續(xù)的處理,如記錄日志、生成報(bào)告、觸發(fā)事件等。
(2)實(shí)驗(yàn)驗(yàn)證
爬蟲(chóng)所爬取的數(shù)據(jù)如圖2 所示。通過(guò)字符串匹配可識(shí)別出為Drupal 的CMS 系統(tǒng),如圖3 所示。
圖2 爬蟲(chóng)數(shù)據(jù)
圖3 字符串匹配識(shí)別
2.2.2 基于機(jī)器學(xué)習(xí)的指紋識(shí)別
(1)樸素貝葉斯算法原理
貝葉斯算法主要用于對(duì)目標(biāo)進(jìn)行分類,其算法思想主要基于貝葉斯原理,關(guān)鍵在于計(jì)算各類值之間的數(shù)據(jù)聯(lián)合分布[4]。
由于樸素貝葉斯是假定貝葉斯模型中的所有屬性都是相對(duì)獨(dú)立的,因此在屬性具有特定值的條件下,可以通過(guò)將所有屬性乘以具有特定類標(biāo)簽的概率來(lái)獲得類的概率值,是一種有監(jiān)督學(xué)習(xí)算法[5]。計(jì)算流程如下文所述。
步驟1:計(jì)算特征值y被分類為xi類別的后驗(yàn)概率p(xi|y):
式中:p(xi)和p(y)為xi和y特征值的先驗(yàn)概率。最大化p(y|xi)可以實(shí)現(xiàn)分類的目的。
步驟2:已知HTTP 指紋特征y包含n維特征向量,則y可表示為y=(y1,y2,…,yn),結(jié)合公式(1)可知:
步驟3:將公式(2)中的p(xi)和p(y1,y2,…,yn)看作常量,則可簡(jiǎn)化為:
式中:xf為指紋樣本y的分類結(jié)果。
(2)特征選取
指紋特征輸入到貝葉斯模型前,需要將響應(yīng)內(nèi)容從不同的特征維度進(jìn)行表示,以便貝葉斯模型能夠?qū)W習(xí)到響應(yīng)內(nèi)容的特征[6-7]。本文主要從響應(yīng)內(nèi)容的4 個(gè)特征維度進(jìn)行考量,具體特征維度如表1 所示。
表1 選取的特征維度
(3)歸一化
HTTP 請(qǐng)求特征和URL 特征在數(shù)據(jù)分布區(qū)間上存在差異,容易導(dǎo)致模型訓(xùn)練不收斂,因此采用公式(4)對(duì)特征向量進(jìn)行歸一化:
式中:y為歸一化后的特征元素;x為待歸一化的特征元素;xmax和xmin分別為特征元素的最大值和最小值。
(4)算法流程
步驟1:通過(guò)URL 地址發(fā)送請(qǐng)求,并獲取返回的響應(yīng)信息。
步驟2:對(duì)響應(yīng)信息的3 個(gè)特征維度進(jìn)行特征編碼,并且對(duì)數(shù)據(jù)進(jìn)行歸一化處理。
步驟3:將歸一化后的數(shù)據(jù)向量作為貝葉斯模型的輸入,輸出結(jié)果即為預(yù)測(cè)結(jié)果。
預(yù)測(cè)流程如圖4 所示。
圖4 預(yù)測(cè)流程
(5)實(shí)驗(yàn)驗(yàn)證
由 于Apache、Joomla !、Typeo、Drupal 等 每個(gè)軟件的特性都略有不同,將它們組合起來(lái)進(jìn)行識(shí)別。樸素貝葉斯利用訓(xùn)練數(shù)據(jù)學(xué)習(xí)。與簽名庫(kù)不同的是,當(dāng)無(wú)法在一個(gè)特性中識(shí)別軟件時(shí),樸素貝葉斯是基于HTTP 響應(yīng)中包含的各種特性隨機(jī)識(shí)別的,如圖5 可以識(shí)別為CMS Joomla 系統(tǒng)。這是因?yàn)闄C(jī)器學(xué)習(xí)識(shí)別模塊學(xué)會(huì)了Joomla 的特征,例如“Cookie名稱(f00e6….9831e)”和“Cookie值(0eba9….7f587)”。在本文的數(shù)據(jù)分析中,Joomla 在許多情況下使用32個(gè)小寫字母作為Cookie 名稱和Cookie 值。訓(xùn)練數(shù)據(jù)如圖6 所示。
圖5 響應(yīng)set-cookie 值
圖6 訓(xùn)練數(shù)據(jù)
基于機(jī)器學(xué)習(xí)指紋識(shí)別實(shí)驗(yàn)獲取的目標(biāo)數(shù)據(jù)如圖7 所示,包括產(chǎn)品名稱、產(chǎn)品版本、組件名、操作系統(tǒng)版本。
圖7 基于機(jī)器學(xué)習(xí)的指紋識(shí)別數(shù)據(jù)結(jié)果
Metasploit是一個(gè)被廣泛使用的安全測(cè)試工具,它可以幫助安全專業(yè)人員發(fā)現(xiàn)和利用計(jì)算機(jī)系統(tǒng)中的安全漏洞。它擁有強(qiáng)大的功能和廣泛的支持,可以幫助用戶從安全測(cè)試者的角度來(lái)檢測(cè)和修復(fù)系統(tǒng)漏洞?;跈C(jī)器學(xué)習(xí)的指紋識(shí)別軟件在安全測(cè)試中的作用是識(shí)別目標(biāo)系統(tǒng)的運(yùn)行環(huán)境。通過(guò)分析系統(tǒng)的響應(yīng)和標(biāo)識(shí)信息,目標(biāo)指紋識(shí)別軟件可以確定目標(biāo)系統(tǒng)使用的操作系統(tǒng)、服務(wù)和軟件版本等重要信息。這些信息對(duì)于成功利用系統(tǒng)漏洞至關(guān)重要,因?yàn)椴煌牟僮飨到y(tǒng)和服務(wù)可能存在不同的漏洞。
本文通過(guò)基于機(jī)器學(xué)習(xí)指紋識(shí)別軟件與Metasploit 工具配合執(zhí)行,檢查被測(cè)目標(biāo)是否受到漏洞的影響,來(lái)自動(dòng)化實(shí)現(xiàn)目標(biāo)安全缺陷利用,如圖8 所示。
圖8 應(yīng)用思路
整體應(yīng)用思路過(guò)程如下文所述。
(1)數(shù)據(jù)收集:機(jī)器學(xué)習(xí)指紋識(shí)別軟件通過(guò)掃描目標(biāo)系統(tǒng)收集關(guān)鍵特征數(shù)據(jù),如操作系統(tǒng)版本、軟件配置等。
(2)特征提取和訓(xùn)練:收集到的特征數(shù)據(jù)被提供給機(jī)器學(xué)習(xí)算法進(jìn)行訓(xùn)練。這個(gè)訓(xùn)練過(guò)程會(huì)建立一個(gè)指紋庫(kù),其中包含已知的漏洞特征和與之相應(yīng)的利用。
(3)特征匹配:在執(zhí)行利用之前,使用指紋識(shí)別軟件對(duì)目標(biāo)系統(tǒng)進(jìn)行掃描,并提取目標(biāo)系統(tǒng)的特征;然后,與指紋庫(kù)中已知的漏洞特征進(jìn)行匹配,如果匹配成功,就意味著目標(biāo)系統(tǒng)可能存在與已知漏洞對(duì)應(yīng)的安全缺陷。
(4)目標(biāo)缺陷利用:機(jī)器學(xué)習(xí)指紋識(shí)別軟件通過(guò)Metasploit 框架的遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call,RPC)服務(wù)與Metasploit 工具進(jìn)行通信連接,實(shí)現(xiàn)安全測(cè)試流程自動(dòng)化。一旦匹配到目標(biāo)系統(tǒng)的漏洞,Metasploit 框架可以根據(jù)匹配結(jié)果自動(dòng)選擇相應(yīng)的漏洞利用模塊進(jìn)行測(cè)試。這樣,目標(biāo)缺陷利用的過(guò)程可以自動(dòng)化和精確地執(zhí)行。
將Metasploit 和基于機(jī)器學(xué)習(xí)的指紋識(shí)別軟件結(jié)合使用,可以提高安全測(cè)試的效率和成功率。首先,Metasploit 通過(guò)使用模塊來(lái)實(shí)現(xiàn)對(duì)目標(biāo)系統(tǒng)的漏洞利用。Metasploit 擁有大量的模塊,包括掃描器、漏洞利用器、Payload 生成器等。用戶可以根據(jù)目標(biāo)系統(tǒng)的特點(diǎn)選擇相應(yīng)的模塊進(jìn)行測(cè)試和利用。其次,Metasploit 可以根據(jù)目標(biāo)指紋識(shí)別軟件提供的信息選擇適當(dāng)?shù)哪K進(jìn)行漏洞測(cè)試和利用。例如,如果目標(biāo)系統(tǒng)被識(shí)別為運(yùn)行著一個(gè)特定版本的Web服務(wù)器軟件,Metasploit 可以選擇相應(yīng)的漏洞利用模塊來(lái)檢測(cè)和利用該軟件版本的安全漏洞。同樣重要的是,Metasploit 還可以使用Payload 生成器來(lái)生成定制的載荷。用戶可以根據(jù)目標(biāo)系統(tǒng)的特點(diǎn)選擇合適的Payload 生成器來(lái)生成特定的載荷,以實(shí)現(xiàn)對(duì)目標(biāo)系統(tǒng)的完全控制。
目標(biāo)安全缺陷利用驗(yàn)證效果見(jiàn)圖9。
圖9 目標(biāo)安全缺陷驗(yàn)證效果
綜上所述,這種結(jié)合使用的目標(biāo)安全缺陷利用方法可以幫助安全測(cè)試人員更準(zhǔn)確、高效地對(duì)目標(biāo)系統(tǒng)進(jìn)行評(píng)估和測(cè)試。
基于機(jī)器學(xué)習(xí)的應(yīng)用系統(tǒng)深度指紋識(shí)別技術(shù)是面向信息安全測(cè)試領(lǐng)域的智能安全測(cè)試技術(shù)。本文在深入研究信息收集爬蟲(chóng)技術(shù)和基于機(jī)器識(shí)別的指紋識(shí)別技術(shù)的基礎(chǔ)上,實(shí)現(xiàn)了相關(guān)功能模塊,結(jié)合基于Metasploit 的目標(biāo)安全缺陷利用實(shí)現(xiàn),進(jìn)行實(shí)網(wǎng)目標(biāo)測(cè)試實(shí)驗(yàn),提高了互聯(lián)網(wǎng)目標(biāo)安全測(cè)試的效率和成功率,且實(shí)驗(yàn)驗(yàn)證結(jié)果符合預(yù)期。