概述
- Dynamic Host Configuration Protocol动态主机配置协议(动态主机分配协议),制定了主机动态获取IP地址和配置信息的标准;
- 允许服务器向客户端动态分配IP地址和配置信息(IP地址、子网掩码、默认网关、DHCP服务器、DNS服务器等信息)
-
底层基于UDP协议的68端口(客户端)和67端口(服务器)实现数据传输;
-
DHCP分配方式:
- 自动分配:分配IP是固定的,主机可以永久使用;
- 手动分配:管理员指定分配IP地址;
- 动态分配:IP释放后会重新进入分配池中,其它主机申请IP使用时,服务器会将该IP分配给其它主机使用;
-
当客户端未找到能给其提供DHCP服务的主机时,会自动为其分配一个
169.254网段的IP;
关闭VMwareNet1网卡DHCP功能
命令
- 设置IP信息
netsh interface ip set address "网卡名称" static IP地址 子网掩码 网关IP地址
- 查询IP配置信息
ipconfig /all
- 释放占用IP
ipconfig /release
- 重新获取IP
ipconfig /renew
环境搭建
环境
- DHCP服务器:winServer
- 客户机:win10
步骤
- DHCP服务器和客户机网卡切换为VMwarenet1网卡(仅主机模式),排除外部网络DHCP服务器干扰;
- 设置DHCP服务器静态IP信息
netsh interface ip set address "Ethernet0" static 192.168.100.253 255.255.255.0 192.168.100.254
- 安装DHCP服务器软件
- 配置管理DHCP服务器
- 查看客户机是否分配到IP信息
流量分析
数据包类型
- Release(单播):释放IP地址信息的报文
- Discover(广播):发现DHCP服务器报文
- Offer(广播):DHCP的IP信息提供报文
- Request(广播):DHCP请求获取IP配置信息报文
- ACK(广播):确认分配IP信息
案例
- Discover:客户端广播发送Discover数据包,搜索附近可用DHCP服务器(能为其提供IP配置信息);
- Offer:DHCP服务器收到广播的Discover数据包后,会查看自己可分配的IP池是否存在闲置IP,如果存在,则广播发送Offer报文,表示可以为客户端提供IP配置信息;
- Request:客户端收到服务器发送的Offer报文后,确认要使用该IP配置信息后,则广播发送Request数据包,表明确认申请使用该IP配置信息;
- ACK:服务器收到Request数据包后,将对应IP信息广播响应客户端;
数据字段
Message type: Boot Reply (2) 消息类型(数据类型),分为1:request(客户端发给服务器)和2:replay(服务器发给客户端)Hardware type: Ethernet (0x01) 物理地址类型,以太网Hardware address length: 6 物理地址长度Hops: 0 中继器数量,默认值0,每经过一个中继器设备值加1Transaction ID: 0xd1d10a98 事务编号,用于区分不同会话的,同一个会话的事务编号相同Seconds elapsed: 0 获取IP地址或续租秒数,一般为0Bootp flags: 0x0000 (Unicast) 保留字段Client IP address: 0.0.0.0 客户端IP地址Your (client) IP address: 192.168.200.1 服务器分配给客户端使用的IP地址Next server IP address: 0.0.0.0 服务器IP信息Relay agent IP address: 0.0.0.0 中继器IP信息Client MAC address: 00:0c:29:5e:f0:d2 客户端物理地址Client hardware address padding: 00000000000000000000 物理地址填充值option 选项(参数字段)Option: (53) DHCP Message Type (ACK) DHCP数据包类型,discover、offer、request、ack等Option: (58) Renewal Time Value 第一次续租时间,租期时间50%Option: (59) Rebinding Time Value 第二次续租时间,租期时间87.5%Option: (51) IP Address Lease Time IP释放时间Option: (54) DHCP Server Identifier (192.168.200.253) DHCP服务器IPOption: (1) Subnet Mask (255.255.255.0) 分配子网掩码Option: (3) Router 分配默认网关Option: (6) Domain Name Server DNS服务器IP
- 客户端广播发送Discover数据包,搜索可用DHCP服务器;
- 服务器收到Discover数据包,查询是否存在闲置IP,如果存在,则将该IP信息以Offer数据包形式响应给客户端;
- 客户端收到服务器发送的Offer后(如果客户端同时收到多个Offer,一般采用先到先处理机制),确认使用该IP配置信息,则广播发送Request数据包,该数据包应用层会携带目标DHCP服务器IP地址;
- 服务器收到Request后,确认将该IP信息分配给客户端使用,广播发送ACK数据包;
- 客户端收到ACK数据后,将该IP配置信息应用到系统中;
- 当总租期时间到达50%时,客户端会向服务器发送Request数据包,请求续租;
- 如果续租失败,则当总租期时间到达87.5%时,客户端再次向服务器发送Request数据包,请求续租;
- 如果续租再次失败,则当总租期时间到达100%时,客户端会主动释放该IP信息,重新发送Discover获取新的IP配置信息;
拒绝服务攻击
概述
- 攻击主机短时间内向DHCP服务器发送大量伪造的Discover数据包,DHCP服务器收到该数据包,会将对应的闲置IP设置为占用状态,当DHCP服务器所有闲置IP都被占用时,不能再为其它主机提供IP配置信息服务,则造成DHCP服务器拒绝服务现象;
实验环境
- 攻击主机:kali
- DHCP服务器:winServer
- 客户端主机:win10
步骤
- 下载攻击工具
yersinia
apt-get install yersinia
- 启动命令界面(通过键盘控制)
yersinia -I
- 按两次
g键,启动协议选择界面
- 通过
↑、↓选择DHCP协议,Enter确定
- 按
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数据包
- 按
q键退出
DHCP欺骗
概述
- 在拒绝服务器基础上,伪造DHCP服务器身份,向客户端发送
Offer和ACK数据包
步骤
- 下载攻击工具
yersinia
apt-get install yersinia
- 启动命令界面(通过键盘控制)
yersinia -I
- 按两次
g键,启动协议选择界面
- 通过
↑、↓选择DHCP协议,Enter确定
- 按
x键,开启攻击界面,输入2选择伪造DHCP服务器身份(发送Offer和ACK数据包)
DHCP拒绝服务攻击与欺骗防御
-
启用交换机的端口安全功能:
- 将物理接口与MAC建立安全绑定(安全MAC),让交换机只处理端口安全MAC或静态MAC的数据包;