張尚韜
(福建信息職業技術學院,福建 福州 350003)
基于Web的DNS欺騙技術研究
張尚韜
(福建信息職業技術學院,福建 福州 350003)
本文根據DNS解析的過程,結合DNS協議本身的缺陷,總結分析了DNS欺騙的原理,利用DNS信息劫持進行DNS欺騙。當客戶端發送域名解析請求時,先于DNS服務器給客戶端發送欺騙應答數據包,由于客戶端處理DNS應答報文都是簡單地信任先到達的數據包,只要DNS應答數據包的序列號標識與請求數據包的序列號標識匹配就可以把客戶端的請求重定向到某個預先設定的網頁。并基于此設計開發了局域網的DNS欺騙系統。
DNS欺騙;重定向;系統
Internet在當今社會展示了巨大的魅力,越來越多的用戶通過網絡獲取信息,而Web攻擊者千方百計通過這些信息引誘用戶去訪問并點擊他設定的Web陷阱,研究TCP/IP協議[1]的安全缺陷和DNS[2]網絡欺騙攻擊的技術原理,對了解網絡協議,增強安全防范意識,對安全缺陷采取積極的防御措施,以及下一代網絡及無線網絡的發展在可靠性、優良性和抗攻擊性上有重要價值。
DNS(Domain Name System,域名系統)是因特網的一項核心服務,是一個用于管理主機名字和地址映射的分布式數據庫,它將便于記憶和理解的名稱同枯燥的IP地址聯系起來,能夠使人更方便的訪問Internet,而不用去記住能夠被機器直接讀取的IP數串。
DNS欺騙即域名信息欺騙是最常見的DNS安全問題。所謂DNS欺騙,就是偽裝DNS服務器提前向客戶端發送響應數據包,使客戶端DNS緩存中域名所對應的IP就是攻擊者自定義的IP了,同時客戶端也進入攻擊者指定的網站。當一個DNS服務器掉入陷阱,使用了來自一個惡意DNS服務器的錯誤信息,那么該DNS服務器就被欺騙了。DNS欺騙會使那些易受攻擊的DNS服務器產生許多安全問題,例如:將用戶引導到錯誤的Internet站點等。
本文主要利用DNS信息劫持進行DNS欺騙。DNS欺騙的具體攻擊過程如圖1所示。

圖1 DNS欺騙攻擊示意圖
以福州大學網站www.fzu.edu.cn為例,假設偽造的IP為1. 2. 3. 4,則具體的欺騙過程如下:
(1)DNS客戶端向首選DNS服務器發送對于www.fzu.edu.cn的遞歸解析請求數據包①。
(2)攻擊者監聽到請求,并根據請求ID構造發送欺騙應答包②,通知與www.fzu.edu.cn對應的IP地址為1.2.3.4。
(3)本地DNS服務器返回正確應答(合法應答數據包③),如果晚于攻擊者的應答,則此應答數據包被丟棄;如果早于攻擊者的應答,則攻擊者的應答數據包被丟棄。
(4)如果(3)中判斷的為攻擊者的DNS應答數據包先到達,則欺騙成功,客戶端對www. fzu. edu. cn的訪問被重定向到1. 2. 3. 4。
設計一個DNS欺騙系統,基于DNS欺騙的原理,當客戶端訪問指定的域名(一般為門戶網站或百度等搜索引擎)時,構造DNS欺騙數據包,重定向[3]客戶端的訪問。欺騙的方法是:把預先設定的網頁作為中間過程,在其腳本語言中讓客戶端以IP的形式重新與他訪問的網站進行連接,如果中間過程時間很短,就可以達到欺騙客戶端的目的而不被發現。DNS欺騙系統包括軟件模塊和模塊間的控制關系和模塊組成關系,在設計階段,模塊指功能模塊,即按設計原理,劃分獨立功能而設計的模塊。軟件結構用模塊結構圖表示。模塊結構圖的方框表示模塊,分支表示調用關系或組成關系,即上層模塊調用下層模塊,或上層模塊由下層模塊組成。DNS欺騙系統模塊設計如圖2。

圖2 DNS欺騙系統模塊設計圖
DNS欺騙系統模塊功能如下:
(1)循環捕獲數據模塊
循環捕獲數據模塊模塊的主要功能為循環捕捉數據,具體的說就是時刻監聽網絡中的DNS查詢數據包,一旦捕獲DNS請求數據就轉入下個模塊進行處理,沒有捕獲則循環進行監聽。
(2)DNS數據分析模塊
DNS數據分析模塊的目標就是把DNS查詢數據包輸入到模塊之后,解析DNS數據包的各個主要字段。具體的說分為兩個方面:一是為DNS域名提取模塊提供DNS域名查詢的數據,二是當客戶端查詢的域名與非法域名數據庫中的域名相匹配時,為欺騙應答模塊提供DNS應答數據包所需的各項置換和替換的數據,其中包括DNS查詢序列號標識、查詢問題及IP和端口等數據,為快速應答處理做好數據準備。
(3)DNS域名提取模塊
DNS域名提取模塊的主要功能為提取DNS查詢數據包中的域名字段。但是DNS查詢數據包中的域名字段長度是不固定的,可以通過DNS查詢數據包的長度計算出DNS查詢域名的長度,然后進行提取。
(4)比較匹配模塊
比較匹配模塊主要功能是比較DNS查詢的域名是否與配置文件信息中需要攻擊的域名相匹配,匹配則調用欺騙應答模塊構造DNS欺騙應答數據包,重定向客戶端的訪問。
(5)DNS欺騙應答模塊
DNS欺騙應答模塊的功能就是快速構造與DNS查詢數據包序列號匹配的欺騙應答數據包,若在合法DNS服務器返回響應數據包之前到達客戶端,則合法響應報文被丟棄,客戶端查詢的域名就被解析為自定義的IP。
2.2.1 DNS欺騙系統實現流程
DNS欺騙系統在監控主機(攻擊主機)上運行,是基于Linux系統開發的系統,需要安裝Libpcap庫和搭建HTTP服務器。系統的網絡環境為:共享式以太網,攻擊主機處于旁路監聽模式[4]。共享式以太網,即局域網的出入口為具有鏡像端口的交換機,而運行DNS欺騙系統的主機接入到交換機的鏡像端口上,從而捕獲該局域網的所有數據包。DNS欺騙系統實現流程如圖3

圖3 DNS欺騙系統實現流程
DNS欺騙系統是基于Linux系統設計的,它利用Libpcap庫[5]捕獲和過濾數據,在捕獲處理數據之前需要從配置文件中讀取數據,配置的參數有目標主機IP、攻擊的域名地址和重定向欺騙的IP地址(即HTTP服務器的IP地址)等。利用Libpcap庫函數捕獲網絡中的數據包,把網卡設置為混雜模式,先根據以太網首部中的幀類型字段判斷協議類型(0x0800為IP數據包),再根據IP首部中的8位協議字段判斷傳輸層的協議。因為DNS數據包是基于UDP的數據包,所以只需要處理UDP數據包,其它類型的直接丟棄。再從UDP數據包中分離出DNS查詢報文,即目的端口為53的UDP數據包,將其送入DNS欺騙模塊進行處理,繼續處理下一個數據包。
2.2.2 DNS欺騙系統主要模塊實現思路
DNS欺騙系統的實現思路是:利用旁路接入模式監聽局域網中的數據包,當發現有客戶端發送DNS查詢數據包(UDP:目的端口53),則提取其域名字段內容,與配置文件信息中的攻擊域名地址進行比較,如果匹配,則根據DNS查詢數據包的序列號標識構造DNS欺騙應答數據包,如果先于合法應答數據包到達客戶端,則其訪問就被重定向到預先設定的網站。
提取域名字段內容、域名攻擊判斷、構造數據包、發送重定向數據包等功能都是由DNS欺騙系統來實現的。DNS欺騙系統的詳細功能實現如圖4中的虛線框所示。

圖4 DNS欺騙系統詳細功能實現圖
實驗環境利用了福建信息職業技術學院網絡設備實驗室的局域網環境,局域網內的計算機通過非智能交換機相連,這時候需要人為的進行旁路設置,一般情況下,利用一臺Hub來實現。將網關設備、內網交換機、監控機(攻擊主機)和目標主機都接在這臺Hub上,因為Hub是介質共享的,所以監控機也能得到全部被監控主機的通信數據,網絡拓撲如圖5所示。這種情況下也可以把Hub換成可以做鏡像端口的交換機。

圖5 測試網絡拓撲
當客戶端訪問指定的域名(一般為門戶網站或百度等搜索引擎)時,構造DNS欺騙數據包,把客戶端的訪問重定向到預先設定的惡意網頁作為中間過程,當完成該網頁的請求時,客戶端會以IP的形式跳轉到客戶端訪問的網站,達到欺騙的目的。
某次測試參數設置:目標主機IP為192.168.3.70(或者是某一網段的IP),監控主機IP為192.168.3.111,DNS欺騙的域名為www.baidu.com,DNS域名欺騙后指向IP設置為為192.168.3.111。啟動“科來”網絡分析系統監聽數據包,分析DNS欺騙[6]的過程。
某次測試的流程如下:首先運行監控機(攻擊主機)上的欺騙系統,導入配置文件信息(包括目標主機IP、監控主機IP和欺騙的域名信息),選擇監控機的真實網絡適配器eth0捕獲數據包,設置過濾規則為僅捕獲192.168.3.70:53(UDP)數據包,欺騙系統運行后處于監聽狀態,如圖6為DNS欺騙系統的初始運行狀態。

圖6 DNS欺騙系統初始運行狀態
當監控主機捕獲到數據包時,就會調用DNS數據分析模塊分析數據包是否為DNS查詢數據包,若是,與配置文件信息中需要欺騙的域名比較,匹配的話,發送DNS欺騙數據包,重定向客戶端的訪問。在欺騙系統啟動后,目標主機192.168.3.70分別訪問了不同的網頁。圖7顯示的是DNS欺騙系統捕獲到目標主機訪問www.baidu.com,并發送DNS欺騙數據包的過程。

圖7 DNS欺騙系統的運行狀態
其中目標主機訪問谷歌和騰訊的網站,不是欺騙系統需要欺騙的域名,沒有對此DNS查詢數據包處理;當目標主機訪問百度時,DNS欺騙系統對客戶端進行了重定向欺騙,目標主機先訪問攻擊主機(192.168.3.111)設定的中間網頁,之后以IP的形式訪問百度(220.181.37.55為百度的一個服務器的IP地址)。如圖8顯示的是對目標主機欺騙跳轉后的結果。

圖8 DNS域名欺騙的結果
“科來”網絡分析系統也捕獲到客戶端訪問網頁(DNS域名解析)、DNS欺騙系統發送欺騙數據包和以IP形式跳轉的過程。如圖9所示。圖中第一列為數據包編號,第二列為數據包的捕獲時間,第三列為數據包源IP,第四列為數據包目的IP,第五列為TCP數據包的標志位,第六列為數據包的概要內容。
從圖9中可以看出,數據包80為目標主機向首選DNS服務器(202.115.32.36)查詢百度(需要欺騙的域名)的IP地址。當DNS欺騙系統捕獲到數據包80時,立即構造DNS欺騙數據包,假冒首選DNS服務器把www.baidu.com對應的IP地址設置為192.168.3.111,即圖9中的數據包81。真正的首選DNS服務器202.115.32.36的應答為圖9中的數據包82。
從圖9數據包的絕對時間可以看出數據包81比數據包82先到達客戶端192.168.3.70,則客戶端訪問的www.baidu.com就被重定向到192.168.3.111。由于所有DNS客戶端處理DNS應答報文都是簡單的信任首先到達的數據包,丟棄所有后到達的,而不對數據包的合法性做任何的分析,所以數據包82被客戶端丟棄,不做任何處理。
數據包83、84、85為客戶端與HTTP服務器(192.168.3.111)三次握手建立連接的過程,數據包86~96為中間網頁的下載過程,93~96為完成頁面下載雙方端口關閉連接的過程;數據包107~115為客戶端以IP形式連接其請求的真實網站的過程(本測試中為客戶端以220.181.37.55連接百度),如圖10所示。

圖9 DNS欺騙系統對DNS數據包的處理

圖10 客戶端以IP形式連接其請求的真實網站
在局域網的中小流量的網絡環境下,經過上面的測試分析,可以知道當目標主機訪問配置文件中的攻擊域名時,DNS欺騙系統成功地把客戶端重定向到預先設定的中間網頁,當客戶端下載完中間網頁時,又根據其腳本語言的指令以IP的形式跳轉到客戶端訪問的網站。因為攻擊的域名一般為門戶網站或百度等搜索引擎,這些站點是客戶端信任的站點,所以對于一般用戶而言,瀏覽器的地址欄出現IP的形式也不會懷疑,這樣就達到了欺騙的目的。
堡壘最容易從內部攻破。據調查統計,已發生的網絡安全事件中,70%的攻擊是來自內部,因此網絡安全不僅僅是對外的,內部網絡的欺騙攻擊行為成為內部網絡安全研究的重點。通過研究DNS欺騙技術,將來可以為擁有中小型網絡的企事業單位提供全方位的內部網絡非法網站訪問監控服務。
[1] WRICHARDSTEVENS. TCP/IP詳解卷1:協議[M].北京:機械工業出版社, 2005: 101-110.
[2] DECCIO, CASEYSEDAYAO. Quantifying DNS namespace influence[J]. Computer Networks, 2012, 56(2): 780-794.
[3] 楊青. 基于蜜罐的網絡動態取證系統研究[J]. 山東科學, 2010(5): 59-65.
[4] 宋廣軍. 基于校園網的防火墻和入侵檢測聯動技術研究[J]. 科技資訊, 2011(34): 25.
[5] 張毅. 基于Libnet和Libpcap的網絡丟包率測試平臺設計[J]. 廣東通信技術, 2010(1): 23-27.
[6] 孔政, 姜秀柱. DNS欺騙原理及其防御方案[J], 計算機工程, 2010, 36(03): 125-127.
A Study of DNS Spoofing Technology Based on Web
ZHANG Shang-tao
(Fujian Polytechnic of Information Technology, Fuzhou 350003, China)
According to the DNS resolution process and the drawback of DNS itself, this paper analyses the principle of DNS spoofing and DNS information hijack.When the client sends a domain resolution query, it will send the spoofing response packet to the client ahead of the DNS server. Since the way of the client processing DNS response is to trust the first arrival data simply, the client query can be redirected to malicious Web site only by matching the IDof the response with the IDof the query. This paper designs and develops DNS spoofing system based on LAN.
DNS spoofing; redirection; system
TP393
A
1008-2395(2012)03-0024-06
2012-02-27
張尚韜(1980-),講師,碩士,研究方向:計算機網絡技術。