從原理到測試 全面解析DNS欺騙攻與防

你有沒有遭遇過這樣的情況?當你在瀏覽器中輸入正確的URL地址,但是打開的並不是你想要去的網站。或者是114的查詢頁面,或者是互聯星空的網站,或者一個廣告頁面,或者是一個刷流量的頁面,甚至是一個掛馬的網站。這樣的話,極有可能你遭遇了DNS欺騙。最近鬧得沸沸揚揚的“互聯星空”事件,是電信在DNS上進行了重定向,本質上就是來自電信對用戶的DNS欺騙。並且這種欺騙在筆者本地仍然在繼續。下面我們就來解析一下DNS欺騙是如何實現的,並找出應對的措施。
  一、欺騙原理
  我們以IT專家網爲例,看看正常的DNS請求和被劫持的DNS請求的不同
  1、正常的DNS請求流程爲:
  (1).在瀏覽器輸入http://security.ctocio.com.cn;
  (2).計算機將會向DNS服務器發出請求;
  (3).DNS服務器進行處理分析得到ttp://security.ctocio.com.cn的相應地址爲58.xxx.209.xxx;
  (4).DNS將把次IP地址58.xxx.209.xxx返回到發出請求的計算機;
  (3).你正常登錄到http://security.ctocio.com.cn的網站。
  2、被DNS欺騙以後的DNS請求爲:
  (1).在瀏覽器輸入http://security.ctocio.com.cn;
  (2).計算機將會向DNS服務器發出請求(這裏注意:實際上你發起的請求被髮送到了***者那裏);
  (3).***者對請求處理進行僞造DNS回覆報告,返回給計算機的是***者指定的IP地址;
  (3).你登錄到的網站實際上不是http://security.ctocio.com.cn,而是掉進了***者設計好的“陷阱網站”。
  二、解析DNS報文
  DNS報文是我們瞭解DNS***所必須瞭解的知識。
  1.格式:(圖1)
圖1
  2.DNS報文結構分爲
  標識(id),用來簽證每個DNS報文的印記,由客戶端設置,由服務器返回,它可以讓客戶匹配請求與響應。參數(flag),參數被分成好幾步分。(圖2)
圖2
  QR 如果QR位設置爲0表示報文是查詢,如果爲1表示響應
  opcode 通常是0,指標準查詢,1是反向查詢,2是服務器狀態查詢
  AA 如果此位爲1,表示服務器對問題部分的回答是權威性的
  TC 截斷,如果UDP包超過512字節將被截流
  RD 表示希望遞歸,如果它設爲1的話,表示遞歸查詢
  RA 如果設爲1,表示遞歸可用
  Zero 如它的名稱一樣,總是0
  rcode 0表示有錯誤,3表示名字錯誤
  3.DNS查詢報文,圖3爲DNS報文查詢的格式。
圖3
  4.DNS響應報文,如圖4。
圖4
  響應報文有個共同的格式,我們稱之爲資源記錄---RR響應報文的格式(RR)如下:
  域名:域名是與下面的資源數據對應的名字,它的格式同前面講到的查詢一樣。
  類型:類型標識了RR類型代碼號,它同前面查詢類值一樣。
  類:通常爲1,表示因特網數據。
  生存時間:表示客戶方將RR放在高速緩存裏的時間,RRs的TTL通常爲2天。
  資源數據長度:標識資源數據的大小。
  概念:說到這裏,對於網絡基礎知識有一定了解的朋友都知道,當客戶向一臺服務器發送請求服務時,服務器會根據客戶的 IP地址反向解析出該IP對應的域名。這種反向城名解析就是一個查DNS(域名解析服務器 ) 的過程。
  我們換一下思路,如果服務器在進行DNS查詢時能夠人爲地給它我們自己的應答信息,那麼結果會怎樣呢?
  答案顯然不用我說了,這就是所謂的DNS欺編 (dnsspoofing )。說實話,“DNS欺騙”威力巨大,如果被***者巧妙利用,在BBS上隱藏IP是輕而易舉,人侵局域網更是痛快淋漓。
  三、欺騙測試
  爲了讓大家多DNS欺騙有切實的認識,我用虛擬機搭建了一個測試環境:
  操作系統:Windows 2003
  Web服務器:IIS 6.0
  服務器IP地址:192.168.0.5
  物理主機的IP地址:192.168.0.6
  工具
  dnshack.exe:DNS欺騙的工具
  使用方法:
  dnshack.exe 你在局城網的IP 你要欺騙的IP
  記事本
  第一步:打開記事本創建一個簡單的html文件,主要是用來看欺騙的效果。把如下的html代碼保存爲index.html文件:
  <HTML>
  <HEAD>
  <TITLE>★★DNS欺騙測試頁面★★</TITLE>
  <H1>這是一個DNS的欺騙頁面</H1>
  <H1>如果你看到這個頁面說明欺騙成功了!</H1>
  <H4>甘肅 老五</H4>
  </BODY></HTML>
  提示:***者通常把這個頁面做成一個掛馬頁面,那危害非常大!
  第二步:把index.html文件拷貝到部署好的web服務器的網站更目錄下,並且在IIS管理器中添加網站的默認主頁爲index.heml,啓動爲web服務器。
  第三步:在虛擬機的命令提示符下輸入如下命令並回車:
  dnshack 192.168.0.5 192.168.0.6 (圖5)
圖5
  說明:上面命令的意思是:欺騙IP爲192.168.0.6的主機,其在瀏覽器中輸入的URL地址打開的都是IP爲192.168.0.5的虛擬服務器的index.html頁面。
  第四步:在192.168.0.6的主機的瀏覽器中輸入http://security.ctocio.com.cn,看看打開了虛擬web服務器的index.heml頁面。(圖6)
圖6
  總結:整個測試過程結束,我們瞭解了DNS欺騙的原理及其過程,那該如何杜絕DNS欺騙呢?
  四、解決辦法
  1.對於個人主機來說,只要及時更新補丁或者使用代理就可以防範到DNS***。
  2.對高標準的服務器來說,應該做到以下幾點:
  (1)安裝新版軟件
  (2)關閉服務器的遞歸功能
  (3)限制城名服務器做出反應的地址
  (4)限制城名服務器做出遞歸相應的請求地址
  (5)限制發去請求的地址
  (5)手動修改本地hosts文件來解
  (7)用專用工具,比如AntiARP-DNS
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章