關(guān)鍵詞:機(jī)器學(xué)習(xí);數(shù)據(jù)采集;Web安全;惡意網(wǎng)站;監(jiān)督式學(xué)習(xí)
0 引言
進(jìn)入Web2.0時(shí)代以來,每天都有海量信息資源發(fā)布在各種網(wǎng)站上。人們?cè)谙硎芑ヂ?lián)網(wǎng)發(fā)展帶來便利的同時(shí),遭受網(wǎng)絡(luò)攻擊的情況也日益增加。各種掛馬網(wǎng)站、色情網(wǎng)站、暴力網(wǎng)站、詐騙網(wǎng)站等利用不正當(dāng)手段,通過偽裝成正常網(wǎng)站,仿冒正常網(wǎng)站的URL地址或頁面內(nèi)容,欺騙用戶以竊取個(gè)人信息(如信用卡、銀行卡賬戶、密碼等)和財(cái)產(chǎn)。在此過程中,面臨的安全形勢(shì)和即將應(yīng)對(duì)的安全壓力日顯迫切。根據(jù)相關(guān)報(bào)告顯示,惡意網(wǎng)站已成為當(dāng)今網(wǎng)絡(luò)安全所面臨的主要威脅之一。
針對(duì)惡意網(wǎng)站鑒別問題,研究人員提出了多種識(shí)別技術(shù)和方案。Justin Ma 等學(xué)者利用DNS 信息、WHOIS信息和URL語法特征結(jié)合機(jī)器學(xué)習(xí)算法來辨識(shí)惡意URL[1]。Davide Canali及其團(tuán)隊(duì)在此基礎(chǔ)上加入了JavaScript和HTML特征,從而拓展至網(wǎng)頁內(nèi)容檢測(cè),提高了惡意網(wǎng)頁識(shí)別的準(zhǔn)確度[2]。2012年,張慧琳等學(xué)者以網(wǎng)站木馬的原理為基礎(chǔ),探討了掛馬檢測(cè)、特征分析和防范技術(shù)等方面,但缺少對(duì)各種檢測(cè)方法的橫向比較和深入探討[3]。這些研究成果為惡意網(wǎng)站識(shí)別領(lǐng)域的發(fā)展提供了重要參考和啟示。本文將根據(jù)現(xiàn)有技術(shù)和環(huán)境,以及本次設(shè)計(jì)的需求,結(jié)合所需的應(yīng)用場(chǎng)景,實(shí)現(xiàn)基于機(jī)器學(xué)習(xí)的惡意網(wǎng)站分類研究。
1 機(jī)器學(xué)習(xí)基礎(chǔ)
1.1 機(jī)器學(xué)習(xí)概述
機(jī)器學(xué)習(xí)是一門多領(lǐng)域交叉學(xué)科,旨在從數(shù)據(jù)中學(xué)習(xí)算法。它試圖從海量歷史數(shù)據(jù)中提取隱含的模式,并將其應(yīng)用于回歸(預(yù)測(cè))或分類。概括而言,機(jī)器學(xué)習(xí)的目標(biāo)是從機(jī)器中獲取直接編程所不能實(shí)現(xiàn)的特性。在現(xiàn)有數(shù)據(jù)或過去經(jīng)驗(yàn)的基礎(chǔ)上,進(jìn)行機(jī)器學(xué)習(xí)算法的選擇、構(gòu)造模型、對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè),并將知識(shí)結(jié)構(gòu)重新組合以持續(xù)改進(jìn)性能。機(jī)器學(xué)習(xí)的一般過程如圖1所示。
機(jī)器學(xué)習(xí)建模過程中的相關(guān)術(shù)語解釋如表1所示。
1.2 機(jī)器學(xué)習(xí)算法
目前機(jī)器學(xué)習(xí)主要分為兩大類:有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)。兩者的區(qū)別在于訓(xùn)練數(shù)據(jù)中是否包含目標(biāo)變量。在監(jiān)督學(xué)習(xí)中,提供了帶有正確結(jié)果標(biāo)記的數(shù)據(jù),即事先知道數(shù)據(jù)的正確輸出值。而在無監(jiān)督學(xué)習(xí)中,數(shù)據(jù)并沒有標(biāo)記。
1.2.1 有監(jiān)督學(xué)習(xí)
有監(jiān)督學(xué)習(xí)通過不斷迭代模型訓(xùn)練進(jìn)行。首先,利用正文內(nèi)容中的系列變量創(chuàng)建一個(gè)函數(shù),將輸入值映射為所需的輸出值。然后,通過迭代調(diào)整參數(shù)來提高預(yù)測(cè)能力。最后,通過增加新的參數(shù)值更新模型,直到模型從訓(xùn)練數(shù)據(jù)中達(dá)到預(yù)設(shè)的準(zhǔn)確性時(shí)停止訓(xùn)練。典型的監(jiān)督學(xué)習(xí)算法包括:邏輯回歸(Regres?sion) 、決策樹(Decision Tree) 、隨機(jī)森林(Random For?est) 和K最近鄰(KNN) 等。
1.2.2 無監(jiān)督學(xué)習(xí)
無監(jiān)督學(xué)習(xí)通常用于前期數(shù)據(jù)處理環(huán)節(jié),主要功能是對(duì)原始數(shù)據(jù)集進(jìn)行篩選并整理出標(biāo)簽集。訓(xùn)練集數(shù)據(jù)僅有特征x而無標(biāo)簽y,其目的在于嘗試抽取數(shù)據(jù)所蘊(yùn)含的結(jié)構(gòu)與模式。常見的無監(jiān)督學(xué)習(xí)算法有K-means、降維和文本處理(特征提?。┑取?/p>
2 惡意網(wǎng)站分類方法構(gòu)建
2.1 惡意網(wǎng)站定義
目前對(duì)惡意網(wǎng)站尚無明確的學(xué)術(shù)定義。Google 將其描述為一種不安全的網(wǎng)站,可能存在行為誘導(dǎo)用戶下載惡意軟件或通過網(wǎng)頁彈窗誘騙用戶輸入個(gè)人信息等[4]。百度百科則將惡意網(wǎng)站定義為故意執(zhí)行惡意任務(wù)的病毒、蠕蟲和木馬的網(wǎng)站,其特征是采用網(wǎng)站形式正常展示內(nèi)容,同時(shí)非法獲取用戶數(shù)據(jù),甚至入侵用戶電腦系統(tǒng)[5-8]。這些定義有兩個(gè)要點(diǎn):“在網(wǎng)頁上進(jìn)行惡意攻擊”和“非法盜用用戶信息資料”。
2.2 惡意網(wǎng)頁識(shí)別
惡意網(wǎng)站識(shí)別是當(dāng)今互聯(lián)網(wǎng)安全領(lǐng)域中的一個(gè)重要問題,其本質(zhì)屬于一個(gè)二分類問題。雖然惡意網(wǎng)站的形態(tài)多樣,包括釣魚網(wǎng)站、惡意下載網(wǎng)站、欺詐網(wǎng)站等,其特征不易捕捉,但良性網(wǎng)站和惡意網(wǎng)站在內(nèi)容和行為上存在顯著差異。惡意網(wǎng)頁識(shí)別通常包括以下三個(gè)關(guān)鍵步驟:網(wǎng)頁采集、特征抽取、網(wǎng)頁判別。
系統(tǒng)從互聯(lián)網(wǎng)上收集大量的網(wǎng)頁樣本,包括可能存在惡意內(nèi)容的網(wǎng)頁和正常的良性網(wǎng)頁,作為后續(xù)特征抽取和模型訓(xùn)練的數(shù)據(jù)來源。然后從采集到的網(wǎng)頁樣本中提取出一系列有助于區(qū)分惡意網(wǎng)頁和良性網(wǎng)頁的特征。這些特征可以包括網(wǎng)頁的結(jié)構(gòu)特征、內(nèi)容特征、域名特征、鏈接特征等。最后利用特征抽取得到的特征,結(jié)合訓(xùn)練好的分類模型,對(duì)新的待分類網(wǎng)頁進(jìn)行判斷,根據(jù)模型的輸出結(jié)果,將網(wǎng)頁劃分為惡意網(wǎng)頁或良性網(wǎng)頁。
惡意網(wǎng)站識(shí)別基本框架如圖2所示。
2.3 機(jī)器學(xué)習(xí)分類算法
2.3.1 邏輯回歸
邏輯回歸(Logistic Regression) 是一種計(jì)算過程類似于線性回歸的算法。線性回歸通常用于解決數(shù)據(jù)預(yù)測(cè)問題,而邏輯回歸則用于處理分類問題。邏輯回歸通過使用邏輯函數(shù)(也稱為Sigmoid函數(shù))將連續(xù)的預(yù)測(cè)值映射到0~1的概率值,從而實(shí)現(xiàn)分類任務(wù)。在訓(xùn)練過程中,邏輯回歸模型通過最大化似然函數(shù)來擬合數(shù)據(jù),并利用梯度下降等優(yōu)化算法來更新模型參數(shù)。
2.3.2 支持向量機(jī)
支持向量機(jī)(Support Vector Machine) 是目前廣泛使用的監(jiān)督學(xué)習(xí)算法,主要用于分類問題和回歸分析。其核心思想在于通過在特征空間中找到一個(gè)最佳的邊界,這個(gè)邊界被稱為“超平面”,使得不同類別的樣本可以被有效地分離開來。
在訓(xùn)練過程中,SVM通過最大化支持向量到超平面的距離,同時(shí)將分類錯(cuò)誤的樣本點(diǎn)的分類間隔控制在一個(gè)合適的范圍內(nèi),以避免過擬合。當(dāng)二元分類問題的正負(fù)樣本無法通過直線分割時(shí),支持向量機(jī)可以利用靈活多樣的核方法將數(shù)據(jù)映射至高維空間,利用高維空間的超平面進(jìn)行數(shù)據(jù)分離,從而實(shí)現(xiàn)在原始空間中無法線性分割的樣本分類。
2.3.3 決策樹
決策樹(Decision Trees) 是一種基于樹形結(jié)構(gòu)的決策分類方法。它以直觀的方式呈現(xiàn)分類過程和結(jié)果,具有高效、易解釋和可視化等優(yōu)點(diǎn)。
決策樹算法的生成過程包括特征選擇、節(jié)點(diǎn)劃分、遞歸構(gòu)建和剪枝處理等步驟。特征選擇階段通過計(jì)算信息增益、基尼指數(shù)或信息熵等指標(biāo),選擇最佳特征進(jìn)行節(jié)點(diǎn)劃分。然后,根據(jù)選定的特征對(duì)數(shù)據(jù)集進(jìn)行劃分,生成子節(jié)點(diǎn),并遞歸地構(gòu)建決策樹,直到滿足停止條件。
2.3.4 隨機(jī)森林
隨機(jī)森林(Random Forest) 是一種隨機(jī)生成的算法。這種算法由多個(gè)決策樹組成,每棵決策樹都是獨(dú)立構(gòu)建的,彼此之間沒有相關(guān)性。一旦建立了隨機(jī)森林模型,當(dāng)新的輸入樣本到來時(shí),可以分別對(duì)每棵決策樹進(jìn)行獨(dú)立的判斷,然后綜合它們的結(jié)果來做出最終的分類決策,確定該樣本屬于哪一類別(在分類問題中)。隨后,統(tǒng)計(jì)出現(xiàn)次數(shù)最多的類別,從而預(yù)測(cè)該樣本所屬的類別。
2.3.5 K 最近鄰分類算法
K 最近鄰分類算法(k-Nearest Neighbors) 是一種基于實(shí)例的分類方法,屬于惰性學(xué)習(xí)(lazy learning) 。該算法通過在特征空間中找到與待分類樣本相似度最高的K個(gè)樣本,如果這K個(gè)樣本中的大多數(shù)屬于同一類別,則將待分類樣本劃分到這一類別。K最近鄰方法僅根據(jù)一個(gè)或多個(gè)最接近的鄰居來確定樣本的分類。K最近鄰算法沒有明確的訓(xùn)練過程,而K值的選擇會(huì)顯著影響算法的結(jié)果。
3 惡意網(wǎng)站分類實(shí)證研究
3.1 數(shù)據(jù)采集與處理
本文所使用的兩個(gè)數(shù)據(jù)集均來自Kaggle競(jìng)賽平臺(tái)。數(shù)據(jù)集1共包含1 781條數(shù)據(jù)記錄,其中包括21 個(gè)特征(包括輸入和輸出)。在這些記錄中,良性網(wǎng)站數(shù)據(jù)有1 565條,惡意網(wǎng)站數(shù)據(jù)有216條。數(shù)據(jù)集2共包含50 000條記錄,包括63個(gè)特征。其中良性網(wǎng)站數(shù)據(jù)有35 056條,惡意網(wǎng)站數(shù)據(jù)有14 944條。數(shù)據(jù)集特征如表2和表3所示。
3.2 數(shù)據(jù)預(yù)處理
在數(shù)據(jù)預(yù)處理過程中,需要根據(jù)研究?jī)?nèi)容篩選出符合要求的數(shù)據(jù)集,并對(duì)數(shù)據(jù)進(jìn)行預(yù)處理和必要的數(shù)據(jù)清洗,以滿足研究需求。具體步驟如下:
1) 刪除無關(guān)列:首先,移除數(shù)據(jù)集中的URL列,因?yàn)樗鼉H作為唯一標(biāo)識(shí)符,對(duì)于惡意網(wǎng)站的分類并不具備重要意義。
2) 處理空值:在數(shù)據(jù)集中,許多條目的CONTENT_LENGTH、SERVER 和DNS_QUERY_TIMES 存在缺失值。針對(duì)這種情況,需要填充CONTENT_LENGTH列的缺失值,并刪除包含其他兩個(gè)空值的條目。
3) 特征處理與數(shù)據(jù)分離:將數(shù)據(jù)集中的列轉(zhuǎn)換為虛擬列,并根據(jù)“類型”列將數(shù)據(jù)集分成兩個(gè)不同的數(shù)據(jù)幀。這樣在模型訓(xùn)練時(shí)能更好地處理分類數(shù)據(jù)。
通過以上預(yù)處理步驟,可以準(zhǔn)備好適合用于分類模型訓(xùn)練的數(shù)據(jù)集,確保數(shù)據(jù)質(zhì)量和特征的有效性,為后續(xù)的實(shí)驗(yàn)提供可靠的基礎(chǔ)。
3.3 訓(xùn)練模型
對(duì)于惡意網(wǎng)站分類任務(wù),本文采用的算法包括邏輯回歸、支持向量機(jī)、決策樹、隨機(jī)森林和K最近鄰分類算法等。
在數(shù)據(jù)預(yù)處理完成后,根據(jù)7∶3的比例將收集到的數(shù)據(jù)集分離為訓(xùn)練集(train) 和測(cè)試集(test) 。其中,X表示前19列作為輸入特征,Y表示最后一列"type" 作為輸出的預(yù)測(cè)結(jié)果(標(biāo)簽),將得到的訓(xùn)練集和測(cè)試集分別表示為:X_train, X_test, Y_train, Y_test。
利用訓(xùn)練集(X_train, Y_train) 進(jìn)行模型擬合(train?ing) ,通過學(xué)習(xí)樣本數(shù)據(jù)的特征與標(biāo)簽之間的關(guān)系,調(diào)整模型參數(shù)以最大程度地?cái)M合訓(xùn)練數(shù)據(jù),并在不同的特征空間中構(gòu)建決策邊界,以實(shí)現(xiàn)對(duì)惡意網(wǎng)站的準(zhǔn)確分類。
然后利用測(cè)試集(X_test) 對(duì)訓(xùn)練好的模型進(jìn)行評(píng)估。通過將測(cè)試集輸入訓(xùn)練好的模型中,得到模型在未見數(shù)據(jù)上的分類結(jié)果,并計(jì)算模型的性能指標(biāo),如準(zhǔn)確率、召回率、F1值等,用于客觀地評(píng)價(jià)模型的分類效果,并為進(jìn)一步優(yōu)化提供參考依據(jù)。
最后,對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析和比較。通過比較不同算法模型在測(cè)試集上的表現(xiàn),評(píng)估它們?cè)趷阂饩W(wǎng)站分類任務(wù)中的優(yōu)劣勢(shì),并找出最適合該任務(wù)的模型。同時(shí)對(duì)模型在不同參數(shù)設(shè)置下的性能進(jìn)行分析,為模型調(diào)優(yōu)和改進(jìn)提供指導(dǎo)。
3.4 實(shí)驗(yàn)結(jié)果與分析
1) 預(yù)測(cè)測(cè)試集數(shù)據(jù)。對(duì)測(cè)試集數(shù)據(jù)X_test分別賦予訓(xùn)練后的模型以預(yù)測(cè)結(jié)果predict_Y。
2) 分析預(yù)測(cè)準(zhǔn)確性。對(duì)于兩個(gè)數(shù)據(jù)集中的數(shù)據(jù),比較真實(shí)測(cè)試集中的Y_test和模型預(yù)測(cè)得到的pre?dict_Y的準(zhǔn)確率。并通過混淆矩陣得出的結(jié)果展示圖如下:
3) 得到結(jié)果。通過對(duì)比上圖中各個(gè)算法的混淆矩陣,可以發(fā)現(xiàn)在使用的5種算法中,支持向量機(jī)和隨機(jī)森林的準(zhǔn)確率較高,而KNN算法的準(zhǔn)確率最低。如表4所示,其中展示了訓(xùn)練集和測(cè)試集的結(jié)果。
接下來,通過分類模型的幾個(gè)評(píng)價(jià)指標(biāo),包括召回率(recall) 和F1分?jǐn)?shù)(f1-score) ,來評(píng)估各個(gè)分類模型的適用性。最終結(jié)果如表5所示:
4 結(jié)論
實(shí)驗(yàn)初步結(jié)果表明,在應(yīng)用的各個(gè)監(jiān)督式學(xué)習(xí)算法中,支持向量機(jī)(SVM) 和隨機(jī)森林的預(yù)測(cè)準(zhǔn)確率和模型評(píng)價(jià)指標(biāo)表現(xiàn)較為理想。首先,SVM是對(duì)二分類問題效果最佳的算法模型,它在向高維空間映射時(shí)不會(huì)增加復(fù)雜度,能夠解決非線性特征的相互作用。然而,該算法仍存在一些缺點(diǎn):SVM對(duì)缺失值敏感,當(dāng)數(shù)據(jù)量大時(shí)訓(xùn)練時(shí)間較長(zhǎng)。此外,本研究中的模型使用默認(rèn)參數(shù),未進(jìn)行參數(shù)調(diào)優(yōu),通過調(diào)優(yōu)后預(yù)測(cè)效果可能會(huì)有所提升。
隨機(jī)森林算法本身的精度優(yōu)于大多數(shù)單個(gè)算法,因此在測(cè)試集上表現(xiàn)良好,且具有較強(qiáng)的抗干擾能力。但是,它在解決回歸問題方面的表現(xiàn)不如分類問題。同時(shí),隨機(jī)森林對(duì)小規(guī)模數(shù)據(jù)或低維數(shù)據(jù)的分類效果不佳。因此,這兩種算法在某些方面仍有提升空間。