朱 怡,寧振虎,周藝華
(北京工業(yè)大學(xué)信息學(xué)部,北京100124)
作為互聯(lián)網(wǎng)的基礎(chǔ),域名系統(tǒng)(Domain Name System,DNS)的重要性不言而喻,但近年來(lái)DNS卻頻繁遭受惡意攻擊或因故障癱瘓,傳播惡意軟件、促進(jìn)命令和控制服務(wù)器[1]通信、發(fā)送垃圾郵件、網(wǎng)絡(luò)釣魚網(wǎng)頁(yè)[2]等給網(wǎng)絡(luò)安全造成了極大沖擊。DNS 的安全性之所以難以保證主要原因有:首先,DNS的服務(wù)角色決定了DNS 具有穩(wěn)定性和公開性,而且緩存的影響使得地址不會(huì)頻繁地更改,因此在DNS 服務(wù)器遭受攻擊時(shí)無(wú)法替換和隱藏IP 地址;其次,DNS 的集中性,在正常情況下,DNS服務(wù)器為多個(gè)網(wǎng)站或者用戶提供服務(wù),攻擊服務(wù)器具有很大的影響范圍,大大提高了攻擊的效率;最后,DNS 的匿名性,DNS 服務(wù)使用用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP),黑客可以很好地隱藏自己的蹤跡以免被追蹤。
在DNS 遭受的網(wǎng)絡(luò)攻擊中,仿冒域名因攻擊成本低、危害范圍廣、盈利手段多樣化等特點(diǎn),已經(jīng)成為威脅互聯(lián)網(wǎng)安全運(yùn)行的重要問(wèn)題之一[3]。仿冒域名是網(wǎng)絡(luò)蟑螂的一種形式,是一種域名搶注行為,指搶先注冊(cè)網(wǎng)絡(luò)使用者因輸入錯(cuò)誤而訪問(wèn)的域名,以期望用戶訪問(wèn)仿冒域名而非目標(biāo)網(wǎng)站域名。仿冒域名通常是與流行的知名域名非常相似的域名,大量的仿冒域名站點(diǎn)被攻擊者用來(lái)顯示廣告、將流量重定向到第三方頁(yè)面、部署釣魚網(wǎng)站或提供惡意軟件而從中獲利[4]。例如,攻擊者可以注冊(cè)facebo0k.com、microsolt.com 等域名,當(dāng)網(wǎng)絡(luò)使用者不小心錯(cuò)誤輸入或者被釣魚郵件視覺迷惑時(shí),就會(huì)訪問(wèn)這些網(wǎng)站,攻擊者由此牟取非法利益或?qū)崿F(xiàn)非法目的[5]。
仿冒域名網(wǎng)絡(luò)攻擊如今已成為國(guó)內(nèi)外安全社區(qū)和相關(guān)機(jī)構(gòu)的重點(diǎn)防護(hù)對(duì)象,提前防范仿冒域名攻擊對(duì)于保障互聯(lián)網(wǎng)正常運(yùn)行具有重要意義。基于此,本文全面了解DNS 所面臨的威脅,對(duì)仿冒域名行為進(jìn)行重點(diǎn)研究,提出了一種基于視覺特征的仿冒域名輕量級(jí)檢測(cè)方法,在仿冒域名檢測(cè)和保護(hù)網(wǎng)絡(luò)終端免受仿冒域名侵害和攻擊上有顯著效果。
本章首先對(duì)仿冒域名進(jìn)行概述,研究仿冒域名的構(gòu)造特點(diǎn);接著對(duì)當(dāng)前主要的仿冒域名檢測(cè)技術(shù)進(jìn)行分類研究,主要?jiǎng)澐譃橹鲃?dòng)檢測(cè)和被動(dòng)檢測(cè),并針對(duì)這兩大類檢測(cè)技術(shù)的原理和不足之處作詳細(xì)分析;最后介紹本文主要工作。
仿冒域名屬于典型的搶注域名[6],仿冒域名的數(shù)目隨域名注冊(cè)數(shù)目的不斷增多而不斷上漲,在實(shí)際應(yīng)用中,用戶經(jīng)常會(huì)因?yàn)殄e(cuò)誤拼寫域名而被鏈接到仿冒域名網(wǎng)站[7]。此外,計(jì)算機(jī)硬件錯(cuò)誤也會(huì)導(dǎo)致用戶訪問(wèn)仿冒域名網(wǎng)站[8]。仿冒域名的構(gòu)造方式極其簡(jiǎn)單,非法者通常能通過(guò)選擇目標(biāo)域名快速注冊(cè)大量的仿冒域名。
為了解仿冒域名的構(gòu)造特點(diǎn),從以下三方面進(jìn)行研究:
1)編輯距離或手指距離。手指距離是通過(guò)結(jié)合鍵盤上字符的排列特征對(duì)編輯距離進(jìn)行的一種改進(jìn),即利用鍵盤上相鄰位置的字符將一字符串轉(zhuǎn)換為另一字符串的最小插入、刪除、替換操作數(shù))。Moore 等[9]從 Alexa[10]排名前 6 000 的域名中選取了3 264個(gè)域名作為目標(biāo)域名,構(gòu)造了編輯距離和手指距離小于3(1 和2)的191 738 個(gè)注冊(cè)域名作為候選仿冒域名集。實(shí)驗(yàn)結(jié)果顯示,與目標(biāo)域名的編輯距離為1 和手指距離為1 的候選仿冒域名集中,仿冒域名所占比例都高達(dá)90%以上,但在編輯距離為2 和手指距離為2 的候選仿冒域名集中,仿冒域名所占比例相對(duì)較低,分別低于60%和80%。
2)目標(biāo)域名的Alexa 排名。早期非法注冊(cè)者主要針對(duì)Alexa排名靠前的域名來(lái)注冊(cè)對(duì)應(yīng)仿冒域名。后來(lái),隨著域名數(shù)目的增長(zhǎng),非法者在注冊(cè)仿冒域名時(shí)選擇的目標(biāo)域名范圍也隨之不斷擴(kuò)大。Szurdi 等[11]針對(duì) Alexa 排名前 100 萬(wàn)的域名,選取長(zhǎng)度大于5 的域名作為目標(biāo)域名,利用手指距離操作構(gòu)造生成候選仿冒域名集,通過(guò)比較目標(biāo)域名的Alexa排名情況,發(fā)現(xiàn)Alexa排名靠前的域名對(duì)應(yīng)的仿冒域名數(shù)量更多。
3)目標(biāo)域名長(zhǎng)度。早期,Banerjee 等[12]研究認(rèn)為目標(biāo)域名長(zhǎng)度是影響仿冒域名數(shù)量的一個(gè)重要因素,非法者通常會(huì)針對(duì)長(zhǎng)度較短的目標(biāo)域名注冊(cè)仿冒域名。隨后,Moore 等[9]針對(duì)不同長(zhǎng)度的目標(biāo)域名分別統(tǒng)計(jì)對(duì)應(yīng)的仿冒域名的注冊(cè)情況,發(fā)現(xiàn)只有當(dāng)目標(biāo)域名長(zhǎng)度小于5 時(shí),對(duì)應(yīng)的仿冒域名的注冊(cè)比重稍低,除此之外,域名長(zhǎng)度對(duì)仿冒域名的注冊(cè)影響很小。此后,Agten等[13]再次指明,非法者在注冊(cè)仿冒域名時(shí),不再過(guò)多關(guān)注對(duì)應(yīng)目標(biāo)域名的長(zhǎng)度。
仿冒域名吸引了眾多研究者的關(guān)注,他們通過(guò)檢測(cè)仿冒域名和測(cè)量仿冒域名現(xiàn)象以分析背后的盈利策略。Moore等[9]通過(guò)手動(dòng)檢查2 195個(gè)候選仿冒域名樣本,發(fā)現(xiàn)編輯距離為1或2的域名基本都是仿冒域名。Kintis等[14]對(duì)域名中的品牌名稱和其他關(guān)鍵詞進(jìn)行了組合研究,結(jié)果表明,仿冒域名被廣泛用于執(zhí)行各種類型的攻擊,包括網(wǎng)絡(luò)釣魚、社會(huì)工程攻擊、分支濫用、商標(biāo)濫用和惡意軟件。為了探索哪些統(tǒng)一資源定位符(Uniform Resource Locator,URL)相對(duì)其他URL更易受到仿冒域名攻擊,Tahir等[15]使用不同的URL和DNS數(shù)據(jù)集定量測(cè)量了每個(gè)URL 的仿冒現(xiàn)象,交叉驗(yàn)證了域名中存在的某些語(yǔ)義特征使其更容易受到仿冒域名攻擊。Agten等[13]對(duì)仿冒域名的相關(guān)信息進(jìn)行了持續(xù)跟蹤,發(fā)現(xiàn)仿冒域名在用戶和搶注者之間具有流通性,搶注者可以通過(guò)變換網(wǎng)頁(yè)類型改變盈利策略。Spaulding等[16]量化了不同域名仿冒方式在欺騙用戶方面的有效性,發(fā)現(xiàn)用戶通常能夠識(shí)別在域名中添加或刪除字符的仿冒域名,欺騙用戶最有效的仿冒方式是字符的替換。
通過(guò)對(duì)已有的仿冒檢測(cè)技術(shù)進(jìn)行研究,可將其相關(guān)檢測(cè)方法分為主動(dòng)檢測(cè)和被動(dòng)檢測(cè)兩類[17]。主動(dòng)檢測(cè)方法[16,18-21]的基本工作原理為:首先確定一個(gè)受保護(hù)目標(biāo)集合,然后按照一些構(gòu)造策略得到所有可能的仿冒域名列表,針對(duì)這些構(gòu)造的域名,收集Whois 注冊(cè)信息、DNS 解析信息、網(wǎng)頁(yè)信息,主動(dòng)分析并發(fā)現(xiàn)識(shí)別可能已由搶注者注冊(cè)的仿冒域名。常見的構(gòu)造策略有缺少點(diǎn)、缺少字符、字符換位、字符替換、字符重復(fù)、頂級(jí)域替換等[12,18],常見的字符拼寫錯(cuò)誤原因如鍵盤上鄰近字符擊打錯(cuò)誤[9]、視覺錯(cuò)誤[22-23]、聽覺錯(cuò)誤[24]、字符的比特位錯(cuò)誤[25]等也會(huì)體現(xiàn)在構(gòu)造策略里。被動(dòng)檢測(cè)方法是在網(wǎng)絡(luò)環(huán)境下進(jìn)行的,通過(guò)分析流量中仿冒域名的方式并發(fā)現(xiàn)與受保護(hù)集合中元素編輯距離不超過(guò)2的域名,將之判斷為仿冒域名。
顯然,主動(dòng)檢測(cè)方法需要收集域名的相關(guān)信息進(jìn)行判定,低級(jí)DNS 通信提供了有關(guān)DNS 請(qǐng)求和響應(yīng)的足夠詳細(xì)信息,使對(duì)惡意域名進(jìn)行更全面的搜索和分類成為可能[26-27],但這也限制了這些類型的檢測(cè)方法的應(yīng)用場(chǎng)景,因?yàn)樗鼈儽仨毦哂斜O(jiān)視DNS 服務(wù)器流量的權(quán)限,例如在大型互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Provider,ISP)或?qū)W?;蚬镜木W(wǎng)絡(luò)中心中,此外,訪問(wèn)DNS 服務(wù)器可能會(huì)導(dǎo)致隱私問(wèn)題。主動(dòng)仿冒域名檢測(cè)方法存在存儲(chǔ)和計(jì)算開銷較大、隱私權(quán)限等問(wèn)題,不適于在線檢測(cè)。被動(dòng)檢測(cè)方法為了克服主動(dòng)檢測(cè)方法的這些不足,試圖僅利用域名本身的特點(diǎn)進(jìn)行檢測(cè),即其算法的輸入僅僅是域名。研究[28-31]表明,良性域名和惡意域名在長(zhǎng)度、后綴分布和有意義字?jǐn)?shù)比等方面存在差異,可以作為檢測(cè)的特征。被動(dòng)仿冒域名檢測(cè)方法大都以計(jì)算域名對(duì)之間的編輯距離為基礎(chǔ),但是對(duì)短域名的檢測(cè)易產(chǎn)生大量假陽(yáng)性結(jié)果,即對(duì)于頂級(jí)域名相同且二級(jí)域名字符串長(zhǎng)度為2 的域名來(lái)說(shuō),其編輯距離永遠(yuǎn)不會(huì)超過(guò)2。以檢測(cè)京東的域名“jd.com”的仿冒域名為例,所有權(quán)威域長(zhǎng)度為2 的.com 域名(如“qq.com”)與“jd.com”的編輯距離都不會(huì)超過(guò)2,按照基于編輯距離的方法就會(huì)將其判定為仿冒域名,由此帶來(lái)大量錯(cuò)誤。Liu等[22]基于編輯距離算法提出了一種反向查找方法TypoPegging,可以快速準(zhǔn)確地獲得給定域中最相似的熱門網(wǎng)站,但是沒有很好地處理域名視覺模仿的問(wèn)題。
可見,已有的主動(dòng)、被動(dòng)仿冒檢測(cè)技術(shù)都存在一定的缺陷?;诖?,本文設(shè)計(jì)了基于視覺特征的仿冒域名輕量級(jí)檢測(cè)方法,并在真實(shí)數(shù)據(jù)集上驗(yàn)證了該方法的有效性,主要工作包括以下幾點(diǎn):
1)采用僅基于域名字符串的輕量級(jí)檢測(cè)策略進(jìn)行仿冒域名檢測(cè),降低了計(jì)算和存儲(chǔ)開銷,適合應(yīng)用在大規(guī)模DNS 應(yīng)用環(huán)境下的場(chǎng)景檢測(cè)。
2)提出了域名視覺相似度的計(jì)算方法。一方面,結(jié)合域名視覺相似度構(gòu)建仿冒域名檢測(cè)模型能解決傳統(tǒng)編輯距離在仿冒域名檢測(cè)上帶來(lái)的假陽(yáng)性問(wèn)題;另一方面,從視覺角度檢測(cè)仿冒域名可以很好地處理域名視覺模仿的情況。
3)在真實(shí)數(shù)據(jù)集上進(jìn)行了大量實(shí)驗(yàn),驗(yàn)證了檢測(cè)效果。
本章主要介紹域名的視覺特征測(cè)量方法,通過(guò)對(duì)傳統(tǒng)編輯距離算法的改進(jìn)并結(jié)合域名的視覺相似度來(lái)構(gòu)建仿冒域名檢測(cè)模型。
編輯距離是對(duì)兩個(gè)給定字符串間差異程度的量化測(cè)量,編輯距離越小,兩字符串越相似,當(dāng)兩字符串相等時(shí),編輯距離為0。測(cè)量的方式是看至少需要多少次的操作把一個(gè)字符串轉(zhuǎn)變成另一個(gè)字符串,其中,許可的變換操作包括:插入、刪除和替換。
對(duì)于兩個(gè)給定的字符串P 和Q,記其長(zhǎng)度分別為m 和n,那么字符串 P 和 Q 之間的編輯距離記作 DP,Q(i,j),遞歸公式為:
其中:1 ≤ i ≤ m,1 ≤ j ≤ n。編輯距離算法偽代碼見算法1,其空間復(fù)雜度和時(shí)間復(fù)雜度均為O(m*n)。
算法1 編輯距離。
function Edit_Distance(string P,string Q)
m<-length(string P);n<-length(string Q)
創(chuàng)建一個(gè)距離矩陣G[x + 1,y + 1]
#初始化
for(i = 0;i ≤ m;i + +)
G[i,0]= i
for(i = 0;i ≤ n;i + +)
G[0,i]= i
#遞歸
for(i = 1;i ≤ m;i + +)
for(j = 1;j ≤ n;j + +)
if(P[i - 1]== Q[ j - 1])
G[i,j]= G[i - 1,j - 1]
else G[i,j]= min(G[i,j - 1],G[i - 1,j],G[i - 1,j - 1]) + 1
#輸出
return G[m,n]
傳統(tǒng)編輯距離算法中并沒有考慮域名字符的位置、字符相似度、操作類型(插入、刪除、替換)等因素,統(tǒng)一賦值為相同的權(quán)重(設(shè)置為1)。從機(jī)器的角度考慮,編輯距離能夠測(cè)量?jī)蓚€(gè)字符串的相似度。但是,在面對(duì)域名時(shí),人的視覺卻與機(jī)器的“視覺”不同,字符的位置、字符相似度、操作種類都可能影響該域名是否是仿冒域名的判斷。
鑒于此,提出了基于視覺特征的仿冒域名輕量級(jí)檢測(cè)方法,主要考慮字符的位置、字符相似度、操作種類對(duì)字符串相似度的影響,具體說(shuō)明如下。
字符的位置:對(duì)于一個(gè)給定域名,分別改變其首字符和靠后位置的字符形成新域名,通常人們更容易察覺出改變首字符的那個(gè)域名的不同。 比如域名“nicrosoft. com”和“microsolt. com”與正常域名“microsoft. com”的編輯距離相同(編輯距離都為1),但是,對(duì)于“nicrosoft. com”和“microsolt.com”,人們更容易察覺出“nicrosoft.com”與“microsoft.com”的不同。這說(shuō)明域名字符的位置對(duì)人視覺的影響不同,應(yīng)對(duì)不同位置的字符賦予不同的權(quán)重。
字符相似度:字符不同,對(duì)人的影響也不同。比如域名“arnazon. com”(ARNAZON)與 正 常 域 名“amazon. com”(AMAZON)的編輯距離為2,“akazon.com”(AKAZON)與正常域 名“amazon. com”(AMAZON)的 編 輯 距 離 為 1。 即 使“arnazon. com”(ARNAZON)與 正 常 域 名“amazon. com”(AMAZON)的編輯距離更大,但是,卻更難察覺“arnazon.com”與“amazon.com”的不同。因此,應(yīng)對(duì)不同的字符賦予不同的權(quán)重。
操作種類:操作種類不同,人的視覺反應(yīng)也不同。比如,對(duì)于“日本之窗”的域名“jpwindow.com”,當(dāng)刪除其第二和第五個(gè)字符時(shí)會(huì)變換為“jwidow.com”;當(dāng)替換其第二和第五個(gè)字符為其他字符時(shí)會(huì)變換成“jqwimdow.com”。顯然,“jpwindow.com”和“jwidow.com”容易區(qū)分開,而“jqwimdow.com”和“jpwindow.com”卻相對(duì)困難;但事實(shí)上,“jwidow.com”和“jqwimdow.com”都與正常域名“jpwindow.com”有相同的編輯距離(編輯距離為2)。因此,應(yīng)對(duì)不同的操作賦予不同的權(quán)重。
域名視覺特征的測(cè)量基于對(duì)編輯距離的完善,在編輯距離中加入了對(duì)字符位置、字符相似度、操作種類的考慮,將加權(quán)編輯距離定義為:
其中:1 ≤ i ≤ m,1 ≤ j ≤ n,? 表示空字符;Pi表示字符串P 的第 i 個(gè)字符,Qj表示字符串 Q 的第 j 個(gè)字符;sub 函數(shù)的計(jì)算公式如式(3)所示,其中,α 反映字符位置的影響,M 值反映字符相似度和操作種類的影響。
其中:c1、c2表示字符串中的某兩個(gè)字符;l1、l2表示此兩個(gè)字符在對(duì)應(yīng)字符串中的位置。從式(3)可以發(fā)現(xiàn),原編輯距離式(1)本質(zhì)上是加權(quán)編輯距離的一種特殊情況,如式(4)所示:
本章主要介紹字符相似距離的測(cè)量方法,即計(jì)算M 值。對(duì)于字符“0”(零)和“o”(字母o),對(duì)應(yīng)的M 值計(jì)算方法如圖1所示。
兩個(gè)字符的視覺相似距離計(jì)算過(guò)程描述如下:
1)將字符轉(zhuǎn)換為黑白二值圖片。
2)將字符二值圖片轉(zhuǎn)換為一維向量,轉(zhuǎn)換方式如圖1所示:
3)計(jì)算兩個(gè)向量直接的視覺距離,向量v1和v2的視覺距離為:
關(guān)于字符相似度,考慮以下幾方面:
1)單字符與單字符間的相似度。這涉及到“0~9”“a~z”“-”(連字符)“.”(點(diǎn)字符)共計(jì)38 個(gè)單字符,因?yàn)橛蛎址兄辉试S使用此38 個(gè)字符,且不區(qū)分大小寫。此方面能排除相似單字符帶來(lái)的視覺干擾,例如“0”(數(shù)字零)與“o”(字母o)、“1”(數(shù)字1)與“l(fā)”(小寫字母 L)、“2”與“z”、“i”與“l(fā)”、“c”與“o”、“h”與“n”等。
2)兩個(gè)“窄”字符與一個(gè)“寬”字符間的相似度?!罢弊址小?”“-”“.”、“i”“j”“l(fā)”等,除此之外,其余都是“寬”字符。此方面是考慮到了兩個(gè)“窄”字符與某個(gè)“寬”字符相似的情況,例如“ii”與“n”相似等。
3)兩個(gè)“寬”字符與一個(gè)“寬”字符間的相似度。此方面考慮到了某兩個(gè)“寬”字符與某個(gè)“寬”字符相似時(shí)帶來(lái)的視覺干擾現(xiàn)象,例如“nn”(兩個(gè)小寫的字母N)與“m”、“vv”(兩個(gè)小寫的字母V)與“w”、“rn”(小寫的R和N)與“m”相似等。
4)一個(gè)“窄”字符加上一個(gè)“寬”字符與其他“寬”字符間的相似度,例如“cl”(小寫的C和L)與“d”相似等。
5)兩個(gè)“寬”字符與兩個(gè)“寬”字符間的相似度,例如“nm”與“mn”、“hn”與“nh”相似等。
圖1 字符相似距離的計(jì)算過(guò)程示意圖Fig. 1 Schematic diagram of computation process of character similarity distance
綜上,綜合考慮字符位置、字符相似度和操作種類對(duì)仿冒域名檢測(cè)的判斷影響,基于視覺特征的編輯距離算法偽代碼見算法2。
算法2 基于視覺特征的編輯距離。
function Compound_Edit_Distance(string P,string Q)
刪除string P,string Q 對(duì)應(yīng)位置相同的字符得到string P1,string Q1
m<-length(string P1);n<-length(string Q1)
構(gòu)造4個(gè)list,list1保存單字符間的相似值M1,list2保存單字符與
雙字符的相似值M2,list3 保存雙字符與單字符的相似值M3,
list4保存雙字符與雙字符的相似值M4
構(gòu)造兩個(gè)一維數(shù)組V0[n + 1],V1[n + 1]
for(i = 0;i ≤ n;i + +)
V0[i]= position_weighti
for(i = 0;i ≤ m;i + +)
V1[0]= i
for (j = 1;j ≤ n;j + +)
if(string P[i - 1]==string Q[ j - 1]):
V1[ j]= V0[ j - 1]
else if 當(dāng)前比較的兩個(gè)字符in list1:
V1[ j]= min(V0[ j]+ position_weight,V1[ j - 1]+
position_weight,V0[ j - 1]+ position_weight*M1)
else if 當(dāng)前比較的兩個(gè)字符in list2:
V1[ j]= min(V0[ j]+ position_weight,V1[ j - 1]+
position_weight,V0[ j - 1]+
position_weight*M1,V0[ j]+
position_weight*M2)
else if 當(dāng)前比較的兩個(gè)字符in list3:
V1[ j]= min(V0[ j]+ position_weight,V1[ j - 1]+
position_weight,V0[ j - 1]+
position_weight*M1,V0[ j]+
position_weight*M3)
else if 當(dāng)前比較的兩個(gè)字符in list4:
V1[ j]= min(V0[ j]+ position_weight,V1[ j - 1]+
position_weight,V0[ j - 1]+
position_weight*M1,V0[ j]+
position_weight*M4)
for(j = 0;j <= n;j + +)
V0[ j]= V1[ j]
#輸出
return V1[n]
本章利用所提出的策略構(gòu)建了一個(gè)仿冒域名檢測(cè)的原型系統(tǒng),并且在真實(shí)數(shù)據(jù)集上進(jìn)行測(cè)試。實(shí)驗(yàn)環(huán)境為Windows 10 主機(jī),8 GB 內(nèi)存,512 GB 固態(tài)硬盤(Solid State Disk,SSD),編程軟件為JetBrains PyCharm,編程語(yǔ)言為Python。所選用的實(shí)驗(yàn)對(duì)比方案采用了目前最常用的基于編輯距離的判定方案。
所有實(shí)驗(yàn)都在真實(shí)的數(shù)據(jù)集上進(jìn)行,且對(duì)所有技術(shù)都給出了性能評(píng)價(jià),評(píng)價(jià)的指標(biāo)包括精確率、召回率和F1值。
精確率針對(duì)預(yù)測(cè)結(jié)果而言,它表示預(yù)測(cè)為正的樣本中有多少是真正的正樣本?!邦A(yù)測(cè)為正”有兩種可能,其一是把正類預(yù)測(cè)為正類,其二是把負(fù)類預(yù)測(cè)為正類,精確率即是第一種情況所占的比重。召回率針對(duì)原來(lái)的樣本集而言,它表示的是樣本中的正例有多少被預(yù)測(cè)正確了。預(yù)測(cè)時(shí)也有兩種可能,其一是把原來(lái)的正類預(yù)測(cè)為正類,其二是把原來(lái)的正類預(yù)測(cè)為負(fù)類,召回率即是第一種情況所占的比重。精確率和召回率取值在0~1,數(shù)值越接近1,評(píng)價(jià)結(jié)果就越高。但研究表明,精確率與召回率兩者基本存在一種“互補(bǔ)”的關(guān)系,即其中一個(gè)的值必隨另一個(gè)值的增高而降低。所以需要一個(gè)調(diào)和的度量標(biāo)準(zhǔn),F(xiàn)1值即為精確率和召回率的調(diào)和平均值,它可以綜合這兩個(gè)指標(biāo),直接被用來(lái)評(píng)價(jià)被評(píng)估對(duì)象的整體水平。對(duì)分類器的精確率P(Precision)、召回率R(Recall)和F1值的定義如下:
其中:真正例TP(True Positive)表示樣本為正類,預(yù)測(cè)結(jié)果也為正類的個(gè)數(shù),即分類器能夠正確地檢測(cè)出仿冒域名;真負(fù)例TN(True Negative)表示樣本為負(fù)類,預(yù)測(cè)結(jié)果也為負(fù)類的個(gè)數(shù),即分類器能夠正確地檢測(cè)出正常域名;假正例FP(False Positive)表示樣本為負(fù)類,預(yù)測(cè)結(jié)果為正類的個(gè)數(shù),即分類器不能正確地檢測(cè)出仿冒域名;假負(fù)例FN(False Negative)表示樣本為正類,預(yù)測(cè)結(jié)果為負(fù)類的個(gè)數(shù),即分類器不能正確地檢測(cè)出正常域名。
實(shí)驗(yàn)的數(shù)據(jù)來(lái)源于真實(shí)數(shù)據(jù)。其中目標(biāo)域名來(lái)自Python編程爬取Alexa 排名靠前的域名,由于Alexa 根據(jù)域名三個(gè)月累積的訪問(wèn)信息為排名依據(jù),因此使用這些數(shù)據(jù)作為白名單比較合理。實(shí)驗(yàn)數(shù)據(jù)集的規(guī)模為33 412,其中正樣本數(shù)為16 273,負(fù)樣本數(shù)為17 139。
正樣本數(shù)據(jù)構(gòu)造:對(duì)于Alexa 排名前500 的域名,利用NCC Group 在 GitHub 上開源的 typofinder 工具[32]獲得其仿冒域名列表。該工具基于常見的仿冒域名構(gòu)造策略對(duì)給定域名構(gòu)建可能的候選仿冒域名列表,并主動(dòng)獲取每個(gè)候選域名的相關(guān)信息來(lái)判定其是否為真實(shí)的仿冒域名,因而精確率相對(duì)較高。對(duì)這500個(gè)域名,限制域名長(zhǎng)度不大于20,總計(jì)獲取了16 273個(gè)仿冒域名,構(gòu)成了實(shí)驗(yàn)數(shù)據(jù)的正樣本。
負(fù)樣本數(shù)據(jù)構(gòu)造:基于爬取出的目標(biāo)域名構(gòu)造了17 139個(gè)仿冒域名,這17 139 個(gè)域名是除去了上述500 個(gè)域名后從Alexa 排名前50 000 的域名中隨機(jī)選擇的目標(biāo)域名構(gòu)造產(chǎn)生的,域名長(zhǎng)度同樣限制為不超過(guò)20,為了更好地觀察在短域名上的檢測(cè)效果,限制域名對(duì)的編輯距離不超過(guò)3,排除了那500 個(gè),所以這其中的任何一個(gè)域名都不會(huì)是另外一個(gè)網(wǎng)站的仿冒域名,由此構(gòu)成了實(shí)驗(yàn)數(shù)據(jù)的負(fù)樣本。
此外,typofinder工具的構(gòu)造策略包含:
刪減字符:原始“abc”,構(gòu)造:“ab”“ac”“bc”;
復(fù)制字符:原始“abc”,構(gòu)造:“aabc”“abbc”“abcc”;
轉(zhuǎn)置字符(交換兩個(gè)字符的位置):原始“abc”,構(gòu)造:“acb”“bac”;
按照鍵盤上該字符的附近位置的字符替換原字符:原始“abc”,構(gòu)造:“abd”“abf”“abv”“abx”“afc”“agc”“ahc”“anc”“avc”“qbc”“sbc”“wbc”“xbc”“zbc”;
鍵入錯(cuò)誤的序列:原始“aabcc”,構(gòu)造:“aabdd”“aabff”“aabvv”“aabxx”“qqbcc”“ssbcc”“wwbcc”“xxbcc”“zzbcc”;
按照鍵盤上該字符的附近位置的字符插入字符:原始“abc”,構(gòu) 造 :“abcd”“abcf”“abcv”“abcx”“abfc”“abgc”“abhc”“abnc”“abvc”“aqbc”。
對(duì)于判定一個(gè)域名是否為另一個(gè)域名的仿冒域名問(wèn)題,將本文基于視覺特征的仿冒域名輕量級(jí)檢測(cè)方法與基于編輯距離的判定方法進(jìn)行了對(duì)比?;诰庉嬀嚯x的方法需要計(jì)算兩個(gè)域名間的編輯距離,如果編輯距離小于或等于設(shè)定的閾值θ,則認(rèn)為前一個(gè)域名為后一個(gè)域名的仿冒域名,在實(shí)際應(yīng)用中,編輯距離的閾值θ通常取1或2。一共做了10組對(duì)比實(shí)驗(yàn),同組對(duì)比實(shí)驗(yàn)使用同樣的數(shù)據(jù)集,組與組之間使用不同的數(shù)據(jù)集,這10 組對(duì)比實(shí)驗(yàn)的數(shù)據(jù)集都是基于4.2 節(jié)中提到的方法構(gòu)造的正、負(fù)樣本分別為16 273、17 139,總規(guī)模為33 412的數(shù)據(jù)集。表2 為基于編輯距離的判定方法在θ取值分別為1、2 和3 時(shí)的實(shí)驗(yàn)結(jié)果。對(duì)這10 次實(shí)驗(yàn)結(jié)果取平均可以看到,在基于編輯距離的判定方法中,當(dāng)閾值θ= 1 時(shí),F(xiàn)1值最大,為 0.904 9,但是隨著閾值θ的增大,F(xiàn)1值會(huì)驟減;當(dāng)θ= 2時(shí),F(xiàn)1值降至0.844 5;當(dāng)θ= 3時(shí),F(xiàn)1值更是下降到0.521 2,所以用基于編輯距離的方法進(jìn)行仿冒域名判定時(shí),閾值θ設(shè)定為1,即當(dāng)編輯距離小于1 時(shí),就認(rèn)為該域名為比對(duì)域名的仿冒域名。
此外,由表1 可以看到,基于編輯距離的方法在θ= 2 時(shí)精確率較低,這是由于存在這樣的實(shí)際情況:對(duì)于“jd.com”和“qq.com”這樣的域名對(duì),此兩個(gè)域名之間的編輯距離為2,在閾值(θ= 2)范圍內(nèi),所以會(huì)被判定為仿冒域名,但事實(shí)上這兩個(gè)域名都屬于知名域名,并不存在仿冒現(xiàn)象。
在應(yīng)用本文方法基于視覺特征的仿冒域名輕量級(jí)檢測(cè)方法進(jìn)行實(shí)驗(yàn)時(shí),字符位置的權(quán)重α是這樣設(shè)計(jì)的:從域名的首字符開始,權(quán)重設(shè)定為α的等比遞減數(shù)值(α,α2,α3,…,αn),這樣比較符合域名首字符的影響較大的現(xiàn)實(shí)情況。不同α取值得到的實(shí)驗(yàn)結(jié)果如圖2所示,可以看到當(dāng)α= 0.95時(shí)的效果最好,所以設(shè)定字符位置的權(quán)重定為0.95 的等比遞減值(0.95,0.952,0.953,…,0.95n)。
圖2 字符位置權(quán)重α不同取值下的評(píng)價(jià)結(jié)果Fig. 2 Evaluation results under different values of character position weight α
表1 基于編輯距離判定方法的實(shí)驗(yàn)結(jié)果Tab. 1 Experimental results of determination method based on edit distance
實(shí)驗(yàn)過(guò)程中,不再手動(dòng)設(shè)置閾值θ,而是將閾值θ設(shè)定在(0,2)的區(qū)間內(nèi),從0開始每次遞增0.01得到對(duì)應(yīng)的F1值,讓程序輸出選擇最大的F1值,同樣進(jìn)行10 次實(shí)驗(yàn),每次實(shí)驗(yàn)所用的數(shù)據(jù)集都分別與上述基于編輯距離的判定方法的10 次實(shí)驗(yàn)的數(shù)據(jù)集保持一致。本文基于視覺特征的仿冒域名輕量級(jí)檢測(cè)結(jié)果如表2所示。
表2 基于視覺特征的仿冒域名輕量級(jí)判定方法的實(shí)驗(yàn)結(jié)果Tab. 2 Experimental results of lightweight detection method for typosquatting based on visual features
對(duì)于基于編輯距離的判定方法和本文方法在仿冒域名檢測(cè)上的效果可以通過(guò)F1值進(jìn)行比對(duì),分別對(duì)基于編輯距離判定方法在θ分別取1、2、3的10次結(jié)果和本文方法的10次結(jié)果的F1值取平均,可以得到圖3的檢測(cè)效果對(duì)比。
圖3 兩種仿冒域名檢測(cè)方法效果對(duì)比Fig. 3 Comparison of two detection methods for typosquatting
從圖3 可以得到,本文基于視覺特征的仿冒域名輕量級(jí)檢測(cè)方法相較基于編輯距離的判定方法在閾值θ= 1 和θ= 2時(shí),F(xiàn)1值分別提高了5.98%和13.56%,由此可見,本文方法對(duì)于仿冒域名檢測(cè)有更高的檢測(cè)精確率和召回率,從字符的位置、字符相似度、操作種類三個(gè)方面改進(jìn)傳統(tǒng)編輯距離算法能解決域名視覺模仿的情況,使得仿冒域名的檢測(cè)效果更好,準(zhǔn)確度更高。
在相同的實(shí)驗(yàn)環(huán)境下分別構(gòu)造文獻(xiàn)[26-27,33]中的模型、基于傳統(tǒng)編輯距離算法的仿冒域名檢測(cè)模型和本文基于視覺特征的仿冒域名檢測(cè)模型,它們的性能比較結(jié)果如表4所示。
表3 各方法的性能比較Tab. 3 Performance comparison of various algorithms
由表4 可以看出,文獻(xiàn)[26-27,33]中提出的檢測(cè)方法的內(nèi)存開銷較大,這是因?yàn)檫@些算法均需要收集域名的相關(guān)特征信息如Whois 注冊(cè)信息、DNS 解析信息、網(wǎng)頁(yè)信息、流量等進(jìn)行檢測(cè)判斷。與文獻(xiàn)[26-27,33]中的方法相比,基于編輯距離的方法和本文方法內(nèi)存開銷較小,這是因?yàn)槠渌惴ㄝ斎雰H是域名字符串,不需要利用DNS 解析信息等額外特征信息,能大幅減小存儲(chǔ)開銷,本文算法的“輕量級(jí)”也正是體現(xiàn)在此,算法僅利用域名的字符串進(jìn)行判斷。此外,相比原編輯距離算法(算法1),本文方法(算法2)在空間復(fù)雜度和時(shí)間效率上進(jìn)行了優(yōu)化,通過(guò)對(duì)算法結(jié)構(gòu)的調(diào)整,將二維數(shù)組改為兩個(gè)一維數(shù)組,其空間復(fù)雜度由O(m*n)減小到了O(min(m,n));通過(guò)刪除字符串中相對(duì)應(yīng)位置相同的字符后進(jìn)行計(jì)算,使得計(jì)算量減小,所占內(nèi)存減少,提高了計(jì)算效率,時(shí)間復(fù)雜度降為O(m1*n1)(m1≤m,n1≤n)。由表3 也可看出,本文方法在內(nèi)存開銷、計(jì)算時(shí)間和F1這幾個(gè)指標(biāo)上都優(yōu)于原編輯距離算法。綜合考慮算法內(nèi)存開銷、計(jì)算時(shí)間和F1值等可知,本文提出的基于視覺特征的仿冒域名檢測(cè)方法性能更優(yōu)。
本文針對(duì)仿冒域名的檢測(cè)問(wèn)題,提出了一種輕量級(jí)的基于域名字符串的檢測(cè)方法,通過(guò)綜合考慮域名字符位置、字符相似度、操作種類對(duì)域名視覺的影響,提高了仿冒域名的檢測(cè)效率。實(shí)驗(yàn)結(jié)果表明本文方法具有良好的檢測(cè)效果,對(duì)于防范仿冒域名攻擊具有重要意義。