馬 剛,劉 鋒,朱二周
(安徽大學計算機科學與技術學院,安徽 合肥 230601)
根據(jù)數(shù)據(jù)顯示,2015年中國移動互聯(lián)網(wǎng)用戶數(shù)量達到了8.1億人,較2014年增長了近8.4%。預計到達2016年,中國移動互聯(lián)網(wǎng)用戶數(shù)量將達到9.2億人。從智能手機的用戶數(shù)量可以看出,我國的移動互聯(lián)網(wǎng)規(guī)模巨大,并在迅速發(fā)展中。但是,在移動互聯(lián)網(wǎng)快速發(fā)展的同時,針對移動網(wǎng)絡攻擊和詐騙的現(xiàn)象時有發(fā)生。
網(wǎng)絡釣魚攻擊[1]是一種通過模擬正常網(wǎng)站的界面,誘騙用戶輸入用戶名和密碼等信息,從而達到盜取用戶賬號信息的目的。當前,對于PC端的網(wǎng)絡釣魚攻擊已經(jīng)有了較好的防御和保護手段,但針對移動端攻擊的檢測手段和方法還不是很健全。
當前,對網(wǎng)頁釣魚攻擊檢測方法的研究主要包括基于黑名單的檢測、基于機器學習的檢測、基于啟發(fā)式的檢測和基于視覺相似的檢測[2]等四類?;诤诿麊蔚臋z測[2]技術主要根據(jù)知名IT企業(yè)提供的釣魚網(wǎng)站黑名單進行檢測。基于黑名單的檢測技術雖然正確率很高,但是沒辦法檢測不在黑名單內的釣魚網(wǎng)站。與此同時,由于確認黑名單需要人工驗證,故需花費大量的人力和時間等?;跈C器學習[3,4]的檢測技術主要通過選擇釣魚網(wǎng)站URL的特征,以此來生成訓練數(shù)據(jù),構造分類器進行檢測。在這種方法中,URL特征的選取和分類器的構建是非常關鍵的因素?;趩l(fā)式的檢測[2]技術主要根據(jù)網(wǎng)站存在的異常特征超出了設定的閾值和不合乎常規(guī)的訪問等方式來對釣魚網(wǎng)站進行判斷?;谝曈X相似的檢測[2,3]技術利用釣魚網(wǎng)站與真實網(wǎng)站的視覺相似超過設定的閾值來進行檢測。然而,由于需要復雜的圖像處理操作,鑒于現(xiàn)在手機的性能還不能很好地滿足此類計算需求,這種方法并不適合移動手機端。
本文通過結合URL鏈接和網(wǎng)頁內容,提出一種基于改進樸素貝葉斯算法[5]的釣魚網(wǎng)站檢測方案。樸素貝葉斯算法由于有著堅實的數(shù)學基礎和穩(wěn)定的分類效率,故而在各種分類領域中得到廣泛的應用。但是,傳統(tǒng)的樸素貝葉斯算法也存在一些不足。針對樸素貝葉斯算法的不足,本文做了如下改進:
(1)在收集樣本數(shù)據(jù)的過程中,屬性值缺失的情況時有發(fā)生,其中有些信息是無法獲取的,有些對象的某個屬性是不可用的。也就是說,對于這個對象,該屬性值是不存在的。本文將采用K-means算法對缺失的屬性值進行填充。
(2)當特征屬性的維數(shù)過多時,樸素貝葉斯算法就會出現(xiàn)大量條件概率相乘的情況。這些概率值都是小于1的數(shù),而這些趨于零的條件概率相乘,很可能會出現(xiàn)有偏過低估計[6]的情況。本文將概率進行適當放大,以解決結果下溢的問題。
(3)傳統(tǒng)的樸素貝葉斯算法認為屬性之間是相互獨立的,容易忽略屬性之間的關聯(lián)性問題。但是在現(xiàn)實數(shù)據(jù)中,屬性與類別之間都存在或多或少的關聯(lián)。本文根據(jù)屬性重要程度的不同對屬性進行加權處理,提升樸素貝葉斯算法的分類性能,以此提高釣魚網(wǎng)站檢測的正確率。
(4)在實際情況中,釣魚網(wǎng)站出現(xiàn)的概率還是比較小的,本文通過調整釣魚網(wǎng)站與可信網(wǎng)站間的概率比值P,最終選擇一個最佳的P值,以此來進一步提高檢測的正確率。
本文的實驗部署在Android 5.0操作系統(tǒng)上,結果表明,改進后的樸素貝葉斯算法能夠有效地檢測出手機端的釣魚攻擊,進而可為手機安全運行提供可靠的保護技術。
貝葉斯算法是以英國數(shù)學家Thomas Bayes命名的一種基于概率統(tǒng)計的可能性推理方法[6],即根據(jù)已經(jīng)發(fā)生的事件來預測將來事件可能發(fā)生的概率。貝葉斯定理的主要思想為:如果事件發(fā)生的可能性不確定,那么量化它的唯一方法就是事件發(fā)生的概率。如果事件出現(xiàn)的概率是已知的,那么可以根據(jù)數(shù)學方法計算出未來事件出現(xiàn)的概率。貝葉斯定理可以用一個數(shù)學公式表達,即為貝葉斯定理。具體如式(1)所示:
(1)
其中,P(X)表示事件發(fā)生的概率,P(Bi)表示Bi的先驗概率。之所以稱之為先驗概率是因為它的概率不和別的事件有關系。由于P(X|Bi)是根據(jù)Bi的概率得到的,因此被稱為X的后驗概率。簡單地說,貝葉斯定理提供了一種基于先驗概率計算后驗概率的方法。
樸素貝葉斯算法是在貝葉斯算法的基礎上通過假定各屬性之間不存在任何關聯(lián),即屬性之間完全獨立而得到的一種簡化算法[5]。利用樸素貝葉斯算法進行分類的具體過程如下所示:
(1)數(shù)據(jù)樣本集合由一個n維的特征向量T={t1,t2,…,tn}表示,ti(i=1,…,n) 表示數(shù)據(jù)集合中的一條數(shù)據(jù)。
(2)實驗E的樣本空間為S,而B1,B2,…,Bn為S的一個劃分,且P(Bi)>0 (i=1,2,…,n)。對于給定的一條待檢測的數(shù)據(jù)項X,分類器將計算X屬于每個分類的概率,其中哪個分類的概率最大就將X歸為那個分類。P(Bi|X)即為對應類Bi的后驗概率。而P(Bi|X)可以根據(jù)式(1)來確定。由于P(X)為常數(shù),只需要P(X|Bi)P(Bi)最大,即可判斷出數(shù)據(jù)項X屬于哪一個分類。其中類的先驗概率可以用P(Bi)=si/s計算,si為訓練樣本中屬于Bi的個數(shù),s為訓練樣本的總數(shù)。
由于樸素貝葉斯算法假定各個屬性之間是相互獨立的,沒有任何的依賴關系,所以有:
(2)
其中,概率P(X1|Bi),P(X2|Bi),…,P(Xk|Bi)可由訓練樣本計算得到。P(Xk|Bi)表示待檢測數(shù)據(jù)項第k個屬性對應的屬性值為Xk的概率,P(Xk|Bi)=sik/si,其中si表示樣本中類別屬于Bi的樣本數(shù),sik表示樣本中屬于類別Bi,并且第k個屬性對應的屬性值為Xk的樣本數(shù)。
于是樸素貝葉斯公式可以表述為式(3):
(3)
3.1.1 缺失數(shù)據(jù)的現(xiàn)有處理方法
在收集樣本數(shù)據(jù)的過程中,屬性值缺失的情況經(jīng)常會發(fā)生。對于缺失數(shù)據(jù)的填充主要有刪除數(shù)據(jù)和補齊數(shù)據(jù)兩種方式。其中刪除數(shù)據(jù)可能會導致數(shù)據(jù)發(fā)生偏離,從而得出錯誤的結論。當前補齊數(shù)據(jù)主要有平均值填充以及使用最可能的值填充等方法。
圖1的實驗結果顯示了使用刪除法(菱形線)和平均值法(方形線)改變樣本數(shù)據(jù)中缺失的屬性數(shù)的正確率。實驗中樣本數(shù)為2 000,釣魚網(wǎng)站數(shù)為500,可信網(wǎng)站數(shù)為1 500。從圖1中可以看出,由于刪除法是直接將缺失數(shù)據(jù)的數(shù)據(jù)項去掉,這樣雖然可以得到完整的數(shù)據(jù)集,但是丟失了大量的有價值的數(shù)據(jù),導致正確率很低(平均準確率為74.93%)。平均值填充方法是靠屬性在其他對象中的取值求平均得到的,但是平均值法只是利用了數(shù)據(jù)樣本中的一個數(shù)據(jù)項,沒有充分利用其它數(shù)據(jù)項和樣本的類別,因此所得到的平均值并不是非常準確(平均準確率為80.52%)。
Figure 1 Accuracy comparison vs. missing attribute by different methods圖1 不同方法關于缺失屬性正確率的對比
3.1.2 基于K-means算法的數(shù)據(jù)填充方法
由于刪除法和平均值法都不能得到最符合實際情況的數(shù)據(jù)值,本文采用K-means算法來對缺失的數(shù)據(jù)進行填充。
(1)K-means算法基本原理。
K-means算法[7]是劃分聚類方法中一種典型的算法。該算法的目標是根據(jù)輸入的參數(shù)K,將給定的數(shù)據(jù)集分為K個簇,同一個簇內的數(shù)據(jù)具有較高的相似度,而不同簇之間的相似度較低。K-means算法的處理過程為:
①從n個數(shù)據(jù)對象中任意選擇K個對象作為初始聚類中心;
②根據(jù)每個聚類對象的均值(中心位置),計算每個對象與中心位置的距離,將它賦給最近的簇;
③重新計算每個聚類的均值(中心位置);
④循環(huán)②~③直到每個聚類不再發(fā)生變化為止。
屬性對象間相似度的計算:若對象屬性均為區(qū)間標度度量,則對象之間的相似度最常用的度量方法是歐氏距離,如式(4)所示:
sim(i,j)=
(4)
其中,i=(xi1,xi2,…,xin)和j=(xj1,xj2,…,xjn)分別是兩個n維的數(shù)據(jù)對象。若對象的屬性值只有0和1兩個狀態(tài)。則評價兩個對象之間的相似度用的是Jaccard系數(shù),如式(5)所示:
(5)
由數(shù)學知識可得:
sim(i,j)=(r+s)/(q+r+s)
(6)
其中,r是對于i的值為1而對于j的值為0的變量的個數(shù);s是對于i的值為0而對于j的值為1的變量的個數(shù);q是對于i和j的值都是1的變量的個數(shù)。由于本文使用數(shù)據(jù)的屬性值只有兩個狀態(tài),故使用Jaccard系數(shù)計算對象之間的相似度。
(2)使用K-means算法填充缺失數(shù)據(jù)的具體過程。
針對傳統(tǒng)算法對缺失數(shù)據(jù)處理出現(xiàn)準確率偏低的問題,本文使用K-means算法對缺失數(shù)據(jù)進行填充,具體過程為:
①原始數(shù)據(jù)的分離。將原始數(shù)據(jù)中不完備的數(shù)據(jù)分離出來,這樣原始數(shù)據(jù)分為兩部分:完備數(shù)據(jù)子集和缺失數(shù)據(jù)子集。
②完備數(shù)據(jù)子集聚類。在完備數(shù)據(jù)子集上使用K-means算法進行聚類,最終產(chǎn)生K個簇。K-means中K值表示的是數(shù)據(jù)集聚類中心的個數(shù)。由于本文的數(shù)據(jù)集在聚類過程中只有兩種類別,一種是釣魚網(wǎng)站,另外一種是非釣魚網(wǎng)站(可信網(wǎng)站),因此這里的K值取2。
③缺失數(shù)據(jù)填充。計算缺失數(shù)據(jù)集中的每條記錄與K個簇中心的相似度,根據(jù)相似度將該條記錄劃分到相似度最高的一個簇中去,最后用該簇中相應屬性出現(xiàn)次數(shù)最多的值來補齊缺失的屬性值。
④重新計算均值,循環(huán)②~④直到所有的缺失數(shù)據(jù)都填充完畢。
如圖1所示,使用K-means算法(三角形線)來對缺失的數(shù)據(jù)進行補齊的正確率比其它兩種方法的正確率都要高(平均準確率達到83.79%),這是因為K-means方法充分利用了當前數(shù)據(jù)樣本中所包含的其它信息,并利用其它屬性的值和屬性類別來預測當前所缺失的屬性值,因此本文使用K-means方法對缺失的屬性值進行填充。
對概率進行放大的方法主要有兩種。第一種是給每一個sik加上一個比較小的數(shù),這樣使得計算出來的概率值較小,也不會占有絕對的統(tǒng)治地位,從而提高了分類的精度,如Laplace平滑方法[5]。Laplace平滑方法是直接在si的基礎上加上n(n表示樣本類別的種類數(shù)),在sik的基礎上加上1。這樣可以有效地避免概率為零的情況。第二種方法是基于先驗概率估計的方法,即對P(Xk|Bi)的計算先給一個先驗的估計概率,然后以此概率為基礎對統(tǒng)計的樣本數(shù)進行放大,如m估計[5]方法。該方法是一種更一般的貝葉斯概率估計方法,它將原來的樣本容量添加m個等效的樣本,同時樣本中增加的等效的類別數(shù)量就是樣本數(shù)量m乘以概率估計E。
圖2的實驗結果顯示了采用Laplace平滑方法(三角形線)和m估計(方形線)的方法對樣本數(shù)據(jù)集進行放大,可以有效地提高正確率。其中,m估計方法由于擴大的樣本數(shù)量比Laplace平滑方法要大,因此采用m估計方法的正確率比Laplace平滑方法要高。特別地,當樣本的數(shù)據(jù)集很小的時候,m估計方法和其它兩個方法的正確率的差值就越大,因為數(shù)據(jù)集越小,出現(xiàn)零概率事件的概率就越大,從而導致正確率很低。因此,使用m估計對樣本數(shù)據(jù)進行放大,可以進一步提高正確率。
Figure 2 Accuracy comparison among different probability estimation method圖2 不同概率估計方法的正確率對比
基于以上分析,本文采取m估計來對樣本數(shù)據(jù)進行放大,計算方法如式(7)所示:
(7)
其中,sik和si與前面的定義相同,E是確定的概率的一個先驗估計值,而m是一個放大的樣本容量的大小。最終的結果是將n個實際的觀察樣本進行了放大,加大了m個按E分布的虛擬樣本。在這里,假定E是均勻的先驗概率,那么,如果某屬性有k個可能的值,那么就設置E=1/k。
傳統(tǒng)的樸素貝葉斯算法為了降低算法的復雜度,直接忽略了屬性之間的關聯(lián)。但是,在現(xiàn)實情況中,屬性與類別之間都存在或多或少的關聯(lián),如果不考慮屬性之間的關聯(lián),就會使得分類的效果明顯下降。Tan等人[8]提出了加權樸素貝葉斯模型,該模型根據(jù)屬性和最終所屬的類別之間的關系賦予不同的權重,這種方法簡單有效。因此,本文使用加權樸素貝葉斯方法對屬性與類別之間的相應關系進行量化,并以該量化值作為加權系數(shù)對該屬性進行加權,以此來提高樸素貝葉斯算法的分類效果。在這種情況下,關聯(lián)程度較大的屬性將獲得比較大的加權系數(shù),而關聯(lián)程度較小的屬性將獲得比較小的加權系數(shù)。
根據(jù)以上分析,可得加權后的樸素貝葉斯公式如式(8)所示:
(8)
其中,wi為數(shù)據(jù)中第i個屬性對于樣本的權重,屬性的權重越大,說明該屬性對分類的影響越大。加權樸素貝葉斯算法的關鍵問題在于如何確定不同屬性對于樣本的加權值。首先定義:
(9)
其中,count(Bi)表示樣本數(shù)據(jù)中類別為Bi的個數(shù),count(Bi∧Xk)表示數(shù)據(jù)中類別是Bi且第k個屬性值為Xk的個數(shù)。根據(jù)數(shù)學知識很容易定義權重wi為:
(10)
由于P(Xk|Bi)為小數(shù),由數(shù)學知識可得,需要把權值wi取倒數(shù)。
利用前面的樸素貝葉斯公式(式(3))可以計算出每一個待分類網(wǎng)站X屬于釣魚網(wǎng)站和可信網(wǎng)站的概率:P(B1|X)(B1為釣魚網(wǎng)站類別)和P(B2|X)(B2為可信網(wǎng)站類別)。如果按照傳統(tǒng)的方法,當P(B1|X)>P(B2|X)時,就判定X屬于釣魚網(wǎng)站,否則就判定為可信網(wǎng)站。但是在實際的情況中,正常網(wǎng)站的數(shù)量往往比釣魚網(wǎng)站的數(shù)量多很多,傳統(tǒng)的樸素貝葉斯算法就會產(chǎn)生較高的誤判率,如果直接使用的話,分類的偏差會比較大。因此,為了能更加準確地檢測出釣魚網(wǎng)站,減少檢測過程中的誤判率,需要對樸素貝葉斯算法進行改進。
改進的樸素貝葉斯算法的基本思想是:在比較兩個分類P(Bi|X)的概率時設定一個閾值P[9]:若第一類除以第二類的結果大于P時,表明X屬于第一類的概率遠大于屬于第二類的概率,即將待檢測的網(wǎng)站歸為第一類;否則將它歸為第二類。其中P值越大,待檢測網(wǎng)站屬于第一類的可能性也就越大。
我們定義P1表示X屬于釣魚網(wǎng)站的概率,P2表示X屬于可信網(wǎng)站的概率。當P(B1|X)/P(B2|X)>P(P>0)時,就判定X為釣魚網(wǎng)站,否則就判定為可信網(wǎng)站。即當一個待檢測的網(wǎng)站為釣魚網(wǎng)站的概率是可信網(wǎng)站概率的P倍時,就將其判定為釣魚網(wǎng)站。P越大,其為釣魚網(wǎng)站的可能性就越大。P的取值是通過大量實驗最終確定的。
本文提出的移動平臺釣魚網(wǎng)站檢測方法的大致流程為:首先,從用戶訪問的URL入手,當手機端用戶通過瀏覽器輸入URL加載網(wǎng)頁的時候,開始提取URL的4個特性屬性[10],即URL中是否包含IP地址、URL中是否包含‘_’‘@’等異常字符、URL是否具有多級域名以及URL的字符長度是否過長。其次,通過URL獲取網(wǎng)頁內容(HTML源碼),同時提取網(wǎng)頁內容的4個特性屬性,即否包含‘form’表單、是否包含‘username’關鍵字、是否包含‘password’關鍵字以及是否存在外部鏈接。最后,將提取到的8個特征屬性組成一個特征向量[5],利用改進的樸素貝葉斯方法進行檢測,如果是釣魚網(wǎng)站,就向用戶發(fā)出警告。具體的檢測過程如圖3所示。
Figure 3 Flow chart of phishing site detection圖3 釣魚網(wǎng)站檢測流程
釣魚網(wǎng)站通常為了迷惑用戶,將網(wǎng)站的URL和網(wǎng)頁內容進行了偽裝[7,11]。根據(jù)總結和歸納釣魚網(wǎng)站的特點,本文從中提取了釣魚網(wǎng)站的8個特性,將這些特性組成特征向量(V)[12 - 14]。特征向量的具體定義為:V=〈v1,v2,v3,v4,v5,v6,v7,v8〉,V中各個分量的具體含義為:
(1)v1:URL中是否包含IP地址[15,16]。攻擊者經(jīng)常用IP地址作為網(wǎng)站的URL來迷惑用戶,而這樣的URL極有可能是惡意的釣魚網(wǎng)站。
(2)v2:網(wǎng)站的URL中是否包含‘_’‘@’等異常字符。釣魚網(wǎng)站通常用添加特殊字符的方法來迷惑用戶。
(3)v3:URL是否具有多級域名。當網(wǎng)站域名過長時,大部分用戶往往會忽視URL后半部分的內容,而很多釣魚網(wǎng)站通過多級域名來達到迷惑用戶的目的。本文通過檢測URL中是否含有大于5個‘.’來判斷該URL是否包含多級域名。
(4)v4:URL的字符長度是否大于30。一般可信網(wǎng)站的長度都不會太長,如果URL的長度過長,極有可能是釣魚網(wǎng)站。
(5)v5:網(wǎng)頁內容中是否包含‘form’表單?!甪orm’表單是用來提交用戶信息的,存在‘form’表單,說明網(wǎng)頁需要用戶填寫信息,用戶需要特別注意。
(6)v6:網(wǎng)頁內容中是否包含‘username’關鍵字?!畊sername’在網(wǎng)頁源代碼中通常表示用戶的登錄ID,如果存在,極有可能是攻擊者想要獲取用戶的ID。
(7)v7:網(wǎng)頁內容中是否包含‘password’關鍵字?!畃assword’在網(wǎng)頁源代碼中通常代表用戶的登錄密碼,如果存在,很有可能是攻擊者想要竊取用戶的登錄密碼。
(8)v8:是否存在外部鏈接。網(wǎng)頁中存在外部鏈接是正常的,但是如果網(wǎng)頁中外部鏈接的數(shù)量過多(這里指外部鏈接的數(shù)量超過20個),這個網(wǎng)頁很有可能是可疑的,用戶需要特別注意。
由于釣魚網(wǎng)站的存活周期短,實驗以實時收集的網(wǎng)站信息作為測試用例。實驗所用的釣魚網(wǎng)站是從安全聯(lián)盟網(wǎng)[17]上獲取的,可信網(wǎng)站是從Alexa[18]網(wǎng)站上獲取的。實驗隨機抽取了數(shù)據(jù)集的1/2用作訓練,余下1/2用作測試。
實驗部署在Android平臺(基于Android 5.0的系統(tǒng)),手機的內存為2 GB,編程環(huán)境為Eclipse,JDK版本為1.7.0_79。測試算法性能的實驗環(huán)境是一臺擁有4 GB內存和雙核i3處理器的PC機,運行Windows 7操作系統(tǒng)和Eclipse,JDK版本為1.7.0_79。
實驗通過驗證結果的正確率(Y)、精確率(Q)和召回率(R)[12]等幾個方面來分析改進后算法的性能。正確率、精確率和召回率是廣泛用于信息檢索和統(tǒng)計學分類領域的三個度量值,用于評價結果的質量。其中,正確率反映的是被分類器判定為正確的檢查結果占所有樣本的比重;精確率反映的是被分類器判定為正例中真正的正例樣本的比重;召回率反映的是正例中被分類器判斷為正例的比重。Y、Q、R的具體定義如下:
Y=(A+D) / (A+B+C+D)
(11)
Q=A/ (A+B)
(12)
R=A/ (A+C)
(13)
其中A、B、C、D的含義和關系如表1所示。
Table 1 Definition of parameter A,B,C and D
(1)P值的確定。
實驗首先需要尋找一個固定的概率比值P。實際應用中需要通過大量的實驗才能確定較為合適的P值。在實驗過程中往往要根據(jù)所研究的具體問題,適當估算P的取值范圍。
本文實驗中設定比值P的初始值為0.1,并按步長為0.1逐步增加。從測試數(shù)據(jù)集中選取了500個URL,其中包括300個可信網(wǎng)站和200個釣魚網(wǎng)站。圖4顯示了隨著比值P的增加,實驗正確率的變化情況。
Figure 4 Relationship between P and Y圖4 正確率Y隨著P值的變化
經(jīng)過大量的實驗發(fā)現(xiàn),當P=1.5時,可信網(wǎng)站被誤判為釣魚網(wǎng)站的概率最低。同時,釣魚網(wǎng)站被誤判成可信網(wǎng)站的數(shù)量也是最少的。由此可見,當P=1.5時,系統(tǒng)的正確率是最高的。在此,只列出當P=1.5時的實驗數(shù)據(jù),如表2所示。
Table 2 Experiment results when P=1.5
(2)實驗結果。
為了測試改進后的算法在不同數(shù)據(jù)集中的性能,實驗對數(shù)據(jù)集進行采樣,測試不同大小數(shù)據(jù)集在相同環(huán)境下的正確率、精確率和召回率。
實驗從測試數(shù)據(jù)集中選取了8組數(shù)據(jù)作為樣本。第1組實驗總共選取了500個URL,其中可信URL數(shù)量為300個,釣魚URL為200個;第2組實驗總共選取了1 000個URL,其中可信URL為600個,釣魚URL為400個;第3組實驗總共選取了1 500個URL,其中可信URL為1 000個,釣魚URL為500個;第4組實驗總共選取了2 000個URL,其中可信URL為1 200個,釣魚URL為800個;第5組實驗總共選取了2 500個URL,其中可信URL為1 500個,釣魚URL為1 000個;第6組實驗總共選取了3 000個URL,其中可信URL為2 000個,釣魚URL為1 000個;第7組實驗總共選取了3 500個URL,其中可信URL為2 500個,釣魚URL為1 000個;第8組實驗總共選取了4 000個URL,其中可信URL為2 500個,釣魚URL為1 500個。
分別對改進前的樸素貝葉斯方法、改進后的樸素貝葉斯方法以及主流的基于決策樹的分類方法[4]在召回率、精確率和正確率等方面進行對比。
如圖5~圖7所示,改進后的樸素貝葉斯方法在正確率、精確率和召回率等方面的指標比未改進的方法有大約10%的提高。和主流的基于決策樹分類器相比,改進后的樸素貝葉斯方法的精確率、召回率都比基于決策樹的分類器要高。在正確率方面,只有當樣本數(shù)據(jù)為1 000時,基于決策樹的分類方法才高于改進后的樸素貝葉斯方法;在其余樣本點數(shù)情況下,改進后的樸素貝葉斯方法的正確率都要比基于決策樹的分類方法的正確率高;以此同時,隨著樣本數(shù)據(jù)的增大,兩者正確率的差值也會越來越大,這是因為樸素貝葉斯方法非常依賴于樣本數(shù)據(jù)集,樣本數(shù)據(jù)集越大,它在計算概率的時候就越準確。當測試數(shù)據(jù)達到3 000時,系統(tǒng)檢測的正確率達到了97.32%。因此,當用戶使用瀏覽器進行網(wǎng)絡訪問時,可以對手機的安全性進行很好的保護。
Figure 5 Comparison of Y圖5 正確率對比
Figure 6 Comparison of Q圖6 精確率對比
Figure 7 Comparison of R圖7 召回率對比
方案的運行結果如圖8所示。當用戶輸入釣魚網(wǎng)站的URL時,系統(tǒng)會很快檢測出來,并用提示框的形式提醒用戶。
Figure 8 Experiment of phishing site detection圖8 釣魚網(wǎng)站檢測實驗
以下實驗比較不同方案之間檢測效果的差異。實驗的樣本數(shù)為2 000,其中釣魚網(wǎng)站數(shù)為500,可信網(wǎng)站數(shù)為1 500。其中,基于決策樹的方案[4]是根據(jù)使用樹形結構對網(wǎng)站的特征屬性進行分類的?;趯傩约訖嗟姆诸惼魇菍?shù)據(jù)樣本的屬性進行加權處理來對釣魚網(wǎng)站進行檢測[8]。基于貝葉斯和支持向量機的分類器是將URL和網(wǎng)頁內容分別用貝葉斯和支持向量機進行分類[19]。表3展示了不同方案檢測釣魚網(wǎng)站正確率的對比。
從表3的對照結果可以看出:(1)在正確率上,本文提出的改進的樸素貝葉斯方案相比其它三個方案都有不同程度的提高;(2)本文方案的方差也稍低于其它三種方案,說明本文方案的穩(wěn)定性要好于其它三種方案。與此同時,由于貝葉斯算法在分類消耗時間上有著自身的優(yōu)勢,綜合比較可知,本文的方案要優(yōu)于其它三個方案。
Table 3 Accuracy comparison of different schemes
當用戶輸入URL開始連接網(wǎng)絡時,系統(tǒng)必須在極短的時間內對用戶輸入的URL做出判斷,如果是釣魚網(wǎng)站,需要及時提醒用戶。
反釣魚方案的檢測過程大致可以分為三個階段:(1)提取URL特征屬性;(2)通過URL加載HTML源代碼,并提取網(wǎng)頁內容的特征屬性;(3)通過樣本數(shù)據(jù)得出結果。每個階段的檢測時間如表4所示。從表4可以看出,三個階段的平均執(zhí)行時間[20]分別是0.013 s,1.3 s和0.085 s。其中,通過URL加載網(wǎng)頁內容并提取特征屬性階段占據(jù)了整個檢測階段93%的時間。
三個階段執(zhí)行時間的實驗結果是取100次結果的平均值,最終檢測一次所花費的平均時間為1.398 s。當檢測開始時,如果檢測的結果是釣魚網(wǎng)站,系統(tǒng)會用提示框的形式提醒用戶。在大多數(shù)情況下,在用戶輸入隱私信息之前,檢測的結果就會出來,這對于用戶來說是可以接受的。
Table 4 Execution time
本文針對移動平臺釣魚網(wǎng)站頻發(fā)的現(xiàn)象,提出了一種基于改進樸素貝葉斯算法的方案來檢測針對移動端的釣魚網(wǎng)站。在檢測過程中,對于缺失屬性值的數(shù)據(jù),本文用K-means算法對缺失的值進行填充;針對樸素貝葉斯算法計算概率時會出現(xiàn)過低估計的問題,本文將概率進行放大,解決了結果下溢的問題;針對樸素貝葉斯算法容易忽略屬性之間的關聯(lián)性問題,本文對不同的屬性值進行了加權處理,進而提高了檢測的正確率;根據(jù)實際情況中釣魚網(wǎng)站出現(xiàn)概率較小的情況,本文通過調整釣魚網(wǎng)站與可信網(wǎng)站的概率比值,從而進一步提高了檢測的正確率。本文實驗部署在基于Android 5.0操作系統(tǒng)的手機上,結果表明改進后的算法能夠在較短的時間內有效判斷出用戶需要連接的網(wǎng)站是否是釣魚網(wǎng)站。
雖然本方案可以有效地判別用戶連接的網(wǎng)站是否是釣魚網(wǎng)站,但是釣魚網(wǎng)站的更新速度很快,本文所選取的特征屬性只有8個,涉及的范圍不夠全面,所以需要做進一步的改進,以擴大本方案的適用范圍。