楊建強+姜洪溪
DOI:10.16644/j.cnki.cn33-1094/tp.2016.02.016
摘 ?要: 基于DNS協(xié)議的隱蔽信道給企業(yè)和個人帶來很大的安全威脅,對它的檢測非常重要。提出一種新的檢測方法——利用第二級域名的FQDN個數(shù)來檢測DNS隱蔽信道。測試結(jié)果表明,在采樣時間窗口較小的情況下,該方法很容易識別出某些DNS隱蔽信道。討論了該方法的不足,并給出了解決辦法。
關(guān)鍵詞: DNS; 隱蔽信道; 檢測; FQDN
中圖分類號:TP393.08 ? ? ? ? ?文獻(xiàn)標(biāo)志碼:A ? ? 文章編號:1006-8228(2016)02-53-03
Using FQDN number of the second-level domain name to
detect DNS-based covert channels
Yang Jianqiang, Jiang Hongxi
(School of Mathematics and Computer Science, Hubei University of Arts and Science, Xiangyang, Hubei 441053, China)
Abstract: It is very important to detect the DNS-based covert channel which brings about a significant risk to businesses and individuals. In this paper, a new detection method is presented, which uses FQDN (Fully Qualified Domain Name) number of the second-level domain to detect DNS-based covert channel. The test results showed that this method can easily identify some DNS-based convert channels, if the sampling time window is shorter. Shortcomings of the method are discussed and solutions are given.
Key words: DNS; covert channel; detection; FQDN
0 引言
隱蔽信道是指允許進(jìn)程以危害系統(tǒng)安全策略的方式傳輸信息的通信信道[1]。隱蔽信道的概念最早是在研究安全操作系統(tǒng)時提出的,后來擴展到數(shù)據(jù)庫和網(wǎng)絡(luò)環(huán)境中?;贒NS協(xié)議的隱蔽信道(以下簡稱DNS信道)最早由Oskar Pearson于1998年4月提出。2004年Dan Kaminsky在Defcon黑客大會上公開了自編的DNS信道工具,該工具可以將音頻、視頻和遠(yuǎn)程登錄等數(shù)據(jù)通過DNS協(xié)議封裝后發(fā)布到Internet上[2]。從此DNS信道技術(shù)得到越來越多的關(guān)注。
目前已經(jīng)有十多種DNS信道工具,比如dns2tcp、DNScapy、DNScat、DNScat-B、iodine、Heyoka等[3]。這些工具所用到的技術(shù)都非常相似,主要包括四方面:受控的域名,控制端程序,被控端程序,以及數(shù)據(jù)編碼方法。受控的域名通常是第二級域名(第二級域名指只有兩層或兩個域名標(biāo)簽的域名)。DNS信道的基本架構(gòu)如圖1所示。被控端程序通常運行在內(nèi)部主機上,負(fù)責(zé)將通信數(shù)據(jù)封裝為對特定域名的請求解析報文??刂贫顺绦?qū)?yīng)答數(shù)據(jù)封裝為特定的DNS應(yīng)答報文。
DNS信道工具的最初目的是利用DNS信道免費使用Wi-Fi訪問因特網(wǎng)。但是,這些工具也可用于更加惡意的活動。比如創(chuàng)建遠(yuǎn)程控制通道,控制被入侵的主機,或者被惡意軟件利用。在近幾年發(fā)生的一些賬戶數(shù)據(jù)被盜事件中,有些攻擊者就使用了這種方法。另外,測試結(jié)果顯示DNS信道能夠達(dá)到110 KB/s的帶寬及150 ms的延遲[4]。因此,無論是對企業(yè)還是對個人,DNS信道都具有非常大的安全威脅,對它的檢測和防范非常重要。
1 利用第二級域名的FQDN個數(shù)來檢測DNS信道
檢測DNS信道的技術(shù)或方法有數(shù)十種之多,總體上可將它們分為兩類:DNS載荷分析和DNS流量分析。在文獻(xiàn)[5]中我們對它們進(jìn)行了總結(jié)。這里給出一種DNS信道檢測方法,它利用第二級域名的FQDN(指包含主機名在內(nèi)的整個域名)個數(shù)來檢測DNS信道(以下簡稱FQDN個數(shù)法)。
許多DNS信道工具通常會在一個DNS報文中傳輸盡可能多的數(shù)據(jù),這意味著DNS信道所使用的域名會比較長。不過,隨著對DNS信道檢測技術(shù)的深入了解,狡猾的攻擊者會嘗試縮短域名的長度來避免DNS信道被檢測出來??s短域名的長度往往會導(dǎo)致DNS報文數(shù)量的增加,特別是在傳輸大量數(shù)據(jù)的時候。這些報文中的域名(指包含主機名在內(nèi)的完整域名,即FQDN)彼此不同并且通常來自同一個特定的第二級域名。因此,通過在DNS報文中尋找FQDN個數(shù)較多的第二級域名,就可以發(fā)現(xiàn)域名較短的DNS信道。事實上,如果要傳輸?shù)臄?shù)據(jù)比較多,即使DNS信道的域名比較長,F(xiàn)QDN個數(shù)法仍然有效。原因很簡單,因為較多的數(shù)據(jù)需要較多DNS報文來傳輸。
1.1 實現(xiàn)方法說明
利用端口鏡像捕獲網(wǎng)絡(luò)流量,使用相應(yīng)的工具對流量中的多種協(xié)議包括DNS進(jìn)行解析,然后利用解析后的元數(shù)據(jù)進(jìn)行流量分析。流量分析規(guī)則包括四個步驟:首先,查詢特定時間窗口的DNS數(shù)據(jù)并保存為xml文件;其次,對xml文件進(jìn)行清理(比如替換xml中某些與mysql沖突的保留字),為導(dǎo)入數(shù)據(jù)做準(zhǔn)備;然后把xml數(shù)據(jù)導(dǎo)入到mysql中;最后,使用Python分析導(dǎo)入的數(shù)據(jù),計算每個第二級域名的FQDN個數(shù),找出FQDN個數(shù)最多的第二級域名。上述過程利用Python和nwmodule庫實現(xiàn)。
1.2 測試
我們對一個有近1千個用戶的網(wǎng)絡(luò)環(huán)境進(jìn)行流量捕獲,持續(xù)2個小時。在此期間,發(fā)生了超過80,000個外部DNS查詢。另外,在此期間,使用DNScat-B創(chuàng)建一個DNS信道,來傳輸一個125K的文本文件。傳輸共花費大約2分鐘時間,之后該信道進(jìn)入輪詢模式,并保留了幾分鐘。
以10分鐘作為取樣時間窗口,對解析后的元數(shù)據(jù)進(jìn)行分析和統(tǒng)計。圖2給出了在DNS信道流量(即傳輸文件)出現(xiàn)期間的10分鐘取樣窗口內(nèi)的FQDN分布情況。圖2中使用單個字母替代正常的第二級域名,用“CH”替代用于DNS信道的第二級域名。圖2顯示“CH”的FQDN個數(shù)遠(yuǎn)遠(yuǎn)超過其他字母。這表明通過統(tǒng)計每個第二級域名的FQDN個數(shù),的確能夠檢測出某些DNS信道。另外,圖2還顯示其他字母的FQDN的個數(shù)都少于300個,所以,對于10分鐘取樣窗口,可以把300作為檢測DNS信道域的閾值。
以1小時作為取樣時間窗口,圖3給出了DNS信道流量出現(xiàn)期間的1小時取樣窗口內(nèi)的FQDN分布情況??梢园l(fā)現(xiàn),DNS信道“CH”的FQDN個數(shù)僅次于“A”的個數(shù)。這里的“A”是云安全中的文件信譽服務(wù)使用的域,該服務(wù)對每一個請求的文件都產(chǎn)生一個FQDN,所以FQDN個數(shù)比較多。
以上測試表明,在取樣窗口較小的情況下,利用每個第二級域名的FQDN個數(shù)很容易識別某些DNS信道。實際上,較小的取樣窗口對持續(xù)時間短的DNS信道也更加敏感,而較大取樣窗口也會導(dǎo)致更長的處理時間。
1.3 不足及完善
并不是只有DNS信道的域名會使用大量的FQDN,用于廣告、內(nèi)容交付和云服務(wù)的域名常常也會使用大量FQDN。因此,在某些情況下,F(xiàn)QDN個數(shù)法存在著誤判的可能,特別是在DNS信道存在時間極短而取樣窗口又比較大的情況下。不過,如果把FQDN個數(shù)較多的(比如超過200個)知名的域名放到一個白名單中,就可以利用白名單排除一部分FQDN個數(shù)較多的合法域名,從而使得即使使用更大的取樣窗口,持續(xù)時間很短的DNS信道也很容易識別出來。
如果DNS信道利用較少的DNS報文就能完成數(shù)據(jù)的傳輸,那么FQDN個數(shù)法將無效。此時,需要輔以其他檢測方法。比如尋找有效載荷較長的DNS報文。與FQDN個數(shù)法一樣,尋找有效載荷較長的DNS報文也是一種通用的檢測方法。比較有效的做法是尋找域名中主機名較長的DNS報文——比如主機名超過52個字符的DNS報文[6]。原因是許多DNS信道會利用域名最左邊的主機名來傳輸數(shù)據(jù)。另外,有些DNS信道會利用多個域名標(biāo)簽來傳輸數(shù)據(jù)。所以,尋找域名中出現(xiàn)連續(xù)多個長域名標(biāo)簽的DNS報文也是一種有效的做法。比如把域名中出現(xiàn)三個連續(xù)的、長度介于26到63個字符的域名標(biāo)簽作為一條檢測規(guī)則。
另外,如果DNS信道使用的受控域名不是第二級域名,比如使用第三級域名作為受控域名,F(xiàn)QDN個數(shù)法也將無效。不過,受控域名的層數(shù)越多,完整的域名即FQDN能夠容納的通信數(shù)據(jù)也越少。所以,使用多于二層的受控域名的DNS信道比較少見。即使存在這樣的DNS信道,把FQDN個數(shù)法中的第二級域名改成第三級域名,它也可以實現(xiàn)對此類DNS信道的檢測。
2 結(jié)束語
DNS協(xié)議主要用于把域名解析成IP地址。因為DNS并不用于一般的數(shù)據(jù)傳輸,所以人們往往并不重視對DNS流量的監(jiān)視。DNS信道是對DNS的濫用,其主要威脅包括兩個方面,一是對受害的主機進(jìn)行控制,二是數(shù)據(jù)泄露。不能通過簡單地禁止DNS報文的方式來消除DNS信道帶來的危害,正確的做法是采用有效的DNS信道檢測技術(shù)將其檢測出來,繼而攔截非法的DNS報文。本文提出了一種新的DNS信道檢測方法——利用第二級域名的FQDN個數(shù)來檢測DNS信道。該方法與DNS資源記錄類型、編碼方法等無關(guān),是一種通用的檢測方法。本文成功測試了這種方法。測試結(jié)果表明,在時間窗口較小的情況下,比如10分鐘,該方法很容易識別出某些DNS信道。盡管在某些情況下該方法無法準(zhǔn)確識別出DNS信道,但是可以借助白名單及其他檢測方法來增強識別能力。需要注意的是,如果狡猾的攻擊者有意的降低DNS報文的發(fā)送速度,那么就可以避免被FQDN個數(shù)法識別出來。對于這種情況,可以進(jìn)一步結(jié)合其他DNS信道檢測方法,比如特征匹配法來提高識別率。
參考文獻(xiàn)(References):
[1] 王永吉,吳敬征,曾海濤等.隱蔽信道研究[J].軟件學(xué)報,
2010.21(9):2262-2288
[2] Kaminsky D. Black Ops of DNS[EB/OL].2004 [2013-
11-12].http://www.defcon.org/html/links/dc-archieves/dc-12-archive.html#kaminsky
[3] Merlo A, Papaleo G, Veneziano S, et al. A Comparative
Performance Evaluation of DNS Tunneling Tools[C]. The 4th International Conference(CISIS 2011).Springer Berlin Heidelberg,2011:84-91
[4] Van Leijenhorst, T. On the Viability and Performance of
DNS Tunneling[C]. The 5th International Conference on Information Technology and Applications (ICITA'08). Cairns, Australia,2008:560-566
[5] 楊建強,方磊.DNS隱蔽信道檢測研究[J].現(xiàn)代計算機,
2013.10:49-52
[6] Butler P, Xu K. Quantitatively analyzing stealthy
communication channels[C]. Proceedings of the 9th international conference on Applied cryptography and network security(ACNS'11). Springer Berlin Heidelberg,2011:238-254