楊建強+姜洪溪



DOI:10.16644/j.cnki.cn33-1094/tp.2016.02.016
摘 ?要: 基于DNS協議的隱蔽信道給企業和個人帶來很大的安全威脅,對它的檢測非常重要。提出一種新的檢測方法——利用第二級域名的FQDN個數來檢測DNS隱蔽信道。測試結果表明,在采樣時間窗口較小的情況下,該方法很容易識別出某些DNS隱蔽信道。討論了該方法的不足,并給出了解決辦法。
關鍵詞: DNS; 隱蔽信道; 檢測; FQDN
中圖分類號:TP393.08 ? ? ? ? ?文獻標志碼: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 引言
隱蔽信道是指允許進程以危害系統安全策略的方式傳輸信息的通信信道[1]。隱蔽信道的概念最早是在研究安全操作系統時提出的,后來擴展到數據庫和網絡環境中。基于DNS協議的隱蔽信道(以下簡稱DNS信道)最早由Oskar Pearson于1998年4月提出。2004年Dan Kaminsky在Defcon黑客大會上公開了自編的DNS信道工具,該工具可以將音頻、視頻和遠程登錄等數據通過DNS協議封裝后發布到Internet上[2]。從此DNS信道技術得到越來越多的關注。
目前已經有十多種DNS信道工具,比如dns2tcp、DNScapy、DNScat、DNScat-B、iodine、Heyoka等[3]。這些工具所用到的技術都非常相似,主要包括四方面:受控的域名,控制端程序,被控端程序,以及數據編碼方法。受控的域名通常是第二級域名(第二級域名指只有兩層或兩個域名標簽的域名)。DNS信道的基本架構如圖1所示。被控端程序通常運行在內部主機上,負責將通信數據封裝為對特定域名的請求解析報文。控制端程序將應答數據封裝為特定的DNS應答報文。
DNS信道工具的最初目的是利用DNS信道免費使用Wi-Fi訪問因特網。但是,這些工具也可用于更加惡意的活動。比如創建遠程控制通道,控制被入侵的主機,或者被惡意軟件利用。在近幾年發生的一些賬戶數據被盜事件中,有些攻擊者就使用了這種方法。另外,測試結果顯示DNS信道能夠達到110 KB/s的帶寬及150 ms的延遲[4]。因此,無論是對企業還是對個人,DNS信道都具有非常大的安全威脅,對它的檢測和防范非常重要。
1 利用第二級域名的FQDN個數來檢測DNS信道
檢測DNS信道的技術或方法有數十種之多,總體上可將它們分為兩類:DNS載荷分析和DNS流量分析。在文獻[5]中我們對它們進行了總結。這里給出一種DNS信道檢測方法,它利用第二級域名的FQDN(指包含主機名在內的整個域名)個數來檢測DNS信道(以下簡稱FQDN個數法)。
許多DNS信道工具通常會在一個DNS報文中傳輸盡可能多的數據,這意味著DNS信道所使用的域名會比較長。不過,隨著對DNS信道檢測技術的深入了解,狡猾的攻擊者會嘗試縮短域名的長度來避免DNS信道被檢測出來。縮短域名的長度往往會導致DNS報文數量的增加,特別是在傳輸大量數據的時候。這些報文中的域名(指包含主機名在內的完整域名,即FQDN)彼此不同并且通常來自同一個特定的第二級域名。因此,通過在DNS報文中尋找FQDN個數較多的第二級域名,就可以發現域名較短的DNS信道。事實上,如果要傳輸的數據比較多,即使DNS信道的域名比較長,FQDN個數法仍然有效。原因很簡單,因為較多的數據需要較多DNS報文來傳輸。
1.1 實現方法說明
利用端口鏡像捕獲網絡流量,使用相應的工具對流量中的多種協議包括DNS進行解析,然后利用解析后的元數據進行流量分析。流量分析規則包括四個步驟:首先,查詢特定時間窗口的DNS數據并保存為xml文件;其次,對xml文件進行清理(比如替換xml中某些與mysql沖突的保留字),為導入數據做準備;然后把xml數據導入到mysql中;最后,使用Python分析導入的數據,計算每個第二級域名的FQDN個數,找出FQDN個數最多的第二級域名。上述過程利用Python和nwmodule庫實現。
1.2 測試
我們對一個有近1千個用戶的網絡環境進行流量捕獲,持續2個小時。在此期間,發生了超過80,000個外部DNS查詢。另外,在此期間,使用DNScat-B創建一個DNS信道,來傳輸一個125K的文本文件。傳輸共花費大約2分鐘時間,之后該信道進入輪詢模式,并保留了幾分鐘。
以10分鐘作為取樣時間窗口,對解析后的元數據進行分析和統計。圖2給出了在DNS信道流量(即傳輸文件)出現期間的10分鐘取樣窗口內的FQDN分布情況。圖2中使用單個字母替代正常的第二級域名,用“CH”替代用于DNS信道的第二級域名。圖2顯示“CH”的FQDN個數遠遠超過其他字母。這表明通過統計每個第二級域名的FQDN個數,的確能夠檢測出某些DNS信道。另外,圖2還顯示其他字母的FQDN的個數都少于300個,所以,對于10分鐘取樣窗口,可以把300作為檢測DNS信道域的閾值。
以1小時作為取樣時間窗口,圖3給出了DNS信道流量出現期間的1小時取樣窗口內的FQDN分布情況。可以發現,DNS信道“CH”的FQDN個數僅次于“A”的個數。這里的“A”是云安全中的文件信譽服務使用的域,該服務對每一個請求的文件都產生一個FQDN,所以FQDN個數比較多。
以上測試表明,在取樣窗口較小的情況下,利用每個第二級域名的FQDN個數很容易識別某些DNS信道。實際上,較小的取樣窗口對持續時間短的DNS信道也更加敏感,而較大取樣窗口也會導致更長的處理時間。
1.3 不足及完善
并不是只有DNS信道的域名會使用大量的FQDN,用于廣告、內容交付和云服務的域名常常也會使用大量FQDN。因此,在某些情況下,FQDN個數法存在著誤判的可能,特別是在DNS信道存在時間極短而取樣窗口又比較大的情況下。不過,如果把FQDN個數較多的(比如超過200個)知名的域名放到一個白名單中,就可以利用白名單排除一部分FQDN個數較多的合法域名,從而使得即使使用更大的取樣窗口,持續時間很短的DNS信道也很容易識別出來。
如果DNS信道利用較少的DNS報文就能完成數據的傳輸,那么FQDN個數法將無效。此時,需要輔以其他檢測方法。比如尋找有效載荷較長的DNS報文。與FQDN個數法一樣,尋找有效載荷較長的DNS報文也是一種通用的檢測方法。比較有效的做法是尋找域名中主機名較長的DNS報文——比如主機名超過52個字符的DNS報文[6]。原因是許多DNS信道會利用域名最左邊的主機名來傳輸數據。另外,有些DNS信道會利用多個域名標簽來傳輸數據。所以,尋找域名中出現連續多個長域名標簽的DNS報文也是一種有效的做法。比如把域名中出現三個連續的、長度介于26到63個字符的域名標簽作為一條檢測規則。
另外,如果DNS信道使用的受控域名不是第二級域名,比如使用第三級域名作為受控域名,FQDN個數法也將無效。不過,受控域名的層數越多,完整的域名即FQDN能夠容納的通信數據也越少。所以,使用多于二層的受控域名的DNS信道比較少見。即使存在這樣的DNS信道,把FQDN個數法中的第二級域名改成第三級域名,它也可以實現對此類DNS信道的檢測。
2 結束語
DNS協議主要用于把域名解析成IP地址。因為DNS并不用于一般的數據傳輸,所以人們往往并不重視對DNS流量的監視。DNS信道是對DNS的濫用,其主要威脅包括兩個方面,一是對受害的主機進行控制,二是數據泄露。不能通過簡單地禁止DNS報文的方式來消除DNS信道帶來的危害,正確的做法是采用有效的DNS信道檢測技術將其檢測出來,繼而攔截非法的DNS報文。本文提出了一種新的DNS信道檢測方法——利用第二級域名的FQDN個數來檢測DNS信道。該方法與DNS資源記錄類型、編碼方法等無關,是一種通用的檢測方法。本文成功測試了這種方法。測試結果表明,在時間窗口較小的情況下,比如10分鐘,該方法很容易識別出某些DNS信道。盡管在某些情況下該方法無法準確識別出DNS信道,但是可以借助白名單及其他檢測方法來增強識別能力。需要注意的是,如果狡猾的攻擊者有意的降低DNS報文的發送速度,那么就可以避免被FQDN個數法識別出來。對于這種情況,可以進一步結合其他DNS信道檢測方法,比如特征匹配法來提高識別率。
參考文獻(References):
[1] 王永吉,吳敬征,曾海濤等.隱蔽信道研究[J].軟件學報,
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].現代計算機,
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