[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > DNS > 正文
DNS欺騙
本文出自: 作者: 不詳 (2001-09-26 08:00:01)
 
作者: 

  本文僅用研究目的!與此相關所產生的一切作者概不負責! 
   
  【摘要】 
   
  DNS欺騙可以用來上BBS隱藏ip,但其作用遠遠不止這些。 
   
  【簡述】 
   
  熟悉網絡的人都知道,當客戶向一台服務器請求服務時,服務器方一般會 
  根據客戶的ip反向解析出該ip對應的域名。這種反向域名解析就是一個查DNS 
  (Domain Name Service)的過程。 
   
  如果客戶的ip對應有域名,那DNS查詢會返回其域名。服務器端得到這 
  一機器名會將其記錄下來並傳遞給應用程序,是我們可以看到有人上bbs 
  來自argo.zsu.edu.cn,其實她來自202.116.64.6“逸 仙 時 空” BBS。 
  細心的人會發現BBS上顯示ip的欄是有長度局限的,因此若客戶機的域名足夠 
  長便可隱藏住自己機器名,如parallelcomput其實是parallelcomputing.xx. 
  xxx.xxx.xx。這便是隱藏ip的方法之一,此法要和網管比較熟或者咱自己就 
  是DNS網管。;) 
   
  但是您和網管熟嗎?反正偶不熟。:( 
   
  讓我們換個思路:如果服務器在進行DNS查詢時能夠人為地給它我們自己 
  的應答信息結果會怎樣呢?答案顯然不用我說了,這就是名的DNS欺騙(dns 
  spoofing)。說實話,DNS欺騙威力巨大,把它用來在BBS上隱藏ip實在是殺 
  雞用牛刀。:) 
   
  【詳述】 
   
  現有的大多數DNS服務實現存在兩個比較“好”的性質。 
   
  其一為當DNS服務器收到一合法的DNS應答信息時它會接受這一返回包中的 
  所有信息,並存入CACHE。舉一個例子:在10.10.1.2的用戶要TELNET到100.100 
  .100.100上,100.100.100.100使用的DNS為100.100.100.200。三次握手100. 
  100.100.100會向100.100.100.200發一PTR類型的DNS查詢(由IP查主機名): 
   
  100.100.100.100 -> 100.100.100.200 [Query] 
  NQY: 1 NAN: 0 NNS: 0 NAD: 0 
  QY: 2.1.10.10.in-addr.arpa PTR 
   
  而100.100.100.200並沒有關用戶IP對應域的信息。它首先根據DNS協議 
  極其配置查找出10.10.1.2的授權DNS服務器10.10.1.5。然向其發出查 
  詢包: 
   
  100.100.100.200 -> 10.10.1.5 [Query] 
  NQY: 1 NAN: 0 NNS: 0 NAD: 0 
  QY: 2.1.10.10.in-addr.arpa PTR 
   
  這裡隱蔽了iterative與recursive兩種方式的區別,一般的DNS設置為 
  iterative,recursive為可選。詳見rfc1034。 
   
  10.10.1.5收到該查詢信息便可返回10.10.1.2對應的域名: 
   
  10.10.1.5 -> 100.100.100.200 [Answer] 
  NQY: 1 NAN: 2 NNS: 1 NAD: 1 
  QY: 2.1.10.10.in-addr.arpa PTR 
  AN: 2.1.10.10.in-addr.arpa PTR client.host.com 
  AN: client.host.com A 10.10.1.2 
  NS: 1.10.10.in-addr.arpa NS ns.host.com 
  AD: ns.host.com A 10.10.1.5 
   
  返回的包中給出了10.10.1.2對應的域名為client.host.com,並指出 
  client.host.com對應的IP為10.10.1.2(請注意這兩個對應的是不同的概念!) 
  。如果這個返回包能由我們給出,豈不是爽呆了! 
   
  那怎做呢?可以控制住你的DNS,然你想設成什就是什。但是 
  太暴力了,偶不推薦這種方式:)。還有更溫和的方法如果局域網內有DNS 
  服務器,那可以通過監聽、響應的方法實現DNS欺騙。 
   
  即先sniff傳到局域網來的DNS查詢包,然代替本網段的DNS服務器給出 
  應答信息(羅嗦了這多,這裡最重要,呵呵)。 
   
  但是本網段的DNS服務器也會同時給出應答信息,這樣我們構造的包與它 
  的包會有沖突,通常是我們的慢:(這樣的DNS欺騙是不成功的。 
   
  為了獲得穩定的DNS欺騙的效果,這就涉及到第二個DNS實現的“好”的 
  性質: 
   
  當DNS服務器發查詢包時,它在包內有一query id,應答信息只有query 
  id及ip都對上時才能為服務器所接受。而這一id每次加一,所以可以通過第 
  一次向要欺騙的DNS SERVER發一個查詢並監聽到該id值,隨再發一查詢,緊 
  接著馬上send我們構造好的應答包,包內的query id為預測的query id值(可 
  以指定一個范圍,比如從previous_id+1到previous_id+100)。 
   
  接上例,如10.10.1.2的用戶要欺騙100.100.100.100,他可以對100.100. 
  100.200進行欺騙: 
   
  11.11.11.11 -> 100.100.100.200 [Query] 
  NQY: 1 NAN: 0 NNS: 0 NAD: 0 
  QY: 12345.host.com A 
   
  由host.com的域名由10.10.1.5控制,100.100.100.200向10.10.1.5發 
  查詢包: 
   
  100.100.100.200 -> 10.10.1.5 [Query] 
  NQY: 1 NAN: 0 NNS: 0 NAD: 0 QID: 2345 
  QY: 12345.host.com A 
   
  10.10.1.2的用戶可以監聽到給包,得到QID: 2345。然再向100.100. 
  100.200發第二次查詢: 
   
  11.11.11.11 -> 100.100.100.200 [Query] 
  NQY: 1 NAN: 0 NNS: 0 NAD: 0 
  QY: 67890.host.com A 
   
  緊接著發帶預測QID的應答包: 
   
  10.10.1.5 -> 100.100.100.200 [Answer] 
  NQY: 1 NAN: 0 NNS: 0 NAD: 0 QID: 2346 
  QY: 2.1.10.10.in-addr.arpa PTR 
  AN: 2.1.10.10.in-addr.arpa PTR you.want.name 
   
  you.want.name就是用戶自己指定的域名。注意發這個包時應該用10.10. 
  1.5這一IP地址。 
   
  大功告成!##$##^ 
   
  【記】 
   
  如果您對DNS不熟甚至根本不知其為何物那請您先參考有資料
 
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★