文/劉保君
或許你已知道網(wǎng)絡(luò)中幾乎所有的DNS請(qǐng)求都是通過(guò)明文進(jìn)行傳輸?shù)模悄闶欠裣嘈牛@一協(xié)議設(shè)計(jì)的缺陷,已經(jīng)開(kāi)始被用于域名解析路徑劫持了?
論文“Who Is Answering My Queries:Understanding and Characterizing Interception of the DNS Resolution Path”[1],發(fā) 表 于USENIX Security 2018(網(wǎng)絡(luò)安全領(lǐng)域國(guó)際四大頂級(jí)學(xué)術(shù)會(huì)議之一)。
由于某些運(yùn)營(yíng)商利用DNS 解析服務(wù)器植入廣告等盈利行為,運(yùn)營(yíng)商的DNS解析服務(wù)器一直備受質(zhì)疑[2~6], 而公共DNS 服務(wù)器(如Google 的8.8.8.8)因其良好的安全性與穩(wěn)定性被越來(lái)越多的互聯(lián)網(wǎng)用戶所信任。然而,我們發(fā)現(xiàn)這層信任關(guān)系會(huì)輕易地被DNS 解析路徑劫持所破壞。網(wǎng)絡(luò)中的劫持者將用戶發(fā)往指定公共DNS 的請(qǐng)求進(jìn)行劫持,并轉(zhuǎn)發(fā)到其他的解析服務(wù)器。除此之外,劫持者還會(huì)偽裝成公共DNS 服務(wù)的IP 地址,對(duì)用戶的請(qǐng)求進(jìn)行應(yīng)答。從終端用戶的角度來(lái)看,這種域名解析路徑劫持難以被察覺(jué)。我們?cè)O(shè)計(jì)并部署了一套測(cè)量平臺(tái)用于檢測(cè)全球范圍的DNS 解析路徑劫持現(xiàn)象。
1.劫持的規(guī)模:在全球3047 個(gè)自治域中,我們?cè)?59 個(gè)自治域內(nèi)發(fā)現(xiàn)了DNS 解析路徑劫持現(xiàn)象。特別是在中國(guó),近三成發(fā)往谷歌公共DNS 服務(wù)器的UDP 流量被劫持。
2. 劫持特點(diǎn):在不同的自治域中,路徑劫持策略和特點(diǎn)有著明顯差異。整體而言,通過(guò)“UDP”協(xié)議傳輸發(fā)往“知名公共DNS 服務(wù)器”的“A 記錄類型”的數(shù)據(jù)包更容易成為劫持目標(biāo)。
3.安全威脅:我們不僅觀測(cè)到劫持設(shè)備會(huì)篡改DNS 響應(yīng)結(jié)果,而且,通過(guò)對(duì)劫持者所使用的DNS 服務(wù)器的分析,發(fā)現(xiàn)其功能特性和安全性均存在隱患。
4. 劫持目的:DNS 解析路徑劫持的主要目的是減少運(yùn)營(yíng)商網(wǎng)間流量結(jié)算成本,而非提高用戶DNS 服務(wù)器的安全性或優(yōu)化DNS 查詢的性能。
5. 解決方案:解決DNS 解析路徑劫持的最佳方案是,在推進(jìn)DNSSEC 大規(guī)模規(guī)范部署的同時(shí),加快DNS 加密方案的實(shí)施。
我們首先闡述所關(guān)注的威脅模型。部分網(wǎng)絡(luò)用戶可能選擇使用公共DNS 服務(wù)器,正常情況下,其DNS 解析路徑如圖1 藍(lán)線所示。同時(shí),假設(shè)路徑上的某些設(shè)備可能會(huì)監(jiān)控用戶的DNS 請(qǐng)求流量,并且能夠劫持和操縱用戶的DNS 請(qǐng)求。例如,將滿足預(yù)設(shè)條件的DNS 請(qǐng)求轉(zhuǎn)發(fā)到中間盒子(Middlebox),并使用其他替代的DNS 服務(wù)器(Alternative resolver)處理用戶的DNS 請(qǐng)求;最終,中間盒子通過(guò)偽造IP 源地址的方式將DNS 應(yīng)答包發(fā)往終端用戶,此時(shí)的解析路徑如圖1 紅線所示。
圖1 威脅模型示意
通過(guò)對(duì)DNS 數(shù)據(jù)包“請(qǐng)求階段”中的解析路徑進(jìn)行劃分,將DNS 解析路徑分為四類。首先是正常的DNS 解析路徑(Normal resolution),用戶的DNS 請(qǐng)求只到達(dá)指定的公共DNS 服務(wù)器;此時(shí),權(quán)威服務(wù)器應(yīng)當(dāng)只看到一個(gè)來(lái)自公共服務(wù)器的請(qǐng)求。剩下三類均屬于DNS 解析路徑劫持:第一類DNS 路徑劫持方法是請(qǐng)求轉(zhuǎn)發(fā)(Request redirection),用戶的DNS 請(qǐng)求將直接被重定向到其他的服務(wù)器,解析路徑如圖2 紅線所示;此時(shí),權(quán)威服務(wù)器只收到來(lái)自這個(gè)服務(wù)器的請(qǐng)求,用戶指定的公共DNS 服務(wù)器完全被排除在外;第二類方法是請(qǐng)求復(fù)制(Request replication),用戶的DNS 請(qǐng)求被網(wǎng)絡(luò)中間設(shè)備復(fù)制,一份去往原來(lái)的目的地,另一份去往劫持者使用的解析服務(wù)器,解析路徑如圖2 黃線所示,此時(shí),權(quán)威服務(wù)器將收到兩個(gè)相同的查詢;第三類方法是直接應(yīng)答(Direct responding),用戶發(fā)出的請(qǐng)求同樣被轉(zhuǎn)發(fā),但解析服務(wù)器并未進(jìn)行后續(xù)查詢而是直接返回一個(gè)響應(yīng),解析路徑如圖2 藍(lán)線所示,此時(shí),權(quán)威服務(wù)器沒(méi)有收到任何查詢,但是客戶端卻收到解析結(jié)果。
圖2 DNS 解析路徑類別(僅考慮請(qǐng)求階段)
我們注意到,可能造成DNS 解析路徑劫持的設(shè)施種類較多,不僅包括運(yùn)營(yíng)商部署的中間盒子[7],還包括惡意軟件、反病毒軟件[8]、防火墻以及企業(yè)代理[9]等。在這項(xiàng)研究中,重點(diǎn)關(guān)注如何檢測(cè)這種現(xiàn)象,因此不對(duì)劫持者進(jìn)行區(qū)分。
對(duì)于DNS 解析路徑劫持現(xiàn)象,我們?cè)跍y(cè)量分析中依次回答了下列問(wèn)題:
1. DNS 解析路徑劫持規(guī)模有多大?
我們?cè)O(shè)計(jì)了兩個(gè)階段的實(shí)驗(yàn)。第一階段,研究全球范圍通過(guò)TCP 協(xié)議傳輸?shù)腄NS 數(shù)據(jù)包,結(jié)果在2691 個(gè)自治域中,有198 個(gè)自治域檢測(cè)到DNS 解析路徑劫持,7.36%的DNS 數(shù)據(jù)包受到影響;第二階段,研究中國(guó)范圍內(nèi)通過(guò)UDP 和TCP協(xié)議傳輸?shù)腄NS 數(shù)據(jù)包,結(jié)果在356 個(gè)自治域中,有61 個(gè)自治域檢測(cè)到DNS 解析路徑劫持,17.13%的DNS 數(shù)據(jù)包受到影響。
圖3 DNS 查詢性能對(duì)比
特別是在中國(guó)網(wǎng)絡(luò)中, 通過(guò)UDP 協(xié)議發(fā)往Google 公共DNS 的數(shù)據(jù)包,有27.9%受 到DNS 解析路徑劫持的影響(通過(guò)TCP 傳輸時(shí)為7.3%);相比而言,對(duì)于不知名的DNS 服務(wù)器,同樣也有9.8%的數(shù)據(jù)包受到影響(通過(guò)TCP 傳輸時(shí)為1.1%)。
2. DNS 解析路徑劫持有什么特點(diǎn)?
——路徑劫持類型層面的特征我們發(fā)現(xiàn),直接應(yīng)答劫持方式(Direct responding)極少發(fā)生。這很可能是因?yàn)榇藭r(shí)的響應(yīng)結(jié)果明顯是不正確的。此外,請(qǐng)求轉(zhuǎn)發(fā)(Request directing)的比例要高于請(qǐng)求復(fù)制(Request replication)的比例。
——自治域?qū)用娴奶卣?/p>
在每個(gè)自治域內(nèi),解析路徑劫持的特點(diǎn)差別巨大,即使在同一個(gè)自治域內(nèi),由于劫持者的多樣性,整體表現(xiàn)出的劫持特征也會(huì)較為復(fù)雜。 例如,在表1 選取的案例中,AS9808 和AS56040 這兩個(gè)自治域同屬于一家運(yùn)營(yíng)商,但是在請(qǐng)求復(fù)制類型的比例上也存在明顯差異。
3. 劫持現(xiàn)象對(duì)DNS 查詢性能有什么影響?
(1)不同類型的解析路徑劫持對(duì)DNS 查詢性能有什么影響?
將各DNS 請(qǐng)求完成的時(shí)間(Round trip time, RTT)進(jìn)行累積分布作圖,得到圖3。相比于未被劫持的請(qǐng)求(綠色曲線),我們發(fā)現(xiàn)通過(guò)請(qǐng)求復(fù)制(紅色曲線)的劫持方式確實(shí)能夠提高DNS 查詢的性能,總體的查詢時(shí)間更短;但是通過(guò)請(qǐng)求轉(zhuǎn)發(fā)的方式(黃色曲線)不能夠穩(wěn)定地實(shí)現(xiàn)這一目標(biāo)。另外,我們向用戶的本地DNS 服務(wù)器(Local DNS resolver)發(fā)送一個(gè)DNS 數(shù)據(jù)包用于作性能對(duì)比,結(jié)果顯示其性能曲線(藍(lán)色)與請(qǐng)求轉(zhuǎn)發(fā)的性能曲線高度近似。
表1 DNS 解析路徑劫持在不同自治域內(nèi)的特點(diǎn)
圖4 復(fù)制搶答式路徑劫持性能分析
(2) 對(duì)于請(qǐng)求復(fù)制這一場(chǎng)景,哪一個(gè)查詢數(shù)據(jù)包會(huì)更先到權(quán)威服務(wù)器?
當(dāng)劫持者使用請(qǐng)求復(fù)制(Request replication)方式劫持解析路徑時(shí), 如果從權(quán)威服務(wù)器的角度觀測(cè),原始的DNS請(qǐng)求和復(fù)制的DNS 哪個(gè)會(huì)更先到達(dá)權(quán)威服務(wù)器。圖4 顯示對(duì)這一時(shí)間差異的分析。對(duì)于大部分的自治域而言,復(fù)制后的DNS請(qǐng)求會(huì)更先到達(dá)權(quán)威服務(wù)器,然而我們?nèi)匀话l(fā)現(xiàn)了一個(gè)屬于中國(guó)電信的自治域,其中所有被復(fù)制后的請(qǐng)求均比原始請(qǐng)求要慢。由此推測(cè),這種現(xiàn)象可能是由于自治域內(nèi)設(shè)備部署不當(dāng)引起的,或是此時(shí)的DNS 數(shù)據(jù)包經(jīng)過(guò)了更長(zhǎng)的路由導(dǎo)致的。
4. 劫持者是否會(huì)篡改DNS 響應(yīng)數(shù)據(jù)包內(nèi)容?
在所收集的實(shí)驗(yàn)數(shù)據(jù)中,我們發(fā)現(xiàn)了上百例DNS 解析結(jié)果被篡改的案例。通過(guò)人工分析,導(dǎo)致DNS 響應(yīng)記錄被篡改的原因包括:本地流量網(wǎng)關(guān)、灰色流量變現(xiàn)、管理員誤配置等。例如,圖5 是我們發(fā)現(xiàn)劫持并修改Google 公共DNS 服務(wù)器響應(yīng)內(nèi)容一個(gè)案例,劫持后的網(wǎng)頁(yè)內(nèi)容為一款移動(dòng)APP 的推廣信息。
5. 路徑劫持會(huì)帶來(lái)哪些安全威脅?
——道德與隱私風(fēng)險(xiǎn)
劫持者很可能在未征得用戶同意的情況下,篡改用戶的DNS 訪問(wèn),不僅帶來(lái)了道德問(wèn)題,而且給用戶的隱私來(lái)了風(fēng)險(xiǎn)。
圖5 某運(yùn)營(yíng)商劫持DNS 流量示例
——網(wǎng)絡(luò)故障
劫持者的行為使得用戶的網(wǎng)絡(luò)鏈路更加復(fù)雜,當(dāng)出現(xiàn)故障時(shí)難以排除。
——DNS 功能特性
替代DNS 服務(wù)器可能缺乏DNS 的某些功能特性,例如,根據(jù)終端子網(wǎng)返回最優(yōu)的IP 地址的選項(xiàng)(EDNS Client Subnet,ECS)。
—— DNS 服務(wù)器安全性
劫持者所使用的替代DNS 服務(wù)器往往不遵守最佳安全實(shí)踐。例如,我們發(fā)現(xiàn)僅有43%的替代DNS 服務(wù)器“接受”DNSSEC 請(qǐng)求;而且,所有使用BIND 軟件的替代DNS 服務(wù)器版本都嚴(yán)重落后(全部低于BIND 9.4.0,應(yīng)當(dāng)于2009年過(guò)期)。
6. 劫持背后的目的是什么?
我們調(diào)研了大量設(shè)備提供商與軟件提供商,整理出一份能夠提供DNS 解析路徑劫持功能的廠商列表[10~12]。同時(shí)收集產(chǎn)品的功能介紹信息并結(jié)合實(shí)際測(cè)量結(jié)果,推測(cè)劫持背后的目的。
(1)提高用戶DNS 服務(wù)器的安全性。我們觀測(cè)到發(fā)往知名公共DNS 的數(shù)據(jù)包更容易被劫持,而且相當(dāng)一部分劫持者使用的解析服務(wù)器可能存在安全問(wèn)題。因此,該結(jié)論雖然不能完全排除,但我們認(rèn)為不是劫持的主要目的。
(2)優(yōu)化用戶的DNS 查詢性能。我們發(fā)現(xiàn)請(qǐng)求復(fù)制式劫持能夠提高DNS 查詢性能;但在實(shí)際網(wǎng)絡(luò)中,劫持者更多的是采用請(qǐng)求轉(zhuǎn)發(fā)的方式。因此,大部分的劫持并不是為了優(yōu)化DNS 查詢性能。
(3)減少運(yùn)營(yíng)商網(wǎng)間流量結(jié)算成本。發(fā)往公共DNS 服務(wù)器的異網(wǎng)流量對(duì)中小型運(yùn)營(yíng)商而言,提高了運(yùn)營(yíng)商的流量結(jié)算成本。通過(guò)對(duì)異網(wǎng)DNS 流量進(jìn)行管控,可以有效節(jié)省網(wǎng)間流量結(jié)算成本。 因此,我們傾向于認(rèn)為這是DNS 解析路徑劫持的主要原因。
解決DNS 解析路徑劫持的最佳方案是在部署DNSSEC 的基礎(chǔ)上,推進(jìn)DNS加密方案的部署。 DNSSEC 能夠解決DNS 響應(yīng)記錄內(nèi)容被中間盒子篡改的問(wèn)題,部署DNSSEC 可以保證終端用戶拿到正確的響應(yīng)結(jié)果。 然而,此時(shí)DNS 流量仍然通過(guò)明文傳輸,存在隱私隱患。DNS 加密方案,包括DNS-over-TLS[13]、DNS-over-HTTPS 等,不僅解決明文傳輸時(shí)的隱私威脅,而且可以對(duì)用戶所使用的DNS 服務(wù)器進(jìn)行認(rèn)證,進(jìn)而最終解決劫持者偽裝公共DNS 服務(wù)器的問(wèn)題。
目前,F(xiàn)irefox 瀏覽器從第62 版本開(kāi)始支持DNS-over-HTTPS。此外,越來(lái)越多的公共DNS 服務(wù)器和知名DNS軟件開(kāi)始逐步支持不同的DNS 加密方案,其中公共DNS 服務(wù)器包括Google、Cloudflare、Quad9 等,知名的DNS 軟件包括BIND、Unbound、Knot、CoreDNS 等。
在這項(xiàng)研究中,我們系統(tǒng)地分析了DNS 解析路徑劫持這一威脅。通過(guò)全球范圍的大規(guī)模測(cè)量研究,分析了其規(guī)模、特點(diǎn)、安全威脅以及目的。在論文發(fā)表后,多個(gè)國(guó)際知名安全媒體對(duì)研究?jī)?nèi)容進(jìn)行了報(bào)道,包括ACM TechNews、The Register、HackRead、HelpNet Security 和 Rambler[14~17]等。希望這項(xiàng)研究結(jié)果,能夠進(jìn)一步推進(jìn)DNSSEC 和加密DNS 方案的大規(guī)模規(guī)范部署和應(yīng)用。