Advertisement

网络协议篇之DHCP协议(一)—— DHCP协议基础

阅读量:

动态主机配置协议(DHCP)是一种用于动态分配IP地址的应用层协议。其前身是BOOTP协议,DHCP更为复杂,功能更强大。DHCP的实现分为四步:客户端发起Discover包,DHCP Server响应Offer包,客户端请求分配IP,服务器确认(ACK)分配。通过Wireshark抓包,可以分析DHCP包的流程,包括断开和重新连接网络的过程。DHCP包分析显示,Discover包用于发现服务器,Offer包用于提供IP,Request包用于请求分配,ACK包用于确认分配。此外,DHCP还存在饥饿攻击,通过大量请求耗尽服务器IP资源,导致攻击者能够绕过正常分配,进行中间人攻击。

一,动态主机配置协议DHCP

1,DHCP简介

DHCP,全称为Dynamic Host Configuration Protocol(缩写DHCPC),是位于网络层之上的一种应用层协议。当客户主机的IP地址被设置为动态获取时,DHCP服务器将依据DHCP协议为该主机分配IP地址,从而使主机能够通过该IP连接至互联网。

BOOTP协议是DHCP的前身,为实现网络设备的自动地址分配,BOOTP协议应运而生。DHCP逐渐取代了BOOTP,相较于BOOTP,DHCP的复杂性和功能均有显著提升。在实际操作中,若需查看DHCP包,建议在Wireshark中输入过滤条件为BOOTP,而非DHCP。值得注意的是,当前使用的Wireshark版本(1.12.9)较为老旧,未来建议更新至最新版本以验证此假设,同时尝试输入DHCP以筛选显示仅DHCP包。

2,DHCP的实现

这里写图片描述

DHCP的实现包括4个具体步骤:
第一步,Client端通过发送一个DHCP Discover包来探测网络中可提供IP地址的 DHCP 服务器。
第二步,当 DHCP 服务器接收到 Discover 包后,会通过发送一个 Offer 包来回应客户端,表明其能够提供 IP 地址。
第三步,客户端接收到 Offer 包后,会发送一个 Request 包以请求分配 IP 地址。
第四步, DHCP 服务器通过发送一个 Ack 确认包来确认相关的信息。


二,利用Wireshark抓取DHCP包

1,分析

抓取DHCP包的前提条件是必须确保存在可用的DHCP服务器。随后,需要将主机的IP地址获取方式设置为自动获取。如果主机在抓包前已经通过网络连接,需要先断开主机的网络连接,然后再重新连接至网络。在Windows命令提示符(cmd)下,使用ipconfig命令来完成网络断开与重新连接的操作。

复制代码

在cmd中可以使用ipconfig /?查看各参数的含义:

这里写图片描述

(1)ipconfig /release
断开当前的网络连接,主机IP变为0.0.0.0,主机与网络断开,不能访问网络。
(2)ipconfig /renew
更新适配器信息,请求连接网络,这条命令结束之后,主机会获得一个可用的IP,再次接入网络。

2,开始抓包

实验环境设置为Windows 10、Wireshark 1.12.9,并采用有线网络连接。具体操作步骤如下:(1)启动Wireshark进行抓包操作,将过滤器设置为bootp,仅显示DHCP数据包。(2)在命令提示符(cmd)窗口中执行ipconfig /release命令以断开当前网络连接。

这里写图片描述

可以看到此时所有的网卡都已经断开。以太网处于断开状态。

这里写图片描述

Wireshark中截获到一个DHCP Release数据包。

(3)在cmd中输入ipconfig /renew 请求网络连接。

这里写图片描述

在Wireshark中新增了4个DHCP数据包,这一现象值得注意:数据包1为DHCP Discover类型,数据包2为DHCP Offer类型,数据包3为DHCP Request类型,数据包4为DHCP ACK类型。

这里写图片描述

在执行完此命令后,您将在命令行界面(CMD)中看到主机获得IP地址,并成功连接到网络。

(4)为了后续分析使用,我们再执行一次ipconfig /renew:

这里写图片描述

值得注意的是,在Wireshark中新增了三个关键数据包:DHCP ACK、DHCP Request和DHCP ACk。此外,每次执行ipconfig /renew命令时会增加两个相关数据包:DHCP Request和DHCP ACk。

三,DHCP包分析

本节将深入探讨在执行ipconfig /renew命令时,生成的4个DHCP数据包的含义及其背后的作用机制。这些数据包不仅展示了客户机与DHCP服务器之间的交互过程,同时也反映了IP动态分配的机制。

这里写图片描述

在Client端,通过发送一个广播包,IP地址为0.0.0.0,可以观察到目的IP地址为255.255.255.255。Client的目标是通过此数据包,发现能够提供服务的DHCP服务器。

通过下图可以看出,DHCP协议属于应用层协议。在应用层,DHCP协议被定义为...在传输层,该协议采用UDP协议来实现...目的端口设置为67。

这里写图片描述

当DHCP服务器接收到一条DHCP Discover数据包时,向客户端发送响应,通过一个DHCP Offer包。

这里写图片描述

DHCP服务器继续采用广播地址作为目的地址,这与其客户端均未拥有私有IP地址有关。由于多个客户端可能使用0.0.0.0作为源IP地址向DHCP服务器发起IP分配请求,DHCP服务器自身不能分配0.0.0.0这个地址,因此,DHCP服务器仍采用广播方式,向所有正在请求的客户端发送可用的IP地址。

DHCP服务器分配了一个可分配的IP地址,在该数据包的Your (client) IP Address字段中,可以观察到DHCP服务器分配的IP地址。

除了上述内容,如图中标注的区域所示,服务器还提供了子网掩码、路由器、DNS、域名、IP地址租用期等相关信息。

当Client接收到DHCP Offer包时(特别是当存在多个可连接的DHCP服务器时),确认存在可以与其交互的 DHCP 服务器后,Client随后发送请求数据包,以请求分配IP。此时的源IP和目的IP仍为0.0.0.0和255.255.255.255。

4,DHCP ACK包
服务器用DHCP ACK包对DHCP请求进行响应。

这里写图片描述

在数据包中包含这些信息,表示将这些资源分配给Client。Client的IP地址:分配给Client的可用IP地址。其余各项option信息中,前两项是DHCP服务器发送的消息类型(ACK)和服务器的身份标识,其余选项包括:Subnet Mask:Client端分配到的IP地址的子网掩码;Router:路由器Domain Name Server:DNS服务器,域名服务器Domain Name:域名IP Address Lease Time:IP地址租用期。


四,DHCP starvation attack

实际上,各种各样的攻击技术总是令人惊叹。不谈道德因素,不得不承认,制造这些攻击的人都是具有高超智慧的人。

多种中攻击DHCP的技术,本文将介绍其中一种,其机制类似于经典的SYN flooding攻击。

DHCP starvation attack亦称DHCP饥饿攻击,通过理解其名称即可知,其本质即为通过大量请求耗尽目标服务器的资源,从而达到对目标网络的破坏目的。

攻击者持续向DHCP服务器发送DHCP请求包,最终耗尽服务器的可用IP地址。随后,攻击者模拟合法设备,向客户端分配IP地址,并将客户端的默认网关和DNS设置为其自己的设备IP地址,从而成功实施中间人攻击。

全部评论 (0)

还没有任何评论哟~