王文騰, 王傳濤, 襲 薇, 佟 暉
(1.北京建筑大學(xué) 機(jī)電與車輛工程學(xué)院, 北京 100044; 2.北京市公安局, 北京 100740;3.上海市信息安全綜合管理技術(shù)研究重點實驗室, 上海 200240)
“釣魚網(wǎng)站”就是指釣魚者利用帶有欺騙性的電子郵件和偽造的非常相似的網(wǎng)站對受害者進(jìn)行欺騙[1]. 攻擊者會仿制一個和目標(biāo)網(wǎng)站十分相似的網(wǎng)站作為釣魚網(wǎng)站,或者制作成虛假信息的網(wǎng)站. 當(dāng)受害者訪問該網(wǎng)站并提交個人信息時,攻擊者就可能從中獲取受害者提交的敏感信息,如各類賬號、密碼等,或者是直接造成受害者財產(chǎn)損失. 由于這類攻擊的隱蔽性很好,造成危害較大,所以屬于嚴(yán)重的互聯(lián)網(wǎng)犯罪.
目前關(guān)于釣魚網(wǎng)站研究主要分以下幾類:一是基于黑白名單過濾[2]的瀏覽器插件. 這些檢測插件大多采用URL(統(tǒng)一資源定位符)黑名單技術(shù),將待測網(wǎng)站的URL在黑名單數(shù)據(jù)庫中進(jìn)行匹配. 但釣魚網(wǎng)站更新快存活時間短,所以無法檢測最新釣魚網(wǎng)站. 第二類是分析釣魚網(wǎng)站URL地址[3]. 這種方法對于部分釣魚網(wǎng)站的識別效果很顯著,但URL特征并不能完全鑒別釣魚網(wǎng)站, 這種方式可能會伴隨漏判和誤判的概率. 第三種方式是根據(jù)頁面內(nèi)容特征來識別釣魚網(wǎng)站[4]. 這種方式會比第二種方式的查全率和準(zhǔn)確率更高,但面臨的問題就是獲取頁面內(nèi)容會降低識別的效率,在提取頁面特征時也會比URL特征提取要復(fù)雜.
針對檢測方式,很多學(xué)者都采用機(jī)器學(xué)習(xí)的分類算法進(jìn)行分類檢測. 顧曉清等[5]提出,針對URL特征,通過比較閾值改進(jìn)貝葉斯算法. 趙加林[6]提出對針對網(wǎng)頁的K-Means與SVM結(jié)合算法. 可以看出,機(jī)器學(xué)習(xí)中的監(jiān)督式的分類方法[7]在釣魚網(wǎng)站識別研究中應(yīng)用較多.
上述研究通常是側(cè)重釣魚網(wǎng)站檢測的某一方面,使用一種分類算法作為模型建立的算法. 本文著重通過實驗比較常見的3種分類算法(KNN[8],SVM[9],樸素貝葉斯[10])分別通過URL特征和頁面文本特征,對釣魚網(wǎng)站進(jìn)行檢測,區(qū)分其性能差異.
釣魚網(wǎng)站的主要欺騙方式之一是通過URL地址的相似性加以偽裝. 但是部分釣魚網(wǎng)站的URL與被模仿網(wǎng)站的URL還是有很多區(qū)別的. 根據(jù)參考資料,將已有釣魚網(wǎng)站URL與正常網(wǎng)站URL做比對得到的特征組成特征集合.
通過相關(guān)文獻(xiàn)研究的基礎(chǔ)和對已有的釣魚網(wǎng)站URL分析,本文選取出由11個特征組成的特征向量FV:
FV=〈F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11〉
F1:在URL的域名部分含有特殊符號“-”,這個符號通常放置于被模仿網(wǎng)站域名中間或者用某些詞和被模仿網(wǎng)站域名連接,這種方式在URL的域名處迷惑用戶.
F2:在URL的查詢部分含有“@”“·”,有些釣魚網(wǎng)站在查詢部分以郵箱賬號的形式作為查詢參數(shù).
F3:在URL路徑中包含“·”“\”,這兩種符號經(jīng)常用于在URL的路徑中添加了被模仿URL的真實域名,然后再用這兩種符號連接.
F4:URL的長度,在沒有查詢參數(shù)的URL長度定義的最大閾值為85,如果有查詢參數(shù),最大閾值為115.
F5:URL域名的長度,定義域名長度的最大閾值為39.
F6:URL域名級數(shù),有些釣魚網(wǎng)站通過多級域名,在中間添加了真實域名的字符串,導(dǎo)致用戶被迷惑. 定義級數(shù)的最大閾值為4.
F7:URL路徑級數(shù),與URL域名級數(shù)類似,通過多級路徑,將被模仿的域名添加到路徑中. 定義級數(shù)的最大閾值為6.
F8:URL以IP地址替換域名,這種方式會阻止用戶從域名中了解網(wǎng)站,從而迷惑用戶.
F9:URL路徑中出現(xiàn)某些品牌,在路徑中包含品牌以此迷惑用戶. 從PishingTank上收集了99個品牌作為一個品牌集合.
F10:URL域名的長度,定義域名長度的最小閾值為7.
F11:URL中包含敏感詞. 有些釣魚者為了迷惑用戶,在URL刻意添加“account”“banking”這些詞. 由8個敏感詞組成的集合:
(1)
i∈{1,2,3,4,5,6,7,8,9,10,11}
(2)
用戶通過釣魚網(wǎng)站的URL訪問該網(wǎng)站,但要使用戶相信該釣魚網(wǎng)站的內(nèi)容,還需對其頁面結(jié)構(gòu)或頁面內(nèi)容進(jìn)行處理. 釣魚網(wǎng)站通常仿冒相關(guān)網(wǎng)站的結(jié)構(gòu)和文本內(nèi)容,但由于它的目的性與正常網(wǎng)站不同,所以其內(nèi)容又與被仿網(wǎng)站有一定的區(qū)別,因此利用這一特點便可以通過網(wǎng)頁的文本內(nèi)容或頁面結(jié)構(gòu)進(jìn)行判斷區(qū)分.
根據(jù)網(wǎng)頁內(nèi)容進(jìn)行提取特征. 詳細(xì)步驟如下:
1) 首先請求可以正常訪問的釣魚網(wǎng)站,然后提取網(wǎng)頁中所有的字符串.
2) 對提取的整段字符串進(jìn)行清洗,去除整段字符串中的特殊字符和轉(zhuǎn)義字符. 然后利用NLTK[11]進(jìn)行分詞、去除停用詞,得到每一個詞組成的字符串集合.
例如:{facebook help center facebook update your security…}
3) 接下來利用TF-IDF方法對每個詞加權(quán). TF-IDF是一種統(tǒng)計方法[12],它就是為了克服詞頻統(tǒng)計技術(shù)的缺陷而產(chǎn)生的. 它引入了“逆文檔頻率”概念,衡量了一個詞的常見程度. TF-IDF的假設(shè)是:如果某個詞或短語在一篇文章中出現(xiàn)的頻率高,并且在其他文章中很少出,那么它很可能就反映了這篇文章的特性,因此要提高它的權(quán)值. 在網(wǎng)頁內(nèi)容上有很多出現(xiàn)頻率很高的詞,但并不能凸顯出這個文本的特性,要適當(dāng)降低這類詞的尋找.
假設(shè)Xi為某個詞,Number(j,Xi)為在j文件中出現(xiàn)Xi詞的次數(shù),Number(j,Xmax)表示j文件中出現(xiàn)最多的詞的個數(shù). 那么Xi的詞頻TF為:
(3)
假設(shè)ContainFile(Xi)為出現(xiàn)Xi的文件數(shù),SumFile為文件的總數(shù),那么逆文檔頻率IDF為:
(4)
所以結(jié)合式(1)和式(2)Xi的TF-IDF值為:
TF-IDF(Xi)=TF(Xi)IDF(Xi)
(5)
4) 將每個文本按權(quán)重由大到小選取前n個的詞,再將所有選取的詞整合在一起組成特征詞集合.
本文主要涉及3種常見分類算法:最近鄰算法(KNN),支持向量機(jī)算法(SVM)和樸素貝葉斯算法(Naive Bayes).
KNN算法是通過測量不同特征值之間的距離進(jìn)行分類. 它的思路是:一個樣本在特征空間中的K個最臨近的樣本中的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別. KNN算法中,所選擇的鄰居都是已經(jīng)正確分類的對象. 該方法在決策上只依據(jù)最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別.
在KNN算法中,通過計算對象間的距離作為對象之間的非相似性指標(biāo),一般使用歐式距離公式計算:
(6)
其算法描述為:
1)計算測試數(shù)據(jù)與各個訓(xùn)練數(shù)據(jù)之間的距離;
2)按照距離的遞增關(guān)系進(jìn)行排序;
3)選取距離最小的K個點;
4)確定前K個點所在的類別的出現(xiàn)頻率;
5)返回前K個點中出現(xiàn)頻率最高的類別作為測試數(shù)據(jù)的預(yù)測分類.
SVM(Support Vector Machines)在分類算法中應(yīng)用廣泛,它在處理高緯度數(shù)據(jù)集時有很好的分類效果. SVM的目的是尋找一個超平面,使樣本分成兩類,并且間隔最大.
對于二類分類問題,假設(shè)訓(xùn)練集為:
T={(x1,y1),(x2,y2),…,(xn,yn)}
其中xi為相應(yīng)樣本,yi為樣本類標(biāo)記,且yi∈{0,1}.
分類平面形式為:
g(x)=wtx+b
(7)
其中w是分類權(quán)重向量,b是分類閾值. 若使式(5)對兩類樣本都滿足|g(x)|≥1, 即:
yi(wtx+b)-1≥0,i=1,2,…,n
(8)
(9)
s.t.yi(wtx+b)-1≥0
(10)
考慮異常點的情況,可以加入松弛變量ε來處理:
yi(wtx+b)-1≥1-ε
(11)
則把目標(biāo)函數(shù)變?yōu)椋?/p>
(12)
其中,C為懲罰函數(shù),通過構(gòu)造拉格朗日函數(shù)并求解偏導(dǎo)數(shù)可以得到等價對偶問題:
(13)
(14)
如果是非線性問題,一般采用低維空間映射到高維空間x→(x)后實現(xiàn)線性可分. 在SVM的等價對偶問題中目標(biāo)函數(shù)中有樣本點的內(nèi)積,在空間變換后,由于維度增加導(dǎo)致內(nèi)積計算成本增加,這時核函數(shù)(kernel function)便派上用場了,將映射后的高維空間內(nèi)積轉(zhuǎn)換成低維空間的函數(shù):
K(x,z)=φ(x)φ(z)
(15)
將其代入式(11)可得非線性SVM的最優(yōu)化問題:
(16)
(17)
樸素貝葉斯(Naive Bayes)屬于監(jiān)督學(xué)習(xí)的生成模型,實現(xiàn)簡單,沒有迭代,學(xué)習(xí)效率高,在大樣本量下會有較好的表現(xiàn).
樸素貝葉斯的主要思路是:通過聯(lián)合概率P(x,y)=P(x|y)P(y)建立模型后,通過運(yùn)用貝葉斯定理求解后驗概率P(y|x),將后驗概率最大者對應(yīng)的類別作為預(yù)測分類.
假設(shè)訓(xùn)練集為:T={(x1,y1),(x2,y2),…,(xn,yn)},其類別為yi∈{c1,c2,…,ck},由貝葉斯定理可知:
(18)
其中對于ck而言,p(x)是恒等的,所以可以舍棄. 先驗概率p(y=ck)可以通過計算頻率得到,而條件概率p(x|y=ck)通過樸素貝葉斯對條件概率做了條件獨立性的假設(shè),即條件相互獨立的為前提,則:
(19)
可得預(yù)測類別:
(20)
采用準(zhǔn)確率(precision)、召回率(recall)和綜合的準(zhǔn)確率和召回率的分類率(F1)作為本次實驗的分類型評價指標(biāo). 其中準(zhǔn)確率是指模型判為正的所有樣本中有多少是真正的正樣本;召回率是指所有正樣本有多少被模型判為正樣本;而F1是準(zhǔn)確率和召回率的結(jié)合.
假設(shè)模型輸出正樣本集合(模型檢測出的釣魚網(wǎng)站集合)為A,真正的正樣本集合(釣魚網(wǎng)站總體集合)為B,則:
(21)
(22)
(23)
本次實驗所用的釣魚網(wǎng)站(正類)來自PhishTank[13]上提供的黑名單數(shù)據(jù). 實驗總共提取兩次,第一次是2017年8月8日提取了3 123條釣魚網(wǎng)站用于URL檢測部分;由于釣魚網(wǎng)站存活期較短,所以第二次是從2018年2月18日和2018年2月23日兩天中提取有效2 000釣魚網(wǎng)站用于網(wǎng)站頁面檢測部分. 實驗中用到的可信網(wǎng)站(負(fù)類)來自Alexa[14]上排名前500,在這500個網(wǎng)站中,每個網(wǎng)站以深度為1進(jìn)行遍歷,總共得到38 019個網(wǎng)站,從中提取有效可信網(wǎng)站1 307條用于URL檢測部分,提取2 000條用于網(wǎng)站頁面檢測部分. 對于訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)采用的分配方式,如表1所示.
表1 訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)
首先通過實驗確定KNN算法中的最優(yōu)k值,從圖1中可以看出,隨著k值的增加,KNN分類器的F1值呈遞減趨勢,在頁面內(nèi)容檢測的折線圖更為明顯. 當(dāng)k值為5時KNN分類器的效果最佳,對于URL檢測和頁面內(nèi)容檢測的F1分別為89.18%和94.69%. 因此后續(xù)采用k值為5的KNN分類器進(jìn)行實驗.
圖1 不同k值下的KNN分類器的F1值Fig.1 F1 value of KNN classifier under different k values
4種分類方法在URL檢測中的性能比較,支持向量機(jī)(SVM)分類器. 本實驗分別選擇線性SVM和徑向基核函數(shù)的SVM作為非線性SVM. 徑向基核函數(shù)的形式為:
表2是4種分類方法在URL檢測方面的性能比較. 其中URL特征數(shù)為11個. 在表中可以看出,除樸素貝葉斯方法外的其他三種方法的準(zhǔn)確率和召回率相差都不大,準(zhǔn)確率達(dá)到85%左右. 由于訓(xùn)練和測試的數(shù)據(jù)集不大,而且特征數(shù)也不多,所以訓(xùn)練和測試的時間比較短.
表2 4種分類方法在URL檢測方面的性能比較
表3是4種分類方法在頁面內(nèi)容方面的性能比較,其中頁面特征為2 000個釣魚網(wǎng)站頁面的權(quán)重由大到小排名前5的特征組成,所得的頁面特征數(shù)為1 165個. 可以從表中很明顯看出線性SVM分類器的準(zhǔn)確率和召回率都是最高,都近似96.88%,而采用徑向基核函數(shù)的SVM分類器的準(zhǔn)確率和召回率都是最低的,所以在選用SVM算法的時候,對于線性和非線性SVM算法的選擇很重要.
綜合表2和表3可以看出,對于頁面內(nèi)容檢測的準(zhǔn)確率和召回率都要高于針對URL特征檢測. 筆者認(rèn)為出現(xiàn)這種現(xiàn)象有以下幾個原因:
表3 4種分類方法在頁面內(nèi)容方面的性能比較
1)網(wǎng)站URL沒有進(jìn)行黑白名單的過濾,導(dǎo)致很多正規(guī)網(wǎng)站由于也存在敏感詞匯而被認(rèn)為存在了釣魚網(wǎng)站URL的特征;
2)有一部分釣魚網(wǎng)站并沒有出現(xiàn)釣魚網(wǎng)站的URL特征,而正常網(wǎng)站卻有部分存在,導(dǎo)致分類器誤判;
3)頁面內(nèi)容檢測中,很多釣魚網(wǎng)站針對的目標(biāo)網(wǎng)站比較集中,導(dǎo)致很多釣魚網(wǎng)站的制作與目標(biāo)網(wǎng)站比較類似,所以特征也較為相似,因此分類器分類比較準(zhǔn)確;
4)還有一個原因是頁面內(nèi)容特征的特征維度遠(yuǎn)遠(yuǎn)高于URL特征,這個方面也導(dǎo)致部分分類器的訓(xùn)練和測試時間都大大增加.
圖2 對于4種分類器在不同頁面特征數(shù)下的F1值比較Fig.2 Comparison of F1 values for four classifiers with different page feature numbers
圖2是對于在頁面內(nèi)容檢測部分,對于不同特征數(shù)的情況,4種分類器的F1比較. 通過以每篇文檔中權(quán)重由大到小排名前2、5、10、15、20的詞為基準(zhǔn)提取特征,可以得到圖中橫軸的4個特征數(shù). 從圖中可以明顯觀察出線性SVM分類器的F1最高,并且當(dāng)特征數(shù)為1 893個時效果最佳. 當(dāng)特征數(shù)從1 893個繼續(xù)增加分類器的效果都會相對降低. 筆者認(rèn)為,特征個數(shù)的選取不能無限制的增加,而應(yīng)該以實際情況選取. 本次實驗樣本總數(shù)為4 000個,而當(dāng)特征個數(shù)逐漸增加的過程中,樣本總量卻沒變,造成維度較高,分類器訓(xùn)練和測試不能達(dá)到很好的效果.
本文通過實驗對比樸素貝葉斯、KNN和SVM算法針對釣魚網(wǎng)站的分類效果. 對于以URL特征的實驗中,樸素貝葉斯分類器的效果相對較差,而其他分類器相差不大;而對于特征維度較高的頁面內(nèi)容特征的實驗中,線性SVM分類器表現(xiàn)出了不錯的效果,準(zhǔn)確率和召回率都高于其他分類器. 對于英文類頁面內(nèi)容,通過實驗對比選取最佳特征數(shù)量,改良后的線性SVM分類器檢測準(zhǔn)確率可以達(dá)到96%. 針對研究存在的不足,后續(xù)研究工作主要對兩方面進(jìn)改進(jìn):
1)對特征優(yōu)化,在特征提取前可以加入黑白名單過濾;
2)SVM方法中核函數(shù)及其參數(shù)的選取,SVM核函數(shù)還可以選擇多項式核函數(shù)進(jìn)行比較. 模型完善后創(chuàng)建web應(yīng)用,可以部署到線上服務(wù)器,為用戶提供釣魚網(wǎng)站檢測的一項應(yīng)用服務(wù).