【1.8.7.5】获取DHCP服务器的配置信息

如果客户端有了 IP 地址,将不再发送 DHCP Discover 包。这时,如果要获取网络内 DHCP 服务器信息,可以使用 netwox 提供的编号为 179 的模块来实现。该模块通过向 DHCP 服务器广播发送一个 DHCP INFORM 包,以获取相关的配置参数。

DHCP 服务器接收到该数据包后,将根据租约查找相应的配置信息,并返回一个 DHCP ACK 消息。该消息包括相应的客户配置参数,但不包括分配的网络地址。

【实例】获取DHCP服务器详细的网络配置信息,执行命令如下:

root@daxueba:~# netwox 179

执行命令后将向 DHCP 服务器广播发送 INFORM 报文,同时会得到 DHCP 服务器返回的 ACK 报文。为了方便讲解,下面将信息进行拆分后分别讲解。

  1. 发送的 INFORM 报文信息的输出信息如下:

    I send a INFORM: DHCP____________________________________________________________. | op=request hops=0 xid=52FEF936 secs=0 flags=0000 | | client=192.168.59.133 your=0.0.0.0 | | server=0.0.0.0 agent=0.0.0.0 | | clienteth=00:0C:29:FD:DE:B8 | #客户端MAC地址 | sname: | | file: | | msgtype: inform | | clientidtype: 1 | | clientid: 000c29fddeb8 | | reqlist[0]: 1 (subnetmask) | #请求的网络配置信息 | reqlist[1]: 3 (gateways) | | reqlist[2]: 4 (timeservers) | | reqlist[3]: 5 (nameservers) | | reqlist[4]: 6 (dnsservers) | | reqlist[5]: 7 (logservers) | | reqlist[6]: 9 (lprservers) | | reqlist[7]: 12 (hostname) | | reqlist[8]: 15 (domainname) | | reqlist[9]: 28 (broadcastad) | | reqlist[10]: 31 (performroutdisc) | | reqlist[11]: 33 (staticroutes) | | reqlist[12]: 40 (nisdomain) | | reqlist[13]: 41 (nisservers) | | reqlist[14]: 51 (ipadleasetime) | | reqlist[15]: 58 (renewaltime) | | reqlist[16]: 59 (rebindingtime) | | reqlist[17]: 64 (nispdomain) | | reqlist[18]: 65 (nispserver) | | reqlist[19]: 69 (smtpservers) | | reqlist[20]: 70 (pop3servers) | | reqlist[21]: 71 (nntpservers) | | reqlist[22]: 72 (wwwservers) | | reqlist[23]: 74 (ircservers) | |_______________________________________________ |

以上输出信息中,第 1 行表示 DHCP 客户端向 DHCP 服务器发送了 INFORM 报文,用来请求网络配置信息。

下面的信息为报文包含的信息。其中,xid 表示事务 ID 为 52FEF936;client 表示当前客户端的 IP 地址为 192.168.59.133;clienteth 表示当前客户端的 MAC 地址为 00:0C:29:FD:DE:B8。

  1. 客户端收到 DHCP 服务器返回的 ACK 报文,并输出如下信息:

    Server sent us this ACK: DHCP____________________________________________________________. | op=reply hops=0 xid=52FEF936 secs=0 flags=0000 | | client=192.168.59.133 your=0.0.0.0 | | server=192.168.59.254 agent=0.0.0.0 | | clienteth=00:0C:29:FD:DE:B8 | | sname: | | file: | | msgtype: ack | | serverid: 192.168.59.254 | #服务器IP地址 | subnetmask: 255.255.255.0 | #子网掩码 | gateways[0]: 192.168.59.2 | #网关 | dnsservers[0]: 192.168.59.2 | #DNS服务地址 | domainname: ‘localdomain’ | #域名 | broadcastad: 192.168.59.255 | #广播地址 | end | |____________________________________________________ |

以上输出信息中,第 1 行表示 DHCP 返回了 ACK 报文。其中,xid 的值也为 52FEF936,子网掩码为 255.255.255.0,网关为 192.168.59.2。

  1. 为了验证该命令发送的数据包,下面通过抓包进行查看,如图所示。

在获取 DHCP 服务器信息时,为了避免被发现,可以伪造 IP 地址和 MAC 地址。

例如,设置 IP 地址为 192.168.59.150,MAC 地址为 b1:b2:b3:0a:1a:3a。执行命令如下:

root@daxueba:~# netwox 179 -i 192.168.59.150 -e b1:b2:b3:0a:1a:3a

输出信息如下:

I send a INFORM:
DHCP____________________________________________________________.
| op=request  hops=0    xid=5D72AD9C  secs=0      flags=0000                |
| client=192.168.59.150  your=0.0.0.0                                       |
| server=0.0.0.0  agent=0.0.0.0                                             |
| clienteth=B1:B2:B3:0A:1A:3A
…                                                      #省略其他信息

其中,客户端的 IP 地址为伪造的地址 192.168.59.150,客户端的 MAC 地址为伪造的址 B1:B2:B3:0A:1A:3A。

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn