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