我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

《DNS协议格式分析与解释》。

DNS即域名系统(Name),是用于将域名映射到IP地址的协议。 DNS 协议使其易于记忆。

DNS 可以基于 TCP 或 UDP,使用端口 53。通常使用 UDP 作为承载。它通常被其他应用层协议(如HTTP、SMTP等)用来将主机名解析为IP地址。它被广泛使用。

因此,在协议恢复的系统中,基本上所有的移动APP分析都需要先分析DNS。

DNS包含一系列RFC标准,例如等。

本文讲解了域名、解析过程以及DNS报文格式,并利用工具捕获并分析DNS协议报文,了解DNS协议报文的格式和解析方法。本文仅限于UDP承载的DNS,基于IPV4。

01

域名及解析流程

域名由一系列字母(a~z,不区分大小写)、数字(0~9)和连接符(-)以及句点分隔符组成。总长度不超过255,用分隔符隔开的各段等于一级域名,低级别在左边,高级别在右边。每个段的长度不超过63个字符。比如域名,三个域名分别是、、、、com,其中com为最高级别。

相应地,在DNS报文中,一个完整的域名被分为多个段,但它们之间不是用点分隔的。而是使用域名长度的顺序,并且它们依次出现在数据中。

报文中域名的格式一般如下图所示:

如果该域名由4个段组成,则报文中的格式为4个长度的数据块,以0x00结尾。

另外,消息中,为了节省资源,如果每个域名之前重复,则会缩写为两个字节,其中前两位为11,接下来的14位表示重复内容之间的距离和 DNS 协议消息。文本标题和重复长度之间的距离以 0x00 结束。很多人没有注意到这个特性,导致很多DNS解析错误或者解析失败。

在抓包点的数据包层面,域名到IP的解析可以分为两步:

1、目标机向指定的域名服务器发送DNS请求报文,报文中携带要查询的域名;

2、域名服务器向目标机器响应DNS响应报文,其中包含域名对应的IP地址。

从上一节的域名解析报文中可以清楚地看到这两步。当然,一次DNS查询实际上会经历多个小步骤的迭代查询。各级域名服务器向上一级域名服务器请求,最后将结果返回给下一级。这个过程并不能体现在抓包点的抓包解析上。是的,协议分析过程中不需要特别注意。

02

DNS协议报文格式

DNS过程包括一对请求消息和响应消息。请求消息和响应消息具有统一的消息格式,如下所示:

640?wx_fmt=png

DNS 消息分为两部分:标头和正文。

的内容总共14个字节,包括三大类信息:

1、会话标识(2字节):是DNS消息的ID标识。用于确定请求消息和响应消息之间的配对关系。一对请求和响应消息的会话标识字段是相同的,四元素加上组和会话标识符,DNS响应消息和请求消息可以一一映射。

2.标志(2字节):每一位代表标志的不同含义。该字段的按位表示如下:

QR:查询/响应标志,1位,0为查询,1为响应。

:查询响应类型,4位,0表示标准查询,1表示反向查询,2表示服务器状态请求。

AA:授权应答,1位,表示服务器是否是有效的授权服务器。在响应消息中有效,在请求消息中无效。

TC:截断标志,1位,1表示超过512字节且已被截断,0表示未发生截断。

RD:递归答案期望标志,1位,1表示期望。

RA:可用递归标志,1位,在响应消息中有效,1表示递归响应。

零:全0保留字段,3位。最后两位在新版本的 RFC 中使用,本文忽略。

rcode:返回码,4位,0表示没有错误,1表示格式错误,32表示服务器错误,3表示域引用问题,4表示不支持查询类型,5表示禁止,其他保留。

3、数量字段(共8字节):RRs、RRs、RRs分别代表以下四个区域的数量。

标题之后,有四个主要的文本区域,分为两类:

1. 区域,包括不同数量的查询块。每个块的格式如下:

640?wx_fmt=png

Name:查询名称,长度可变,不需要填充字节。一般该字段表示要查询的域名(反向查询的IP),格式见yum。

域名的每一段前面都有一个字节长度,整个域名以0x00结尾。

Type:查询类型,两个字节,如A、NS、CNAME、PTR等。

Class:查询类,两个字节,通常为IN(),表示数据。

2、资源记录(RR)区域,即三个区域:

640?wx_fmt=png

Name:域名,相当于该地区的查询名称字段。两者本质上是一样的,但是由于资源记录区域在区域之后,如果域名有重复的段,则字段中的一个或几个段会使用 2 个字节值来代替原来的长度和字符串。

例如:

该消息中的区域有一个名称字段,该字段与该区域的查询域名完全相同。因此,它是两个字节C00C(01100)。前两个高位是11,接下来的14个字节对应的是12,正好。指向区域的查询域名字段。

另外,还有一些片段重复的情况,可以自行分析,这里不再赘述。

Type:查询类型,两个字节,与区域的查询类型含义相同。

Class:查询类,两个字节,通常为IN(),表示数据。

TTL:Time to live,四个字节,单位秒,资源记录的生命周期。生命周期越大,资源记录越稳定。

Data:资源数据长度,两个字节,表示后续资源数据的长度。

Data:资源数据,长度由Data值决定。按地区要求返回的相关资源记录的数据。它可以是地址或其他域名等。

另一个区域是如图所示的区域。

03

DNS 消息示例

DNS请求的流程:

包括请求和响应,都有相同的ID。

问:

DNS请求包含请求的域名:.

回复:

分析结果如下:

基本上所有的数据段都存在。

以下是部分域名重复的示例:

图中红框所示为替换之前出现的com段,但由于它在CNAME的前面部分,所以没有被替换。

DNS协议的分析到此结束。 DNS 流量非常常见。您可以尝试当场抓包并分析。捕获整个流量后,使用过滤规则“dns”过滤掉所有DNS数据包。如果有需要的话,可以和我一起学习。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/6946.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线