本發(fā)明涉及網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,尤其涉及一種基于域名字符串統(tǒng)計(jì)特征的dga生成域名的檢測(cè)方法。
背景技術(shù):
dns作為實(shí)現(xiàn)域名和ip地址映射的分布式系統(tǒng),是當(dāng)前互聯(lián)網(wǎng)中重要的基礎(chǔ)設(shè)施之一。進(jìn)行間諜活動(dòng)、勒索破壞、僵尸網(wǎng)絡(luò)的惡意軟件和c&c進(jìn)行通信過(guò)程中,通常會(huì)避免使用確定的ip地址以避免c&c遷移后導(dǎo)致的通信失連。而固定的域名也容易導(dǎo)致形成可察覺(jué)的軟件指紋。且域名一旦被列人黑名單,軟件的遠(yuǎn)控即失效。在這種背景下domain-flux技術(shù)(sharifnyar,abadim.dfbotkiller:domain-fluxbotnetdetectionbasedonthehistoryofgroupactivitiesandfailuresindnstraffic[j].digitalinvestigation,2015,12(12):15-26.)得到了廣泛應(yīng)用,它采用域名生成算法dga,通過(guò)特定的參數(shù)(如網(wǎng)絡(luò)時(shí)間,熱門(mén)話題等)定期自動(dòng)生成大量的隨機(jī)域名。實(shí)施遠(yuǎn)控的c&c控制者通過(guò)相同的種子獲得相同的域名池,并選取其中的一部分域名注冊(cè)為c&c服務(wù)器的域名。惡意程序在域名池中隨機(jī)挑選域名進(jìn)行dns解析,一旦解析成功便可獲得c&c服務(wù)器的ip地址并與之建立連接。由于其他一些實(shí)施apt攻擊和botnet控制的軟件也大量使用這一手段。所以針對(duì)dga生成域名的dns請(qǐng)求的發(fā)現(xiàn),成為一種間接的惡意軟件檢測(cè)方法。當(dāng)前這方面的主要方法如下:
第一種是隨機(jī)森林的dga域名檢測(cè)方法(王紅凱,張旭東等.基于隨機(jī)森林的dga域名檢測(cè)方法:cn105577660a[p].2015),該方法主要使用了域名長(zhǎng)度、域名信息上、域名語(yǔ)音性、域名中元音字符數(shù)、域名中數(shù)字字符數(shù)、域名中重復(fù)字母數(shù)、域名中連續(xù)數(shù)字字符數(shù)、域名中非元音連續(xù)字符數(shù)、域名中n元語(yǔ)言模型在白明代中得分以及域名中n元語(yǔ)言模型在單詞字典中的得分。該方法采用的特征數(shù)量多,且存在很多區(qū)分能力不強(qiáng)的低階特征,訓(xùn)練的時(shí)間長(zhǎng)效率低。
第二種基于域名特征的c&c域名識(shí)別方法(唐力,岳扶天,周海燕.基于域名特征的c&c域名識(shí)別方法,cn105072214a[p].2015),該方法陳述的主要特點(diǎn)是對(duì)給定的域名生成用于判定域名類別的量化指標(biāo),并簡(jiǎn)單舉例該指標(biāo)可以報(bào)考元音字母占比、域名中的拼音出現(xiàn)次數(shù)等。方法的技術(shù)特征不明顯,其陳述的訓(xùn)練和學(xué)習(xí)方法為該領(lǐng)域的一般技術(shù),無(wú)法精確高效地區(qū)分正常域名和dga生成的域名。
第三種實(shí)現(xiàn)惡意域名識(shí)別的方法及裝置(侯偉,曲武,周濤.一種實(shí)現(xiàn)惡意域名識(shí)別的方法及裝置,cn105024969a[p].2014),該發(fā)明主要聲明了一種動(dòng)態(tài)特征的惡意域名可信判斷模型,這個(gè)動(dòng)態(tài)特征集合包括與ip相關(guān)的特征、和/或權(quán)威服務(wù)器主域名一致率。其方法是主要是基于惡意軟件的dns請(qǐng)求的概率,而其中的域名相關(guān)的統(tǒng)計(jì)特征采用的是比較簡(jiǎn)單的字符和數(shù)字特征,被作為靜態(tài)特征進(jìn)行過(guò)濾黑名單的設(shè)定。該方法由于需要用到dns請(qǐng)求的通信行為的特征,因此復(fù)雜度較高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種復(fù)雜度低、精度高的基于域名字符串統(tǒng)計(jì)特征的dga生成域名的檢測(cè)方法。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種基于域名字符串統(tǒng)計(jì)特征的dga生成域名的檢測(cè)方法,包括以下步驟:
步驟1,收集整理并構(gòu)建正常的標(biāo)準(zhǔn)域名集合,將其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成由字母、數(shù)字和連字符組成的域名字符串sni,i=1,2,…,n;所述域名字符串sni的集合sdn作為后續(xù)特征矢量構(gòu)造的數(shù)據(jù)基礎(chǔ);
步驟2,收集整理并構(gòu)建正常的域名集合,將其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成由字母、數(shù)字和連字符組成的域名字符串lnj,j=1,2,…,nl的集合ldn;收集整理惡意軟件dga算法生成的域名集合,將其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成由字母、數(shù)字和連字符組成的域名字符串dnk,k=1,2,…,nd的集合ddn;
步驟3,提取ldn中所有l(wèi)nj和ddn中所有dnk的統(tǒng)計(jì)特征,得到ldn中所有l(wèi)nj的特征矢量集合lv、ddn中所有dnk的特征矢量集合dv,lv中具有nl個(gè)六維的特征矢量,dv中具有nd個(gè)六維的特征矢量;
步驟4,對(duì)lv中的特征矢量添加標(biāo)記1,對(duì)dv中的特征矢量添加標(biāo)記-1,分別作為正樣本和負(fù)樣本構(gòu)成測(cè)試集合訓(xùn)練分類器,通過(guò)分類器實(shí)現(xiàn)對(duì)惡意軟件dga生成域名的檢測(cè)。
進(jìn)一步地,步驟3所述特征矢量具體如下:
v(x)=[sdr(x),scr(x),dsim(x),tsim(x),v2dc(x),c2dc(x)]
其中,x為ldn中所有l(wèi)nj或ddn中所有dnk;
sdr(x)、scr(x)、dsim(x)、tsim(x)、v2dc(x)、c2dc(x)分別為連續(xù)數(shù)字占比、連續(xù)二輔字占比、隨機(jī)相鄰雙字平均相似指數(shù)、隨機(jī)相鄰三字平均相似指數(shù)、單元音字母到二字符平均轉(zhuǎn)移概率、單輔音字母到二字符平均轉(zhuǎn)移概率。
進(jìn)一步地,步驟3所述連續(xù)數(shù)字占比sdr(x)=num_2dp(x)/len(x),其中,num_2dp(x)為域名中所有兩個(gè)或兩個(gè)以上連續(xù)數(shù)字的總長(zhǎng)度,len(x)為域名長(zhǎng)度;
所述連續(xù)二輔字占比scr(x)=num_2cp(x)/len(x),其中,num_2dp(x)為域名中所有兩個(gè)或兩個(gè)以上連續(xù)輔音字母的總長(zhǎng)度,len(x)為域名長(zhǎng)度。
進(jìn)一步地,步驟3所述隨機(jī)相鄰雙字平均相似指數(shù)dsim(x)為:
dsim(x)=1/m×∑y∈psdn(|sd(x)∩sd(y)|/|sd(x)∪sd(y)|)
其中,psdn是從sdn集合中隨機(jī)選擇的包含m個(gè)域名的子集,函數(shù)sd(x/y)表示將x/y分成的相鄰的雙字母組成的集合,|sd(x)∩sd(y)|是集合sd(x)和集合sd(y)的交集中元素的個(gè)數(shù);|sd(x)∪sd(y)|是集合sd(x)和集合sd(y)的并集中元素的個(gè)數(shù);
所述隨機(jī)相鄰三字平均相似指數(shù)tsim(x)為:
tsim(x)=1/m×∑y∈psdn(|td(x)∩td(y)|/|td(x)∪td(y)|)
其中,函數(shù)td(x/y)表示將x/y分成的相鄰的三字母組成的集合,|td(x)∩td(y)|是集合td(x)和集合td(y)的交集中元素的個(gè)數(shù);|td(x)∪td(y)|是集合td(x)和集合td(y)的并集中元素的個(gè)數(shù)。
進(jìn)一步地,步驟3所述單元音字母到二字符平均轉(zhuǎn)移概率v2dc(x)具體如下:
根據(jù)sdn中合法標(biāo)準(zhǔn)域名sn,統(tǒng)計(jì)得到單元音字母到任意二字符轉(zhuǎn)移概率p(y,z|x),對(duì)域名字符串x,設(shè)x具有后續(xù)二個(gè)字符元音x的集合為vx,vx的元素個(gè)數(shù)為mv,且元音x的后續(xù)字符分別為y(x)、z(x),則單元音字母到二字符平均轉(zhuǎn)移概率v2dc(x)為:
v2dc(x)=1/mv×∑y∈vxp(y(x),z(x)|x)
所述單輔音字母到二字符平均轉(zhuǎn)移概率c2dc(x)具體如下:
根據(jù)sdn中合法域名sn,統(tǒng)計(jì)得到單輔音字母到任意二字符轉(zhuǎn)移概率p(y,z|x’),對(duì)域名字符串x,設(shè)x具有后續(xù)二個(gè)字符輔音x’的集合為cx,cx的元素個(gè)數(shù)為mc,且輔音x’的后續(xù)字符分別為y(x’),z(x’),則單輔音字母到二字符平均轉(zhuǎn)移概率c2dc(x)為:
c2dc(x)=1/mc×∑y∈cxp(y(x’),z(x’)|x’)
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)為:(1)采用,特征提取+分類器訓(xùn)練分類的模式,實(shí)現(xiàn)了對(duì)惡意程序dga自動(dòng)生成域名的檢測(cè);(2)所用的特征均直接提取自域名字符串的統(tǒng)計(jì)量,無(wú)須使用dns請(qǐng)求的相關(guān)通信行為方面的特征;(3)所用的連續(xù)數(shù)字占比、連續(xù)二輔字占比、隨機(jī)相鄰雙字平均相似指數(shù)、隨機(jī)相鄰三字平均相似指數(shù)、單元音字母到二字符平均轉(zhuǎn)移概率、單輔音字母到二字符平均轉(zhuǎn)移概率特征均能敏感地區(qū)分正常域名和dga生成的域名,所提方案的維度較低,實(shí)施訓(xùn)練和檢測(cè)的計(jì)算復(fù)雜度低。
附圖說(shuō)明
圖1為本發(fā)明基于域名字符串統(tǒng)計(jì)特征的dga生成域名的檢測(cè)方法的流程圖。
具體實(shí)施方式
下面將結(jié)合附圖對(duì)本方面的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明基于域名字符組合的統(tǒng)計(jì)異常性,從域名字符串提取了六種統(tǒng)計(jì)量并在此基礎(chǔ)上利用統(tǒng)計(jì)學(xué)習(xí)方法訓(xùn)練分類器,來(lái)實(shí)現(xiàn)對(duì)惡意軟件dga動(dòng)態(tài)生成域名的檢測(cè),具體步驟如下:
步驟1,收集整理并構(gòu)建正常的標(biāo)準(zhǔn)域名集合,將其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成由字母、數(shù)字和連字符組成的域名字符串sni,i=1,2,…,n;所述域名字符串sni的集合sdn作為后續(xù)特征矢量構(gòu)造的數(shù)據(jù)基礎(chǔ);
步驟2,收集整理并構(gòu)建正常的域名集合,將其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成由字母、數(shù)字和連字符組成的域名字符串lnj,j=1,2,…,nl的集合ldn;收集整理惡意軟件dga算法生成的域名集合,將其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成由字母、數(shù)字和連字符組成的域名字符串dnk,k=1,2,…,nd的集合ddn;
步驟3,提取ldn中所有l(wèi)nj和ddn中所有dnk的統(tǒng)計(jì)特征,得到ldn中所有l(wèi)nj的特征矢量集合lv、ddn中所有dnk的特征矢量集合dv,lv中具有nl個(gè)六維的特征矢量,dv中具有nd個(gè)六維的特征矢量;
所述特征矢量具體如下:
v(x)=[sdr(x),scr(x),dsim(x),tsim(x),v2dc(x),c2dc(x)]
其中,x為ldn中所有l(wèi)nj或ddn中所有dnk;
sdr(x)、scr(x)、dsim(x)、tsim(x)、v2dc(x)、c2dc(x)分別為連續(xù)數(shù)字占比、連續(xù)二輔字占比、隨機(jī)相鄰雙字平均相似指數(shù)、隨機(jī)相鄰三字平均相似指數(shù)、單元音字母到二字符平均轉(zhuǎn)移概率、單輔音字母到二字符平均轉(zhuǎn)移概率。
(1)所述連續(xù)數(shù)字占比sdr(x)=num_2dp(x)/len(x),其中,num_2dp(x)為域名中所有兩個(gè)或兩個(gè)以上連續(xù)數(shù)字的總長(zhǎng)度,len(x)為域名長(zhǎng)度。
(2)所述連續(xù)二輔字占比scr(x)=num_2cp(x)/len(x),其中,num_2dp(x)為域名中所有兩個(gè)或兩個(gè)以上連續(xù)輔音字母的總長(zhǎng)度,len(x)為域名長(zhǎng)度。
(3)所述隨機(jī)相鄰雙字平均相似指數(shù)dsim(x)為:
dsim(x)=1/m×∑y∈psdn(|sd(x)∩sd(y)|/|sd(x)∪sd(y)|)
其中,psdn是從sdn集合中隨機(jī)選擇的包含m個(gè)域名的子集,函數(shù)sd(x/y)表示將x/y分成的相鄰的雙字母組成的集合,|sd(x)∩sd(y)|是集合sd(x)和集合sd(y)的交集中元素的個(gè)數(shù);|sd(x)∪sd(y)|是集合sd(x)和集合sd(y)的并集中元素的個(gè)數(shù)。
(4)所述隨機(jī)相鄰三字平均相似指數(shù)tsim(x)為:
tsim(x)=1/m×∑y∈psdn(|td(x)∩td(y)|/|td(x)∪td(y)|)
其中,函數(shù)td(x/y)表示將x/y分成的相鄰的三字母組成的集合,|td(x)∩td(y)|是集合td(x)和集合td(y)的交集中元素的個(gè)數(shù);|td(x)∪td(y)|是集合td(x)和集合td(y)的并集中元素的個(gè)數(shù)。
(5)所述單元音字母到二字符平均轉(zhuǎn)移概率v2dc(x)具體如下:
根據(jù)sdn中合法標(biāo)準(zhǔn)域名sn,統(tǒng)計(jì)得到單元音字母到任意二字符轉(zhuǎn)移概率p(y,z|x),對(duì)域名字符串x,設(shè)x具有后續(xù)二個(gè)字符元音x的集合為vx,vx的元素個(gè)數(shù)為mv,且元音x的后續(xù)字符分別為y(x)、z(x),則單元音字母到二字符平均轉(zhuǎn)移概率v2dc(x)為:
v2dc(x)=1/mv×∑y∈vxp(y(x),z(x)|x)
(6)所述單輔音字母到二字符平均轉(zhuǎn)移概率c2dc(x)具體如下:
根據(jù)sdn中合法域名sn,統(tǒng)計(jì)得到單輔音字母到任意二字符轉(zhuǎn)移概率p(y,z|x’),對(duì)域名字符串x,設(shè)x具有后續(xù)二個(gè)字符輔音x’的集合為cx,cx的元素個(gè)數(shù)為mc,且輔音x’的后續(xù)字符分別為y(x’),z(x’),則單輔音字母到二字符平均轉(zhuǎn)移概率c2dc(x)為:
c2dc(x)=1/mc×∑y∈cxp(y(x’),z(x’)|x’)
步驟4,對(duì)lv中的特征矢量添加標(biāo)記1,對(duì)dv中的特征矢量添加標(biāo)記-1,分別作為正樣本和負(fù)樣本構(gòu)成測(cè)試集合訓(xùn)練分類器,通過(guò)分類器實(shí)現(xiàn)對(duì)惡意軟件dga生成域名的檢測(cè)。
實(shí)施例1
圖1為本發(fā)明的具體檢測(cè)實(shí)施過(guò)程,下面分別介紹:
步驟1,從alexa(www.alexa.com)上收集排名前200k的合法域名,隨機(jī)選擇其中的100k,將其中的其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成域名中包含字母、數(shù)字和連字符組成的域名字符串sni,i=1,2,…,n,n=105;所述域名字符串sni的集合sdn作為后續(xù)特征矢量構(gòu)造的數(shù)據(jù)基礎(chǔ);
步驟2,從alexa(www.alexa.com)上收集的排名前200k的合法域名中隨機(jī)選擇其中的100k,將其中的其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成由字母、數(shù)字和連字符組成的域名字符串lnj,j=1,2,…,nl,nl=105的集合ldn;收集confickerc、cryptolocker、zeus、corebot、matsnu、gameoverzeus和gameoverzeus變種newgameoverzeus等七種惡意程序的dga域名集合,將其中的其中超過(guò)三個(gè)字符的二級(jí)或者三級(jí)域名取出,構(gòu)成由字母、數(shù)字和連字符組成的域名字符串dnk,k=1,2,…,nd,nd=105的集合ddn。
步驟3,提取ldn中所有l(wèi)nj和ddn中所有dnk的統(tǒng)計(jì)特征,得到ldn中所有l(wèi)nj的特征矢量集合lv、ddn中所有dnk的特征矢量集合dv,lv中具有nl個(gè)六維的特征矢量,dv中具有nd個(gè)六維的特征矢量,所述特征矢量具體如下:
v(x)=[sdr(x),scr(x),dsim(x),tsim(x),v2dc(x),c2dc(x)]
其中,x為ldn中所有l(wèi)nj或ddn中所有dnk;
sdr(x)、scr(x)、dsim(x)、tsim(x)、v2dc(x)、c2dc(x)分別為連續(xù)數(shù)字占比、連續(xù)二輔字占比、隨機(jī)相鄰雙字平均相似指數(shù)、隨機(jī)相鄰三字平均相似指數(shù)、單元音字母到二字符平均轉(zhuǎn)移概率、單輔音字母到二字符平均轉(zhuǎn)移概率,其中:
1)域名x連續(xù)數(shù)字占比:
sdr(x)=num_2dp(x)/len(x)
其中,num_2dp(x)為域名中所有兩個(gè)或兩個(gè)以上連續(xù)數(shù)字的總長(zhǎng)度,len(x)為域名長(zhǎng)度。
2)連續(xù)二輔音字符占比:
scr(x)=num_2cp(x)/len(x)
其中,num_2dp(x)為域名中所有兩個(gè)或兩個(gè)以上連續(xù)輔音字母的總長(zhǎng)度,len(x)為域名長(zhǎng)度。
3)隨機(jī)相鄰雙字平均相似指數(shù)
dsim(x)=1/m×∑y∈psdn(|sd(x)∩sd(y)|/|sd(x)∪sd(y)|)
其中,psdn是從sdn集合中隨機(jī)選擇的包含m,m=50000個(gè)域名的子集。函數(shù)sd(x/y)表示將x/y分成的相鄰的雙字母組成的集合。|sd(x)∩sd(y)|是集合sd(x)和集合sd(y)的交集中元素的個(gè)數(shù);|sd(x)∪sd(y)|是集合sd(x)和集合sd(y)的并集中元素的個(gè)數(shù);
4)隨機(jī)相鄰三字平均相似指數(shù)
tsim(x)=1/m×∑y∈psdn(|td(x)∩td(y)|/|td(x)∪td(y)|)
其中,其中,函數(shù)td(x/y)表示將x/y分成的相鄰的三字母組成的集合,|td(x)∩td(y)|是集合td(x)和集合td(y)的交集中元素的個(gè)數(shù);|td(x)∪td(y)|是集合td(x)和集合td(y)的并集中元素的個(gè)數(shù);
5)單元音字母到二字符平均轉(zhuǎn)移概率
根據(jù)sdn中合法標(biāo)準(zhǔn)域名sn,統(tǒng)計(jì)得到單元音字母到任意二字符轉(zhuǎn)移概率p(y,z|x),對(duì)域名字符串x,設(shè)x具有后續(xù)二個(gè)字符元音x的集合為vx,vx的元素個(gè)數(shù)為mv,且元音x的后續(xù)字符分別為y(x)、z(x),則單元音字母到二字符平均轉(zhuǎn)移概率v2dc(x)為:
v2dc(x)=1/mv×∑y∈vxp(y(x),z(x)|x)
6)單輔音字母到二字符平均轉(zhuǎn)移概率
根據(jù)sdn中大量的合法域名sn,統(tǒng)計(jì)得到單輔音字母到任意二字符轉(zhuǎn)移概率p(y,z|x’),如果出現(xiàn)轉(zhuǎn)移概率為0的情況,則賦一個(gè)很小的值ε.對(duì)域名字符串x,設(shè)其具有后續(xù)二個(gè)字符輔音x’集合為cx,cx的元素個(gè)數(shù)為mc,且輔音x’的后續(xù)字符分別為y(x’),z(x’),則單輔音字母到二字符平均轉(zhuǎn)移概率c2dc(x)為:
c2dc(x)=1/mc×∑y∈cxp(y(x’),z(x’)|x’)
步驟4,通過(guò)上述計(jì)算,我們得到ldn和ddn中l(wèi)ni和dni的矢量集合lv和dv,lv中具有nl個(gè)六維的矢量,dv中具有nd個(gè)六維的矢量。分別為其添加標(biāo)記1和-1,作為正樣本和負(fù)樣本,利用基于rbf核的svm分類器采用的進(jìn)行訓(xùn)練,其中懲罰參數(shù)c=128.0,rbf核函數(shù)參數(shù)gamma=2.0。具體采用libsvm的相關(guān)函數(shù)庫(kù),通過(guò)交叉驗(yàn)證可以訓(xùn)練得到model文件。值得指出的其他的諸如神經(jīng)網(wǎng)絡(luò)、決策樹(shù)、極限學(xué)習(xí)機(jī)和其他學(xué)習(xí)算法也可以用于本檢測(cè)方法。
步驟5,利用學(xué)習(xí)的model文件,可以利用libsvm的predict函數(shù)對(duì)需要檢測(cè)的域名字符串進(jìn)行檢測(cè)。如圖1所示,檢測(cè)器支持對(duì)在線抓取數(shù)據(jù)的檢測(cè)和離線的存儲(chǔ)下來(lái)的批量的域名字符串的檢測(cè)。