DHCP协议

Posted liqik

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DHCP协议相关的知识,希望对你有一定的参考价值。

0x00:前言

DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址和域名等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

0x01:地址分配方式

(1)手动分配:一般用在固定主机,管理员手动分配IP地址,一般不会再改变

(2)动态分配:注意每次登录的地址都不一样,随机,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用

(3)自动分配:自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。IP地址于MAC地址绑定,只要交换机不重启,绑定关系不变。IP地址和MAC绑定,可一定程度上防止DHCP欺骗。

 

:如果局域网中有两台相同IP地址的主机,那么先上线的那个可以上网,原因:基于ARP缓存表,先上线的更新了网关的ARP映射表。经常断网

0x02:流程

技术图片

(1)DHCP Discover     

DHCP Discover,客户端广播请求IP地址

计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。

源地址:0.0.0.0

目标地址:255.255.255.255  (目标是广播地址)

源MAC:主机的物理地址

目的MAC:ff:ff:ff:ff:ff:ff:ff

(2)DHCP Offer

 服务器的DHCP响应

 源地址:192.168.1.1

目的:255.255.255.255    (广播地址,因为主机还没有地址)    

 源MAC:服务器的物理地址

 目的MAC:ff:ff:ff:ff:ff:ff:ff

报文内容:分配的IP、网关、DNS服务器和域名、租约时间和续约时间(续约:当时间在50%客户端会request服务器 进行续约,如服务器没有回应,则在租期87.5%时间再次request)

 

:再次之前,服务器可能会,用ICMP ECHO REQUEST 报文进行检查该IP地址是否被占用

(3)DHCP Request

客户端以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

源地址:0.0.0.0

目的地址:255.255.255.255

(4)DHCP ACK

当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的DHCP服务器外,其他的DHCP服务器将收回曾经提供的IP地址。

源地址:192.168.1.1

目的地址:255.255.255.255

 

:以上全部是广播方式,后面续约是单播方式

0x03:Cisco 路由器配置DHCP

技术图片

 

Router>en
Router#config t

Router(config)#ip dhcp pool aaa (创建地址池)
Router(dhcp-config)#network 192.168.1.0 255.255.255.0 (地址池范围)
Router(dhcp-config)#default-router 192.168.1.1 (默认网关)
Router(dhcp-config)#dns-server 192.168.1.2 (dns-server服务)
Router(dhcp-config)#int fa 0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0 (路由端口IP)
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#ip dhcp excluded-address 192.168.1.200 192.168.1.253 (表示某一段IP地址不由DHCP分配)
Router(config)#ip dhcp excluded-address 192.168.1.254 (表示某一个IP地址不由DHCP分配)

PC:

技术图片

技术图片

 

0x04:DHCP欺骗

DHCP欺骗(DHCP Sproofing)

DHCP Sproofing同样是一种中间人攻击方式。DHCP是提供IP地址分配的服务。当局域网中的计算机设置为自动获取IP,就会在启动后发送广播包请求IP地址。DHCP服务器(如路由器)会分配一个IP地址给计算机。在分配的时候,会提供DNS服务器地址。

攻击者可以通过伪造大量的IP请求包,而消耗掉现有DHCP服务器的IP资源。当有计算机请求IP的时候,DHCP服务器就无法分配IP。这时,攻击者可以伪造一个DHCP服务器给计算机分配IP,并指定一个虚假的DNS服务器地址。这时,当用户访问网站的时候,就被虚假DNS服务器引导到错误的网站。

DHCP Sproofing成功的前提是有计算机请求IP。如果计算机使用静态IP,或者在攻击前就获取IP,就不会遭受这类攻击。

Kali Linux很多工具都提供支持DHCP Sproofing,如Ettercap。

攻击命令式:
[root@localhost dhcpstarv-0.2.1]# dhcpstarv -i eth0
后面的eth0是你的网卡接口,一般第一个网卡是eth0
开始不断申请IP地址

DHCP欺骗的解决方案(DHCP SNOOPING)
DHCP SNOOPING截获交换机端口的DHCP应答报文,建立-张包含有用户MAC地址、IP地址、 租用期、VLAN ID、交换机端口等信息的一张表,组DHCP SNOOPING还将交换机的端口分为可信任端口和不可信任端口,当交换机从一个不可信任端口收到DHCP服务器的报文时,比如DHCPOFFER报文、DHCPACK报文、DHCPNAK报文,交换机会直接将该报文弃;对信任端口收到的DHCP服务器的报文,交换机不会丢弃而直接转发。一般将与用户相连的端口定义为不可信任端口,而将与DHCP服务器或者其他交换机相连的端口定义河信任端口,也就是说,当在一个不可信任端口连接有DHCP服务器的话,该服务器发出的报文将不能通过交换机的端口。因此只要将用户端口设置为不可信任端口,就可以有效地防止非授权用户私自设置DHCP服务而引起的DHCP欺骗。

 

以上是关于DHCP协议的主要内容,如果未能解决你的问题,请参考以下文章

DHCP协议详解

DHCP协议

DHCP协议原理及配置

DHCP--动态主机配置协议

DHCP协议

DHCP协议