一次 DHCP 连接示意:

DHCP.rar

介绍

DHCP 又称动态主机设置协议,是一个用于 IP 网络的网络协议,使用 <font style="color:#DF2A3F;">UDP</font> 协议工作

在我们的设备连接到网络时,并没有分配 IP 地址等信息,那么我们的设备是如何获取 IP 、默认网关、子网掩码等信息的?这一切都靠 DHCP 协议进行获取

:::info

  • DHCP 常用于客户端设备: PC 、手机
  • 路由器、服务器等设备通常都是手动配置

:::

在小型 LAN 中,路由器充当 DHCP Server

分析

查看当前信息

  1. C:\Windows\System32>ipconfig /all
  2. 以太网适配器 VMware Network Adapter VMnet8:
  3. 连接特定的 DNS 后缀 . . . . . . . :
  4. 描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
  5. 物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-08
  6. DHCP 已启用 . . . . . . . . . . . :
  7. 自动配置已启用. . . . . . . . . . :
  8. 本地链接 IPv6 地址. . . . . . . . : fe80::a860:21d1:6131:a716%20(首选)
  9. IPv4 地址 . . . . . . . . . . . . : 10.0.173.192(首选)
  10. 子网掩码 . . . . . . . . . . . . : 255.255.255.128
  11. 获得租约的时间 . . . . . . . . . : 2023224 8:40:58
  12. 租约过期的时间 . . . . . . . . . : 2023224 20:40:58
  13. 默认网关. . . . . . . . . . . . . : fe80::c2b8:e6ff:fe51:3166%20
  14. 10.0.173.129
  15. DHCP 服务器 . . . . . . . . . . . : 10.0.173.129
  16. DHCPv6 IAID . . . . . . . . . . . : 106169819
  17. DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-26-DB-F1-8D-54-05-DB-2B-8F-7B
  18. DNS 服务器 . . . . . . . . . . . : 202.207.177.3
  19. 202.207.177.4
  20. 114.114.114.114
  21. TCPIP 上的 NetBIOS . . . . . . . : 已启用
  • 首选:PC 在上次请求 IP 时从 DHCP 处获取的 IP 地址,在下一次请求中还希望获得的 IP 地址
  • 租约时间: 客户端会在租约到期之前释放该地址
  • DHCP Server、DNS Server

释放当前 IP 地址

  1. C:\Windows\System32>ipconfig /release
  2. 未知适配器 本地连接:
  3. 媒体状态 . . . . . . . . . . . . : 媒体已断开连接
  4. 连接特定的 DNS 后缀 . . . . . . . :

该命令将会先 DHCP Server 发出请求,请求释放我们当前的 IP 地址

WireShark 分析

DHCP - 图1


| Release | Client —> Server | 单播 | | —- | —- | —- |

获取 IP 地址

  1. C:\Windows\System32>ipconfig /renew
  2. 本地链接 IPv6 地址. . . . . . . . : fe80::a860:21d1:6131:a716%20
  3. IPv4 地址 . . . . . . . . . . . . : 10.0.173.192
  4. 子网掩码 . . . . . . . . . . . . : 255.255.255.128
  5. 默认网关. . . . . . . . . . . . . : fe80::c2b8:e6ff:fe51:3166%20
  6. 10.0.173.129

DHCP - 图2

从 DHCP Server 获取 IP 地址涉及四个阶段:

  • DHCP Discover : 来自客户端的广播
  • DHCP Offer : DHCP Server 发送到客户端,提供客户端使用的 IP 、网关、DNS Server
  • DHCP Request : DHCP 客户端发送,告诉服务器使用哪一个 IP 地址,因为可能会有多个返回
  • DHCP ACK : 服务器到客户端,确认客户端可以使用请求的 IP 地址,只有当收到这个消息后,客户端才会配置 IP 地址

WireShark 分析
  • DHCP Discover
    DHCP - 图3
  • DHCP Offer
    DHCP - 图4
  • DHCP Request
    DHCP - 图5
  • DHCP ACK
    DHCP - 图6
| Discover | Client —> Server | 广播 | | —- | —- | —- | | Offer | Server —> Client | 广播或单播 | | Request | Client —> Server | 广播 | | ACK | Server —> Client | 广播或单播 |

DHCP 分析

dhcp-netbios.zip

笔记 Wireshark 过滤器
全局搜索 + dhcp 或者 bootp
过滤正确的 DHCP 数据包选项对于找到感兴趣的事件至关重要
+ “DHCP Request”数据包包含主机名信息
+ “DHCP ACK”数据包表示已接受的请求
+ “DHCP NAK”数据包代表被拒绝的请求
由于协议的性质,只有“选项 53”(请求类型)具有预定义的静态值。您应该首先过滤数据包类型,然后您可以通过“应用为列”或使用“包含”和“匹配”等高级过滤器来过滤其余选项。
+ 要求:dhcp.option.dhcp == 3
+ 确认:dhcp.option.dhcp == 5
+ 否定:dhcp.option.dhcp == 6
“DHCP Request”选项可轻松获取唾手可得的果实:
+ 选项 12:主机名。
+ 选项 50:请求的 IP 地址。
+ 选项 51:请求的 IP 租用时间。
+ Option 61:客户端的MAC地址。
+ dhcp.option.hostname contains “keyword”
“DHCP ACK”选项用于抓住低垂的果实:
+ 选项 15:域名。
+ 选项 51:分配的 IP 租用时间。
+ dhcp.option.domain_name contains “keyword”
“DHCP NAK”选项用于抓住低垂的果实:
+ 选项 56:消息(拒绝详细信息/原因)。
由于根据情况/情况,消息可能是唯一的,建议阅读消息而不是过滤消息。因此,分析师可以通过了解事件情况来创建更可靠的假设/结果。

DHCP - 图7