天天看点

利用WireShark进行DNS协议分析

一.准备工作

系统是windows 8.1pro

分析工具是wireshark1.10.8 stable version

使用系统ping命令发送icmp报文.

二.开始工作

打开cmd.exe键入:

ping www.oschina.net

将自动进行域名解析,默认发送4个icmp报文.

启动wireshark,选择一个有效网卡,启动抓包.

在控制台回车执行完毕后停止监控.

三.分析阶段

截获的所有报文如下:

利用WireShark进行DNS协议分析

总得来看有两个dns包(一次域名解析),和8个icmp包(四次ping)

下面开始分析dns的工作过程:

打开第一个包:

利用WireShark进行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数据:

利用WireShark进行DNS协议分析

第一个是transaction id为标识字段,2字节,用于辨别dns应答报文是哪个请求报文的响应.

第二个是flags标志字段,2字节,每一位的含义不同,具体可以参考上面那个图,也可以看下面这个图:

利用WireShark进行DNS协议分析

qr: 查询/响应,1为响应,0为查询

opcode: 查询或响应类型,这里0表示标准,1表示反向,2表示服务器状态请求

aa: 授权回答,在响应报文中有效,待会儿再看

tc: 截断,1表示超过512字节并已被截断,0表示没有发生截断

rd: 是否希望得到递归回答

ra: 响应报文中为1表示得到递归响应

zero: 全0保留字段

rcode: 返回码,在响应报文中,各取值的含义:

紧接着标志位的是

quetions(问题数),2字节,通常为1

answer rrs(资源记录数),authority rrs(授权资源记录数),additional rrs(额外资源记录数)通常为0

字段queries为查询或者响应的正文部分,分为name type class

name(查询名称):这里是ping后的参数,不定长度以0结束

type(查询类型):2字节,这里是主机a记录.其各个取值的含义如下:

class(类):2字节,in表示internet数据,通常为1

下面是截获的第二个dns包:

利用WireShark进行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,第一个像阿里云服务器,第二个看起来像数据库的服务器,其他就不知道了...

web服务器貌似是tengine,

不知道为什么通过ip地址无法直接访问web站点,以后感兴趣再研究下哈哈

关于icmp协议的报文分析将在之后的文章中给出.今天先到这吧.

最后,欢迎大家评论交流~特别是osc在搞什么鬼.