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