劉 冰 楊 學(xué) 楊 琪 李雪妮 馬永征
(中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心 北京 100190)
隨著大數(shù)據(jù)、互聯(lián)網(wǎng)的不斷發(fā)展,域名(Domain Name)、IP與自治系統(tǒng)號(hào)碼(ASN)等互聯(lián)網(wǎng)基礎(chǔ)資源的規(guī)模和監(jiān)管難度不斷增大。伴隨網(wǎng)站承載形式的日趨多元化和互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展,各類網(wǎng)絡(luò)攻擊方法[1]層出不窮,網(wǎng)絡(luò)空間治理的難度日益增加。不良網(wǎng)絡(luò)應(yīng)用是各種網(wǎng)絡(luò)攻擊的關(guān)鍵組成部分,如釣魚(yú)網(wǎng)站和僵尸網(wǎng)絡(luò)等[2],同時(shí)也是各類涉賭、涉黃、涉暴網(wǎng)站的主要載體,威脅著網(wǎng)絡(luò)空間的安全。因此,及時(shí)發(fā)現(xiàn)和鑒別這些不良網(wǎng)絡(luò)應(yīng)用,并阻止利用其進(jìn)行網(wǎng)絡(luò)攻擊的各類技術(shù)手段對(duì)維護(hù)網(wǎng)絡(luò)空間的安全與穩(wěn)定是至關(guān)重要的。近年來(lái),不良網(wǎng)絡(luò)應(yīng)用的檢測(cè)與發(fā)現(xiàn)越來(lái)越受到人們的關(guān)注。
目前,針對(duì)不良網(wǎng)絡(luò)應(yīng)用檢測(cè)與發(fā)現(xiàn)的方法不盡相同,主要是通過(guò)特征提取的方式,獲取網(wǎng)站文本數(shù)據(jù)特征或其他多維度的特征,一般涉及的特征大致分為兩種:(1) 通過(guò)爬取網(wǎng)站數(shù)據(jù),根據(jù)內(nèi)容進(jìn)行文本分析,提取文本特征[3];(2) 從網(wǎng)站域名注冊(cè)和運(yùn)維的角度分析域名系統(tǒng)(Domain Name System,DNS)相關(guān)數(shù)據(jù)并提取相關(guān)特征[4-7]。這種基于特征的檢測(cè)途徑都需要進(jìn)行基于機(jī)器學(xué)習(xí)算法的分類識(shí)別與檢測(cè),通過(guò)將這些特征標(biāo)記成訓(xùn)練數(shù)據(jù)集并構(gòu)建分類器來(lái)區(qū)分不良域名和正常域名。這類方法的主要問(wèn)題是許多局部特征(比如域名本地屬性特征和記錄類型特征等)通常并不健壯,攻擊者可以很容易地改變這些特征來(lái)逃避檢測(cè),從而并不會(huì)對(duì)攻擊能力造成影響。例如,如果將域名的緩存時(shí)間(Time To Live,TTL)設(shè)定為檢測(cè)目標(biāo),那么攻擊者可以簡(jiǎn)單地通過(guò)更改DNS查詢緩存的時(shí)間來(lái)干擾檢測(cè)結(jié)果從而達(dá)到攻擊目的,其根本原因在于現(xiàn)有工作中提取的許多特征是基于單個(gè)域名或主機(jī)的局部特征。因此,攻擊者通過(guò)合理化地更改這些特征,很容易使不良網(wǎng)絡(luò)應(yīng)用不符合分類器中指定的特征模式,從而影響分類檢測(cè)算法的效果。
針對(duì)此現(xiàn)象,Khalil等[8]提出了一種基于圖數(shù)據(jù)分析的不良網(wǎng)絡(luò)應(yīng)用快速發(fā)現(xiàn)算法。該算法可作為機(jī)器學(xué)習(xí)分類方法的補(bǔ)充算法,利用域名與IP、IP與ASN、域名與域名之間的全局關(guān)系解決域名局部特征不健壯問(wèn)題,提升算法穩(wěn)健性,并通過(guò)一種簡(jiǎn)單的度量方法來(lái)反映攻擊者控制的資源之間的內(nèi)在關(guān)聯(lián),達(dá)到利用少量已知不良域名快速關(guān)聯(lián)和發(fā)現(xiàn)大量潛在不良網(wǎng)絡(luò)應(yīng)用的目的,降低種子數(shù)據(jù)成本,提高不良網(wǎng)絡(luò)應(yīng)用發(fā)現(xiàn)的可擴(kuò)展性。但是,該算法在計(jì)算惡意得分時(shí)僅考慮遍歷域名關(guān)系圖譜中的所有連通圖,忽略了排除在連通圖之外的那些與種子域名有密切關(guān)聯(lián)的域名,因此該算法更適用于連通圖涵蓋域名較多的情況,對(duì)于連通圖整體規(guī)模較小且有較多節(jié)點(diǎn)散落在連通圖外的情況表現(xiàn)不佳。因此,本文針對(duì)該算法進(jìn)行了改進(jìn)和優(yōu)化,補(bǔ)充對(duì)非連通圖內(nèi)域名節(jié)點(diǎn)惡意得分的計(jì)算方法,擴(kuò)大了種子域名的作用范圍,對(duì)不在連通圖中但與種子域名同樣有密切關(guān)聯(lián)的域名進(jìn)行了惡意得分的補(bǔ)充計(jì)算,同時(shí)在種子獲取方式和基于圖路徑的算法性能方面做了優(yōu)化處理。為了評(píng)估本文算法的有效性,我們進(jìn)行了大量的實(shí)驗(yàn),通過(guò)主動(dòng)采集的.CN域名DNS解析數(shù)據(jù)和從公開(kāi)來(lái)源獲取的有效數(shù)據(jù),仔細(xì)權(quán)衡不同參數(shù)配置對(duì)真陽(yáng)率和假陽(yáng)率的影響來(lái)評(píng)估本文算法的實(shí)用性和有效性。實(shí)驗(yàn)結(jié)果表明,本文算法在保持較低假陽(yáng)率(小于0.5%)的同時(shí),可以獲得較高的真陽(yáng)率(大于99%)。此外,即使使用少量已知不良種子域名(數(shù)百個(gè)),本文算法也可以發(fā)現(xiàn)大量潛在不良網(wǎng)絡(luò)應(yīng)用所使用的域名(上萬(wàn)個(gè)),因而具有較好的大規(guī)模工程化實(shí)際應(yīng)用的前景。
本文的實(shí)驗(yàn)數(shù)據(jù)主要來(lái)源于國(guó)家互聯(lián)網(wǎng)基礎(chǔ)資源大數(shù)據(jù)(服務(wù))平臺(tái)[9]以及來(lái)源于MaxMind開(kāi)源數(shù)據(jù)庫(kù)GeoLite2[10]的ASN數(shù)據(jù)。
國(guó)家互聯(lián)網(wǎng)基礎(chǔ)資源大數(shù)據(jù)(服務(wù))平臺(tái)[9]在互聯(lián)網(wǎng)基礎(chǔ)資源數(shù)據(jù)的采集和清洗方面具備面向全球互聯(lián)網(wǎng)范圍的主動(dòng)式數(shù)據(jù)采集和探測(cè)能力,可批量采集結(jié)構(gòu)化業(yè)務(wù)數(shù)據(jù),批量導(dǎo)入半結(jié)構(gòu)化文件數(shù)據(jù),實(shí)時(shí)爬取非結(jié)構(gòu)化網(wǎng)絡(luò)數(shù)據(jù),還可以實(shí)時(shí)采集被動(dòng)式DNS數(shù)據(jù)(解析日志),形成了大數(shù)據(jù)平臺(tái)的一體化數(shù)據(jù)采集及清洗能力。其主動(dòng)式數(shù)據(jù)采集系統(tǒng)已具備覆蓋2億域名、超過(guò)100萬(wàn)臺(tái)DNS服務(wù)器的深度采集和探測(cè)能力,能高效地采集并結(jié)構(gòu)化域名DNS解析數(shù)據(jù)(以反映域名與IP對(duì)應(yīng)關(guān)系的A記錄為主,另有CNAME記錄、MX記錄等其他DNS解析數(shù)據(jù)),本文中應(yīng)用的是此域名A記錄解析數(shù)據(jù)庫(kù)。
本文使用了國(guó)家互聯(lián)網(wǎng)基礎(chǔ)資源大數(shù)據(jù)(服務(wù))平臺(tái)2019年7月采集的域名A記錄解析數(shù)據(jù),域名A記錄總數(shù)為3.76億條,其中異常數(shù)據(jù)主要包括四種情況:查詢返回服務(wù)器異常SERVFAIL、查詢超時(shí)、域名不存在和域名無(wú)A記錄。對(duì)異常數(shù)據(jù)進(jìn)行清洗過(guò)濾后,剩余A記錄總數(shù)為2.97億條(含所有.CN和部分.COM等頂級(jí)域數(shù)據(jù))。本文只選取了.CN域名的A記錄解析數(shù)據(jù),過(guò)濾了其他頂級(jí)域的數(shù)據(jù),共計(jì)1 591萬(wàn)個(gè).CN域名節(jié)點(diǎn)、219萬(wàn)個(gè)IP節(jié)點(diǎn),以及1 683萬(wàn)條域名解析A記錄(域名-IP邊)。另外,本文采用GeoLite2開(kāi)源數(shù)據(jù)庫(kù)的ASN數(shù)據(jù)(選用2019年3月26日的數(shù)據(jù))進(jìn)行IP與ASN的關(guān)聯(lián)處理,并應(yīng)用開(kāi)源圖數(shù)據(jù)庫(kù)HugeGraph[11]進(jìn)行圖數(shù)據(jù)存儲(chǔ)??梢暬植繄D結(jié)構(gòu)如圖1所示,其中已在域名節(jié)點(diǎn)處標(biāo)注上對(duì)應(yīng)域名信息,未標(biāo)注的節(jié)點(diǎn)是與域名關(guān)聯(lián)的IP節(jié)點(diǎn),由圖1可知,域名與IP存在著多對(duì)多的關(guān)聯(lián)關(guān)系。
圖1 域名解析圖(局部)
Khalil等[8]提出的算法中,核心是發(fā)現(xiàn)和分析域名之間的全局關(guān)聯(lián)關(guān)系而不是局限于對(duì)域名局部特征的分析。我們通過(guò)主動(dòng)采集的DNS解析數(shù)據(jù)和ASN數(shù)據(jù)構(gòu)建出域名、IP和ASN之間的全局關(guān)聯(lián)關(guān)系,當(dāng)然也可以通過(guò)被動(dòng)DNS數(shù)據(jù)或集成其他數(shù)據(jù)源(如DNS日志和WHOIS記錄等)來(lái)增強(qiáng)此關(guān)聯(lián)關(guān)系的可信度。雖然DNS記錄的很多特征可以通過(guò)不同方式更改,但是攻擊者想要達(dá)到攻擊目的就必須要把不良網(wǎng)絡(luò)應(yīng)用映射到他們可以控制或可以訪問(wèn)的IP上[12]。一般情況下,攻擊者會(huì)通過(guò)頻繁注冊(cè)新域名來(lái)規(guī)避檢測(cè),不良網(wǎng)絡(luò)應(yīng)用之間也因此建立起了關(guān)聯(lián)。例如,在針對(duì)反病毒威脅生態(tài)系統(tǒng)的縱向分析[13]中顯示,這些惡意行為中使用的不良網(wǎng)絡(luò)應(yīng)用隨著時(shí)間的推移在整個(gè)互聯(lián)網(wǎng)空間中大規(guī)模移動(dòng),它們之間共享著許多不同的特征。因此,多個(gè)不良網(wǎng)絡(luò)應(yīng)用很有可能最終被映射在相同的IP上,同樣,多個(gè)不同IP也很可能關(guān)聯(lián)著相同的不良網(wǎng)絡(luò)應(yīng)用。為了解除它們之間的這種關(guān)系,攻擊者只能盡可能地減少每個(gè)不良網(wǎng)絡(luò)應(yīng)用指向的IP數(shù)量以及每個(gè)IP主機(jī)關(guān)聯(lián)不良網(wǎng)絡(luò)應(yīng)用的數(shù)量,但是這會(huì)大大限制攻擊者對(duì)資源的利用,同時(shí)大幅提升了管理成本,很大程度地折損了攻擊者的利益。因此,我們認(rèn)為基于域名和IP之間的關(guān)聯(lián)關(guān)系可以提供一種可靠的方法來(lái)研究攻擊者是如何組織和部署惡意資源的,并進(jìn)一步幫助我們利用有限的已知不良網(wǎng)絡(luò)應(yīng)用去大規(guī)模地檢測(cè)和發(fā)現(xiàn)潛在的不良網(wǎng)絡(luò)應(yīng)用。
由于與已知惡意域名有強(qiáng)烈關(guān)聯(lián)的域名很可能也是惡意的,因此,給定一組已知的不良域名列表作為種子域名,我們可以根據(jù)其與待測(cè)域名的關(guān)聯(lián)強(qiáng)度來(lái)判斷這些域名是否為潛在不良網(wǎng)絡(luò)應(yīng)用所使用,但核心問(wèn)題是如何定義域名之間的這種關(guān)聯(lián)強(qiáng)度。Khalil等[8]提出通過(guò)一種簡(jiǎn)單直接的度量方法來(lái)反映不良域名之間的內(nèi)在關(guān)聯(lián),如果兩個(gè)域名都指向相同的IP,則將它們建立連接,構(gòu)建無(wú)向加權(quán)圖。但其實(shí)很多完全沒(méi)有任何關(guān)聯(lián)的域名也可以使用相同的IP(比如在虛擬主機(jī)場(chǎng)景中)。因此,可以先將IP節(jié)點(diǎn)按度排序,將度值最高的少量節(jié)點(diǎn)作為共享IP池排除,然后再基于上述關(guān)聯(lián)構(gòu)建反映域名之間全局相關(guān)性的加權(quán)圖,從而不局限于只針對(duì)主機(jī)或域名本地局部特征所做的分析。當(dāng)然,在互聯(lián)網(wǎng)資源的合法管理下,有些域名與不良種子域名之間也會(huì)存在著一定的關(guān)聯(lián),但并不能證明這些域名是惡意的。為了更準(zhǔn)確發(fā)現(xiàn)不良網(wǎng)絡(luò)應(yīng)用,該算法提出了一種基于路徑的機(jī)制,根據(jù)每個(gè)域名與已知不良種子域名的拓?fù)溥B接來(lái)獲得其惡意得分,并設(shè)定一個(gè)惡意得分閾值,若超過(guò)該閾值,則認(rèn)為是潛在不良網(wǎng)絡(luò)應(yīng)用所使用的域名。
本文在Khalil等[8]提出的算法基礎(chǔ)上進(jìn)行了以下幾個(gè)方面的優(yōu)化:1) 優(yōu)化種子域名的獲取方式。在原有利用VirusTotal API[14]遍歷域名關(guān)系圖中所有域名并將命中黑名單的域名作為種子域名的基礎(chǔ)上通過(guò)分析種子域名度分布特征,將域名解析圖中的域名節(jié)點(diǎn)按度值排序,然后取少量TopN的域名節(jié)點(diǎn)作為種子域名的補(bǔ)充。2) 優(yōu)化計(jì)算兩個(gè)域名間關(guān)聯(lián)強(qiáng)度corr的算法。原有算法在計(jì)算corr時(shí),針對(duì)所有與種子集合有交集的連通圖中每個(gè)域名,需要分別計(jì)算其與各個(gè)種子域名之間所有路徑中最短路徑上經(jīng)過(guò)的所有邊的權(quán)值的乘積,再取其中的最大值作為corr的值。而優(yōu)化后算法復(fù)雜度只是一個(gè)Dijkstra算法的復(fù)雜度即O(|E|+|D|log|D|),結(jié)合NetworkX和Spark GraphFrame工具,該優(yōu)化算法在本文數(shù)據(jù)集上(域名總數(shù)千萬(wàn)級(jí))的計(jì)算時(shí)間由1天縮短至10分鐘左右,時(shí)間縮短了99%以上,大幅提升了算法性能。3)補(bǔ)充對(duì)非連通圖內(nèi)域名節(jié)點(diǎn)惡意得分的計(jì)算方法,擴(kuò)大了種子域名的作用范圍,對(duì)不在連通圖中但與種子域名同樣有密切關(guān)聯(lián)的域名進(jìn)行了惡意得分的補(bǔ)充計(jì)算,大幅提升了真陽(yáng)率。
2.1.1排除公共IP
Khalil等[8]提出如果兩個(gè)域名解析到許多相同的IP上,那么這兩個(gè)域名之間極有可能存在很強(qiáng)的關(guān)聯(lián)。這種關(guān)聯(lián)很有可能表明它們?yōu)橥唤M織所控制。例如,攻擊者可能將釣魚(yú)網(wǎng)站部署到其所控制的一組僵尸程序中,用一種或多種傳播手段,將大量主機(jī)感染僵尸程序,從而在控制者和被感染主機(jī)之間形成一對(duì)多控制的僵尸網(wǎng)絡(luò)[15],而這些釣魚(yú)網(wǎng)站將被關(guān)聯(lián)到攻擊者所控制的主機(jī)資源中,關(guān)聯(lián)到許多相同的IP上。
當(dāng)然,很多不同的域名也可以合理共享一組IP。例如,為了負(fù)載均衡,一個(gè)組織可以在一組服務(wù)器中同時(shí)托管該組織下的幾個(gè)不同域名。但這不影響我們的結(jié)論,因?yàn)檫@些域名仍然還是由同一組織所控制的。如果其中一個(gè)域名是惡意的,那么托管在同一服務(wù)器上的其他域名也可能是惡意的,因此這種情況下我們的結(jié)論依然成立。但在云服務(wù)、Web托管和內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN)中,毫無(wú)關(guān)聯(lián)的域名會(huì)解析到相同的公共IP池中。這種情況下,共享IP的兩個(gè)不同域名中當(dāng)一個(gè)域名為不良網(wǎng)絡(luò)應(yīng)用所使用時(shí),并不能說(shuō)明另一個(gè)域名也很可能是惡意的??紤]到互聯(lián)網(wǎng)上有大量的服務(wù)提供商,列出所有的公共IP池是不切實(shí)際的。因此,針對(duì)此場(chǎng)景的干擾,可以通過(guò)一個(gè)排除公共IP池地址的方案,簡(jiǎn)單直接地過(guò)濾掉大部分公共IP地址,減輕其對(duì)算法的影響。
針對(duì)我們獲取到的域名解析A記錄數(shù)據(jù),結(jié)構(gòu)化“域名-IP”關(guān)聯(lián)數(shù)據(jù),利用Spark GraphFrame圖處理庫(kù)建立反映域名與IP解析關(guān)系的圖譜(Domain Name Resolution Graph),下文簡(jiǎn)稱RG原始圖。如果一個(gè)IP關(guān)聯(lián)了大量的域名,那么它很可能是一個(gè)公共IP地址,因此我們排除公共IP時(shí)對(duì)RG原始圖中所有IP節(jié)點(diǎn)計(jì)算度分布情況(如圖2所示),分析圖數(shù)據(jù)確定度閾值,將度值大于該閾值(可配置)的IP認(rèn)為是公共IP地址進(jìn)行過(guò)濾,并從RG原始圖中刪除,得到新的域名解析關(guān)系圖(下文簡(jiǎn)稱RG圖)。
圖2 IP節(jié)點(diǎn)度分布情況
本文中閾值選擇100,即在RG原始圖中過(guò)濾掉IP節(jié)點(diǎn)度大于100的點(diǎn)(累計(jì)9 103個(gè)IP節(jié)點(diǎn)),認(rèn)為其為公共IP池中的IP。排除后,RG圖中剩余1 591萬(wàn)個(gè)域名節(jié)點(diǎn)、218萬(wàn)個(gè)IP節(jié)點(diǎn)及883萬(wàn)條邊,可以看出本文的數(shù)據(jù)集節(jié)點(diǎn)之間關(guān)聯(lián)關(guān)系總數(shù)少于節(jié)點(diǎn)數(shù),節(jié)點(diǎn)之間具有一定的關(guān)聯(lián)關(guān)系但并不緊密,經(jīng)實(shí)驗(yàn)驗(yàn)證,Khalil等[8]提出的算法在本數(shù)據(jù)集上表現(xiàn)效果不佳,經(jīng)過(guò)本文算法改進(jìn)后得到了較好的效果。
2.1.2構(gòu)建域名關(guān)系圖
Khalil等[8]提出,在構(gòu)建域名關(guān)系圖時(shí),關(guān)鍵在于如何定義域名與域名之間的關(guān)聯(lián)強(qiáng)度,以及如何確定與已知不良網(wǎng)絡(luò)應(yīng)用沒(méi)有直接關(guān)聯(lián)關(guān)系的域名的惡意程度。一般來(lái)說(shuō),如果兩個(gè)域名解析到同一個(gè)IP上,那么它們就存在一定的關(guān)聯(lián)。顯然,如果兩個(gè)域名共享的IP越多,或者兩個(gè)IP關(guān)聯(lián)的相同域名越多,那么它們之間存在的關(guān)聯(lián)關(guān)系就可能越強(qiáng)。
由于兩個(gè)域名解析的相同IP越多,它們的關(guān)聯(lián)越強(qiáng),權(quán)重越大。當(dāng)兩個(gè)域名解析的相同IP數(shù)量足夠多時(shí),關(guān)聯(lián)足夠強(qiáng),此時(shí)添加額外的相同IP對(duì)關(guān)聯(lián)程度不會(huì)產(chǎn)生太大的影響,而當(dāng)IP數(shù)量較少時(shí),增加額外的相同IP對(duì)關(guān)聯(lián)強(qiáng)度的影響較大,因此對(duì)關(guān)聯(lián)程度的影響也較大。針對(duì)域名之間的關(guān)聯(lián)關(guān)系定義如下:2.1.1章節(jié)得到的RG圖是域名與IP之間的無(wú)向關(guān)系圖,對(duì)該圖中任意兩個(gè)有相同IP交集的域名d1和d2求權(quán)重,定義如式(1)所示。
對(duì)任意不相同的兩個(gè)域名,計(jì)算其IP交集的個(gè)數(shù)|ip(d1)∩ip(d2)|,設(shè)置閾值t,過(guò)濾掉IP交集個(gè)數(shù)小于t的域名。將所有滿足條件的域名d1和d2以及它們之間的邊(權(quán)重ω)加入域名關(guān)系圖(Domain Name Graph),下文簡(jiǎn)稱DG圖,構(gòu)建得到該無(wú)向加權(quán)圖。當(dāng)兩個(gè)域名d1和d2不共享任何IP時(shí),根據(jù)式(1)可知ω(d1,d2)=0。因此,當(dāng)d1≠d2時(shí),ω(d1,d2)取值范圍在0至1之間。
2.1.3關(guān)聯(lián)ASN信息
為了進(jìn)一步增強(qiáng)域名關(guān)聯(lián)關(guān)系的有效性,降低公共IP池地址對(duì)算法的影響,Khalil等[8]提出在構(gòu)建域名關(guān)系DG圖計(jì)算邊權(quán)值時(shí),考慮到共享IP的多樣性,可進(jìn)行ASN信息的關(guān)聯(lián),而不僅僅是計(jì)算兩個(gè)域名共享IP的數(shù)量。雖然一個(gè)服務(wù)提供商可以將兩個(gè)不相關(guān)的域名同時(shí)映射到公共IP池中,但它們同時(shí)映射到兩個(gè)或多個(gè)服務(wù)提供商公共IP池中的可能性很小。因此,本文利用IP所屬的ASN信息來(lái)近似地識(shí)別來(lái)自不同服務(wù)提供商的IP。當(dāng)然,服務(wù)提供商有可能擁有來(lái)自于多個(gè)ASN的IP,但即使兩個(gè)不相關(guān)的域名僅屬于單個(gè)服務(wù)提供商,它們也仍然可能是有關(guān)聯(lián)的。但依據(jù)實(shí)驗(yàn)結(jié)果顯示,這種情況是罕見(jiàn)的,對(duì)本文算法有效性的影響有限。除了關(guān)聯(lián)ASN外,還可以使用WHOIS的IP記錄來(lái)識(shí)別屬于同一提供商的IP。但眾所周知,WHOIS記錄因?yàn)槿狈?biāo)準(zhǔn)格式和異構(gòu)的信息源往往存在噪聲,并且信息相互沖突。綜上所述,本文選擇在構(gòu)建域名關(guān)系圖時(shí)引入ASN信息,對(duì)式(1)進(jìn)行改進(jìn)以更有效地映射域名與域名之間的關(guān)聯(lián)強(qiáng)度。
具體來(lái)說(shuō),給定一個(gè)IP集合I,用asn(I)表示I中的所有IP所屬的ASN集合,定義了對(duì)域名關(guān)系圖中任意兩個(gè)不同域名d1和d2之間權(quán)值ω(d1,d2)的計(jì)算公式,其中,ip(d)表示域名d解析到的所有IP的集合,以此更新DG圖如式(2)所示。
(2)
利用域名、IP和ASN之間的關(guān)聯(lián)關(guān)系,通過(guò)式(2)計(jì)算域名之間邊的權(quán)值,并構(gòu)建DG圖,示例如圖3所示,(a)為反映域名、IP和ASN之間關(guān)聯(lián)關(guān)系的域名解析圖,(b)為經(jīng)過(guò)式(2)處理后建立起的反映域名與域名之間關(guān)聯(lián)關(guān)系的無(wú)向加權(quán)圖。
(a) 域名解析圖(RG圖)
2.2.1獲取已知不良網(wǎng)絡(luò)應(yīng)用所使用的域名
本文一個(gè)重要思路是用盡可能少的種子域名發(fā)現(xiàn)盡可能多的不良網(wǎng)絡(luò)應(yīng)用,而所謂“種子”就是已經(jīng)確定為不良網(wǎng)絡(luò)應(yīng)用所使用的域名。通過(guò)考察多個(gè)不同渠道獲取的不良黑名單(包括VirusTotal API、Bambenek Consulting、Xsec-ip開(kāi)源庫(kù)、360 netlab DGA數(shù)據(jù)庫(kù)、Badips等),考慮到黑名單涵蓋范圍、更新頻率、數(shù)據(jù)獲取方式及穩(wěn)定性等方面的因素,本文選擇利用VirusTotal API查詢DG圖中所有域名,若域名命中任意一個(gè)黑名單,則認(rèn)為其為不良種子域名。將獲取到的已知不良域名列表定義為S集合,取較小比例(5%~30%)作為種子域名供快速發(fā)現(xiàn)不良網(wǎng)絡(luò)應(yīng)用,剩余大部分不良網(wǎng)絡(luò)應(yīng)用供算法評(píng)估(計(jì)算假陽(yáng)率)使用。
2.2.2補(bǔ)充種子域名數(shù)據(jù)
由于VirusTotal域名檢測(cè)網(wǎng)站核查的惡意范圍有限,且數(shù)據(jù)集中域名關(guān)聯(lián)程度有限,為加大種子域名在檢測(cè)不良網(wǎng)絡(luò)應(yīng)用時(shí)發(fā)揮的作用,本文對(duì)已獲取到的惡意種子域名在域名解析圖(RG圖)中的度分布情況進(jìn)行了分析。如圖4所示,RG圖中度值較高的域名數(shù)量較少,度值較低的域名數(shù)量較多,符合冪律分布現(xiàn)象,且已知不良網(wǎng)絡(luò)應(yīng)用所使用的域名的度值分布集中在虛線框區(qū)域,即已知不良域名具有度值較高的特點(diǎn)。因此,本文提出種子域名提取的補(bǔ)充算法,將RG圖中的域名節(jié)點(diǎn)按度值排序取TOPN(N值可配置)作為補(bǔ)充種子域名合并到種子數(shù)據(jù)列表中,以增加算法的普適性,提升算法在發(fā)現(xiàn)潛在不良網(wǎng)絡(luò)應(yīng)用時(shí)的命中率。
圖4 種子域名(已知不良)度分布情況
利用基于圖路徑的算法,通過(guò)計(jì)算與種子域名密切關(guān)聯(lián)的各域名惡意得分的方式來(lái)評(píng)估和發(fā)現(xiàn)潛在不良網(wǎng)絡(luò)應(yīng)用。Khalil等[8]認(rèn)為DG圖是由多個(gè)連通圖組成,在計(jì)算可疑域名的惡意得分時(shí),首先遍歷DG圖得到所有連通圖的集合,再篩選出與種子集合S有交集的連通子圖,對(duì)該連通子圖中的所有域名d計(jì)算其惡意得分mal(d,S),若惡意得分超過(guò)閾值m,則將該域名d加入不良集合。但這樣忽略了連通圖之外的域名與種子域名同樣存在有密切關(guān)聯(lián)的可能,因此,本文在此基礎(chǔ)上提出對(duì)連通圖外域名節(jié)點(diǎn)的惡意得分的計(jì)算方法。
具體算法如下:
1) 遍歷DG圖中所有連通圖,若與種子域名集合S有交集,則遍歷該連通圖中的任一域名d:
(2) 利用基于圖路徑的機(jī)制定義反映域名d與種子域名Si之間關(guān)聯(lián)強(qiáng)度corr(d,Si)的計(jì)算方法:通過(guò)Dijkstra算法計(jì)算加權(quán)圖中域名d與所有種子域名Si之間所有路徑中最短路徑的權(quán)值ω(d,Si),即兩個(gè)節(jié)點(diǎn)之間關(guān)聯(lián)最強(qiáng)的一條路徑上的權(quán)值之和,對(duì)該數(shù)據(jù)取倒數(shù)并進(jìn)行離差標(biāo)準(zhǔn)化處理,歸一化至[0,1],即corr(d,Si)值越大表示關(guān)聯(lián)強(qiáng)度越大,且該值取值范圍在0至1之間。
(3) 將域名d到S集合中所有種子Si的關(guān)聯(lián)強(qiáng)度corr(d,Si)列表進(jìn)行倒序排序,用S1表示與域名d關(guān)聯(lián)強(qiáng)度最大的種子,則corr(d,S1)表示該種子與域名d之間的關(guān)聯(lián)強(qiáng)度,用mal(d,S)表示域名d的惡意得分,則計(jì)算公式如下(其中n表示種子數(shù)):
mal(d,S)=corr(s1,d)+
2) 本文提出對(duì)于連通圖之外的域名節(jié)點(diǎn),從DG圖中分析獲取所有與種子數(shù)據(jù)有直接關(guān)聯(lián)的邊,按域名分組,將其與該域名有關(guān)聯(lián)的所有種子邊的權(quán)值倒序排序作為corr的值,并按式(3)計(jì)算其惡意得分,并補(bǔ)充到結(jié)果中。
通過(guò)三大評(píng)價(jià)指標(biāo)(真陽(yáng)率、假陽(yáng)率和發(fā)現(xiàn)數(shù)量)對(duì)算法效果進(jìn)行評(píng)估,具體指標(biāo)含義定義如下:
真陽(yáng)率(True Positive Rate,TPR):實(shí)際為不良域名并被預(yù)測(cè)為不良域名的比例。將2.2節(jié)獲取的種子域名隨機(jī)取一定比例作為算法中使用的種子集合A,剩余大比例種子集合B作為真陽(yáng)率的驗(yàn)證數(shù)據(jù)集,定義真陽(yáng)率P計(jì)算方法如下:
假陽(yáng)率(False Positive Rate,F(xiàn)PR):實(shí)際為正常域名但被預(yù)測(cè)為不良域名的比例。在計(jì)算假陽(yáng)率時(shí)需要預(yù)先得到一個(gè)已知良性域名的白名單,本文獲取白名單的方式是從Alexa和Domcop網(wǎng)站取域名排名TOP 2萬(wàn)的域名作為白名單。定義假陽(yáng)率F的計(jì)算方法如下:
(5)
發(fā)現(xiàn)數(shù)量:通過(guò)少量已知種子域名快速發(fā)現(xiàn)的疑似不良網(wǎng)絡(luò)應(yīng)用所使用的域名的數(shù)量。
如前文所述,本文實(shí)驗(yàn)數(shù)據(jù)集中的域名通過(guò)白名單篩選出已知良性域名,并通過(guò)黑名單方式標(biāo)注出已知不良網(wǎng)絡(luò)應(yīng)用所使用的域名,具體分布情況如表1所示。
表1 數(shù)據(jù)集域名屬性分布情況
3.1.1種子數(shù)量取值的影響
由于本文算法的核心是通過(guò)盡可能少的種子域名快速發(fā)現(xiàn)盡可能多的不良網(wǎng)絡(luò)應(yīng)用所使用的域名,實(shí)驗(yàn)中將已知不良域名數(shù)據(jù)按一定比例分為兩部分,一部分作為種子域名數(shù)據(jù)用于發(fā)現(xiàn)大量疑似不良域名;另一部分作為驗(yàn)證數(shù)據(jù)集,用于計(jì)算真陽(yáng)率。為進(jìn)一步分析種子數(shù)量對(duì)真陽(yáng)率和假陽(yáng)率以及對(duì)不良域名發(fā)現(xiàn)數(shù)量的影響,本文將種子域名數(shù)量分別設(shè)置為已知不良域名總數(shù)的5%~50%,在種子域名數(shù)量的不同取值情況下分別預(yù)測(cè)得到的疑似不良域名,并統(tǒng)計(jì)其真陽(yáng)率、假陽(yáng)率和發(fā)現(xiàn)數(shù)量三個(gè)指標(biāo),如圖5和圖6所示。
圖5 種子數(shù)量對(duì)真陽(yáng)率和假陽(yáng)率的影響
圖6 種子數(shù)量對(duì)發(fā)現(xiàn)數(shù)量的影響
由實(shí)驗(yàn)結(jié)果整體來(lái)看,由圖5可知,不同種子域名數(shù)量的取值對(duì)真陽(yáng)率和假陽(yáng)率的影響不大,當(dāng)惡意得分閾值相同時(shí),種子域名數(shù)量越大得到的真陽(yáng)率越大但假陽(yáng)率也越大,綜合來(lái)看當(dāng)種子域名數(shù)量取已知不良域名總數(shù)的10%~30%時(shí),均可得到較大的真陽(yáng)率(大于99%)和較小的假陽(yáng)率(小于0.5%)。同時(shí),由圖6可知,種子域名數(shù)量對(duì)不良網(wǎng)絡(luò)應(yīng)用發(fā)現(xiàn)數(shù)量有一定的影響且符合冪律分布,當(dāng)種子數(shù)量取值為種子總數(shù)的10%~50%之間時(shí)對(duì)算法影響差別不大,均可以獲得較高的發(fā)現(xiàn)數(shù)量(1.5萬(wàn)左右)。因此,我們可以得出結(jié)論,即使使用數(shù)百個(gè)已知惡意種子域名,本文算法也可以發(fā)現(xiàn)上萬(wàn)個(gè)大量的潛在不良網(wǎng)絡(luò)應(yīng)用。
3.1.2惡意得分閾值的影響
本文在種子數(shù)量相同(取已知不良域名總數(shù)的10%)的情況下,分別設(shè)置惡意得分閾值在[0.50,0.75]之間取值(取值間隔為0.05,共6組取值),計(jì)算每組實(shí)驗(yàn)下的真陽(yáng)率和假陽(yáng)率,考察惡意得分閾值的取值對(duì)算法效果的影響。由于種子域名是隨機(jī)選取的,固定種子數(shù)量的情況下,選取的種子依然不同,為保證實(shí)驗(yàn)的可靠性,我們?cè)诿拷M惡意得分閾值的設(shè)置下都隨機(jī)進(jìn)行6次實(shí)驗(yàn)(即每條折線上有6個(gè)數(shù)值結(jié)果)。如圖7所示,當(dāng)惡意得分閾值大于0.7時(shí),可以獲得極小的假陽(yáng)率(小于0.4%)但真陽(yáng)率相對(duì)較小(小于85%);而當(dāng)惡意得分閾值的取值在[0.50,0.65]之間時(shí),可以在得到極大的真陽(yáng)率(大于99%)的同時(shí)獲得較小的假陽(yáng)率(小于0.5%),且在此區(qū)間內(nèi)時(shí)惡意得分的影響不大。
圖7 不良得分對(duì)算法效果的影響
綜合上述的實(shí)驗(yàn)結(jié)論可知,隨著種子數(shù)量的增加,真陽(yáng)率越來(lái)越大但假陽(yáng)率也隨之增大,同時(shí),隨著惡意得分閾值的增大,假陽(yáng)率越來(lái)越小但真陽(yáng)率也隨之明顯減小。為取得最佳算法結(jié)果即獲取最大真陽(yáng)率和最小假陽(yáng)率,當(dāng)惡意得分閾值取值在[0.55,0.65]之間且種子數(shù)量在種子總數(shù)的[10%,30%]之間時(shí),可以獲得算法的最佳效果。
如第2節(jié)所述,本文對(duì)Khalil等[8]提出的算法進(jìn)行了優(yōu)化,經(jīng)實(shí)驗(yàn)驗(yàn)證,算法效果明顯提升。本文在固定惡意得分取值為0.5且種子數(shù)量為已知不良域名總數(shù)的10%的情況下,分別對(duì)優(yōu)化前和優(yōu)化后的算法進(jìn)行6組實(shí)驗(yàn)(每組隨機(jī)取固定數(shù)量的種子域名),計(jì)算其真陽(yáng)率、假陽(yáng)率和發(fā)現(xiàn)不良域名數(shù)量,得到圖8。圖8中兩條折線分別代表了本文算法與Khalil等[8]提出的算法對(duì)比的真陽(yáng)率和假陽(yáng)率的變化情況,顯然本文算法的真陽(yáng)率得到明顯提升的同時(shí),假陽(yáng)率也保持在小于0.7%的較小范圍內(nèi),且受隨機(jī)種子的選擇影響波動(dòng)極小,而優(yōu)化前算法在本數(shù)據(jù)集中效果不佳且受隨機(jī)種子的選擇影響波動(dòng)較大。圖8中的柱狀圖顯示本文算法在不同隨機(jī)種子的6組實(shí)驗(yàn)中發(fā)現(xiàn)疑似不良網(wǎng)絡(luò)應(yīng)用的數(shù)量與原算法的對(duì)比情況,可以明顯看出算法優(yōu)化前只能快速發(fā)現(xiàn)小于1 000個(gè)左右域名,而算法優(yōu)化后可以檢測(cè)到1.5萬(wàn)個(gè)左右疑似不良網(wǎng)絡(luò)應(yīng)用所使用的域名。
圖8 算法優(yōu)化前后效果對(duì)比
本文提出一種基于圖數(shù)據(jù)分析的不良網(wǎng)絡(luò)應(yīng)用快速發(fā)現(xiàn)的優(yōu)化算法,一方面能更加高效地快速發(fā)現(xiàn)疑似潛在不良網(wǎng)絡(luò)應(yīng)用,另一方面能在獲得較低假陽(yáng)率的同時(shí)確保得到極高的真陽(yáng)率。算法具有普適性和較高的可擴(kuò)展性,可以根據(jù)種子類型的不同(如賭博類、涉黃類、釣魚(yú)類、僵尸類等)而挖掘發(fā)現(xiàn)不同種類的疑似不良網(wǎng)絡(luò)應(yīng)用,在不良網(wǎng)絡(luò)應(yīng)用快速檢測(cè)和發(fā)現(xiàn)方面具有較好的實(shí)用價(jià)值和大規(guī)模工程化應(yīng)用意義。盡管在本文中我們關(guān)注于利用域名、IP和ASN的全局關(guān)聯(lián)來(lái)發(fā)現(xiàn)潛在的不良網(wǎng)絡(luò)應(yīng)用,但我們并不主張放棄現(xiàn)有工作中提出的局部特征,我們的目標(biāo)是提供另一個(gè)維度來(lái)檢測(cè)和快速發(fā)現(xiàn)不良網(wǎng)絡(luò)應(yīng)用,本文提出的方案可以與基于局部特征的算法集成起來(lái)進(jìn)一步提高不良網(wǎng)絡(luò)應(yīng)用發(fā)現(xiàn)算法的效果。例如,可以將每個(gè)域名根據(jù)過(guò)去研究工作中識(shí)別出的一些本地特征進(jìn)行初始評(píng)分,然后再應(yīng)用本文算法通過(guò)已知不良網(wǎng)絡(luò)應(yīng)用作為種子快速發(fā)現(xiàn)潛在的大量未知不良網(wǎng)絡(luò)應(yīng)用,為后續(xù)發(fā)現(xiàn)算法研究提供一個(gè)非常穩(wěn)健而準(zhǔn)確的方案。同時(shí),本文算法還可以與基于分類器的算法相結(jié)合,將分類器的輸出作為獲取種子域名的初始途徑,有效提高算法整體的準(zhǔn)確率,為未來(lái)的深入研究工作提供理論和實(shí)踐基礎(chǔ)。