關於dns欺騙,dns劫持的問題,Windows為什麼不能識別替換或自組的dns響應包?

區域網內對Windows系統進行dns欺騙(arp欺騙基礎之上)實驗時,遇到了問題:
1、攔截並轉發dns伺服器正確的dns響應包,目標機器可以識別,並訪問正確的ip地址;
2、攔截dns伺服器的dns響應包,將dns報文回答區的ip地址替換為另一個ip,然後轉發給目標機器(wireshark抓包顯示報文正確,不存在校驗和錯誤),目標機器不識別,返回請求超時錯誤;
3、攔截dns伺服器的dns響應包,將dns報文回答區的ip地址替換為正確的ip地址(重新賦一次值,相當於沒改動),然後轉發給目標機器,目標機器可以識別,並訪問正確的ip地址;
4、攔截目標機的dns請求,發送一個自己構造的dns響應包(wireshark抓包顯示報文正確,不存在校驗和錯誤),目標機器不識別,返回請求超時錯誤。

替換ip地址後的響應包Windows為什麼不能識別,或著Windows是否存在其他dns響應校驗機制,而不是只使用dns請求ID進行校驗?

註:目標機為Windows XP或Server 2003,每次實驗前都清理了dns緩存。


這個問題的核心是:篡改了DNS的客戶請求/ 伺服器回應里的IP,你有沒有重新計算UDP/TCP的校驗和?

眾所周知,DNS工作在UDP/TCP 53號埠,對於基於UDP的請求/應答,最簡單的方式就是Disabled UDP頭的校驗和,將CRC賦值為0即可,因為UDP的校驗和是可選項。

而對於大數據塊的DNS請求/應答,DNS區域同步傳輸則使用TCP來傳輸,校驗和是強制選項,所以不能disabled,如果你修改了IP等欄位,你必須重新計算校驗和,用新的校驗和覆蓋老的校驗和。


首先別管DNS協議細節的東西。我想問一下題主,你確認目標機器收到你第二個包了嗎?進一步說,我的意思是你改了IP後有沒有重新填寫校驗?


我和題主的做法是一致的,不過我是在linux下實驗,也出現了相同的狀況,目標主機不識別。


思路:dns攔截就是模擬更改伺服器的dns的響應包,對其中包的數據進行處理,主要是看數據包的url內容,對後面的內容處理,存取當中的struct sockaddr client的內容.後面就構造一個dns響應包就可以了。做程序開發需要的是對隊列線程池socket UDP的內容了解清楚,我建議首先看socket和TCP/IP協議的內容,處理第三層,第四次協議內容。推薦基本比較好的書《unix環境編程apue》《unix網路編程2卷本》《tcp/ip詳解卷1、2、3》《Cpp》《c和指針》。希望大家以後多交流


DNS包屬於UDP包 UDP有檢驗和 抓包軟體會原樣顯示 並不會檢驗包


dns欺騙實質就是arp欺騙,都能劫持所有會話了,dns報文自然也包括在內。
dns id:因為你可能同時發起多個query,dns id的作用是請求和響應的匹配,如果說是校驗作用,我覺得也沒問題。
關於rndc flush或者ipconfig/dnsflush的話是用來清除本地緩存,作用是將你已經得到的A紀錄並且緩存在本地的信息清除,比如你已經知道http://zhihu.com的一個ip地址時,下一次訪問就會直接去訪問這個本地緩存中的地址,而不會再去發一個query;有緩存的情況下,執行rndc flush後,再訪問http://zhihu.com,則會重新去發起一個query。
另外,dns劫持實質是運營商做的一個黑名單,比如大陸用戶不能得到http://google.com的結果,結合了gfw,就變成了牆。
關於@車小胖答案中的axfr或者叫zone transfer是master和slave之間同步數據的過程,一般這個過程我們是沒法看到的。運營商給的dns地址,實質上是一個anycast的地址,並非是master或slave或者cache的真正介面地址。
如果對dns有興趣去研究,最好用linux或者安裝dig for windows做實驗環境,至少syslog和tcpdump的結果更直觀一些。


DNS欺騙

  DNS欺騙就是攻擊者冒充域名伺服器的一種欺騙行為。

  原理:如果可以冒充域名伺服器,然後把查詢的IP地址設為攻擊者的IP地址,這樣的話,用戶上網就只能看到攻擊者的主頁,而不是用戶想要取得的網站的主頁了,這就是DNS欺騙的基本原理。DNS欺騙其實並不是真的「黑掉」了對方的網站,而是冒名頂替、招搖撞騙罷了。

  現在的Internet上存在的DNS伺服器有絕大多數都是用bind來架設的,使用的bind版本主要為bind 4.9.5+P1以前版本和bind
8.2.2-P5以前版本.這些bind有個共同的特點,就是BIND會緩存(Cache)所有已經查詢過的結果,這個問題就引起了下面的幾個問題的存在.

  DNS欺騙

  在DNS的緩存還沒有過期之前,如果在DNS的緩存中已經存在的記錄,一旦有客戶查詢,DNS伺服器將會直接返回緩存中的記錄


DNS即Domain Name System的縮寫,域名系統以分散式資料庫的形式將域名和IP地址相互映射。DNS協議即域名解析協議,簡單的說:DNS是用來解析域名的。什麼是DNS欺騙攻擊?該如何防禦?


推薦閱讀:

公共DNS哪家強?
互聯網雙出口是如何做到動態切換的(包括DNS)?
Google Public DNS 8.8.8.8 會收集哪些數據?
鳳凰視頻,包括鏘鏘三人行,笑逐顏開等節目不能看了,時間是2017年6月?
2014 年 1 月 21 日中國互聯網根域名伺服器 (DNS) 故障是什麼原因?

TAG:網路安全 | 網路攻擊 | DNS劫持 | DNS |