DHCP欺骗

news/2024/11/15 19:01:55/文章来源:https://www.cnblogs.com/chchee-blog/p/18548483

DHCP 欺骗


原理


DHCP 协议(Dynamic Host Configuration Protocol) 动态主机配置协议:主要给客户机提供 TCP/IP 参数,包括:IP 地址、子网掩码、网关、DNS、租期


工作原理

  • 应用层协议,基于UDP
  • 主机向服务器 67 号端口发送 DHCP 请求
  • 服务器响应给客户机的 68号端口

image-20241114204645196


配置

image-20241112201603610


设置DHCP 服务器作用域


在Windows 2016 Server上添加DHCP服务器

添加第一个作用域并激活:

image-20241112205412075


设置 Kali 和 Win10 侧网段的作用域:

image-20241112210108187


添加网关的IP地址为实验环境中路由器的f0/0端口的IP地址

image-20241112210047064


右击新配好的作用域下的“作用域选项”,选中DNS选项,配置 DNS 服务器 IP 地址

image-20241112210255198



win10 配置


在Vmware的虚拟网编辑器中,将win10网卡中的“使用本地DHCP服务将IP地址分配给虚拟机”选项勾除:

image-20241112210415534


在Windows 10的网络适配器中把ipv4更改为自动获取IP地址和自动获取DNS服务器:

image-20241112210518807


ipconfig/renew 尝试获取 ip地址:此时win10不能获取 IP 地址

image-20241112211958332


抓取GNS3上路由器连接win10一侧的链路的流量:

image-20241112212044392


报文内容具体分析:

image-20241112212458279

  • 源IP地址:由于客户端还未获得 IP 地址,因此源 IP 地址此时显示未 0.0.0.0
  • 目标IP 地址为 255.255.255.255,表示广播地址,向所有设备广播此请求
  • Client MAC address : 客户端MAC地址唯一标识该主机,用于服务器识别请求来自哪个设备。此处即为 win10 MAC 地址
  • DHCP Message Type : Discover

配置中继

在GNS3中的镜像路由器上为f0/0端口配置中继:

image-20241112212944982


右键禁用再启用Ethernet0网卡

image-20241112213143340

执行 ipconfig /all 命令查看,此时win10 已成功分配 ip地址:192.168.1.4, DHCP 服务器ip地址:192.168.2.2,DNS 服务器为 8.8.8.8(由 DHCP 服务器分配)

image-20241112223422295


报文分析


路由器左侧(即win10一侧)的dhcp报文:


image-20241113090953521

不同类型的dhcp报文分析如下:


Discover

左侧第一种类型的报文:Discover ,由 win10 发出,请求 dhcp 服务的报文image-20241113091317075

  • 源ip地址为 0.0.0.0(未分配ip)
  • 目的ip地址为 255.255.255.255(服务器ip未知)
  • DHCP 报文的 Client MAC address 值为 win10 的 MAC 地址,用于标识 win10

Offer

左侧第二种类型的报文:Offer , 由路由器作为中继,发送给win10,作为向客户端提供 IP 地址分配的初步建议

image-20241113091816777

  • 由于此时 win10 ip 未分配,路由器实际采用广播的方式发送报文,在 Client MAC address 标识出了请求主机的MAC 地址
  • 并指明了 Your Ip address: 192.168.1.4 , 中继ip为:192.168.1.1, dhcp服务器ip为 192.168.2.2



Request

左侧第三种类型的报文:Request , 由 win10 发送给 dhcp 服务器(实际上是win10 广播发送到中继路由器)

image-20241113092004090

  • 发送 dhcp Request 报文时,客户端还未正式获得ip地址,因此它无法以单播的形式发送报文,可以看到,此报文的源ip地址为 0.0.0.0, 目的ip地址为 255.255.255.255

  • 收到 Offer报文后,win10获得了 dhcp服务器的ip地址为 192.168.2.2,并包含在 Request报文

    当客户端收到多个dhcp服务器发送的dhcp Offer报文时,它选择其中一个服务器后,发送的dhcp Request 报文中,应包含所选择的dhcp服务器的标识符,以明确告知该服务器自己接收其提供的ip地址和网络配置,并告知其他未被选中的服务器回收其准备分配的ip地址


ACK

左侧第四种类型的报文:ACK , 由路由器作为中继,发送给win10,作为dhcp服务器确认客户端ip的确认报文

image-20241113093828758


路由器右侧(即dhcp服务器一侧)的报文:


右侧报文与左侧类似,路由器作为中继转发win10和dhcp服务器的报文

image-20241113094432895

  • Discover 报文中,源ip地址为中继ip,由于fa0/0 直接中继到 dhcp 服务器ip,因此此处目的ip为 dhcp服务器ip,而不是广播
  • Offer报文:dhcp服务器将客户请求的ip地址配置返回给中继
  • Request报文:中继转发客户的请求报文,作为确认选择该dhcp服务器的标识
  • ACK 报文:dhcp 服务器将确认客户请求的 ACK 报文返回给中继

攻击


kali安装 yersinia 工具

image-20241113103742476


kali ip地址:

image-20241113192947583


测试 kali和 win10连通性如下:

image-20241113193138090


yersinia -G

image-20241113174811192


sending discover packet


点击“launch attack”,选择sending discover packet

image-20241113194246810


开始攻击:

image-20241113195155866


GNS3 kali连接的链路的报文:可以看到,kali发送大量dhcp Discover 报文,以此来消耗 dhcp服务器的资源,从而合法客户端无法正常获取ip地址

image-20241113195327380


GNS3 路由器左侧的报文:

image-20241113195346783


GNS3 右侧的报文:

image-20241113201221682


此时在Windows 2016 Server中右击“作用域”选择“显示统计信息”,观察该作用域当前分配的IP地址的情况:

image-20241113201627624

creating DHCP rogue server

在Windows 10上使用 ipconfig /release释放已分配的IP地址

image-20241113202728042


选择“creating DHCP rogue server”:

image-20241113202944782


填写相应参数:Start IP和End IP写为非VMnet1中的IP地址,使Kali给Windows 10分配到IP地址不规范:192.166.1.2 - 192.166.1.10 不在 192.168.1.0 子网内

image-20241113205459208


ipconfig /renew 命令重新获取IP地址

image-20241113204043504

win10 ip地址被设置为kali发送的非法 ip 地址:

image-20241114094007752


抓取的报文:

image-20241114092418501


Kali 广播发送的虚假 dhcp Offer报文:

image-20241114091809491


由 win10 发送给 kali 的 Request 报文:Requested IP Address 字段的值为 kali发送的虚假dhcp Offer 报文的值,即非法ip地址192.166.1.2

image-20241114091605684


Kali 广播发送的虚假 dhcp ACK 报文

image-20241114091953231

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis运行的时候碰到# Creating Server TCP listening socket *:6379: bind: No error

Redis运行的时候碰到# Creating Server TCP listening socket *:6379: bind: No error 解决方案: 1、启动redis客户端:redis-cli.exe。 2、执行关闭命令:输入shutdown3、执行退出命令:exit4、重新启动Redis输入:redis-server.exe redis.windows.conf

https实验

https 实验原理httphttps https = http + SSL/TLS •SSL: Secure Socket Layer 安全套接层 •TLS: Transport Layer Security 传输层安全协议加密方式:PKI(公钥基础设施)使用公钥技术和数字签名来保证信息安全由公钥密码算法、数字证书(Certificate)、CA(Certificate Aut…

手把手教你搭建OpenScenario交通场景(上)

经纬恒润动力学仿真软件ModelBase基于OpenScenario1.0标准,开发内嵌了场景编辑器,可用于对仿真测试过程中的车辆行驶道路模型之外,继续进行周边动态场景的搭建。 OpenScenario是一种专为自动驾驶系统仿真测试设计的场景描述语言,它基于XML格式,旨在提供一个标准化、…

动态规划题单2

第一个题单编辑到后面实在是太卡了,就新开了一个,以后应该也会 \(30\) 题为一个题单。 31.CF1580D Subsequence CF1580D Subsequence 不会笛卡尔树,但是看到题解区的妙妙解法...... 题目的式子非常大便,我们考虑把它翻译成人话: 一个子序列的价值为: \(sum*m - 每两个数及他…

java 反序列化 cc7 复现

java 反序列化 cc7 复现复现环境:common-collections版本<=3.2.1,java版本随意.cc7就是cc6换了一个出口,整体的逻辑没有太大的变化.在Lazymap之前的还那样,我们从如何触发Lazymap的get方法开始看起. AbstractMap 看他的equals方法 public boolean equals(Object o) { if (o…

告别Print,使用IceCream进行高效的Python调试

在Python开发实践中,调试是一个不可或缺的环节。如果采用print()语句来追踪程序执行流程,可能会遇到一个持续出现的异常情况,并且经过多次代码审查问题的根源仍然难以确定,这可能是因为随着终端输出信息的不断增加,这种调试方式的局限性逐渐显现。本文将介绍IceCream库,这…

浏览器

控制台 查看继承的样式 Inherited(继承) from xxx: 继承样式来自于xxx <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><title>Document</title><style>.font {font-size: 12px;}.font2 {fon…

团队项目Scrum冲刺-day5

一、每天举行站立式会议 站立式会议照片一张昨天已完成的工作成员 任务陈国金 判题机架构设计凌枫 整合代码编辑器陈卓恒 更新题目界面部分完成谭立业 浏览题目页面部分完成廖俊龙 接口测试曾平凡 前端页面测试曾俊涛 判题服务薛秋昊 判题服务今天计划完成的工作成员 任务陈国金…

js原型链污染

js原型链污染 原理介绍 对于语句:object[a][b] = value 如果可以控制a、b、value的值,将a设置为__proto__,我们就可以给object对象的原型设置一个b属性,值为value。这样所有继承object对象原型的实例对象在本身不拥有b属性的情况下,都会拥有b属性,且值为value。 可以通过…

基于米尔NXP i.MX93开发板OpenCV的相机捕捉视频进行人脸检测

本篇测评由优秀测评者“eefocus_3914144”提供。 本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXP i.MX93开发板)的基于OpenCV的人脸检测方案测试。 OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置摄像头)1、安装python3-opencvapt install pyth…

hbase-2.2.7分布式搭建文档(附详细操作步骤命令及相关操作截图)

hbase-2.2.7分布式搭建文档 一,搭建前准备 1.检查是否已经安装JDK 2.搭建hbase前需要先搭建好hadoop 3.检查zookeeper是否正常启动 #启动zookeeper(三台都要启动) zkServer.sh start#查看zookeeper状态(一个leader两个follower) zkServer.sh status4.到官网或国内镜像站下载hb…

自动化构建镜像:Packer

在介绍Packer之前,先来回顾一下未使用Packer时自定义虚拟机镜像的步骤。先在本地启动一个虚拟机,从安装系统开始,再进行自定义配置或应用安装,最后封装压缩成镜像,详细操作步骤可以参考我之前写的文档,制作Centos 7镜像:https://robin-2016.github.io/2019/04/08/制作op…