【愚公系列】2022年02月 wireshark系列-数据抓包分析之DHCP协议02
一、数据抓包分析之DHCP协议02
分析DHCP数据包
分析之前,我们先来学习下DHCP报文格式
1.DHCP报文格式
在DHCP获取IP地址及其他网络配置参数的过程中,DHCP客户端和服务器之间要交换很多的消息报文,这些DHCP报文共有8种类型。每种报文的格式相同,只是某些字段的取值不同。DHCP报文格式如下
DHCP报文格式
各字段解释如下:
op:报文的操作类型。分为请求报文和响应报文,1是请求报文,2是响应报文。具体的报文类型在option字段中标识。
htype:DHCP客户端的硬件地址类型。1表示ethernet地址。
hlen:DHCP客户端的硬件地址长度。ethernet为6。
hops:DHCP报文经过的DHCP中继的数据。初始化为0,报文每经过一个DHCP中继,该字段就会增加1。
xid:客户端发起一次请求时选择的随机数,用来标识一次地址请求过程。
secs:DHCP客户端开始DHCP请求后所经过的时间,目前尚未使用,固定其0。
flags:DHCP服务器响应报文是采用单播还是广播方式发送。只使用第0比特位,0表示采用单播方式,1表示使用广播方式,其他比特保留不用。
ciaddr:DHCP客户端的IP地址。
yiaddr:DHCP服务器分配给客户端的IP地址。
siaddr:DHCP客户端获取IP地址等信息的服务器IP地址。
giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。
chaddr: DHCP客户端的硬件地址。
sname: DHCP客户端获取IP地址等信息的服务器名称。
file:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。
option:可选变长选项字段,包括报文的类型、有效租期、DNS服务器的IP地址和WINS服务器的IP地址等配置信息。
需要注意的是,上表DHCP报文格式中,每一个字段后的数字表示该字段在报文中占用的字节数。其中,option字段的长度要根据服务器所提供参数的多少而定,是可变的。
2.DHCP报文类型
DHCP有8种类型的报文,每种报文的格式相同,只是报文中的某些字段取值不同。具体如下
介绍完这些知识点后,我们来真正的分析下抓到的数据包。由于获取DHCP的特殊性(实验环境在使用ipconfig /Release后无法连接),实验环境已经有了抓完保存好的数据包,请学习者在自己的机器上抓取,并分析对照。本次实验将介绍下流程中常见的四个格式,其他的,小伙伴学完之后,自己分析是一样的。
3.分析发现数据包
打开dhcp.pcapng包,在Fileter中输入bootp(输入DHCP是无效的),可以看到下面的DHCP协议数据,
在输入"ipconfig /Release"后,会出现DHCP Release数据包。在使用"ipconfig /renew’后,或出现Discover至ACK的数据包。下面,我们来分析DHCP Discover数据包,
其他的协议,我们不做分析,有兴趣的同学,可以看其他的实验,我们来看DHCP协议。
由于Wireshark在处理DHCP时,使用的是BOOTP协议,所以在Packet Detail 面板中看到的是Bootstrap Protocol,而不是DHCP。
Bootstrap Protocol (Discover)
Message type: Boot Request (1) #DHCP消息类型,1表示 请求包
Hardware type: Ethernet (0x01) #硬件类型为Ethernet
Hardware address length: 6 #硬件地址长度为6
Hops: 0 #经过DHCP中继数为0
Transaction ID: 0xe007659f # 事务ID为0xe007659f
Seconds elapsed: 0 # 客户端启动时间
Bootp flags: 0x0000 (Unicast) #BOOTP标志字段,此处是单播
0... .... .... .... = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0 (0.0.0.0) #客户端IP地址
Your (client) IP address: 0.0.0.0 (0.0.0.0) #自己的(客户端)IP地址
Next server IP address: 0.0.0.0 (0.0.0.0) #下一阶段使用的DHCP服务器的IP地址
Relay agent IP address: 0.0.0.0 (0.0.0.0) # DHCP中继器的IP地址
Client MAC address: 02:00:04:78:01:7b (02:00:04:78:01:7b) #客户端的MAC地址
Client hardware address padding: 00000000000000000000 #客户端硬件地址填充
Server host name not given #服务器主机名
Boot file name not given #启动文件名
Magic cookie: DHCP #与BOOTP兼容
Option: (53) DHCP Message Type (Discover) #DHCP消息类型为53
Length: 1 #长度为1
DHCP: Discover (1) #发现包
Option: (61) Client identifier #客户端标识符
Length: 7 #长度为7
Hardware type: Ethernet (0x01) #硬件类型为Ethernet
Client MAC address: 02:00:04:78:01:7b (02:00:04:78:01:7b) #客户端MAC地址
Option: (50) Requested IP Address #请求IP地址
Length: 4 #长度为4
Requested IP Address: 10.1.1.142 (10.1.1.142) #请求的IP地址
Option: (12) Host Name #客户端主机名
Length: 10 #长度为10
Host Name: heetian-PC #主机名为heetian-PC
Option: (60) Vendor class identifier #供应商类标识符
Length: 8 #长度为8
Vendor class identifier: MSFT 5.0 #供应商标识符为MSFT 5.0
Option: (55) Parameter Request List #参数请求列表
Length: 12 #长度是12
Parameter Request List Item: (1) Subnet Mask #子网掩码
Parameter Request List Item: (15) Domain Name #域名
Parameter Request List Item: (3) Router #路由
Parameter Request List Item: (6) Domain Name Server #域名服务
Parameter Request List Item: (44) NetBIOS over TCP/IP Name Server #NetBIOS名称服务
Parameter Request List Item: (46) NetBIOS over TCP/IP Node Type #NetBIOS节点类型
Parameter Request List Item: (47) NetBIOS over TCP/IP Scope #NetBIOS作用范围
Parameter Request List Item: (31) Perform Router Discover #完成路由发现
Parameter Request List Item: (33) Static Route #静态路由
Parameter Request List Item: (121) Classless Static Route #无类静态路由
Parameter Request List Item: (249) Private/Classless Static Route (Microsoft) #私有静态路由
Parameter Request List Item: (43) Vendor-Specific Information #供应商特定信息
Option: (255) End
Option End: 255
Padding
通过对展开内容的介绍,每条信息的值都可以对应到DHCP报文格式中,如下表
DHCP Discover报文格式
在上表中,填写了DHCP Discover 包的报文信息。在上表中,没有填的内容表示空值,由于该包中的选项值太多了,所以将该部分内容省略了。
4.分析响应数据包
响应数据是dhcp.pcapng包中的第1540帧,如下图,我们来看下,和发现数据包有什么不同。
Bootstrap Protocol (Offer)
Message type: Boot Reply (2) #DHCP消息类型,2表示 响应包
Hardware type: Ethernet (0x01) #硬件类型为Ethernet
Hardware address length: 6 #硬件地址长度为6
Hops: 0 #经过DHCP中继数为0
Transaction ID: 0xe007659f # 事务ID为0xe007659f
Seconds elapsed: 0 # 客户端启动时间
Bootp flags: 0x0000 (Unicast) #BOOTP标志字段,此处是单播
0... .... .... .... = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0 (0.0.0.0) #客户端IP地址
Your (client) IP address: 10.1.1.142 (10.1.1.142) #自己的(客户端)IP地址
Next server IP address: 10.1.1.1 (10.1.1.1) #下一阶段使用的DHCP服务器的IP地址
Relay agent IP address: 0.0.0.0 (0.0.0.0) # DHCP中继器的IP地址
Client MAC address: 02:00:04:78:01:7b (02:00:04:78:01:7b) #客户端的MAC地址
Client hardware address padding: 00000000000000000000 #客户端硬件地址填充
Server host name not given #服务器主机名
Boot file name not given #启动文件名
Magic cookie: DHCP #与BOOTP兼容
Option: (53) DHCP Message Type (Discover) #DHCP消息类型为53
Length: 1 #长度为1
DHCP: Offer (2) #响应包
Option: (54) DHCP Server Identifier #DHCP服务标识符
Length: 4 #长度为4
DHCP Server Identifier: 10.1.1.1 (10.1.1.1) #DHCP服务标识符
Option: (51) IP Address Lease Time #IP地址租约的最短时间
Length: 4 #长度为4
IP Address Lease Time: (4294967295s) infinity #IP地址租约的最短时间为无限期
Option: (1) Subnet Mask #子网掩码
Length: 4 #长度为4
Subnet Mask: 255.255.255.0 (255.255.255.0) #子网掩码值是255.255.255.0
Option: (28) Broadcast Address # 广播地址
Length: 4 #长度为4
Broadcast Address: 10.1.1.255 (10.1.1.255) #广播地址值为10.1.1.255
Option: (6) Domain Name Server #域名服务
Length: 12 #长度为12
Domain Name Server: 10.1.1.1 (10.1.1.1) #域名服务地址为10.1.1.1
Domain Name Server: 8.8.8.8 (8.8.8.8) #域名服务地址为8.8.8.8
Domain Name Server: 8.8.8.8 (8.8.8.8) #域名服务地址为8.8.8.8
Option: (3) Router #路由
Length: 4
Router: 10.1.1.1 (10.1.1.1) #路由器地址为10.1.1.1
Option: (15) Domain Name #域名
Length: 17
Domain Name: cs2cloud.internal #域名为cs2cloud.internal
Option: (43) Vendor-Specific Information #供应商特定信息
Length: 7
Value: 020400000001ff
Option: (60) Vendor class identifier #供应商类标识符
Length: 8
Vendor class identifier: MSFT 5.0
Option: (255) End
Option End: 255
Padding
通过上面的信息,我们可以清楚的了解到DHCP服务器提供的详细信息。例如,提供给客户端的IP地址为10.1.1.142,DHCP服务标识符是10.1.1.1,子网掩码是255.255.255.0,IP地址的租约是无期限等。这里就不在列举其他的信息了,将每条信息的值对应到DHCP报文中,如下
DHCP Offer报文格式
5.分析请求数据包
下面我们来看下请求数据包,第1541帧
Bootstrap Protocol (Request)
Message type: Boot Request (1) #DHCP消息类型,1表示 请求包
Hardware type: Ethernet (0x01) #硬件类型为Ethernet
Hardware address length: 6 #硬件地址长度为6
Hops: 0 #经过DHCP中继数为0
Transaction ID: 0xe007659f # 事务ID为0xe007659f
Seconds elapsed: 0 # 客户端启动时间
Bootp flags: 0x0000 (Unicast) #BOOTP标志字段,此处是单播
0... .... .... .... = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0 (0.0.0.0) #客户端IP地址
Your (client) IP address: 0.0.0.0 (0.0.0.0) #自己的(客户端)IP地址
Next server IP address: 0.0.0.0 (0.0.0.0) #下一阶段使用的DHCP服务器的IP地址
Relay agent IP address: 0.0.0.0 (0.0.0.0) # DHCP中继器的IP地址
Client MAC address: 02:00:04:78:01:7b (02:00:04:78:01:7b) #客户端的MAC地址
Client hardware address padding: 00000000000000000000 #客户端硬件地址填充
Server host name not given #服务器主机名
Boot file name not given #启动文件名
Magic cookie: DHCP #与BOOTP兼容
Option: (53) DHCP Message Type (Request) #DHCP消息类型为53
Length: 1 #长度为1
DHCP: Discover (3) #请求包
Option: (61) Client identifier #客户端标识符
Length: 7 #长度为7
Hardware type: Ethernet (0x01) #硬件类型为Ethernet
Client MAC address: 02:00:04:78:01:7b (02:00:04:78:01:7b) #客户端MAC地址
Option: (50) Requested IP Address #请求IP地址
Length: 4 #长度为4
Requested IP Address: 10.1.1.142 (10.1.1.142) #请求的IP地址
Option: (54) DHCP Server Identifier #DHCP服务器标识符
Length: 4
DHCP Server Identifier: 10.1.1.1 (10.1.1.1) #DHCP标识符为10.1.1.1
Option: (12) Host Name #客户端主机名
Length: 10 #长度为10
Host Name: heetian-PC #主机名为heetian-PC
Option: (81) Client Fully Qualified Domain Name #客户端完全合格域名
Length: 13
Flags: 0x00 #标志位
0000 .... = Reserved flags: 0x00 #保留标志位
.... 0... = Server DDNS: Some server updates #服务器DDNS
.... .0.. = Encoding: ASCII encoding #编码格式
.... ..0. = Server overrides: No override #服务重写
.... ...0 = Server: Client
A-RR result: 0
PTR-RR result: 0
Client name: heetian-PC #客户端名称
Option: (60) Vendor class identifier #供应商类标识符
Length: 8 #长度为8
Vendor class identifier: MSFT 5.0 #供应商标识符为MSFT 5.0
Option: (55) Parameter Request List #参数请求列表
Length: 12 #长度是12
Parameter Request List Item: (1) Subnet Mask #子网掩码
Parameter Request List Item: (15) Domain Name #域名
Parameter Request List Item: (3) Router #路由
Parameter Request List Item: (6) Domain Name Server #域名服务
Parameter Request List Item: (44) NetBIOS over TCP/IP Name Server #NetBIOS名称服务
Parameter Request List Item: (46) NetBIOS over TCP/IP Node Type #NetBIOS节点类型
Parameter Request List Item: (47) NetBIOS over TCP/IP Scope #NetBIOS作用范围
Parameter Request List Item: (31) Perform Router Discover #完成路由发现
Parameter Request List Item: (33) Static Route #静态路由
Parameter Request List Item: (121) Classless Static Route #无类静态路由
Parameter Request List Item: (249) Private/Classless Static Route (Microsoft) #私有静态路由
Parameter Request List Item: (43) Vendor-Specific Information #供应商特定信息
Option: (255) End
Option End: 255
Padding
通过对展开内容的介绍,每条信息的值都可以对应到DHCP报文中,如下
DHCP Request报文格式
6.分析确认数据包
确认报文,第1542帧,如下
Bootstrap Protocol (ACK)
Message type: Boot Reply (2) #DHCP消息类型,2表示 响应包
Hardware type: Ethernet (0x01) #硬件类型为Ethernet
Hardware address length: 6 #硬件地址长度为6
Hops: 0 #经过DHCP中继数为0
Transaction ID: 0xe007659f # 事务ID为0xe007659f
Seconds elapsed: 0 # 客户端启动时间
Bootp flags: 0x0000 (Unicast) #BOOTP标志字段,此处是单播
0... .... .... .... = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0 (0.0.0.0) #客户端IP地址
Your (client) IP address: 10.1.1.142 (10.1.1.142) #自己的(客户端)IP地址
Next server IP address: 10.1.1.1 (10.1.1.1) #下一阶段使用的DHCP服务器的IP地址
Relay agent IP address: 0.0.0.0 (0.0.0.0) # DHCP中继器的IP地址
Client MAC address: 02:00:04:78:01:7b (02:00:04:78:01:7b) #客户端的MAC地址
Client hardware address padding: 00000000000000000000 #客户端硬件地址填充
Server host name not given #服务器主机名
Boot file name not given #启动文件名
Magic cookie: DHCP #与BOOTP兼容
Option: (53) DHCP Message Type (ACK) #DHCP消息类型为53
Length: 1 #长度为1
DHCP: ACK (5) #确认包
Option: (54) DHCP Server Identifier #DHCP服务标识符
Length: 4 #长度为4
DHCP Server Identifier: 10.1.1.1 (10.1.1.1) #DHCP服务标识符
Option: (51) IP Address Lease Time #IP地址租约的最短时间
Length: 4 #长度为4
IP Address Lease Time: (4294967295s) infinity #IP地址租约的最短时间为无限期
Option: (1) Subnet Mask #子网掩码
Length: 4 #长度为4
Subnet Mask: 255.255.255.0 (255.255.255.0) #子网掩码值是255.255.255.0
Option: (28) Broadcast Address # 广播地址
Length: 4 #长度为4
Broadcast Address: 10.1.1.255 (10.1.1.255) #广播地址值为10.1.1.255
Option: (81) Client Fully Qualified Domain Name #客户端完全合格域名
Length: 30
Flags: 0x03 #标志位
0000 .... = Reserved flags: 0x00 #保留标志位
.... 0... = Server DDNS: Some server updates #服务器DDNS
.... .0.. = Encoding: ASCII encoding #编码格式
.... ..1. = Server overrides: No override #服务重写
.... ...1 = Server: Client
A-RR result: 255
PTR-RR result: 255
Client name: Client name: win7-64-1.cs2cloud.internal #客户端名称
Option: (6) Domain Name Server #域名服务
Length: 12 #长度为12
Domain Name Server: 10.1.1.1 (10.1.1.1) #域名服务地址为10.1.1.1
Domain Name Server: 8.8.8.8 (8.8.8.8) #域名服务地址为8.8.8.8
Domain Name Server: 8.8.8.8 (8.8.8.8) #域名服务地址为8.8.8.8
Option: (3) Router #路由
Length: 4
Router: 10.1.1.1 (10.1.1.1) #路由器地址为10.1.1.1
Option: (15) Domain Name #域名
Length: 17
Domain Name: cs2cloud.internal #域名为cs2cloud.internal
Option: (43) Vendor-Specific Information #供应商特定信息
Length: 7
Value: 020400000001ff
Option: (60) Vendor class identifier #供应商类标识符
Length: 8
Vendor class identifier: MSFT 5.0
Option: (255) End
Option End: 255
Padding
报文格式表格如下
DHCP ACK报文格式
- 点赞
- 收藏
- 关注作者
评论(0)