日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Wireshark进行DNS协议解析

發布時間:2023/11/27 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Wireshark进行DNS协议解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?DNS協議格式解析及說明。


DNS即域名系統(Domain Name System),是用來將域名與IP地址建立映射的協議,通過DNS協議,可以方便記憶。


DNS可基于TCP或UDP,使用53號端口,常見的是使用UDP承載,通常由其他應用層協議(如HTTP、SMTP等)使用,用來將主機名解析為IP地址,應用相當廣泛。


所以,在協議還原的系統中,基本上所有的移動APP的分析都需要先分析DNS。


DNS包含一系列RFC標準,如RFC1034等。


本文對域名及解析過程、DNS報文格式進行說明,并通過Wireshark工具對DNS協議進行抓包分析展示,了解DNS協議報文的格式和解析方法,本文僅限于UDP承載的DNS,基于IPV4。



01

域名及解析過程


域名由一系列字母(a~z,不區分大小寫)、數字(0~9)和連接符(-)組成以及點號分隔符組成,總長度不大于255,分隔符隔出的每段相當于一個層次的域名,級別低的在左,級別高的在右,每段長度不大于63。如域名dailyupdate.wangwang.taobao.com,三段域名分別為dailyupdate、wangwang、taobao、com,其中com的級別最高。


相應地,在DNS報文中,一個完整的域名是分成多段的,但沒有使用點號分隔起來,而是使用長度域名的順序,依次出現在數據中。

在報文中,一個域名的格式一般如下圖所示:

如dailyupdate.wangwang.taobao.com這個域名,由4段組成,則報文中的格式為4個長度數據塊,最后以0x00結束。


另外,在報文中,為節約資源,每段域名如果在之前有重復,會被縮寫為兩個字節,其中前兩個比特位為11,之后14個比特位表示重復內容距離DNS協議報文頭的距離,而重復的長度則為到0x00結束,這個特性很多人都沒有注意到,導致很多的DNS解析錯誤或不被解析。


在一個捕包點的報文層面,一個域名到IP的解析總體可分為兩步:

1、目標機向指定的域名服務器發出一個DNS請求報文,報文里攜帶需要查詢的域名;

2、域名服務器向目標機回應一個DNS響應報文,里面包含域名對應的IP地址。

從最后一節對dailyupdate.wangwang.taobao.com進行域名解析的報文中可明顯看出這兩步。當然,實際上一次DNS的查詢經歷了多個迭代查詢的小步,每級域名服務器向上級域名服務器請求,最終得到結果向下級返回,這個過程在一個捕包點的報文解析中是無法體現的,協議分析過程中也不需要特地關心。


02


DNS協議報文格式


一次DNS過程包含一對請求報文和響應報文。請求和響應報文有統一的報文格式如下圖:


一個DNS報文分成頭部和正文兩個部分。


頭部的內容共14字節,包括三大類信息:


1、會話標識(2字節):是DNS報文的ID標識,用來確定請求報文和應答響應報文的配對關系,一對請求和應答報文的會話標識字段是相同的,四元組和會話標識一起,可以將DNS應答報文和請求報文一一對應。


2、標志(2字節):每位表示不同的標志含義,按位表示字段如下

QR:查詢/響應標志,1比特,0為查詢,1為響應。

opcode:查詢響應類型,4比特,0表示標準查詢,1表示反向查詢,2表示服務器狀態請求。

AA:授權回答,1比特,表示該服務器是否為授權的有效服務器,在響應報文中有效,請求中無效。

TC:截斷標志,1比特,1表示超過512字節并已被截斷,0表示沒有發生截斷

RD:期望遞歸回答標志,1比特,1表示期望。

RA:可用遞歸標志,1比特,響應報文中有效,1表示得到遞歸響應。

zero:全0保留字段,3比特,新版RFC中對后兩位進行了使用,本文忽略。

rcode:返回碼,4比特,0表示沒有差錯,1表示格式錯誤,32表示服務器錯誤,3表示域參照問題,4表示查詢類型不支持,5表示被禁止,其它被保留。


3、數量字段(總共8字節):Questions、Answer RRs、Authority RRs、Additional RRs 各自表示后面的四個區域Queries、Answers、Authorities、Additional records的數目。


在頭部之后,為正文的四大區域,分成兩類:


1、Queries區域,包括數量不等的查詢塊,每塊格式如下:

Name:查詢名,長度不定,且不用填充字節,一般該字段表示要查詢的域名(反向查詢則為IP),格式見yum

域名的每一段之前都有一字節的長度,整個域名結束為0x00。

Type:查詢類型,兩字節,如A,NS,CNAME,PTR等。

Class:查詢類,兩字節,通常為IN(0x0001),表示internet數據。


2、資源記錄(RR)區域,即Answers、Authorities、Additional records三個區域,每個區域均包括數量不等的查詢塊,每塊格式如下:

Name:域名,相當于Queries區域的查詢名字段,二者本質上是相同的,但由于資源記錄區域在Queries區域之后,因此如果域名有重復的段,則該字段內的一段或若干段會使用2個字節的數值來代替,而不是原始的長度和字符串。

例如:

這個報文中的Answers區域,有Name字段與Queries區域的查詢域名完全一致,因此,為兩字節C00C(1100000000001100)最前面的兩個高位是 11,之后的14個字節數值對應為12,剛好指向Queries區域的查詢域名字段。

另外還有部分段重復的情況,可以自行分析,此處不做描述。


Type:查詢類型,兩字節,與Queries區域的查詢類型含義相同。

Class:查詢類,兩字節通常為IN(0x0001),表示internet數據。

TTL:生存時間,四字節,單位為秒,資源記錄的生存周期,越大表明該資源記錄越穩定。

Data Length:資源數據長度,兩字節,表示后面的資源數據的長度。

Data:資源數據,長度由Data Length值確定。為按Queries區域的要求返回的相關資源記錄的數據。可以是地址或者另一個域名等。


另外Authorities區域即為Wireshark中顯示的Authoritative nameservers區域。


03


DNS報文例子

一次DNS請求的過程:

包括請求和響應,二者具備相同的ID。


請求:

DNS請求中含有一個被請求的域名:dailyupdate.wangwang.taobao.com。


響應:

使用Wireshark得到的分析如下:

基本所有的數據段都存在。

在這里,就包含了域名部分重復的例子:

圖中紅框所示即為使用0xC028代替之前出現的com段,但是dailyupdate.wangwang.taobao.com由于在該CNAME的前一部分,則沒有被代替。


對DNS協議的分析就到這里了,DNS流量很常見,大家可以實地抓包分析試試,在Wireshark中全流量抓包后,使用過濾規則“dns”即可將所有DNS報文過濾出來。如果有需要,可以加我共同學習。


長按進行關注。






總結

以上是生活随笔為你收集整理的使用Wireshark进行DNS协议解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:使用Wireshark进行DNS协议解析