如果客户端有了 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。
2) 客户端收到 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。
3) 为了验证该命令发送的数据包,下面通过抓包进行查看,如图所示。
在获取 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。