利用WireShark进行DNS协议分析
一.准备工作
系统是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
本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析。
一、概述
1.1 DNS
识别主机有两种方式:主机名、IP地址。前者便于记忆(如www.yahoo.com),但路由器很难处理(主机名长度不定);后者定长、有层次结构,便于路由器处理,但难以记忆。折中的办法就是建立IP地址与主机名间的映射,这就是域名系统DNS做的工作。DNS通常由其他应用层协议使用(如HTTP、SMTP、FTP),将主机名解析为IP地址,其运行在UDP之上,使用53号端口。
注:DNS除了提供主机名到IP地址转换外,还提供如下服务:主机别名、邮件服务器别名、负载分配。
1.2 HTTP使用DNS情形
考虑这样的操作,在浏览器输入http://www.baidu.com/index.html并回车,首先需要将URL(存放对象的服务器主机名和对象的路径名)解析成IP地址,具体步骤为:
(1)同一台用户主机上运行着DNS应用的客户机端(如浏览器)
(2)从上述URL抽取主机名www.baidu.com,传给DNS应用的客户机端(浏览器)
(3)该DNS客户机向DNS服务器发送一个包含主机名的请求(DNS查询报文)
(4)该DNS客户机收到一份回答报文(即DNS回答报文),该报文包含该主机名对应的IP地址119.75.218.70
(5)浏览器由该IP地址定位的HTTP服务器发送一个TCP链接
用Wireshark捕获的DNS报文如下图,显然第一行是DNS查询报文,第二行是DNS回答报文。
图1 Wireshark捕获的DNS报文
二、DNS报文
2.1 DNS报文格式
DNS只有两种报文:查询报文、回答报文,两者有着相同格式,如下:
图2 DNS报文格式
2.1.1 首部区域
标识数
对该查询进行标识,该标识会被复制到对应的回答报文中,客户机用它来匹配发送的请求与接收到的回答。
标志[1]
图3 DNS报文首部区域的标志
QR(1比特):查询/响应的标志位,1为响应,0为查询。
opcode(4比特):定义查询或响应的类型(若为0则表示是标准的,若为1则是反向的,若为2则是服务器状态请求)。
AA(1比特):授权回答的标志位。该位在响应报文中有效,1表示名字服务器是权限服务器(关于权限服务器以后再讨论)
TC(1比特):截断标志位。1表示响应已超过512字节并已被截断(依稀好像记得哪里提过这个截断和UDP有关,先记着)
RD(1比特):该位为1表示客户端希望得到递归回答(递归以后再讨论)
RA(1比特):只能在响应报文中置为1,表示可以得到递归响应。
zero(3比特):不说也知道都是0了,保留字段。
rcode(4比特):返回码,表示响应的差错状态,通常为0和3,各取值含义如下:
0 无差错
1 格式差错
2 问题在域名服务器上
3 域参照问题
4 查询类型不支持
5 在管理上被禁止
6 -- 15 保留
问题数、回答RR数、权威RR数、附加RR数
这四个字段都是两字节,分别对应下面的查询问题、回答、授权和附加信息部分的数量。一般问题数都为1,DNS查询报文中,资源记录数、授权资源记录数和附加资源记录数都为0[1]。
2.1.2 区域
(1)问题区域
包含正在进行的查询信息。包含查询名(被查询主机名字的名字字段)、查询类型、查询类。
图4 DNS报文的问题区域
查询名
查询名部分长度不定,一般为要查询的域名(也会有IP的时候,即反向查询)。此部分由一个或者多个标示符序列组成,每个标示符以首字节数的计数值来说明该标示符长度,每个名字以0结束。计数字节数必须是0~63之间。该字段无需填充字节。还是借个例子来说明更直观些,查询名为gemini.tuc.noao.edu的话,查询名字段如下[1]:
图5 DNS报文问题区别的查询名
查询类型
通常查询类型为A(由名字获得IP地址)或者PTR(获得IP地址对应的域名),类型列表如下:
类型 |
助记符 |
说明 |
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 |
对所有记录的请求 |
NS记录指定了名字服务器。一般情况,每个DNS数据库中,针对每个顶级域都会有一条NS记录,这样一来,电子邮件就可以被发送到域名树中远处的部分。
A记录,Name是主机名,Value是该主机名的IP地址,因此,一条类型为A的资源记录提供了标准的主机名到IP地址的映射。
NS记录,Name是域(如foo.com),Value是知道如何获得该域中主机IP地址的权威DNS服务器的主机名(如dns.foo.com),这个记录常用于沿着查询链进一步路由DNS查询。
CNAME记录,Name是主机别名,Value是主机别名对应的规范主机名,该记录能够向请求主机提供一个主机名对应的规范主机名。
MX记录,Name是邮件服务器别名,Value是邮件服务器别名的规范主机名。通过MX记录,一个公司的邮件服务器和其他服务器可以使用相同的别名。
注:有着复杂主机名的主机能拥有多个别名,前者称为规范主机名,后者称为主机别名(便于记忆)。
表示资源数据的长度(以字节为单位,如果资源数据为IP则为0004)。
该字段是可变长字段,表示按查询段要求返回的相关资源记录的数据。
以www.baidu.com为例,用Wireshark俘获分组,结合2.1的理论内容,很容易看明白的,DNS请求报文如下:
还有每个地址哦Server都不一样oscali,oscdb,liubc,ep2,第一个像阿里云服务器,第二个看起来像数据库的服务器,其他就不知道了...
利用WireShark进行DNS协议分析相关推荐
- WireShark实战笔记之DNS协议分析
DNS协议分析 DNS协议概述 DNS工作机理概述 dns报文 WireSahrk分析DNS协议 查看第一个包: 查看第四个包(响应包) DNS协议概述 DNS协议也可以称为DNS服务,全称是Doma ...
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...
- 计算机网络协议分析dns,DNS协议分析
一直有一个愿望,能把知道的东西的原理搞明白:计算机网络.操作系统等等等等.今天好好研究了研究DNS协议. DNS协议是应用层协议,一般是基于UDP协议,不过我看了Golangnet 包里相关源码用的是 ...
- 实验十一 DNS 协议分析实验
实验十一 DNS 协议分析实验 1.DNS 协议简介 DNS 是域名系统 (Domain Name System)的缩写,是一种分层次的.基于域的命名方案, 主要用来将主机名和电子邮件目标地址映射成I ...
- 使用Wireshark进行DNS协议解析
" DNS协议格式解析及说明." DNS即域名系统(Domain Name System),是用来将域名与IP地址建立映射的协议,通过DNS协议,可以方便记忆. DNS可基于TCP ...
- 头歌 DNS协议分析 第4关 NS 类型的 DNS 解析报文分析
任务描述 相关知识 如何捕获 NS 类型的 DNS 报文 解析 DNS 请求报文 传输层协议使用 TCP 还是 UDP ? 解析 DNS 应答报文 操作要求 测试说明 任务描述 本关任务:分析 NS ...
- EduCoder 计算机网络实验 DNS协议分析
第1关:nslookup 域名解析 任务描述 相关知识 域名结构 域名服务器 域名解析 域名解析与 nslookup 使用git将本地文件推送到远程仓库永久保存 操作要求 测试说明 任务描述 本关任务 ...
- DNS协议分析(域名解析)
一. DNS协议理论知识 1.1. 域名结构 域名系统并不像电话号码通讯录那么简单,通讯录主要是单个个体在使用,同一个名字出现在不同个体的通讯录里并不会出现问题,但域名是群体中所有人都在用的,必须要保 ...
- Wireshark嗅探和协议分析
一.实验目的 1.初步掌握Wireshark的使用方法,熟悉其基本设置,尤其是Capture Filter和Display Filter 的使用. 2.通过对Wireshark抓包实例进行分析,实现捕 ...
最新文章
- Flutter调试技巧总结——高效开发的秘密
- 如何解决多线程并发问题
- python怎么让游戏倒计时_Python如何让倒计时效果的在固定区域刷新
- tomcat+nginx+redis实现均衡负载、session共享(一)
- lvs-健康检查方式
- Perl的浅拷贝和深度拷贝
- 平板直撑的腰椎问题(塌腰)
- 风控关系网络的策略分析
- 史上最细的FIFO最小深度计算,(大多数笔试题中都会涉及)
- 数组循环移动 空间复杂度O(1)
- MySQL Workbench main_menu.xml 文件 可直接粘贴(下)
- 推荐一些网络安全的网站和论坛
- 工作日志----统一工号补充了啦
- 图片怎么加水印?添加水印其实很简单
- GIF动图大小超出限制怎么压缩变小?
- 仓库码放要求_仓库管理制度规则
- excel仪表盘_免费的Excel仪表板工具
- 计算机职称考试入户,揭秘!2020年考什么职称更容易入户广州?
- 20170923 HHC
- 中国制造2025-智能制造是强国必由之路