◆郭烜臻 潘祖烈 沈毅
(國防科技大學電子對抗學院 安徽 230037)
伴隨著科技的日新月異,互聯網技術的飛速發展,網絡應用的規模性和復雜性顯著提高。內部網絡是構成當今互聯網一種最主要的組網方式之一。一般來說,內部網絡是基于TCP/IP協議框架,使用私有IP地址的網絡,即本地局域網(LAN),包括企業、政府和家庭內部網絡[1]。通過防火墻將內部網絡同互聯網相隔離,可組成一個獨立網絡。但隨著內部網絡規模和應用范圍的不斷擴大,以及內部網絡中包含的敏感信息及關鍵設備,如何保證內部網絡安全與平穩,逐漸成為研究的熱點。
對內部網絡的威脅主要來源于對敏感信息的竊取和對內部網絡中設備的控制。而隨著物聯網的普及,預計到2020年,全球的IoT設備將達到204億臺[2],更加劇了此種風險。Web瀏覽器是每臺現代電腦必備的應用,因為Javascript、Flash、DOM和Java等技術的出現,不僅讓瀏覽器的功能愈發豐富,同時也帶來了巨大的安全隱患。功能的富集、插件的繁多,也意味著出現漏洞的可能性越大,為攻擊者帶來了可乘之機。諸如“跨站”腳本攻擊(XSS[3])、“跨站”偽造攻擊(CSRF[4])、服務端偽造攻擊(SSRF[5])等的存在,內部網絡安全也因而受到了巨大的威脅。為了限制此類攻擊威脅,瀏覽器通過采用同源策略(SOP[6])等安全措施來保障內部網絡的安全。然而一種基于DNS協議的攻擊方式——DNS重綁定,卻能夠很好地繞過同源策略的限制,對內部網絡帶來影響。
DNS系統支撐著整個互聯網的正常運轉,它能夠將人類能夠閱讀的域名轉換為難以記憶的IP地址。但是DNS缺乏加密、認證及訪問控制等安全措施,使得基于DNS協議的攻擊行為層出不窮。根據CNNIC權威部門的調查研究問卷顯示,基于DNS協議的攻擊已然成為位居第二的攻擊方式如圖1[7]。
鑒于此,本文將研究DNS重綁定對內部網絡安全,尤其是對IoT設備的威脅。
本文的貢獻有如下四點:
(1)討論了DNS重綁定攻擊對內部網絡的威脅;
(2)提出了一種DNS重綁定測試框架;
(3)將DNS重綁定同傳統的XSS、CSRF做對比,驗證DNS重綁定的有效性;
(4)針對DNS重綁定,提出了相應的防御方法。

圖1攻擊行為
同源策略(same origin policy)是瀏覽器采用的一系列管理策略的總和,用來管理web應用內不同域之間資源的交互[3]。
同源策略是大多數瀏覽器所采用的防止網站跨域訪問資源的一種標準防御策略。它是web應用安全中所使用的一種十分重要的安全策略。所謂的同源,需要URL的協議、域名、端口號均相同,只要存在一項不同,則不能視為同源。在這種策略中,域名www.A.com包含的腳本不被允許獲取www.B.com中的資源。一個網頁下的腳本只被允許訪問同源網頁下的資源。

表1同源策略
同源策略能夠有效地防御大多數的跨域攻擊,成為惡意攻擊者的噩夢。同源策略發揮的限制作用體現在兩方面:
DOM同源策略:禁止對不同源頁面DOM進行操作。這里主要針對的場景是iframe跨域情況,不同源下域名的iframe標簽是禁止訪問的。
XHR同源策略:XHR是可被瀏覽器內嵌腳本語言調用的API組件。同源策略禁止使用XHR對象向不同源的服務器地址發起HTTP請求。
然而目前并沒有對同源策略的正式定義。現今同源新策略的基礎主要基于RFC 6454[8]。對于web同源的定義。
依據SOP所發揮的作用,可以對其進行分類,如表2所示。

表2同源策略分類
合法地跨域請求資源,需要使用到CORS協議[9]。一個web頁面通過使用XMLHttpRequest,可以向任何一個web服務器發送請求。并且通過XMLHttpRequest,可以對http報頭實現完全控制。而同源策略限制XMLHttpRequest只能訪問本域內的資源。為了滿足跨域資源請求,同時確??缬蛸Y源訪問的安全,CORS協議應運而生。CORS的工作原理遵循以下幾個步驟:
首先發起預請求,向目標web服務器申請CORS權限,并附上自身所在域的信息(域頭:http://a.com);
目標服務器反饋一個CORS頭文件,比如:
Access-Control-Allow-Origin:http://a.com,允許來訪問本域的資源。
CORS協議是用來緩解SOP所帶來的影響,確保安全跨域訪問。
DNS重綁定主要作用是繞過同源策略。早在二十世紀九十年代就已經出現,并帶來了較大的影響。比如1996年普林斯頓大學的研究團隊提出了基于java applet的DNS重綁定攻擊[10]。斯坦福大學web安全研究團隊,在2007年發表了一份關于DNS重綁定攻擊的白皮書。隨著物聯網設備的逐漸普及,這種略顯古老的攻擊方法獲得了新的生命。在第27屆Defecon上,研究人員展示了利用DNS重綁定技術,對Google home、Roku TV、sony音響設備、Sonos Wifi Speakers、radio thermostat等設備進行攻擊,并獲取設備控制權限[11]。利用DNS重綁定竊取以太坊中的比特幣。物聯網安全公司Armis披露全球有近五億臺設備受到這種攻擊方式的威脅[12]。CVE-2018-1002103中展示了通過DNS重綁定,在Minikube上達到遠程代碼執行,并實現虛擬機逃逸的效果。2018年,暴雪游戲平臺修補了一項DNS重綁定的漏洞,攻擊者可以利用該漏洞,通過JSON-RPC服務,向目標發送特權命令。
DNS重綁定利用精心構造的DNS映射,能夠有效繞過防火墻和同源策略。攻擊者構造的釣魚網頁會導致訪問者運行客戶端腳本,攻擊內部網絡內其他的計算機和設備。內部網絡中的服務器、打印系統、監控系統等對內部網絡安全造成極大的威脅。
DNS重綁定繞過同源策略,路由器防火墻,將瀏覽器作為代理,同內部網絡中的設備進行通信。
DNS重綁定的具體過程是:
(1)攻擊者事先準備釣魚網站attack.com和惡意DNS域名服務器。釣魚網站中包含精心構造的惡意Javascript腳本,能夠在目標瀏覽器上運行,達成攻擊目的。惡意DNS域名服務器受攻擊者控制,能夠按照攻擊者的意愿對域名解析過程進行操縱。
(2)受害者訪問釣魚網站attack.com。釣魚網站中的信息能夠吸引受害者訪問,并且駐留一段時間。
(3)瀏覽器請求解析attack.com。惡意域名服務器將域名解析為受攻擊者控制的Web服務器IP地址,并且TTL值。受害者向該IP地址發送HTTP GET請求,瀏覽器加載含有惡意Javascript腳本的網頁。
(4)惡意腳本持續請求向attack.com/secret發送GET請求。在瀏覽器DNS解析記錄過期之前,web服務器一直返回HTTP請求200 OK。
(5)攻擊者改變attack.com的DNS解析。前一個DNS解析記錄過期,瀏覽器再次向DNS服務器請求解析。此次DNS服務器返回目標設備的內網IP地址。
(6)瀏覽器再次解析attack.com/secret,此次解析的IP地址是目標設備的IP地址。成功繞過同源策略的限制。
(7)此刻加載在瀏覽器中的Javascript腳本開始執行。攻擊向載荷開始運行,目標設備發送payload,直接向目標web服務器發送http請求,讀取響應,獲取敏感信息,或直接控制設備。至此,整個DNS重綁定攻擊完成。如圖3、圖4。
根據實現方式的不同,DNS重綁定可以分為三類。
第一類叫作基于時間變化的DNS重綁定攻擊(time-varying)。即很短的時間內,對同一域名有兩種不一樣的解析結果。這就要求,DNS服務器返回的域名解析報文設置的TTL值很短(<=10s),并且第一次解析對應的是攻擊者web服務器的IP,受害者訪問該IP并下載惡意網頁及代碼。當第一次解析記錄TTL到期時,申請第二次解析,而第二次解析返回的是一個內網IP[13]。
第二類方法叫做基于多個A記錄的DNS重綁定(multiple A records)。一個域名可以對應多個IP地址。域名系統將域名映射為IP地址,需要收到DNS A記錄響應報文。1996年普林斯頓大學首次實施的DNS重綁定就是利用這種攻擊方法來欺騙JVM虛擬機[14]。對釣魚網站的域名解析反饋的A記錄,既能解析成內網地址,又能解析成攻擊者服務器IP,以此達到攻擊目的。
第三類叫做基于插件的DNS重綁定。瀏覽器使用很多插件去渲染web頁面,許多插件都允許與同源內的其他資源建立socket連接為了對抗DNS pinning這種防御手段,DNS重綁定利用了各個插件維持了不同的DNS pin數據庫。如果一種插件的pin映射到的是攻擊者的IP地址,另外一種插件映射的是內網地址[15]。。

圖3 DNS重綁定過程(1)

圖4 DNS重綁定過程(2)
Yunxing Dai等人在2013年提出了一種名為Firedrill的攻擊方式[16],整合DNS重綁定攻擊和DNS flooding攻擊,通過利用瀏覽器的DNS cache表,結合已有的DNS重綁定的攻擊技術,實現了對DNS pinning的有效繞過。并且Dai等人將Firedrill同其他的DNS重綁定方法進行對比,總結出該方法的動態性和實效性。雖然攻擊手法種類繁多,但是DNS重綁定的核心思想始終是不變的,即通過DNS answer報文的IP變換來達到繞過同源策略的目的。Dai等人設立惡意的DNS服務器,在受害者的主機上搭建了惡意的JavaScript代理。它維持一個同攻擊者webserver的websocket連接,并接收JSON格式的代理命令。
Acar[17]等人于2018年提出了一種針對IoT設備的滲透方法。此方法主要基于兩個步驟,第一步,需要提前了解目標設備endpoint的情況。通過控制一個有惡意的JS腳本TLS-enabled web server,并把惡意代碼鑲嵌到網頁和廣告中。當用戶訪問惡意代碼的網頁時,自動搜索LAN中的IOT設備。搜集信息以便進一步攻擊,或者分析受害者的生活習慣。第二步,利用DNS重綁定繞過同源策略,對目標設備實施攻擊。
一次完整的DNS重綁定攻擊應該包括信息收集、目標識別、攻擊執行、遠程控制及擴大攻擊面幾個步驟。
信息收集,需要了解目標使用互聯網的行為特征以及可能使用的內網IP地址。目標識別,判斷目標是否易遭受DNS重綁定攻擊。具體攻擊的執行,需要搭建惡意的DNS服務器,惡意的javascript腳本和實現DNS重綁定的攻擊載荷。遠程控制與信息竊取,即通過DNS重綁定能達到的具體的效果。擴大攻擊面,將DNS重綁定與其他內網滲透方式相結合,擴大攻擊面(圖5)。
為了更好地驗證DNS重綁定對內部網絡的影響,提出了DNS重綁定測試框架(圖6)。
信息收集模塊:數據收集,在發動DNS重綁定之前,需要事先獲取目標內網的一些信息,諸如內網IP地址及設備型號,以方便使用合適的payload對目標設備進行滲透。本攻擊框架通過WebRTC服務來泄露內網IP,并猜測子網的IP段,掃描Lan網絡內的http服務。
服務器搭建模塊:DNS重綁定的成功執行,需要DNS server的配合。該框架結合Whonow,一款可實時重綁定的DNS服務器,整合到server building模塊中去,來為滲透測試人員搭建DNS server提供便利。該whonow能夠很好地契合DNS重綁定而設計。該模塊能通過一些簡單的命令,即可實現對DNS響應報文的控制。對DNS報文的行為實現動態控制,使得DNS重綁定的實現更加靈活多樣。同時該模塊也能夠對web服務器進行配置。掃描技術使用WebRTC ICE服務。ICE服務是WebRTC RTCPeerConnection用于自我發現、NAT遍歷和中繼的STUN或TURN服務,通過將服務器列表傳遞到RTCPeerConnection的構造器來實現[18]。目前無論是Chrome還是Firefox瀏覽器都已經部署webRTC服務,用戶能夠向內網中的STUN服務器發送請求,獲取IP地址。
DNS重綁定模塊:該模塊用以實施DNS重綁定攻擊,在這里采取的DNS重綁定方法為基于時間變化的DNS重綁定。
控制利用模塊:利用UPnP協議對目標進行控制利用。UPnP協議無任何身份驗證機制,并且現在大部分路由器都默認開啟了UPnP服務。大量的設備可利用UPnP進行配置修改。UPnP通過SOAP[19]協議控制設備,按照XML描述文件中的信息,以設備,運行的服務,行為,變量,即[device,service,action,variable]的形式控制設備。
在本地環境下,以老版本的主流瀏覽器
進行測試,實際效果如表3所示。

表3測試效果
包括路由器、智能家用電器、攝像機、打印機在內的內部網絡中的大量設備受到DNS重綁定攻擊的威脅。本實驗用以驗證,相較于傳統的攻擊方式,DNS重綁定攻擊對內部網絡的威脅更大。在本實驗中,假設已知內部網絡的IP地址與拓撲結構,各種設備的API接口等信息。
假設已知目標網絡存在智能燈泡。且認為局域網內比較安全,該智能燈泡接收局域網內傳遞的消息,通過簡單的GET請求,即可對智能燈泡進行控制。并且通過http scan模塊,以獲知目標網絡的拓撲結構及存活IP。攻擊主機IP 169.254.107.120,智能燈泡對應IP 192.168.0.1。
開關燈泡的payload如下:

為了加快實驗進程,及時將瀏覽器中的DNS緩存清零。在本實驗中使用的是firfox瀏覽器,在firefox中輸入about:config命令,修改network.dnsCacheExpirationGracePeriod項的相關配置。修改為5,加速DNS記錄過期速度。
成功實現對智能燈泡的控制。如圖7所示。

圖7測試成功
DNS重綁定不為人們所知,但是卻造成了巨大的損失。設備開發商和使用者需要提高針對此類威脅的重視程度。
DNS pinning是一種應對DNS重綁定攻擊的常見防御方式,它要求瀏覽器對于同一域名,只記錄收到的第一條DNS解析記錄的,將域名與IP地址進行映射,之后無論DNS報文TTL值是否到期,阻止域名映射到其他的IP地址。
部署eSOP策略[19]。常規的同源策略對從DNS服務器中并未加以驗證,導致DNS重綁定能夠繞過同源策略。eSOP通過在瀏覽器端添加對來源于DNS服務器信息及http“報文頭”驗證策略,來阻止DNS重綁定攻擊。
可以通過提升瀏覽器、各類插件、DNS解析器、防火墻和服務器的防御等級來應對此類攻擊,比如如今較常見的DNS pinning,以及入侵檢測系統。
IoT生產商需要提升IoT設備的安全性能,對“報文頭進行檢測。啟用Origin header字段,進行驗證??梢栽诜雷o類產品中加入對于SSDP和SOAP[20]的流量檢測能力,及時發現客戶網絡中存在的安全威脅。
在DNS服務器端“部署”dnswall,將含有私有IP地址的DNS報文進行甄別和過濾。
本文研究了DNS重綁定對內部網絡安全的影響。利用DNS重綁定能夠成功控制家庭網絡內智能燈泡的亮滅。將DNS重綁,同“跨站”請求,偽造攻擊、“跨站”腳本攻擊進行比較,對四款IoT設備進行測試,驗證了DNS重綁定對內部網絡安全的實質性威脅。并為如何防御DNS重綁定提出了解決方案。
為了完善有關DNS重綁定的研究,在未來的研究工作中,將著眼于DNS重綁定在互聯網中實際的存在情況,對網絡中真實存在DNS重綁定行為進行檢測。