• DHCP详解


    DHCP,DNS和HTTP是3种常见的高层协议。

    一,动态主机配置协议DHCP

    1,DHCP简介

    DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。

    DHCP的前身是BOOTP协议(Bootstrap Protocol),BOOTP被创建出来为连接到网络中的设备自动分配地址,后来被DHCP取代了,DHCP比BOOTP更加复杂,功能更强大。后面可以看到,在用Wireshark过滤显示DHCP包,需要输入过滤条件BOOTP,而不是DHCP,但或许是因为我使用的Wireshark版本是比较旧的1.12.9,没有在新版本中尝试过,也许可以输入DHCP让其只显示DHCP包。

    2,DHCP的实现

    这里写图片描述 
    DHCP的实现分为4步,分别是: 
    第一步:Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCP Server。 
    第二步:可用的DHCP Server接收到Discover包之后,通过发送DHCP Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。 
    第三步:Client端接收到Offer包之后,发送DHCP Request包请求分配IP。 
    第四步:DHCP Server发送ACK数据包,确认信息。


    二,利用Wireshark抓取DHCP包

    1,分析

    要想抓取到DHCP包,先要保证有可用的DHCP服务器,然后将主机IP地址获取方式设置为自动获取。如果主机在抓包之前已经联网,需要先断开主机的网络连接,然后再连接网络。在cmd下使用命令ipconfig来完成网络断开与连接的过程:

     ipconfig /release 断开主机当前的网络连接 
     ipconfig /renew   请求连接网络
    
    • 1
    • 2
    • 3

    在cmd中可以使用ipconfig /?查看各参数的含义: 
    这里写图片描述 
    (1)ipconfig /release 
    断开当前的网络连接,主机IP变为0.0.0.0,主机与网络断开,不能访问网络。 
    (2)ipconfig /renew 
    更新适配器信息,请求连接网络,这条命令结束之后,主机会获得一个可用的IP,再次接入网络。

    2,开始抓包

    实验环境:Win10,Wireshark1.12.9,有线连接 
    (1)在Wireshark中点击start开始抓包,在过滤栏输入bootp,使其只显示DHCP数据包。 
    (2)在cmd中输入ipconfig /release 断开网络连接。 
    这里写图片描述 
    可以看到此时所有的网卡都已经断开。以太网处于断开状态。

    这里写图片描述
    Wireshark中截获到一个DHCP Release数据包。

    (3)在cmd中输入ipconfig /renew 请求网络连接。 
    这里写图片描述
    此时,可以看到在Wireshark中新增了4个DHCP数据包: 
    数据包1:DHCP Discover 
    数据包2:DHCP Offer 
    数据包3:DHCP Request 
    数据包4:DHCP ACK

    这里写图片描述 
    等待这条命令执行完毕之后,在cmd中可以看到主机被分配了IP,主机成功连入网络中。

    (4)为了后续分析使用,我们再执行一次ipconfig /renew: 
    这里写图片描述
    可以看到Wireshark中新增了3个数据包:DHCP ACK;DHCP Request;DHCP ACk。 
    如果再次使用ipconfig /renew,每执行一次会新增2个数据包:DHCP Request;DHCP ACk。

    三,DHCP包分析

    下面着重来分析当执行,ipconfig /renew这条命令产生的4个DHCP数据包,这4个数据包代表了客户机和DHCP服务器的交互过程,也是IP动态分配的过程。 
    这里写图片描述 
    1,DHCP Discover数据包 
    (1)Client端使用IP地址0.0.0.0发送了一个广播包,可以看到此时的目的IP为255.255.255.255。Client想通过这个数据包发现可以给它提供服务的DHCP服务器。

    (2)从下图可以看出,DHCP属于应用层协议,它在传输层使用UDP协议,目的端口是67。 
    这里写图片描述

    2,DHCP Offer包 
    当DHCP服务器收到一条DHCP Discover数据包时,用一个DHCP Offerr包给予客户端响应。 
    这里写图片描述 
    (1)DHCP服务器仍然使用广播地址作为目的地址,因为此时请求分配IP的Client并没有自己ip,而可能有多个Client在使用0.0.0.0这个IP作为源IP向DHCP服务器发出IP分配请求,DHCP也不能使用0.0.0.0这个IP作为目的IP地址,于是依然采用广播的方式,告诉正在请求的Client们,这是一台可以使用的DHCP服务器。

    (2)DHCP服务器提供了一个可用的IP,在数据包的Your (client) IP Address字段可以看到DHCP服务器提供的可用IP。

    (3)除此之外,如图中红色矩形框的内容所示,服务器还发送了子网掩码,路由器,DNS,域名,IP地址租用期等信息。

    3,DHCP Request包 
    当Client收到了DHCP Offer包以后(如果有多个可用的DHCP服务器,那么可能会收到多个DHCP Offer包),确认有可以和它交互的DHCP服务器存在,于是Client发送Request数据包,请求分配IP。 
    此时的源IP和目的IP依然是0.0.0.0和255.255.255.255。

    4,DHCP ACK包 
    服务器用DHCP ACK包对DHCP请求进行响应。 
    这里写图片描述 
    在数据包中包含以下信息,表示将这些资源信息分配给Client. 
    Your(client) IP address:分配给Client的可用IP。 
    后面有许多项option信息,前两项是DHCP服务器发送的消息类型(ACK)和服务器的身份标识,后面几项是: 
    Subnet Mask:Client端分配到的IP的子网掩码; 
    Router:路由器 
    Domain Name Server:DNS,域名服务器 
    Domain Name:域名 
    IP Address Lease Time:IP租用期。


    四,DHCP starvation attack

    1,DHCP starvation attack,DHCP饥饿攻击 
    其实各种各样的攻击技术总是会让人觉得兴奋。抛却道德不谈,必须承认的是,制造这些攻击的人都是高智商。

    有许多中攻击DHCP的技术,这里介绍其中一种,有点类似于SYN 洪范攻击。 
    DHCP starvation attack,中文即DHCP饥饿攻击,可以顾名思义一下,饥饿攻击,就是大量地进食,把可以吃的食物全部吃完,然后让其他人没得吃,最后给其他人提供一些毒药,把人家毒死,姑且可以这样浅显地认为。

    下面来说这种攻击是如何实现的。一些不法分子,伪造合法的MAC地址,不断地向DHCP服务器发出DHCP Request包,最后耗尽服务器的可用IP,于是原有的这台DHCP服务器便不能够给客户端分配IP了,此时不法分子再伪造一台DHCP服务器,给客户端分配IP,将客户端的默认网关和DNS都设置成自己的机器,于是便可以对客户端进行中间人攻击。

    2,一些关于DHCP安全性的研究 
    网络到处都有安全漏洞啊,上网需谨慎。现在有很多关于DHCP安全的研究,一些论文提出了诸如四元组安全认证的办法,还有一些论文提出了安全DHCP协议。

    例如这篇论文《A Secure DHCP Protocol to Mitigate LAN Attacks》,这算是一篇比较新的论文了,16年发表的,作者提出了2种技术,一种是认证和秘钥管理技术,另一种是消息认证技术(利用数字信号认证Server和Client端的交互信息),可以减轻LAN Attack。 
    尴尬的是,我英文不是很好,并没有把这篇论文看完。。。

    DHCP优缺点:

    DHCP实际是一种动态的机制,它允许客户机在启动引导时请求一个地址,并且有一个集中的库来记录这些名称及地址。DHCP 能够自动完成系统管理的地址管理工作的部分。只要我们将一台 Windows NT Server/Workstation 计算机配置为使用 DHCP 时,就不再需要我们手工来管理文本文件中大量的网络名称及地址了。因为我们不再分配一个固定的地址给某个计算机,这样,如果要移动网络中的一台计算机,包括添加或移走以及更换网卡等硬件设备,在新的位置,甚至新的局域网系统中,该工作站计算机都会自动寻找 到新网络中的 DHCP 服务器,然后在一定的时间间隔后自动获得一个地址。

    优点:

    网络管理员可以验证IP地址和其他配置参数,而不用去检查每个主机:DHCP不会同时分配相同的IP地址给两台主机:DHCP管理员可以约束特定的计算机使用特定的IP地址:可以为每个DHCP作用域设置很多选项:客户机在不同子网间移动时不需要重新设置IP地址。

    缺点:

    1.DHCP不能查出网络上非DHCP客户机已经在使用的IP地址,例如网络有一非DHCP客户机A已经手工分配了IP地址:100.53.46.5,但是DHCP服务器并不能识别出该地址已经被分配了,它向DHCP客户机配了一个重复的IP地址:100.53.46.5,这就导致了IP地址的冲突。当然,这些IP地址可以从被配置在DHCP服务器上的任何范围中排除。
    2.当网络上存在两个DHCP服务器时,一个DHCP服务器不和另一个DHCP服务器通信,就不能查出已被其他服务器租出去的IP地址。因此,两个DHCP服务器不应该在它们各自的范围中使用相同的IP地址。此外,DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP转发,或者子网允许DHCP中转借。

  • 相关阅读:
    c3p0配置
    0624软件工程的回顾和总结
    0619学习进度条
    MySQL中wait_timeout的坑
    js/jquery禁止页面回退
    jquery打印页面(jquery.jqprint)
    input file multiple 批量上传文件
    Python学习笔记——Python Number(数字)
    正则表达式
    Python学习笔记(三)——条件语句、循环语句
  • 原文地址:https://www.cnblogs.com/csguo/p/7541524.html
Copyright © 2020-2023  润新知