• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

概述

为了使用TCP/IP协议族,每台主机和路由器都需要某些配置信息。配置信息用于指定系统的本地名称和接口的标识符(如IP地址)。它还用于提供或使用各种网络服务,如域名系统(DNS)和移动IP归属代理。

为了获得上述信息,需要通过使用动态主机配置协议(DHCP)和IPv4和IPv6中的无状态地址来自动配置。除了上述基本要素之外,主机或路由器的配置信息可能还需要许多其他要素,具体取决于它所使用或提供的服务类型。

动态主机配置协议

动态主机配置协议(DHCP)是一种流行的客户端/服务器协议,用于指定主机(有时是路由器)的配置信息。

它的设计基于一个早期的协议——,叫做Internet BOOTP,现在已经过时了。BOOTP为客户提供有限的配置信息,但是它不提供支持所提供信息的改变的机制。DHCP使用租用的概念来扩展BOOTP模型,并且可以提供主机操作所需的所有信息。BOOTP和DHCP同样使用UDP/IP。客户机使用端口68,服务器使用端口67.

DHCP由两个主要部分组成:

地址管理:用于动态分配IP地址,并为客户端提供地址租用。

配置数据交付:包括DHCP协议的消息格式和状态机。

DHCP服务器可以配置三种地址分配方法:

动态分配:客户端从服务器配置的地址池中获得一个可撤销的IP地址。

自动分配:与动态分配相同,但地址是不可撤销的。

手动分配:此时,DHCP协议用于传输地址,但地址对于请求客户端来说是不变的(也就是说,它不是服务器维护的可分配池的一部分)。此时,DHCP的作用类似于BOOTP。

1. 地址池和租用

在动态分配中,DHCP客户端请求分配IP地址。从服务器的可用地址池中选择一个地址作为响应。通常,这个地址池是专门为DHCP分配的连续IP地址范围。分配给客户端的地址仅在特定的时间段内有效,该时间段称为租期。

当发送DHCP请求时,客户端需要向服务器提供信息。这些信息可以包括客户机名称,请求的租用期,已使用或最后使用过的地址副本其他参数.当服务器收到请求时,它可以利用客户端提供的信息和从外部获得的其他信息来决定响应中提供的地址和配置信息。

2. DHCP和BOOTP的消息格式

DHCP扩展BOOTP。DHCP报文格式的定义采用扩展BOOTP的方式来保持两种协议的兼容性。即使在没有DHCP服务器的网络中,BOOTP客户端仍然可以使用DHCP服务器和BOOTP中继代理来支持DHCP服务。消息格式包括固定长度的起始部分和可变长度的尾部。

4f142tfrdrm2856.png

如BOOTP的消息格式所示。BOOTP消息格式使用适当的分配方案来保存DHCP消息。这样,BOOTP中继代理可以处理DHCP消息,BOOTP客户端可以使用DHCP服务器。如有必要,服务器名称和引导文件名字段可以带有DHCP选项。其中,每个字段的解释如下:

Op:用于表示消息是请求(1)还是答复(2)。

HW类型:基于ARP使用的值,最常见的值是1(以太网)。

HW长度:用来存储硬件的MAC地址。对于类似以太网的网络,该值通常为6。

跳步:过去常常在信息传输过程中节省继电器的数量。发送方将该值设置为0,并在每次中继时递增该值。

事务ID:它是客户端选择的一个随机数,服务器需要将它复制到响应消息中。用于将响应与请求相匹配。

秒数:由客户端设置,它是第一次尝试申请或重新申请地址后的秒数。

标志:目前只有一个定义。

的位,称为广播标志。客户机可能在请求中设置该位,表示它们不能或不愿处理单播IP数据报,但可以处理广播数据报(例如当它们没有IP地址时)。通过设置该位通知服务器和中继代理,广播地址可用于响应中。 客户机IP地址:包括请求者的IP地址(如果已知),否则为0。 "你的"IP地址:由服务器填写,以便像请求者提供服务器地址。 下一服务器IP地址:给出下一个服务器的地址,它用于客户机的引导过程。 网关(中继)IP地址:由DHCP或BOOTP中继器填写,它们在转发DHCP(BOOTP)消息时返回自己的地址。 客户机硬件地址:保存客户机的唯一标识符,并可由服务器以不同方式来使用,包括当某个客户机每次发送地址请求时为其分配相同IP地址。 其余字段并不是每次都需要填写,其中,服务器名引导文件名分别表示服务器名和启动文件路径。这些字符串以null结尾。如果空间紧张,它们可用于保存DHCP选项。

3. DHCP协议操作

DHCP消息是带有一组特殊选项的BOOTP消息。当一台新的客户机连接到网络时,它首先发现可用的DHCP服务器,以及它们能够提供的地址。然后,它决定使用哪台服务器和哪个地址,并向提供该地址的服务器发送请求(同时将其选择通知所有服务器)。除非服务器在此期间已将该地址分配出去,否则它通过确认将地址分配给请求的客户机。

如图所示,为一次典型的DHCP交换过程:

qoxpuhg2zu42857.png

客户机通过广播消息发现一组服务器和可提供的地址,它请求自己想获得的地址,并接收到选定服务器的确认。事务ID(xid)用于请求和响应匹配,服务器ID指出哪台服务器提供地址,并承诺将它与客户机绑定。如果客户机知道它想获得的地址,该协议可简化为仅使用REQUEST和ACK消息。

发送请求的客户机将BOOTP的Op字段设置为BOOTREQUEST,并将选项字段的前4字节分别设置为十进制值99、130、83、99。客户机向服务器发送消息,使用UDP/IP数据报,其中包含一个BOOTP的BOOTREQUEST操作和相应的DHCP消息类型(通常为DHCPDISCOVERDHCPREQUEST)。这种消息从地址0.0.0.0(端口68)发送到受限广播地址255.255.255.255(端口67)。其他方向的消息从服务器IP地址和端口67发送到本地IP广播地址和端口68。

在一次典型的DHCP交换中,客户机首先广播一个DHCPDISCOVER消息。对于接收到请求的每台服务器,无论是直接接受还是通过中继代理,它们都会相应一个DHCPOFFER消息,并在你的IP地址字段中包含提供的IP地址。其他配置选项(例如DNS服务器的IP地址、子网掩码)通常也包含在内。DHCPOFFER消息中包含如下内容:

  • 租用时间:提供了在不更新租约的情况下地址可被租用的时间上限。
  • 更新时间:是客户机从获得租约到尝试要求服务器更新租约的时间。
  • 重新绑定时间:是客户机尝试要求DHCP服务器更新其地址的时间。

当接收到来自一台或多台服务器的DHCPOFFER消息后,客户机确定自己接受哪个DHCPOFFER,并广播一个包含服务器标识符选项的DHCPREQUEST消息。请求的IP地址选项设置为由选中的DHCPOFFER消息提供的地址。多台服务器可能接收到广播的DHCPREQUEST消息,但只有DHCPREQUEST消息中的标识的服务器同意将该地址进行绑定;其他服务器清除与该请求相关的状态。

在完成绑定后,选中的服务器响应一个DHCPACK消息,通知客户机现在可以使用该地址。如果服务器无法分配包含在DHCPREQUEST消息中的地址,该服务器将会响应一个DHCPNAK消息。

当客户机接受一个DHCPACK消息和其他相关的配置信息时,它可以探测网络以确保获得的地址未被使用(例如向该地址发送一个ARP请求以执行ACD)。如果客户机确定该地址已被使用,客户机就不使用该地址,并向服务器发送一个DHCPDECLINE消息,通知该地址不能使用。在经过默认的10秒延时后,客户机可以重试。

如果一台客户机在租约到期前放弃该地址,它将发送一个DHCPRELEASE消息。

在客户机已有一个IP地址并希望仅更新其租约的情况下,它可以跳过最初的DHCPDISCOVER/DHCPOFFER消息。取而代之的是,客户机通过一个DHCPREQUEST消息请求当前正在使用的地址。如果客户机已有一个地址,它不需要更新该地址,但需要其他的配置信息,则可以使用DHCPINFORM消息来代替DHCPREQUEST消息,以表明它使用现有地址,但希望获得额外的信息。

4. DHCP状态机

DHCP协议在客户机和服务器中运行一个状态机。状态用于指出协议下一个处理的消息类型。如图所示,其中时间T1、T2分别代表更新时间重新绑定时间

z5hlfnwtcqy2858.png

客户机开始于INIT状态,这是没有信息,并广播DHCPDISCOVER消息。在选择状态时,它接受DHCPOFFER消息,直到决定自己使用哪个IP地址和服务器。当它做出选择时,通过一个DHCPREQUEST消息来响应并进入请求状态。这时,它可能接收来自不需要的地址的ACK。

如果它没有发现需要的地址,发送一个DHCPDECLINE消息,并转换到INIT状态。但是,更有可能出现的情况是,它接收到一个自己需要的地址的DHCPACK消息,接收它,获得超时时间T1和T2,并进入绑定状态,这时就能使用这个地址直至到期。

当第一个计时器T1,即更新时间到期时,客户机进入更新状态并尝试重新建立租约。如果它接收到一个新的DHCPACK,则客户机重新进入绑定状态。如果这个过程失败,且T2,即重新绑定时间到期,则会导致客户机尝试从任意服务器重新获得一个地址。

如果租用期到期,客户机必须放弃所租用的地址,如果没有可选的地址或可用的网络连接,这时它将断开网络连接。

抓包分析

通过Wireshark抓取的DHCP数据包如下:

image

1. DHCP请求报文

其中,DHCP请求报文的内容如下:

image

其源地址为0.0.0.0,目的地址为广播地址255.255.255.255。各字段的解释如下:

  • Message type:消息类型,值为1,表示DHCP请求报文。
  • Hardware type:硬件类型,值为1,表示以太网。
  • Hardware address length:硬件地址长度,其值为6(常见值)。
  • Hops:跳步字段,消息发送方将该值设置为0,并在每次中继时增加。
  • Transaction ID:事务ID字段,由客户机选择的随机数,用于应答与请求相匹配。此处值为0x6f898f58。
  • Seconds elapsed:秒数字段,此处值为0。
  • Bootp flags:标志字段。
    • Broadcast flag:广播标志,此处该值为0。
    • Reserved falgs:保留字段。
  • Client IP address:客户机IP地址,即请求者的IP地址,由于此时客户机未知其IP地址,故该值为0。
  • Your(client) IP address:“你的”IP地址,由服务器填写,此处值为0.0.0.0。
  • Next server IP address:下一跳服务器IP地址,此处值为0.0.0.0。
  • Relay agent IP address:网关(中继)IP地址,由DHCP或BOOTP中继器填写,此处值为0.0.0.0。
  • Client MAC address:客户机硬件地址。
  • Clinet hardware address padding:客户机硬件地址填充。
  • Server host name:服务器名。
  • Boot file name:引导文件名。
  • Magic Cookie:魔数Cookie值。以表示DHCP报文。
5sysgvpj1pw2861.png

如图,Magic Cookie字段的十六进制值分别为63、82、53、63,分别对应于上文中提到的十进数值99、130、83和99。

2. DHCP应答报文

DHCP应答报文如下图所示:

image

其源地址是192.168.10.1,目的地址是192.168.10.155。各字段的解释如下:

  • Message type:消息类型,值为2,表示DHCP应答报文。
  • Hardware type:硬件类型,值为1,表示以太网。
  • Hardware address length:硬件地址长度,其值为6(常见值)。
  • Hops:跳步字段,消息发送方将该值设置为0,并在每次中继时增加。
  • Transaction ID:事务ID字段,由客户机选择的随机数,用于应答与请求相匹配。此处值为上一个DHCP请求报文相同,即0x6f898f58。
  • Seconds elapsed:秒数字段,此处值为0。
  • Bootp flags:标志字段。
    • Broadcast flag:广播标志,此处该值为0。
    • Reserved falgs:保留字段。
  • Client IP address:客户机IP地址,即请求者的IP地址,由于此时客户机未知其IP地址,故该值为0。
  • Your(client) IP address:“你的”IP地址,即服务器为客户机所分配的IP地址,由服务器填写,此处值为192.168.10.155。
  • Next server IP address:下一跳服务器IP地址,此处值为192.168.10.1。
  • Relay agent IP address:网关(中继)IP地址,由DHCP或BOOTP中继器填写,此处值为0.0.0.0。
  • Client MAC address:客户机硬件地址。
  • Clinet hardware address padding:客户机硬件地址填充。
  • Server host name:服务器名。
  • Boot file name:引导文件名。
  • Magic Cookie:魔数Cookie值。以表示DHCP报文。同上述的DHCP请求报文。

除此之外,在图中也可以看到报文中携带了众多选项,其中包括子网掩码广播地址DNS服务器地址默认路由器等信息。其次,在下图中可以看到由DHCP服务器所提供的三个时间,即租用时间更新时间重新绑定时间

image

DHCP中继

在最简单的网络中,一个DHCP服务器可供同一局域网中的客户机使用。但是,在更复杂的网络中,可通过一个或多个DHCP中继代理来中继DHCP流量。

opeo5ilnlgm2864.png

中继代理用于将DHCP操作扩展到跨越多个网段。如上图,网段A和网段B之间的中继会转发DHCP消息,并通过选项或填充空白字段使用额外消息来标识信息。注意,在一般情况下,中继不会参与客户机和服务器之间的所有DHCP流量交换。相反,它仅中继那些广播消息。这种消息通常在客户机首次获得自己的地址时交换。

当一台客户机获得一个IP地址,并且服务器的IP地址使用服务器标识选项时,它可与服务器进行单播通信,而不经过中继。

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now