DHCP

168 阅读6分钟

概述

  • Dynamic Host Configuration Protocol动态主机配置协议(动态主机分配协议),制定了主机动态获取IP地址和配置信息的标准;
  • 允许服务器向客户端动态分配IP地址和配置信息(IP地址、子网掩码、默认网关、DHCP服务器、DNS服务器等信息)

image.png

  • 底层基于UDP协议的68端口(客户端)和67端口(服务器)实现数据传输;

  • DHCP分配方式:

    • 自动分配:分配IP是固定的,主机可以永久使用;
    • 手动分配:管理员指定分配IP地址;
    • 动态分配:IP释放后会重新进入分配池中,其它主机申请IP使用时,服务器会将该IP分配给其它主机使用;
  • 当客户端未找到能给其提供DHCP服务的主机时,会自动为其分配一个169.254网段的IP;

image.png

关闭VMwareNet1网卡DHCP功能

image.png

命令

  • 设置IP信息
  1. netsh interface ip set address "网卡名称" static IP地址 子网掩码 网关IP地址
  • 查询IP配置信息
  1. ipconfig /all
  • 释放占用IP
  1. ipconfig /release
  • 重新获取IP
  1. ipconfig /renew

环境搭建

环境

  • DHCP服务器:winServer
  • 客户机:win10

步骤

  • DHCP服务器和客户机网卡切换为VMwarenet1网卡(仅主机模式),排除外部网络DHCP服务器干扰;

image-20240308154501786

image.png

  • 设置DHCP服务器静态IP信息
  1. netsh interface ip set address "Ethernet0" static 192.168.100.253 255.255.255.0 192.168.100.254
  • 安装DHCP服务器软件

image.png

image.png

image.png

image.png

image.png

image.png

  • 配置管理DHCP服务器

image-20240308155449411

image-20240308155558464

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

  • 查看客户机是否分配到IP信息

image-20240308161025771

流量分析

数据包类型

  • Release(单播):释放IP地址信息的报文

image-20240308172125663

  • Discover(广播):发现DHCP服务器报文

image-20240308172228557

  • Offer(广播):DHCP的IP信息提供报文

image-20240308172335807

  • Request(广播):DHCP请求获取IP配置信息报文

image-20240308172417726

  • ACK(广播):确认分配IP信息

image-20240308172952958

案例

  • Discover:客户端广播发送Discover数据包,搜索附近可用DHCP服务器(能为其提供IP配置信息);
  • Offer:DHCP服务器收到广播的Discover数据包后,会查看自己可分配的IP池是否存在闲置IP,如果存在,则广播发送Offer报文,表示可以为客户端提供IP配置信息;
  • Request:客户端收到服务器发送的Offer报文后,确认要使用该IP配置信息后,则广播发送Request数据包,表明确认申请使用该IP配置信息;
  • ACK:服务器收到Request数据包后,将对应IP信息广播响应客户端;

数据字段

  1. Message type: Boot Reply (2) 消息类型(数据类型),分为1:request(客户端发给服务器)和2:replay(服务器发给客户端)
  2. Hardware type: Ethernet (0x01) 物理地址类型,以太网
  3. Hardware address length: 6 物理地址长度
  4. Hops: 0 中继器数量,默认值0,每经过一个中继器设备值加1
  5. Transaction ID: 0xd1d10a98 事务编号,用于区分不同会话的,同一个会话的事务编号相同
  6. Seconds elapsed: 0 获取IP地址或续租秒数,一般为0
  7. Bootp flags: 0x0000 (Unicast) 保留字段
  8. Client IP address: 0.0.0.0 客户端IP地址
  9. Your (client) IP address: 192.168.200.1 服务器分配给客户端使用的IP地址
  10. Next server IP address: 0.0.0.0 服务器IP信息
  11. Relay agent IP address: 0.0.0.0 中继器IP信息
  12. Client MAC address: 00:0c:29:5e:f0:d2 客户端物理地址
  13. Client hardware address padding: 00000000000000000000 物理地址填充值
  14. option 选项(参数字段)
  15. Option: (53) DHCP Message Type (ACK) DHCP数据包类型,discover、offer、request、ack等
  16. Option: (58) Renewal Time Value 第一次续租时间,租期时间50%
  17. Option: (59) Rebinding Time Value 第二次续租时间,租期时间87.5%
  18. Option: (51) IP Address Lease Time IP释放时间
  19. Option: (54) DHCP Server Identifier (192.168.200.253) DHCP服务器IP
  20. Option: (1) Subnet Mask (255.255.255.0) 分配子网掩码
  21. Option: (3) Router 分配默认网关
  22. Option: (6) Domain Name Server DNS服务器IP

image.png

  • 客户端广播发送Discover数据包,搜索可用DHCP服务器;
  • 服务器收到Discover数据包,查询是否存在闲置IP,如果存在,则将该IP信息以Offer数据包形式响应给客户端;
  • 客户端收到服务器发送的Offer后(如果客户端同时收到多个Offer,一般采用先到先处理机制),确认使用该IP配置信息,则广播发送Request数据包,该数据包应用层会携带目标DHCP服务器IP地址;
  • 服务器收到Request后,确认将该IP信息分配给客户端使用,广播发送ACK数据包;
  • 客户端收到ACK数据后,将该IP配置信息应用到系统中;
  • 当总租期时间到达50%时,客户端会向服务器发送Request数据包,请求续租;

image.png

  • 如果续租失败,则当总租期时间到达87.5%时,客户端再次向服务器发送Request数据包,请求续租;
  • 如果续租再次失败,则当总租期时间到达100%时,客户端会主动释放该IP信息,重新发送Discover获取新的IP配置信息;

拒绝服务攻击

image-20240311111352371

概述

  • 攻击主机短时间内向DHCP服务器发送大量伪造的Discover数据包,DHCP服务器收到该数据包,会将对应的闲置IP设置为占用状态,当DHCP服务器所有闲置IP都被占用时,不能再为其它主机提供IP配置信息服务,则造成DHCP服务器拒绝服务现象;

实验环境

  • 攻击主机:kali
  • DHCP服务器:winServer
  • 客户端主机:win10

步骤

  • 下载攻击工具yersinia
  1. apt-get install yersinia
  • 启动命令界面(通过键盘控制)
  1. yersinia -I
  • 按两次g键,启动协议选择界面

image.png

  • 通过选择DHCP协议,Enter确定

image-20240311114320103

  • x键,开启攻击界面,输入1选择伪造发送Discover数据包
0          sending RAW packet 发送原始数据包1    X     sending DISCOVER packet 发送Discover数据包2          creating DHCP rogue server 创建DHCP服务器3    X     sending RELEASE packet  发送Release数据包

image-20240311114421504

  • q键退出

DHCP欺骗

概述

  • 在拒绝服务器基础上,伪造DHCP服务器身份,向客户端发送OfferACK数据包

步骤

  • 下载攻击工具yersinia
  1. apt-get install yersinia
  • 启动命令界面(通过键盘控制)
  1. yersinia -I
  • 按两次g键,启动协议选择界面

image.png

  • 通过选择DHCP协议,Enter确定

image.png

  • x键,开启攻击界面,输入2选择伪造DHCP服务器身份(发送Offer和ACK数据包)

image.png

DHCP拒绝服务攻击与欺骗防御

  • 启用交换机的端口安全功能:

    • 将物理接口与MAC建立安全绑定(安全MAC),让交换机只处理端口安全MAC或静态MAC的数据包;