宋平凡,劉嘉勇,華 偉(四川大學電子信息學院,四川成都610064)
一種基于DNAT技術的DNS重定向改進方案*
宋平凡,劉嘉勇,華 偉
(四川大學電子信息學院,四川成都610064)
DNS重定向是基于DNS欺騙實現的一種數據流重定向技術。文中首先總結了幾種不同形式的DNS欺騙技術,重點分析了現有DNS重定向技術的實現方式及其所存在的缺陷:一是會直接暴露監測主機的IP地址;二是不能同時監測多個域名。然后介紹了NAT和DNAT的技術原理,并基于DNAT技術給出了一種針對現有DNS重定向技術實現缺陷的改進方案。最后給出了改進方案在Linux上的實現方法,對方案改進前后進行了對比,證明了改進方案的優越性。
DNS重定向 目的地址轉換 監控 Linux防火墻
隨著用戶對自身的信息安全越來越重視,以及網絡終端處理能力的提升,越來越多的網站與移動APP開始運用SSL/TLS等加密通信協議來對自己全部或部分的通信數據進行保護。應用加密通信協議可以有效防止基于被動嗅探技術的監聽,這在為普通用戶提供隱私數據保護的同時,也為某些不法分子規避有關部門的審查提供了溫床。
要對SSL/TLS等加密流量進行審查,必須用到主動嗅探技術。賀龍濤等人研究了基于協議欺騙的主動嗅探[1],指出協議欺騙其實就是攻擊者有目的地破壞網絡訪問過程中存在的映射關系,并根據所破壞映射關系的不同將可用于主動嗅探的協議欺騙技術分為四大類:ARP欺騙、路由欺騙、DNS欺騙,以及應用層欺騙。其中,ARP欺騙、路由欺騙僅適用于同一局域網內的主動嗅探,應用層欺騙不能用于加密傳輸協議的嗅探,這些技術都有一定的局限性。故此,出于通用性考慮,一般選用DNS欺騙來實現數據流的重定向,也簡稱為DNS重定向。
本文在分析現有DNS重定向技術實現方式及其缺陷的基礎上,提出了一種基于DNAT技術的DNS重定向改進方案。
根據欺騙賴以成功的不同基礎,可以將DNS欺騙分為:
(1)內應攻擊
其成功依賴于DNS服務器存在某種漏洞。攻擊者可以利用這種漏洞非法控制一臺DNS服務器,而后直接操作域名數據庫,將特定域名所對應的IP地址修改為自己指定的IP地址,從而使所有使用該DNS服務器的客戶端,在查詢特定域名時,都得到攻擊者偽造的IP地址。在有些文獻中,也將這種攻擊直觀地稱為DNS服務器攻陷[2]。
(2)序列號攻擊
其成功依賴于DNS協議本身在鑒別機制上存在的缺陷。攻擊者在嗅探到對特定域名的DNS查詢請求包后,可以根據其查詢ID輕易偽造一個DNS應答包,并在其中填入自己指定的IP地址,只要趕在正常響應之前返回給發出該查詢的DNS客戶端,就能使該客戶端的DNS緩存里特定域名對應的是攻擊者偽造的IP地址。在有些文獻中,也將這種序列號攻擊直觀地稱為DNS ID欺騙[3]。如無法嗅探到DNS查詢請求包,則還可以通過一種稱為DNS緩存投毒[4]的技術來實現擴展的序列號攻擊。
依前文所述,DNS重定向是一種基于DNS欺騙實現的網絡數據流重定向技術。無論完成DNS欺騙時使用的是前述哪種具體形式,現有的中間人監測系統在實現DNS重定向時,都是將特定域名原本對應的真實IP地址替換成監測主機的IP地址,從而使被監控主機向該域名發送的所有數據包都會發送到監測主機而不是擁有該域名的真實服務器,其實現效果如圖1所示。

圖1 改進前DNS重定向技術的效果示意Fig.1 Effect of unimproved DNS redirection
這種將數據流直接重定向到監測主機IP地址的實現方式存在兩個重大缺陷:
一是會把監測主機的IP地址直接暴露出來,如果被監控的不法分子擁有足夠的安全意識與技術,較容易通過實際訪問的IP地址察覺到異常,甚至還可能發生被監控主機反入侵監測主機的情況。
二是會使監測系統一次運行只能監控一個域名的加密通信。因為如果同一時間把兩個或更多域名的加密流量都重定向到一臺監測主機,則由于目的地址都是監測主機的IP地址,監測主機無法根據四元組信息區分接收的加密流量到底屬于哪個域名,也就無法完成正常的代理轉發功能。
2.1 NAT與DNAT
NAT(Network Address Translation,網絡地址轉換)是由IETF制定[5],并在1994年提出的一項標準,其設計初衷是為了緩解當時已經日益嚴重的IP地址緊缺問題。在進行轉換處理時,如果是對數據包中的源IP地址和源端口進行轉換,則稱之為SNAT(Source Network Address Translation,源網絡地址轉換);反之,若是對數據包中的目的IP地址和目的端口進行轉換,則稱之為DNAT(Destination Network Address Translation,目的網絡地址轉換)。通過SNAT,可以讓內網多臺主機共享一個IP地址訪問互聯網,或是實現IP欺騙;通過DNAT,可以讓外網主機訪問內網主機所提供的服務,或是實現數據流的重定向與透明代理[6]。其中,DNAT的原理如圖2所示。

圖2 DNAT的原理示意Fig.2 Schematic of DNAT
2.2 基于DNAT的DNS重定向改進方案描述
基于前文的分析,本文結合DNAT技術對現有DNS重定向實現提出了一種改進方案。本方案對DNS欺騙的實現方式沒有要求,主要對以下三點進行了改進:
1)將特定域名的真實IP地址篡改為一個不可達的地址,以此隱藏監測主機的IP地址,并增強監測行為的隱蔽性和監測系統的安全性。
2)將不同域名的真實IP地址篡改為不同的不可達地址,以此對發往不同域名的加密流量進行區分,使監測主機可以同時監控多個域名的通信,并分別處理。
3)為了能夠讓監測主機基于系統協議棧正常處理目的地址是不可達地址的數據包,在數據包接收后,上交協議棧前,增加了目的地址轉換的處理流程。
為了防止本文所討論的技術被不法分子濫用,在進行下面DNS重定向改進方案流程的討論前,本文先做一些關于討論背景和范圍方面的限制:改進方案的使用者應當擁有被監控網絡的一定管理權限。例如,使用者對被監控網絡的DNS服務器有管理權限,可以直接修改DNS服務器的域名數據庫記錄;又如,使用者擁有網絡設備和線路的管理權限,可以在主干網上使用分光器,可以使用路由器、交換機等網絡設備的鏡像口。
基于此,不失一般性,本文假設監測主機接在被監控網絡上連網絡設備的鏡像口上,使用的欺騙技術是DNS ID欺騙,則改進方案的流程詳細描述如下:
1)監測主機預先搜集一批IP地址,這些IP地址經過測試是不可達的,后文稱之為虛擬地址。
2)對于所有被監控域名,監測主機需建立一個域名與虛擬地址之間一一對應的靜態映射表,記為表A;建立一個虛擬地址與連接處理參數之間的靜態映射表,記為表B。
3)監測主機嗅探到對某被監控域名的查詢請求后,根據該域名在表A中查詢得到對應的虛擬地址,將這個虛擬地址填入偽造的DNS響應包,返回給被監控客戶端。
4)被監控客戶端由于鑒別機制的缺陷,信任了這個響應包,建立了該域名與虛擬地址之間的錯誤映射關系。
5)被監控客戶端把對該被監控域名的連接請求發往虛擬地址,由于默認路由的存在,該請求會經上連交換機,被一路發往被監控網絡的出口網關以及上級路由器,但畢竟虛擬地址是不可達的,在轉發過程中最后會因TTL耗盡等原因被丟棄。
6)監測主機可以通過嗅探從被監控網絡的上連網絡設備的鏡像口獲取被監控網絡所有上行數據的一份拷貝。它在里面找到發往虛擬地址的連接請求后,首先將該連接請求的四元組信息(源IP、源端口、目的IP和目的端口)呆存到一個動態表,記為表C;接著經過DNAT處理,把該請求的目的IP(虛擬地址)、目的端口(真實端口)改為監測主機代理程序的監聽IP和監聽端口,最后將該請求轉給代理程序。
7)代理程序首先根據所處理連接的源IP和源端口去表C中查詢DNAT處理前的虛擬地址和真實端口,再根據虛擬地址去表B中查詢該連接對應的處理參數,結合真實端口、連接處理參數,代理程序就可以對該連接進行完整的處理了。
類似于圖1,改進方案實現后的效果如圖3所示。

圖3 改進后DNS重定向技術的效果示意Fig.3 Effect of improved DNS redirection
3.1 Netfilter/Iptables
Netfilter/Iptables是2.4.x以及后面版本Linux內核中自帶的防火墻系統[7],它由Netfilter和Iptables兩個相對獨立的組件組成。
(1)Netfilter組件
它工作在內核空間,是Linux內核的一部分。它定義并存儲了四個內置表(raw、mangle、nat、filter)和五個內置鏈(PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING)。其中,表是按照對數據包的操作類型區分的,一個表就是實現一類功能的所有規則的集合;鏈是按照掛接的HOOK點不同[8]來區分的,一條鏈就是在某個HOOK點(鉤子連接點)上某個表所引用規則的集合。表和鏈實際上是Netfilter的兩個不同維度,所有的四表和五鏈合起來就是內核用來控制數據包過濾處理的完整規則集。
(2)Iptables組件
它工作在用戶空間,本質上是一個用以編輯Netfilter中數據包過濾處理規則的工具。Iptables有著嚴格的語法規則,其基本格式為: Iptables[-t表名]命令選項[鏈名][條件匹配] [-j目標動作或跳轉]。
3.2 基于Netfilter/Iptables的改進方案實現
改進方案的實現可以分為兩部分:一是DNS欺騙模塊;二是DNAT轉換模塊。其中,DNS欺騙模塊基本沿用了原有方案的實現方式,此處不做討論。本節主要討論DNAT轉換模塊的實現。
在Linux系統上,DNAT的實現當前有兩種方式:一種是楊文潮等人提到的通過修改Linux網絡部分內核源代碼來實現[9];另一種則是基于Netfilter/Iptables實現方式。由于修改內核源碼的實現方式,對于不同版本的系統內核,需要針對性地編寫內核補丁,兼容性上不好。所以,本文重點討論基于Netfilter/Iptables的DNAT實現方式。
Netfilter實質上工作在系統協議棧內部,所以數據包能被Netfilter處理的前提是它已經被送入系統協議棧。可是,經DNS重定向后的數據包,其目的地址(MAC、IP地址、TCP端口)均非監測主機的通信地址,如果直接用網卡的通信模式接收這些流量,那么由于數據包的目的MAC地址并非本機,數據包會被通信網卡直接丟棄;而如果使用網卡的混雜模式,雖然可以采集到數據包,但會直接提交到應用層,還是不會被送進系統協議棧,Netfilter也還是無能為力。
為了解決這個問題,本文基于多網卡實現了目的MAC地址轉換功能:監測主機先用一張設置了混雜模式的網卡(簡記為采集網卡)從網絡設備鏡像口將重定向后的數據包先采集下來,然后修改數據包的目的MAC地址為通信網卡的MAC地址,再用一張和通信網卡接入同一臺內部交換機的網卡(簡記為轉換網卡)將數據包轉發給通信網卡,由此完成目的MAC地址轉換的功能,如下圖4所示。

圖4 目的MAC地址轉換的流程Fig.4 Process of destination MAC address translation
上圖所示流程中的一大關鍵是如何判定一個目的IP是否為虛擬地址。為了便于處理,本文找到了一個不可達的IP地址網段,并將所有監控域名都重定向到此網段內的不同IP地址,也就是前文中提到的虛擬地址。于是可以簡單地根據目的IP是否屬于預定的不可達IP地址網段,來判定該IP是否為虛擬地址。
圖4中的“地址轉換動態記錄表”中主要保存地址轉換前經過DNS欺騙改變流向的網絡數據包的源IP、源TCP端口、目的IP、目的TCP端口,它在目的地址轉換模塊運行過程中逐步建立。
經過目的MAC地址轉換后,數據包被轉發到通信網卡。由于目的MAC地址是通信網卡自身的MAC地址,因此,通信網卡會將數據包上交給系統協議棧。此時,就可以用到Netfilter/Iptables的DNAT功能將接收數據包的目的IP(虛擬IP)、目的端口(真實端口)自動轉為監測主機的監聽IP、監聽端口。
Netfilter/Iptables中實現DNAT用的內置表是nat。DNAT要在數據包進入Netfilter后,進行路由判定前完成,故此使用的內置鏈是PREROUTING。綜上,實現DNAT時需使用Iptables配置的規則如下(假設虛擬地址網段為1.1.1.0/24,監聽地址為192.168.1.111:1011):
iptables-t nat-IPREROUTING-p tcp-d 1.1. 1.0/24-j DNAT--to 192.168.1.111:1011
經過Netfilter/Iptables的DNAT轉換后,數據包就可以順利被路由表送到監測主機應用層,由通用代理模塊繼續處理。對于通用代理模塊來說,雖然它從同一個套接字得到分屬不同域名的流量,但它可以通過每個連接的源IP、源TCP端口去圖4中的“地址轉換動態記錄表”查詢該連接經DNAT轉換前的目的IP,也就是虛擬地址,從而區分不同域名的流量。
由于Netfilter/Iptables在實現NAT時有一個特性:如果一個包被匹配,那么和它屬于同一個流的所有包都會被自動轉換。因此,當通用代理模塊向被監測主機發送數據包時,Netfilter/Iptables的NAT功能也會自動將數據包的源地址信息由監聽IP、監聽端口轉回虛擬IP和真實端口。由此,就實現了完整的目的地址轉換。
基于DNAT技術,本文對主動嗅探中常用的
DNS重定向技術進行了改進。本文提出并實現的改進方案一方面隱藏了監測主機的IP地址,增強了監測行為的隱蔽性和安全性;另一方面也使一臺監測主機可以同時監控多個域名。相比現有的DNS重定向技術有較大的優越性。實現本文所提出的改進方案的關鍵是要搜集一批IP地址作為虛擬地址,虛擬地址除了必須是不可達地址外,還要求具有統一的、易識別的特征。本文當前使用的是手工測試方式來搜集虛擬地址,效率不高。如何實現一種高效的虛擬地址搜集方法,是下一步要重點解決的問題。
[1] 賀龍濤,方濱興,胡銘曾.主動監聽中協議欺騙的研究[J].通信學報,2003,24(11):146-152. HE Long-tao,FANG Bin-xing,HU Ming-zeng.The Study on Protocol Spoofing in Active Sniffing[J].Journal of China Institute of Communications,2003,24(11):146-152.
[2] 閆伯儒,方濱興,李斌等.DNS欺騙攻擊的檢測和防范[J].計算機工程,2006,32(21):130-132,135. YAN Bo-ru,FANG Bin-xing,LIBin,et al.Detection and Defence of DNSSpoofing Attack[J].Computer Engineering,2006,32(21):130-132,135.
[3] 孔政,姜秀柱.DNS欺騙原理及其防御方案[J].計算機工程,2010,36(3):125-127. KONG Zheng,JIANG Xiu-zhu.DNSSpoofing Principle and Its Defense Scheme[J].Computer Engineering, 2010,36(3):125-127.
[4] 田杰,谷大武,陸海寧.預防緩存中毒的DNS報文校驗方案[J].通信技術,2010,43(8):146-148,151. TIAN Jie,GU Da-wu,LU Hai-ning.A Solution for Packet Validity Check Against DNS Cache Poisoning [J].Communications Technology,2010,43(8):146-148,151.
[5] Egevang K.The IP Network Address Translator(NAT) [S].RFC 1631,May,1994.
[6] 張金良.用iptables實現NAT[J].唐山師范學院學報,2007,29(2):74-76. ZHANG Jin-liang.NAT-HOWTOMaking Use of Iptables [J].Journal of Tangshan Teachers College,2007,29 (2):74-76.
[7] 景建篤,俞寧.Linux下NAT的實現機制及應用[J].微機發展,2004,14(9):4-6,88. JING Jian-du,YU Ning.Implementation Mechanism and Applications of NAT based on Linux[J].Microcomputer Development,2004,14(9):4-6,88.
[8] 楊剛,陳蜀宇.Linux中基于Netfilter/Iptables的防火墻研究[J].計算機工程與設計,2007,28(17):4124 -4125,4132. YANG Gang,CHEN Shu-yu.The Research on Linux Firewall based on Netfilter/Iptables[J].Computer Engineering and Design,2007,28(17):4124-4125,4132.
[9] 楊文潮,姜志堅,于洪章.基于NAT的網絡安全技術研究[J].福建電腦,2005,(9):80-81. YANGWen-chao,JIANG Zhi-jian,YU Hong-zhang. The Study on Network Security Technology based on NAT [J].Fujian Computer,2005,(9):80-81.
SONG Ping-fan(1989-),male,graduate student,mainly working at network communication and network security.
劉嘉勇(1962—),男,教授,博士,主要研究方向:信息安全理論與應用、網絡通信與網絡安全;
LIU Jia-yong(1962-),male,professor,Ph.D.,principally working at theory and application of information security, network communication and network security.
華 偉(1967—),男,博士,副教授,主要研究方向:通信與信息系統。
HUAWei(1967-),male,Ph.D.,associate professor,principally working at communication information system.
A Modified Scheme for DNSRedirection based on DNAT Technology
SONG Ping-fan,LIU Jia-yong,HUAWei
(College of Electronic and Information Engineering,Sichuan University,Chengdu Sichuan 610064,China)
DNS redirection is a network redirection technology based on DNS spoofing.Firstly,this paper summarizes several forms of DNS spoofing,analyzes the current implementation of DNS redirection,including its disadvantages:one is that the current implementation would directly expose the IP address ofmonitoring computer to themonitored computer,and another is that the current implementation could notmonitormultiple domain names at the same time.Then,this paper describes the technical principles of NAT and DNAT,and based on DNAT technology,provides amodified scheme for DNS redirection.Finally,this paper proposes the implementation of thismodifeid scheme on Linux system,and the superiority of this scheme is verified via comparison of between the original scheme and the proposed one.
DNS redirection;DNAT;monitoring;Linux firewall
date:2014-09-05;Revised date:2014-12-10
TP393.08
A
1002-0802(2015)02-0223-05

宋平凡(1989—),男,碩士研究生,主要研究方向:網絡通信與網絡安全;
10.3969/j.issn.1002-0802.2015.02.022
2014-09-05;
2014-12-10