利用WireShark進行DNS協議分析

2021-09-28 13:39:31 字數 3164 閱讀 6012

一.準備工作

系統是windows 8.1pro

分析工具是wireshark1.10.8 stable version

使用系統ping命令傳送icmp報文.

二.開始工作

開啟cmd.exe鍵入:

ping www.oschina.net

將自動進行網域名稱解析,預設傳送4個icmp報文.

啟動wireshark,選擇乙個有效網絡卡,啟動抓包.

在控制台回車執行完畢後停止監控.

三.分析階段

截獲的所有報文如下:

總得來看有兩個dns包(一次網域名稱解析),和8個icmp包(四次ping)

下面開始分析dns的工作過程:

開啟第乙個包:

可以發現dns為應用層協議,下層傳輸層採用udp,再下層網路層是ip協議,然後是資料鏈路層的乙太網幀.

需要關注的是應用層的實現也即dns協議本身.

在此之前,可以從下層獲得一些必要資訊:

udp(user datagram protocol)報文中:dns的目的埠(dst port)是53

ipv4(internet protocol version 4)報文中目的ip是192.168.1.1(區域網路由器)

由於ip報文在網路層進行路由選擇,他會依次送給路由器而不是直接送給dns伺服器,這一點也十分容易理解,

第乙個包是請求包,不可能直接包含dns伺服器位址.

展開dns資料:

第乙個是transaction id為標識字段,2位元組,用於辨別dns應答報文是哪個請求報文的響應.

第二個是flags標誌字段,2位元組,每一位的含義不同,具體可以參考上面那個圖,也可以看下面這個圖:

qr: 查詢/響應,1為響應,0為查詢

opcode: 查詢或響應型別,這裡0表示標準,1表示反向,2表示伺服器狀態請求

aa: 授權回答,在響應報文中有效,待會兒再看

tc: 截斷,1表示超過512位元組並已被截斷,0表示沒有發生截斷

rd: 是否希望得到遞迴回答

ra: 響應報文中為1表示得到遞迴響應

zero: 全0保留字段

rcode: 返回碼,在響應報文中,各取值的含義:

0 - 無差錯

1 - 格式錯誤

2 - 網域名稱伺服器出現錯誤

3 - 域參照問題

4 - 查詢型別不支援

5 - 被禁止

6 ~ 15 保留

緊接著標誌位的是

quetions(問題數),2位元組,通常為1

answer rrs(資源記錄數),authority rrs(授權資源記錄數),additional rrs(額外資源記錄數)通常為0

欄位queries為查詢或者響應的正文部分,分為name type class

name(查詢名稱):這裡是ping後的引數,不定長度以0結束

type(查詢型別):2位元組,這裡是主機a記錄.其各個取值的含義如下:

值        助記符         說明

1         a                 ipv4位址。

2         ns               名字伺服器。

5         cname        規範名稱。定義主機的正式名字的別名。

6         soa             開始授權。標記乙個區的開始。

11       wks             熟知服務。定義主機提供的網路服務。

12       ptr               指標。把ip位址轉化為網域名稱。

13       hinfo          主機資訊。給出主機使用的硬體和作業系統的表述。

15       mx               郵件交換。把郵件改變路由送到郵件伺服器。

28       aaaa           ipv6位址。

252     axfr            傳送整個區的請求。

255     any             對所有記錄的請求。

class(類):2位元組,in表示internet資料,通常為1

下面是截獲的第二個dns包:

可以看到和第乙個請求包相比,響應包多出了乙個answers欄位,同時flags欄位每一位都有定義.

關注一下flags中answer rrs 為4 說明對應的answers欄位中將會出現4項解析結果.

answers欄位可以看成乙個list,集合中每項為乙個資源記錄,除了上面提到過的name,type,class之外,還有time to 

live,data length,addr.

time to live(生存時間ttl):表示該資源記錄的生命週期,從取出記錄到抹掉記錄快取的時間,以秒為單位.這裡是0x00 00 00 fd 合計253s.

data length(資源資料長度):以位元組為單位,這裡的4表示ip位址的長度為4位元組.也就是下面addr欄位的長度.

addr(資源資料): 返回的ip位址,就是我們想要的結果.

可以發現有4條資源記錄,4個不同的ip位址,說明網域名稱 www.oschina.net  對應有4個ip位址,分別是:

112.124.5.74

219.136.249.194

61.145.122.155

121.9.213.124

cmd中顯示的是第一條ip位址.我試了下直接訪問上面各個位址的80埠(http),

第乙個和第二個顯示403 forbidden

第三個和第四個顯示404 not found

還有每個位址哦server都不一樣oscali,oscdb,liubc,ep2,第乙個像阿里雲伺服器,第二個看起來像資料庫的伺服器,其他就不知道了...

Ubuntu下使用wireshark進行網路抓包

下面是在ubuntu中進行網路抓包的教程。1.安裝wireshark 終端執行 sudo apt get install wireshark 2.修改init.lua 直接執行wireshark的話會報錯 lua error during loading string usr share wires...

在本地環境中利用iodine工具建立DNS隧道

iodine是目前比較活躍,知名度比較大的乙個dns tunneling實現工具。我查閱了其他人的部落格,需要用到vps,不便於復現。為了幫助初學者學習iodine,因此在本地環境中搭建了dns隧道。其中客戶端和伺服器使用的都是kali,而windows2003起乙個網域名稱解析的作用。server...

用WireShark進行網路抓包

第一步 安裝wireshark1.6.4的同時,依賴安裝了winpcap,winpcap是用於網路封包抓取的一套工具,可適用於32位的操作平台上解析網路封包。第二步 開啟wireshark開始抓包。然後我們開啟人人網 主頁。登陸操作,登陸後,停止抓包。第三步 在cmd中使用ipconfig 得到本機...