本發(fā)明涉及域名系統(tǒng)安全管理領(lǐng)域,具體涉及一種基于機(jī)器學(xué)習(xí)的DNS服務(wù)器軟件版本信息識(shí)別的系統(tǒng)與方法。
背景技術(shù):
域名系統(tǒng)(DNS)是一種分層結(jié)構(gòu)的分布式命名管理系統(tǒng),是因特網(wǎng)的核心元素之一,主要工作是負(fù)責(zé)將方便人類記憶的域名地址(如www.baidu.com)映射到因特網(wǎng)路由選擇的IP地址,絕大部分的互聯(lián)網(wǎng)應(yīng)用功能都需要以域名系統(tǒng)作為基礎(chǔ)來(lái)實(shí)現(xiàn),一旦域名系統(tǒng)發(fā)生故障,無(wú)法提供正常的域名解析服務(wù),那么,相當(dāng)多數(shù)的互聯(lián)網(wǎng)功能將隨之失效,給用戶帶來(lái)不便和難以估計(jì)的損失,因此域名系統(tǒng)的安全性相當(dāng)重要,引起了眾多專家學(xué)者和運(yùn)營(yíng)商的關(guān)注和研究。
不幸的是,域名系統(tǒng)一直以來(lái)遭受著大量的攻擊,這些攻擊問(wèn)題主要來(lái)自于執(zhí)行錯(cuò)誤、DNS協(xié)議漏洞、偽造的DNS查詢請(qǐng)求等原因。據(jù)中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)與國(guó)家域名安全聯(lián)盟發(fā)布的《中國(guó)域名服務(wù)安全現(xiàn)狀與態(tài)勢(shì)分布報(bào)告(2014)》顯示,我國(guó)頂級(jí)域名服務(wù)器普遍采用了Linux/Unix操作系統(tǒng),兩者占比達(dá)到98%以上,同時(shí),在所采用的DNS服務(wù)軟件方面,ISC BIND(Berkeley Internet Name Domain)依然是絕大部分頂級(jí)域名服務(wù)器首選的DNS服務(wù)軟件,比例占到了81.8%,但其中相當(dāng)一大部分的BIND服務(wù)器依然使用的是較低版本,特別是其中32.6%的BIND服務(wù)軟件開(kāi)啟了版本應(yīng)答功能,這為域名服務(wù)器帶來(lái)一定的安全隱患。因此,在網(wǎng)絡(luò)安全政策允許下,特定DNS解析服務(wù)軟件的bug或者弱點(diǎn)應(yīng)該被準(zhǔn)確識(shí)別和控制。
網(wǎng)絡(luò)掃描和遠(yuǎn)程應(yīng)用檢測(cè)通常被用來(lái)獲取目標(biāo)信息,指紋識(shí)別(fingerprint)技術(shù)將這一目標(biāo)具象化。在DNS服務(wù)器軟件指紋識(shí)別方面,大多數(shù)現(xiàn)有方法是主動(dòng)方式,通過(guò)發(fā)送請(qǐng)求然后根據(jù)響應(yīng)返回包特征判斷。另外有研究學(xué)者提出了一種被動(dòng)指紋識(shí)別技術(shù),通過(guò)人工提取DNS服務(wù)器軟件版本特征用到流量分析中去。這些方法存在著局部失效或者人工工作量大、特征信息更新緩慢的缺點(diǎn)。
因此,本領(lǐng)域的技術(shù)人員致力于開(kāi)發(fā)一種基于機(jī)器學(xué)習(xí)的DNS服務(wù)器軟件指紋識(shí)別系統(tǒng)和方法,采用機(jī)器學(xué)習(xí)的方式,檢測(cè)和識(shí)別DNS服務(wù)器軟件版本信息,提高DNS服務(wù)器的安全性。
技術(shù)實(shí)現(xiàn)要素:
有鑒于現(xiàn)有的DNS服務(wù)器軟件指紋識(shí)別方法的缺陷,本發(fā)明提出了一種基于機(jī)器學(xué)習(xí)的檢測(cè)識(shí)別DNS服務(wù)器軟件版本信息系統(tǒng)和方法,利用開(kāi)發(fā)人員先期在本地訓(xùn)練生成的決策樹(shù)模塊作為核心分類模塊,以用戶目標(biāo)DNS服務(wù)器域名作為輸入,程序化抽取該域名的查詢/響應(yīng)報(bào)文特征記錄,作為決策樹(shù)模塊的輸入特征,經(jīng)過(guò)決策樹(shù)模塊決策分類得到最終的目標(biāo)DNS服務(wù)器域名的版本信息。
為了解決上述技術(shù)缺陷,本發(fā)明所述的一種基于機(jī)器學(xué)習(xí)的DNS服務(wù)器軟件指紋識(shí)別系統(tǒng),包括輸入模塊、特征提取模塊、決策樹(shù)分類模塊和輸出模塊,其中,所述輸入模塊、特征提取模塊、決策樹(shù)分類模塊和輸出模塊依次連接,所述特征提取模塊被配置為在向特定的DNS服務(wù)器進(jìn)行的查詢和響應(yīng)中抽取特征;所述決策樹(shù)分類模塊被配置為在本地訓(xùn)練生成,且產(chǎn)生DNS服務(wù)器的所述軟件指紋以及相對(duì)應(yīng)的版本信息。
本發(fā)明還提供了一種基于機(jī)器學(xué)習(xí)檢測(cè)DNS服務(wù)器軟件指紋識(shí)別方法,其特征在于,包括以下步驟:
第1步、建立DNS服務(wù)器軟件版本信息數(shù)據(jù)集;
第2步、根據(jù)第1步中的所述數(shù)據(jù)集轉(zhuǎn)化抽取特征訓(xùn)練集;
第3步、根據(jù)第2步中的所述訓(xùn)練集獲得決策樹(shù)分類模塊;
第4步、將第3步中得到的所述決策樹(shù)分類模塊集成到識(shí)別系統(tǒng)中,用于對(duì)于用戶輸入的目標(biāo)域名的DNS服務(wù)器軟件指紋和軟件版本信息的輸出。
進(jìn)一步地,第1步中,建立DNS服務(wù)器軟件版本信息數(shù)據(jù)集的步驟包括:
(1.1)在本地虛擬機(jī)上安裝不同版本DNS服務(wù)器軟件;
(1.2)對(duì)于域名進(jìn)行基于DNS查詢包的查詢請(qǐng)求;
(1.3)利用tcpdump/tshark截取DNS通信流量得到pcap流量包;所述pcap流量包即DNS服務(wù)器軟件版本信息數(shù)據(jù)集。
進(jìn)一步地,第2步中,轉(zhuǎn)化抽取特征訓(xùn)練集的步驟包括:
(2.1)以第1步得到的所述軟件版本信息數(shù)據(jù)集作為輸入,使用Python語(yǔ)言解析所述pcap流量包,得到每條查詢/響應(yīng)的記錄;
(2.2)在所述記錄的內(nèi)容中抽取出特征字段,匯總成特征訓(xùn)練集備用。
進(jìn)一步地,第3步中,獲得決策樹(shù)分類模塊的步驟包括:
(3.1)以第2步得到的特征訓(xùn)練集作為輸入,運(yùn)行決策樹(shù)分類的機(jī)器學(xué)習(xí)算法,得到?jīng)Q策樹(shù)分類模塊。
進(jìn)一步地,第4步中:包括以下步驟:
(4.1)將所述決策樹(shù)分類模塊與輸入模塊、查詢/響應(yīng)模塊、輸出模塊連接組成完整的軟件指紋識(shí)別系統(tǒng);
(4.2)對(duì)于用戶輸入的目標(biāo)域名,輸出DNS服務(wù)器軟件指紋和軟件版本信息。
進(jìn)一步地,第2.1步中,包括以下步驟:
(2.1.1)使用python語(yǔ)言編寫(xiě)pcap文件解析程序,將原始截取的二進(jìn)制格式pcap文件讀取解析成為16進(jìn)制字符文件;
(2.1.2)根據(jù)pcap文件格式分離出應(yīng)用層數(shù)據(jù);
(2.1.3)根據(jù)DNS消息格式的頭格式,將每條消息記錄提取出固定字段的值作為特征。
進(jìn)一步地,第2.1.3步中,所述固定字段包括Opcode、Authoritative、Recursion available和Reply code。
進(jìn)一步地,對(duì)于同一個(gè)域名的請(qǐng)求,將不同類型請(qǐng)求的返回包特征橫向拼接,全部類型返回包特征拼接完全后就得到一條有效的訓(xùn)練集數(shù)據(jù)記錄。
本發(fā)明的技術(shù)內(nèi)容:一種基于機(jī)器學(xué)習(xí)的DNS服務(wù)器軟件指紋識(shí)別的系統(tǒng)方法,主要包括如下步驟:
1.建立分類器模塊:對(duì)于不同版本的DNS服務(wù)器軟件,截取查詢/響應(yīng)流量包,使用python語(yǔ)言編寫(xiě)了pcap文件解析程序,將原始截取的二進(jìn)制格式pcap文件讀取解析成為16進(jìn)制字符文件,并根據(jù)pcap文件格式分離出應(yīng)用層(即DNS協(xié)議層)數(shù)據(jù),然后再根據(jù)DNS消息格式即頭格式,將每條消息記錄提取出Opcode,Authoritative,Recursion available,Reply code等共計(jì)11固定字段的值作為特征,對(duì)于同一個(gè)域名的請(qǐng)求,將不同類型請(qǐng)求的返回包特征橫向拼接,這樣全部類型返回包特征拼接完全后就得到一條有效的訓(xùn)練集數(shù)據(jù)記錄,按照同樣的方法,將另外DNS解析軟件版本或其他域名的返回包類似處理,由此可以得到一個(gè)完整的訓(xùn)練數(shù)據(jù)集。在此訓(xùn)練集上運(yùn)行決策樹(shù)分類算法,得到?jīng)Q策樹(shù)分類器模塊。
2.程序化抽取特征:對(duì)于用戶輸入的目標(biāo)DNS域名,我們利用步驟1所述建立分類器模型前期所做,將一系列類型的DNS查詢請(qǐng)求程序化執(zhí)行,并截取相關(guān)流量,程序自動(dòng)抽取特征成記錄,組成決策樹(shù)分類器模塊的樣本輸入。
3.機(jī)器學(xué)習(xí):利用步驟2所述程序化提取用戶輸入的目標(biāo)DNS域名查詢/響應(yīng)報(bào)文特征,輸入到預(yù)先建立的分類器模塊中,分類器根據(jù)預(yù)先學(xué)習(xí)到的特征屬性模式將該輸入劃分到已有的類別中去,輸出結(jié)果到用戶界面。
附圖說(shuō)明
圖1是本發(fā)明的一種基于機(jī)器學(xué)習(xí)的DNS服務(wù)器軟件指紋識(shí)別的方法流程;
圖2是本發(fā)明的決策樹(shù)分類器模塊部分結(jié)構(gòu)圖。
具體實(shí)施方式
參照?qǐng)D1所示,一種基于機(jī)器學(xué)習(xí)的DNS服務(wù)器軟件指紋識(shí)別的方法系統(tǒng),所述系統(tǒng)包括如下步驟:
1.目標(biāo)DNS服務(wù)器域名讀入:用戶將目標(biāo)DNS服務(wù)器域名通過(guò)輸入界面輸入系統(tǒng)中。
2.抽取目標(biāo)DNS服務(wù)器域名特征:
2.1系統(tǒng)程序自動(dòng)向目標(biāo)DNS服務(wù)器域名發(fā)送Type為A、AAAA、NS、PTR等多達(dá)幾十種類型的查詢請(qǐng)求報(bào)文。
2.2在系統(tǒng)程序發(fā)包查詢的同時(shí),系統(tǒng)后臺(tái)運(yùn)行流量截取程序?qū)⒉襟E2.1所述的查詢請(qǐng)求/響應(yīng)包截取成pcap包保存。
2.3對(duì)于步驟2.2得到的pcap包,根據(jù)DNS消息報(bào)文格式,使用編寫(xiě)好的程序?qū)⒚織l消息記錄提取出Opcode,Authoritative,Recursion available,Reply code等共計(jì)11固定字段的值作為特征,對(duì)于同一個(gè)域名的請(qǐng)求,將不同類型請(qǐng)求的返回包特征橫向拼接,這樣全部類型返回包特征橫向拼接完全后就得到一條有效的特征數(shù)據(jù)記錄。
3.基于機(jī)器學(xué)習(xí)分類:如圖2所示的決策樹(shù)分類器結(jié)構(gòu),我們將步驟2中得到樣本特征數(shù)據(jù)輸入到預(yù)先建立的決策樹(shù)分類器模塊中,它從決策樹(shù)的樹(shù)根進(jìn)入,在樹(shù)的每一個(gè)節(jié)點(diǎn)通過(guò)對(duì)樣本的某個(gè)屬性的判斷選擇不同的路徑,以此類推逐步下降到葉子節(jié)點(diǎn),每個(gè)葉子節(jié)點(diǎn)是一種DNS服務(wù)器軟件版本,從而可以得到輸入樣本所屬的類別。
4.將步驟3中的得到的結(jié)果通過(guò)輸出模塊格式化輸出到用戶界面,完成目標(biāo)DNS服務(wù)器軟件指紋識(shí)別工作。
以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)無(wú)需創(chuàng)造性勞動(dòng)就可以根據(jù)本發(fā)明的構(gòu)思做出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過(guò)邏輯分析、推理或者有限的實(shí)驗(yàn)可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書(shū)所確定的保護(hù)范圍內(nèi)。