百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

「网络安全」常见攻击篇(22)——DHCP攻击

nanshan 2024-11-17 14:09 25 浏览 0 评论

DHCP攻击针对的目标是网络中的DHCP服务器,原理是耗尽DHCP服务器所有的IP地址资源,使其无法正常提供地址分配服务。然后在网络中再架设假冒的DHCP服务器为客户端分发IP地址,从而来实现中间人攻击。

什么是DHCP?

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

1、产生背景:网络增大,手工配置存在很多问题【人员素质要求高、容易出错、灵活性差、IP地址资源利用率低、工作量大,不利于管理等】

2、DHCP相对于静态手工配置的优点【效率高、灵活性强、易于管理等】

DHCP的工作原理

  • DHCP的基本工作过程
  1. 发现阶段:在发现阶段,DHCP客户端会以广播的方式给自己所在在广播域中的DHCP服务器都发送一个DHCP Discover 报文,目的是寻找网络中的DHCP Server,并表示自己需要获得一个IP地址
  2. 提供阶段:是网络中的DHCP Server响应所收到的DHCP Discover 报文,把准备提供的IP地址携带在DHCP Offer 报文中,并以单播的方式发送给DHCP 客户端(注意这里Offer 报文中携带的IP地址客户端还不能直接使用)
  3. 请求阶段:DHCP客户端在收到的所有Offer 报文中选择接受第一个到达客户端的Offer(通常情况下选择第一个接收到的Offer),并向相应的DHCP Server 以广播的方式发送DHCP Request 报文,表示自己愿意接受该Offer (在这个DHCP Request 报文中携带有R上的DHCP Server 的标识—称为Server Identifier,表示DHCP Client 只愿意接受R上的Offer,R也是通过分析这个标识来确定DHCP Client 只愿意接受自己的Offer。而该二层广播域中其他的DHCP服务器也会收到DHCP Client 所发出的DHCP Request 报文,它们则通过分析这个标识来确定DHCP Client 已经拒绝接受自己的Offer)
  4. 确认阶段:如果在提供阶段所携带的IP地址能正常地分配给DHCP Client 使用的话,那么R会以单播的方式给DHCP Client 发送一个DHCP Ack 报文,此时DHCP Client 获取地址成功;但是如果因为一些原因,在提供阶段所携带的IP地址不能分配给DHCP Client 的话,这时R则会给DHCP Client 发送一个DHCP Nak 报文,而当DHCP Client 收到R的DHCP Nak 报文后,则表示获取IP地址失败,需要重新进入到发现阶段。

当DHCP Client 正常获得IP地址后,如下图:

从DHCP Server 获取的IP地址有一个租约时间,DHCP协议规定租约时间缺省不少于1小时,通常情况下,租约时间缺省值为24小时。

在DHCP协议中规定,在缺省情况下,当DHCP Client 使用IP地址到达T1时(租约时间的1/2),DHCP Client会以单播的方式给R发送一个DHCP Request 报文(请求续租),当到达时间T2(租约时间的7/8,即租约时间的87.5%)之前,若DHCP Client 收到R的DHCP Ack报文,则续租成功,重新开始租约期的计时;若没有收到,则DHCP Client 会在T2时刻再次以广播的方式发送DHCP Request 报文,请求续租,这时如果DHCP Client 在租约时间到达之前收到R的DHCP Ack报文,则续租成功,重新开始租约期的计时,如果没收到,则续租失败,DHCP Client 不能继续使用这个IP地址,需要重新从发现阶段开始向DHCP服务器申请新的IP地址。

  • DHCP中继
  1. DHCP中继的使用场景

从前面DHCP的工作原理我们可以知道,DHCP Client 必须和DHCP Server 在同一个二层广播域中,才能接收到彼此发送的DHCP报文,DHCP报文是无法跨越二层广播域传播的。这时,我们可以有两种方法解决这个问题:

(1)、在网络中的每个网段都设置一台DHCP Server,但是这个方法代价较大,很不经济,造成资源的很大浪费,所以现实中一般不推荐此方法

(2)、只设置一个DHCP Server,利用DHCP中继技术DHCP Relay 来实现一个DHCP Server 同时为多个二层广播域中的DHCP Client 服务,这样既节省成本,又便于集中管理

2.DHCP中继的工作原理

在DHCP中继的工作原理中和前面的DHCP工作原理基本相同,只是中间DHCP Relay 负责DHCP Client 和DHCP Server 之间的DHCP报文的转发,这里要注意的是:DHCP Relay 与DHCP Client 之间是以广播的方式进行交换DHCP报文的,而DHCP Relay 与DHCP Server 之间是以单播的方式来交换DHCP报文的。

DHCP服务器的防攻击与防御

DHCP服务器面临的安全威胁:DHCP在设计上未充分考虑到安全因素,从而留下许多安全漏洞,使得DHCP很容易受到攻击。在实际网络中,针对DHCP攻击的手段主要有以下三种:

1.攻击原理

攻击者持续大量地向DHCP服务器申请IP地址,直到耗尽DHCP服务器地址池的IP地址,使DHCP服务器无法再给正常的主机分配IP地址

在PC机给DHCP Server发送的DHCP Discover 报文中有一个CHADDR字段,该字段是由DHCP客户端填写的,用来表示客户端的硬件地址(MAC地址),而DHCP Server 也是根据CHADDR字段来分配IP地址的,对于不同的CHADDR,DHCP Server会分配不同的IP地址,因为DHCP Server 无法识别CHADDR的合法性,攻击者就利用这个漏洞,不断的改变CHADDR字段的值,来冒充不同的用户申请IP地址,使DHCP Server 中IP池枯竭,从而达到攻击目的。

2.DHCP Snooping 技术解决DHCP 饿死攻击

为了防止DHCP受到攻击,就产生了一种DHCP Snooping的技术,但DHCP Snooping不是一种标准技术,还没有统一的标准规范,所以不同品牌的网络设备上实现DHCP Snooping也不尽相同。DHCP Snooping部署在交换机上就相当于在DHCP客户端与DHCP服务器端之间构建了一道虚拟的防火墙。

我们前面讲到DHCP饿死攻击是攻击者不断改变CHADDR的字段来实现的,为了弥补这个漏洞,阻止饿死攻击,我们在端口下配置DHCP Snooping技术,对DHCP Request报文的源MAC地址与CHADDR的字段进行检查,如果一致则转发报文,如果不一致则丢弃报文。

配置命令为,进入连接客户端接口视图,输入命令dhcp snooping check dhcp-chaddr enable

如下图:

但是还可能存在另一种饿死攻击,就是攻击者不断改变CHADDR,同时改变源MAC,并让CHADDR与源MAC地址相同,这样也可以躲过源MAC地址与CHADDR的一致性检查。

1.攻击原理

当攻击者私自安装并运行DHCP Server 程序后,可以将自己伪装成DHCP Server,这就是仿冒DHCP Server。它的工作原理与正常的DHCP Server 一模一样,所以当PC机接收到来自DHCP Server 的DHCP报文时,无法区分是哪个DHCP Server 发送过来的,如果PC机第一个接收到的是来自仿冒DHCP Server 发送的DHCP报文,那么仿冒DHCP Server 则会给PC机分配错误的IP地址参数,导致PC客户端无法访问网络。

2.DHCP Snooping 防止仿冒DHCP Server 攻击

在DHCP Snooping技术中,将交换机的端口分为两种类型,信任端口(Trusted端口)和非信任端口(Untrusted端口),交换机所有端口默认都是Untrusted端口,我们将与合法DHCP Server 相连的端口配置为Trusted端口,这样交换机从Trusted端口接收到的DHCP 报文后,会正常转发,从而保证合法的DHCP Server能正常分配IP地址及其他网络参数;而其他从Untrusted端口接收到的DHCP Server 的报文,交换机会直接丢弃,不再转发,这样可以有效地阻止仿冒的DHCP Server 分配假的IP地址及其他网络参数。

配置命令如下:进入与DHCP Server 相连的接口视图

[LSW2] int e0/0/2

[LSW2-E0/0/2] dhcp snooping trusted

如果恢复为Untrusted 端口,命令如下:

[LSW2-E0/0/2] undo dhcp snooping trusted

1.攻击原理

攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系,让DHCP Server 学习到IP-A与MAC-B的映射关系,如此一来,PC-A与DHCP Server之间交互的IP报文都要经过PC-B进行中转。我们这里要了解交换机在转发数据包过程中,IP地址与MAC地址的变化过程,这个类似于MAC地址欺骗。由于PC1与DHCP Server之间的IP报文都会经过攻击者PC,攻击者就能很容易窃取到IP报文中的信息,进行篡改或其他的破坏行为,从而达到直接攻击DHCP目的。

2.DHCP Snooping 防止DHCP中间人攻击

DHCP中间人攻击从原理上我们可以知道它其实是一种Snoofing IP/MAC攻击(ARP欺骗),所以要防止DHCP中间人攻击,就是要防止ARP欺骗。而运行DHCP Snooping的交换机会侦听(Snooping)往来于用户与DHCP Server之间的信息,并从中收集用户的MAC地址(DHCP消息中的CHADDR字段中的值)、用户的IP地址(DHCP Server分配给相应的CHADDR的IP地址)、IP地址租用期等等信息,将它们集中存放在DHCP Snooping 绑定表中,运行了DHCP Snooping的交换机会建立并动态维护DHCP Snooping绑定表。

如上图所示,DHCP Server给PC-A 、PC-B分别分配IP-A、IP-B,那么IP-A与MAC-A就形成绑定关系,IP-B与MAC-B形成绑定关系,并存入DHCP Snooping绑定表中。这时攻击者想让Server 学习到IP-A与MAC-B的映射关系,会发送不断发送ARP请求报文(ARP报文中源IP地址填为IP-A,源MAC地址填为MAC-B)。交换机接收到这个ARP报文后,会检查它的源IP地址和源MAC地址,发现与DHCP Snooping绑定表中的条目不匹配,就丢弃该报文,这样可以有效地防止Spoofing IP/MAC攻击。

配置命令为:

[LSW2] arp dhcp-snooping-detect enable

针对网络中经常存在对源IP地址进行欺骗的攻击行为(攻击者仿冒合法用户的IP地址来向服务器发送IP报文),我们可以使用IPSG(IP Source Guard)技术来防范这种攻击。在交换机使用IPSG功能后,会对进入交换机端口的报文进行合法性的检查,然后对报文进行过滤(检查合法,则转发;检查非法,则丢弃)。

DHCP Snooping技术也可以与IPSG技术进行联动,即对于进入交换机端口的报文进行DHCP Snooping绑定表的匹配检查,如果报文的信息与绑定表一致,则允许通过,如果不一致则丢弃该报文。

报文的检查项可以是源IP地址、源MAC地址、Vlan和物理端口号等若干组合。如在交换机的端口视图下可支持IP+MAC、IP+Vlan、IP+MAC+Vlan等组合检查,在交换机的Vlan视图下可支持:IP+MAC、IP+物理端口号、IP+MAC+物理端口号等组合检查。

配置命令如下:

在交换机的接口视图或VLan视图下输入命令:ip source check user-bind enable。

总结

1、熟悉DHCP服务器的工作原理,DHCP服务器工作过程中的报文的作用可以让我们对于攻击DHCP服务器的手段能更好的理解;

2、在防范DHCP和各种攻击手段中所用到的技术,其工作原理和工作场景,我们也要非常熟悉。


感谢您的阅读,喜欢的话就转发并关注小编吧。


上一篇:「网络安全」常见攻击篇(21)——路由协议攻击

下篇预告:「网络安全」常见攻击篇(23)——ARP攻击 敬请关注

相关推荐

实战派 | Java项目中玩转Redis6.0客户端缓存

铺垫首先介绍一下今天要使用到的工具Lettuce,它是一个可伸缩线程安全的redis客户端。多个线程可以共享同一个RedisConnection,利用nio框架Netty来高效地管理多个连接。放眼望向...

轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)

1、缓存穿透所谓缓存穿透就是非法传输了一个在数据库中不存在的条件,导致查询redis和数据库中都没有,并且有大量的请求进来,就会导致对数据库产生压力,解决这一问题的方法如下:1、使用空缓存解决对查询到...

Redis与本地缓存联手:多级缓存架构的奥秘

多级缓存(如Redis+本地缓存)是一种在系统架构中广泛应用的提高系统性能和响应速度的技术手段,它综合利用了不同类型缓存的优势,以下为你详细介绍:基本概念本地缓存:指的是在应用程序所在的服务器内...

腾讯云国际站:腾讯云服务器如何配置Redis缓存?

本文由【云老大】TG@yunlaoda360撰写一、安装Redis使用包管理器安装(推荐)在CentOS系统中,可以通过yum包管理器安装Redis:sudoyumupdate-...

Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?

你是否在开发互联网大厂后端项目时,遇到过系统响应速度慢的问题?当高并发请求涌入,数据库压力剧增,响应时间拉长,用户体验直线下降。相信不少后端开发同行都被这个问题困扰过。其实,通过在SpringBo...

【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案

在我们使用redis时,也会存在一些问题,导致请求直接打到数据库上,导致数据库挂掉。下面我们来说说这些问题及解决方案。1、缓存穿透1.1场景一个请求进来后,先去redis进行查找,redis存在,则...

Spring boot 整合Redis缓存你了解多少

在前一篇里面讲到了Redis缓存击穿、缓存穿透、缓存雪崩这三者区别,接下来我们讲解Springboot整合Redis中的一些知识点:之前遇到过,有的了四五年,甚至更长时间的后端Java开发,并且...

揭秘!Redis 缓存与数据库一致性问题的终极解决方案

在现代软件开发中,Redis作为一款高性能的缓存数据库,被广泛应用于提升系统的响应速度和吞吐量。然而,缓存与数据库之间的数据一致性问题,一直是开发者们面临的一大挑战。本文将深入探讨Redis缓存...

高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局

一、什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,导致请求直接穿透缓存层到达数据库,可能压垮数据库的现象。在高并发场景下,这尤其危险。典型场景:恶意攻击:故意查询不存在的ID(如负数或超大数值...

Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决

缓存穿透菜小弟:我先问问什么是缓存穿透?我听说是缓存查不到,直接去查数据库了。表哥:没错。缓存穿透是指查询一个缓存中不存在且数据库中也不存在的数据,导致每次请求都直接访问数据库的行为。这种行为会让缓存...

Redis中缓存穿透问题与解决方法

缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...

Redis客户端缓存的几种实现方式

前言:Redis作为当今最流行的内存数据库和缓存系统,被广泛应用于各类应用场景。然而,即使Redis本身性能卓越,在高并发场景下,应用于Redis服务器之间的网络通信仍可能成为性能瓶颈。所以客户端缓存...

Nginx合集-常用功能指导

1)启动、重启以及停止nginx进入sbin目录之后,输入以下命令#启动nginx./nginx#指定配置文件启动nginx./nginx-c/usr/local/nginx/conf/n...

腾讯云国际站:腾讯云怎么提升服务器速度?

本文由【云老大】TG@yunlaoda360撰写升级服务器规格选择更高性能的CPU、内存和带宽,以提供更好的处理能力和网络性能。优化网络配置调整网络接口卡(NIC)驱动,优化TCP/IP参数...

雷霆一击服务器管理员教程

本文转载莱卡云游戏服务器雷霆一击管理员教程(搜索莱卡云面版可搜到)首先你需要给服务器设置管理员密码,默认是空的管理员密码在启动页面进行设置设置完成后你需要重启服务器才可生效加入游戏后,点击键盘左上角E...

取消回复欢迎 发表评论: