学习日志8.4--DHCP攻击防范

news2024/11/6 3:15:50

目录

DHCP饿死攻击

DHCP Sever仿冒攻击

DHCP攻击防范


DHCP动态主机配置协议,是给主机提供自动获取IP地址等配置信息的服务。在主机对DHCP服务器发送DHCP Discover请求之后,服务器回复offer,主机再回复request,最后服务器回复ACK确认。但是就是在这四次的交互过程中就容易受到网络的攻击。

在实际网络中针对DHCP的攻击行为主要有:DHCP饿死攻击;DHCP Sever仿冒攻击。

DHCP饿死攻击

DHCP饿死攻击是DOS攻击的一种方式,目的是通过发送大量的DHCP Discover请求,去耗尽DHCP地址池里面的地址,在地址池耗尽的时候,DHCP服务器会采取不回答或者回复0.0.0.0的方式表达地址耗尽,使得DHCP Sever不能给主机提供服务。

在同一个主机向DHCP服务器请求IP地址的时候,在已经获得IP地址,第二次请求的情况下,DHCP服务器向主机回复有同样地址的offer。在服务器第一次给主机分配IP地址时,服务器会记录IP地址和主机的client hardware address(主机的mac地址),意思是记录下这个IP地址分配给哪个MAC地址了,这个记录就叫CHDDR,封装在DHCP数据包里面,在主机向DHCP服务器发送discover的时候,主机的MAC地址会写在CHDDR里面记录在DHCPdiscover发送出去。再主机第二次发送discover请求的时候,DHCP服务器就会知道discover请求里面的CHDDR记录的MAC地址,说我以前给这个主机分配过IP地址,分配的IP地址是192.168.1.1(假设),现在他请求我,我给他回offer分配的IP还是192.168.1.1。同样的主机同样的MAC地址,给DHCP服务器发送DHCPdiscover请求,他收到DHCP分配的IP地址是一样,即offer里的IP地址是一样的;也就是说要实现DHCP的饿死攻击,就必须要修改不通的MAC地址,然后发送DHCPdiscover请求,才能耗尽DHCP地址池里面的地址。

按拓扑结构,完成接口的IP信息配置,用路由器来充当DHCP服务器。
命令:[DHCP-Sever]dhcp enable,在系统视图下开启DHCP服务
命令:[DHCP-Sever]int g0/0/1
命令:[DHCP-Sever-GigabitEthernet0/0/1]dhcp select interface,在接口模式下,开启接口的IP地址池
命令:[DHCP-Sever-GigabitEthernet0/0/1]display ip pool,查看地址池的简要信息
查看地址池的名称,网关、掩码还有数量13
命令:[DHCP-Sever]display ip pool interface GigabitEthernet0/0/0/1 all,查看IP地址池在接口下名字是GigabitEthernet0/0/0/1地址池的信息,在系统视图下查看地址池的信息IP地址的范围是在100.1到100.14,还可以看到IP地址的分配情况

现在测试同一个主机多次发送DHCP请求,在路由器上抓包有四次DHCP交互申请分配IP地址和三次免费ARP询问是否有谁用这个IP地址,没有回复则可以使用。在offer的回包中分配的IP地址是100.14在主机上查看是192.168.100.14

开始第二次DHCPdiscover请求第二次回包数据和分配的IP地址还是192.168.100.14

DHCP服务器绑定,DHCPdiscover消息中CHADDR会有主机的MAC地址信息记录的MAC地址信息,就会记录到DHCP服务器中下次再收到同样的请求时,会根据记录分配同样的IP地址。

DHCP服务器是通过DHCP消息内部的CHADDR来进行记录和绑定IP和MAC地址信息的,不通过数据包以太网Ⅱ的MAC地址进行绑定。这是因为在由许多主机连接的网络中,他并不是直接和DHCP服务器进行连接的,他是与多个中继进行连接,路由转发协议,在跨子网转发的时候,经过路由转发路由交换,其数据包里面的源MAC地址就会发生改变,变成路由器中继的MAC地址,但是记录在DHCP消息中的CHADDR的数据不会改变。

攻击模拟的拓扑结构

如果需要进行DHCP饿死攻击,就必须不断伪造不同的CHADDR地址的DHCPdiscover消息来获取IP地址。

可以利用kali虚拟机进行模拟攻击,利用在kali安装好的软件进行模拟攻击。在攻击之前先除去主机原先申请的IP地址,除去DHCP服务器上的绑定信息,通过关闭和重启地址池的方式来实现。
命令:[DHCP-Sever-GigabitEthernet0/0/1]undo dhcp select interface,关闭接口的地址池
命令:[DHCP-Sever-GigabitEthernet0/0/1]dhcp select interface,打开接口的地址池
命令:[DHCP-Sever-GigabitEthernet0/0/1]display ip pool interface GigabitEthernet0/0/0/1,查看地址池的分配情况,地址池的地址清除完毕

用kali虚拟机进行模拟DHCP饿死攻击看到攻击过程获取到192.168.100.14到192.168.100.2的IP地址
再查看一下DHCP服务器的记录表,可以看到IP地址被占用了,饿死攻击成功
对DHCP服务器的0/0/1口进行数据抓包(抓包在攻击之前,清楚地址池的信息之后就已经开始)我们看数据包,知道是DHCP的四部交互,每一次交互完成,其分配到的IP地址就不一样第一个discover请求他的网卡地址是82:d0,是攻击机的网卡地址,下面的是CHADDR地址60:f4第二个discover请求,他的以太网Ⅱ地址还是82:d0,但是他的CHADDR地址变为了fc:5b。再看DHCP服务器里面的记录表表中192.18.100.14记录的MAC地址是60:f4;192.168.100.13记录的是fc:5b,这和discover中的CHADDR地址是一致的,可以说明,DHCP服务器的地址绑定看的是CHADDR中的MAC地址信息和以太网Ⅱ的地址信息无关。

现在DHCP服务器的地址池里面已经没有地址,下面用主机向DHCP服务器发送请求地址请求后查看主机 IP地址,发现没有配置到地址。DHCP饿死攻击成功。

DHCP Sever仿冒攻击

DHCP饿死攻击的作用,当攻击者耗尽了DHCP服务器地址池中的IP地址之后,攻击者可以将自己变成仿冒的DHCP服务器,向主机发送 IP地址,伪造假的网关地址,伪造假的域名地址,诱骗主机将自己的数据转发到攻击机上。这就是DHCP的Sever仿冒攻击。

用Kali伪造一个DHCPsever,对主机进行模拟攻击
发起攻击后,用主机获去DHCP服务器的IP地址​​​​​​​可以看到获取的是再kali模拟攻击里面自己仿冒的DHCP服务器配置的地址。去看他的数据包
就有一个DHCP四部交互的过程,0.0.0.0的广播地址还有192.168.11.100的回包地址,说明是攻击机的回报,然后打开ACK的回包ACK回包中,给主机配置了IP地址是192.168.11.210,记录了主机的MAC地址是74:ee,是主机自己的MAC地址配置了DHCP服务器的IP地址192.168.11.100,配置了IP地址的续租时间,配置了掩码,配置了路由器地址192.168.11.100,配置了域名服务器地址DNSserver192.168.11.100,还配置了域名名字huawei.com。都是按照在kali攻击里面部署的去配置,证明服务器仿冒攻击成功。

DHCP攻击防范

DHCP snooping(DHCP流量监听)。在主机向DHCP申请discover消息的时候,会广播消息,在交换机开启了DHCP snooping之后,交换机会对DHCP消息转发到正确的DHCP服务器的接口上,对于连接DHCP服务器的端口需要设置一个信任端口,允许DHCP的流量从这里转发出去,而没有设置信任度端口的DHCP流量就不能转发出去,让DHCP服务器能收到discover请求,能给主机提供服务,让攻击者不能收到DHCP请求,不能截获主机的流量信息。

在攻击之前,先将主机配置成手动获取IP地址,然后清除DHCP服务器地址池的信息
命令:[DHCP-Sever-GigabitEthernet0/0/1]undo dhcp select interface,关闭接口地址池
命令:[DHCP-Sever-GigabitEthernet0/0/1]dhcp select interface,开启接口地址池
命令:[DHCP-Sever-GigabitEthernet0/0/1]display ip pool interface GigabitEthernet0/0/0/
1 all,查看地址池的信息地址池信息为空,地址池清楚完毕。

首先先把DHCP服务器的g0/0/1口的DHCP服务禁用,对交换机的g0/0/3口抓包,然后开启交换机DHCPsnooping的功能
命令:[SW1]dhcp enable,首先开启交换机的DHCP功能
命令:[SW1]dhcp snooping enable,再开启DHCPsnooping功能
命令:[SW1]vlan 1
命令:[SW1-vlan1]dhcp snooping enable,再在vlan下面开启DHCPsnooping功能
命令:[SW1-vlan1]dhcp snooping trusted interface g0/0/2,设置交换机的g0/0/2为信任端口

用主机申请DHCP在DHCP服务器上收到了DHCP的discover请求,但是没有回复,是因为关闭了DHCP服务器的功能在攻击机上没有收到discover的信息请求,说明只有被DHCPsnooping信任的端口才可以转发DHCP消息。

添加信任端口可以防范DHCP服务器伪造攻击。

把DHCP服务器的DHCP接口服务打开,在让主机重新获取DHCP服务器里面的IP地址成功在DHCP服务器上获取到地址。

DHCP饿死攻击防范。在使用饿死攻击的话需要伪造不同的CHADDR地址的DHCPdiscover消息来获取地址,但是在每次发送消息的时候,数据包中的以太网Ⅱ的MAC地址是不变的。在开启DHCPsnooping(DHCP流量监听)后,收到DHCP discover消息后,会对DHCPdiscover判断,判断以太网Ⅱ的源MAC地址和DHCP报文中的CHADDR是否相同,如果不同就认为是伪造消息。这时开启DHCPcheck功能,对伪造的信息进行丢弃。需要注意的是,DHCPsnooping只能进行监听,丢弃的动作还需要DHCPcheck去执行。

开启接口的DHCPcheck
命令:[SW1]port-group 1,创建一个接口组,组号为1
命令:[SW1-port-group-1]group-member GigabitEthernet 0/0/1 to g0/0/24,定义接口组的成员
命令:[SW1-port-group-1]dhcp snooping check dhcp-chaddr enable,给接口打开DHCPcheck功能
然后用kali模拟饿死攻击​​​​​​​这个时候攻击没反应就拿不到地址,查看交换机g0/0/3口的数据还是有discover请求发出,证明攻击存在,但是应为discover每一个CHADDR地址和以太网Ⅱ的源MAC地址不一样,数据被DHCPcheck舍弃这是第一个discover攻击请求的信息这是第二个discover攻击请求的信息
他们的CHADDR地址和以太网Ⅱ的源MAC地址都不一样,不一样的话,就被DHCPsnooping认为是攻击信息,然后被DHCPcheck丢弃discover信息。再回到地址池查看地址的配置情况,确实是没有分配地址。然后再用主机去发DHCPdiscover请求主机就成功获得地址池里的IP地址。

kali模拟攻击会存在在攻击时可以伪造数据中的以太网Ⅱ的源MAC地址和DHCP报文中的CHADDR地址字段同时变化,去欺骗DHCPsnooping,去实现消耗DHCP服务器里面的IP地址,达到饿死攻击的效果。开始攻击攻击效果是,每秒钟以上千次的数据发送频率去发送discover请求。随机打开两个discover请求,可一看到每一次的以太网Ⅱ源MAC地址都会发生变化,而且源MAC地址和CHADDR地址是一致的再查看地址池的消息,已经被攻击,停止给主机分配地址了,被饿死攻击了。所以说,遇到这种攻击的时候,再采用DHCPsnooping防范就已经不够了。

在开启DHCPsnooping和DHCPcheck,面对这种可以仿造变化地址的攻击方式,以每秒上千次的攻击频率去攻击,交换机需要对每一个数据进行检验判断,需要消耗大量的内存,消耗CPU的资源。

Yersinia DHCP DOS(上一个地址可变的攻击)的攻击防范无法通过CHADDR和DHCPcheck去防御,需要通过端口安全的方式去实现。

Yersinia攻击伪造,会伪造源MAC地址和CHADDR,同时会让交换机学习到大量的MAC地址,可以同过设置接口的允许MAC地址的学习数量,如果学习数量超过可允许范围内,就关闭端口shutdown,禁止数据传输。

给交换机设置端口安全。
命令:[SW1]port-group 1,进入接口组
命令:[SW1-port-group-1]port-security enable,端口安全打开
命令:[SW1-port-group-1]port-security max-mac-num 1,设置端口安全最大允许学习的MAC地址数量为 1设置端口安全的动作方式,第一个是保护,直接丢弃数据;第二个是丢弃数据并报警;第三个是直接关闭接口;
命令:[SW1-port-group-1]port-security protect-action shutdown,选择安全保护动作是关闭接口

用kali模拟攻击
可以看到交换机接口学习MAC地址数量过多,接口直接关闭了交换机直接报出日志,MAC地址的数量超出限制,接口g0/0/3将关闭

然后再重新打开接口g0/0/3,再对DHCP服务器的地址池的信息清理一下,准备重新发起攻击。看能不能抵御住这种攻击。​​​​​​​在DHCP服务器的g0/0/1口收到了DHCP的discover消息,然后回复了一个offer,分配给攻击机的地址是19.168.100.14。在到地址池查看配置信息,是分配给CHADDR地址的IP地址192.168.100.14。
然后再用主机申请IP地址从主机上和DHCP服务器地址池里可以看到,主机成功分配到地址。

这种设置安全端口的方式,不仅可以防止饿死攻击,还可以对主机进行分配IP地址的服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app开发打包成H5部署到服务器

1. 点击发行 2. 点击进入manifest.json的h5配置里,根据自己的情况配置一些信息。一定要注意配置 “运行的基础路径”,如果出现空白页面或者静态文件404的情况,可能是因为这个路径没有配置好。 3. 填写域名 4. 点击发行后,控制台后…

如何让左右两个div各占50%,并且高度相同?

如何设置两个div各占一半,并且高度随着内容增加,而且两边div的高度一致呢?默认会发现高度不一致,改用flex就可以了,另外发现传统的table也可以轻易实现。不知道不用flex的话是否可以实现。 方法1(div实现&a…

二分+dp,CF 1993D - Med-imize

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 D - Med-imize 二、解题报告 1、思路分析 对于n < k的情况直接排序就行 对于n > k的情况 最终的序列长度一定是 (n - 1) % k 1 这个序列是原数组的一个子序列 对于该序列的第一个元素&#xff0…

Spring中使用Async进行异步功能开发实战-以大文件上传为例

目录 前言 一、场景再现 1、Event的同步机制 二、性能优化 1、异步支持配置 2、自定义处理线程池扩展 3、将线程池配置类绑定到异步方法 三、总结 前言 在之前的博客中&#xff0c;曾将讲了在SpringBoot中如何使用Event来进行大文件上传的解耦&#xff0c;原文地址&…

算法回忆录(2)

6.输入一个非递减排列的整数数组nums,和一个目标值target。请找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target,则输出0&#xff0c;0。请设计一个时间复杂度为0(log n)的算法解决此问题。 输入包括两行&#xff0c;第一行输入两个整数&#xff0c…

【电路笔记】-偏置晶体管

偏置晶体管 文章目录 偏置晶体管1、概述2、共发射极晶体管偏置3、集极反馈偏置4、双反馈晶体管偏置5、发射极反馈配置6、分压器晶体管偏置晶体管偏置是将晶体管直流工作电压或电流条件设置为正确电平的过程,以便晶体管可以正确放大任何交流输入信号 1、概述 双极晶体管的稳态…

DBA | 炼气期,关系数据库及六大范式(NF)理论概述!

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 前言简述 描述&#xff1a;上一章&#xff0c;我们简单了解了关系类型数据库&#xff0c;以及其相关产品&#xff0c;此章节我们由浅入深的学习一下什么是关系型数据库&#xff0c;不过在讲解关系…

中国县城建设统计年鉴(2015-2022年)

数据年限&#xff1a;2015-2022年&#xff0c;年鉴时间即为数据时间 数据格式&#xff1a;pdfexcel 数据内容&#xff1a; 共分12个部分&#xff0c; 包括县城市政公用设施水平&#xff08;人口密度/人均日生活用水量/供水普及率/燃气普及率/人均道路面积/建成区路网密度/污水处…

51单片机—电动车报警器

一. 入门 1.1 开发环境的安装 用什么写代码--语言是C&#xff0c;环境是keilKeil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统&#xff0c;与汇编相比&#xff0c;C语言在功能上、结构性、可读性、可维护性上有明显的优势&#xff0c;因而易学易用。…

江协科技51单片机学习- p37 红外遥控(外部中断)

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

提供三方API接口、调用第三方接口API接口、模拟API接口(三)使用AOP切面编程实现signature签名验证

接着第一篇文章 提供三方API接口、调用第三方接口API接口、模拟API接口&#xff08;一&#xff09;通过signature签名验证&#xff0c;避免参数恶意修改 我们来继续优化&#xff1a; /*** 模拟后端校验签名* param request* param data* return* throws UnsupportedEncodingEx…

[环境配置]C4D OC渲染器解决缺少cudnn_8_0_4Octance正版缺少cudnn_8_0_4_win文件解决方法

关于Octance正版缺少cudnn_8_0_4_win文件解决方法 可在此处https://download.csdn.net/download/FL1623863129/89605383进行下载 放到对应文件位置即可 在计算机图形学领域&#xff0c;Cinema 4D&#xff08;C4D&#xff09;作为一款顶尖的专业3D建模、动画与渲染软件&#x…

学生管理系统之数据模拟与数据显示

学生管理系统之数据模拟与数据显示 设计一个单例 模拟数据 显示数据

CSP-J 2022 填程题19.解析

19. &#xff08;枚举因数&#xff09;从小到大打印正整数 n 的所有正因数。 试补全枚举程序。 01 #include <bits/stdc.h> 02 using namespace std; 03 04 int main() { 05 int n; 06 cin >> n; 07 08 vector<int> fac; 09 fac.reserve((int)ce…

【算法】动态规划---多态dp问题

多态dp问题 一.[leetcode] (打家劫舍I) 17.16.按摩师二. [leetcode] 213. 打家劫舍 II三.[leetcode] 740. 删除并获得点数四.[leetcode] LCR 091. 粉刷房子五.[leetcode] 309. 买卖股票的最佳时机含冷冻期六.[leetcode] 714. 买卖股票的最佳时机含手续费七.[leetcode] 123. 买卖…

职场,要想逆袭,必须要“装”

普通人&#xff0c;没有家庭背景&#xff0c;没有社会资源&#xff0c;没有好学历&#xff0c;如何才能逆袭呢&#xff1f;有朝一日自己熬出头&#xff0c;又如何避免被别人针对呢&#xff1f; 最重要的就是要会“装”。 在社会上&#xff0c;只有资源多的人才能更好的生存&a…

opencv c++ python等比缩小或放大显示图片代码

c代码&#xff0c;其中scale_percent用来设置百分比&#xff0c;例如50 就是百分之五十&#xff0c;也就是一半的大小&#xff0c;当然也可以设置成200&#xff0c;相当于原来的2倍大小&#xff0c;注意图片路径换成实际路径。 #include <opencv2/opencv.hpp>int main()…

【Java零基础视频教程】综合练习题(一)——基础练习

文章目录 基础练习飞机票打印素数生成验证码复制数组评委打分数字加密抽奖双色球 基础练习 飞机票 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 ​ 按照如下规则计算机票价格&#xff1a;旺季&#xff08;5-10月&#xff09;头等舱9折&…

pxe安装部署

RHEL7为例&#xff1a; ifconfig查看ip 一.环境配置 1.配置软件仓库&#xff1a; mkdir /rhel7 mount /dev/cdrom /rhel7 echo mount /dev/cdrom /rhel74 >> /etc/rc.d/rc,local chmod x /etc/rc.d/rc.local 2.关闭火墙和selinux&#xff0c;下载…

【极速前进】20240706-24240714:用于Agent的树搜、理解LLM的语种困惑、事实知识抽取微调、Quiet-STaR

相关博客 【极速前进】20240706-24240714&#xff1a;用于Agent的树搜、理解LLM的语种困惑、事实知识抽取微调、Quiet-STaR 【极速前进】20240615-20240623&#xff1a;Zipper融合模态、VideoLLM视频理解、WebAgent可以自我改善、Nemotron-4、AnyGPT统一模态 【极速前进】20240…