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

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

nanshan 2024-11-17 14:09 34 浏览 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攻击 敬请关注

相关推荐

雷军1994年写的老代码曝光,被称像诗一样优雅

大数据文摘授权转载自程序员的那些事雷军的代码像诗一样优雅↓↓↓有些网友在评论中质疑,说雷军代码不会是“屎”一样优雅吧。说这话的网友,也许是开玩笑的,也许是真没看过雷军写过的代码。在2011年的时候,我...

原创经验分享:低级bug耗费12小时Fix

调试某程序非常简单的程序,简单到认为不可能存在缺陷,但该BUG处理时间超过12小时:程序属于后台进程,监控系统每隔15秒检查外设IO状态,IO异常后发出报警或复位外设,外设都在linux下有/sys/...

SpringBoot实现的简单停车位管理系统附带导入和演示教程视频

这一次为大家带来的是简单的停车位管理系统,基于SpringBoot+Thymeleaf+Mybatis框架,这个系统相对来说比较简单,很容易学习并快速上手,因为逻辑很清晰,没有太复杂的代码逻辑,所以学...

一个开箱即用的代码生成器(代码自动生成工具开源)

今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...

【免费开源】JeecgBoot单点登录源码全部开源了

JeecgBoot单点登录源码全部开源了,有需要的朋友可以来薅羊毛了。一、JeecgBoot介绍JeecgBoot是一款企业级的低代码平台!前后端分离架构SpringBoot2.x,SpringCl...

SpringBoot+JWT+Shiro+Mybatis实现Restful快速开发后端脚手架

作者:lywJee来源:cnblogs.com/lywJ/p/11252064.html一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置...

为什么越来越多的人选择使用idea软件

IDEA软件是什么?IDEA软件是干什么的?为什么越来越多的人选择使用IDEA软件?IDEA软件,全称IntelliJIDEA,它是由JetBrains公司开发开发的一款功能强大的集成开发环境(ID...

开题报告大学生互助系统(附源码)java毕设

本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,大学生群体对信息共享与互助的需求日益增长。关于大...

SpringBoot项目快速开发框架JeecgBoot——项目简介及系统架构!

项目简介及系统架构JeecgBoot是一款基于SpringBoot的开发平台,它采用前后端分离架构,集成的框架有SpringBoot2.x、SpringCloud、AntDesignof...

新手配电脑13代CPU怎么选择(新手配电脑13代cpu怎么选择好)

Intel第13代酷睿i3、i5、i7、i9系列处理器的核心参数、性能差异及适用群体的详细说明(以桌面端为例):一、13代酷睿全系参数对比(桌面端主流型号)参数i3-13100i5-13600Ki7-...

加速 SpringBoot 应用开发,官方热部署神器真带劲

平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款Sp...

基于微信小程序的移动端物流系统-计算机毕业设计源码+LW文档

摘要随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理移动端物流系统app的最新形式。本论文是以构建移动端物流系...

springboot教务管理系统+微信小程序云开发附带源码

今天给大家分享的程序是基于springboot的管理,前端是小程序,系统非常的nice,不管是学习还是毕设都非常的靠谱。本系统主要分为pc端后台管理和微信小程序端,pc端有三个角色:管理员、学生、教师...

SpringBoot全家桶:23篇博客加23个可运行项目让你对它了如指掌

SpringBoot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通...

Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统

本系统基于Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统。简单实现了充值、购买歌曲、poi数据导入导出、歌曲上传下载、歌曲播放、用户注册登录注销等功能。难度等级:简单技术...

取消回复欢迎 发表评论: