网络协议与攻击模拟_10DHCP攻击与DHCP欺骗

news2024/12/28 19:25:26

一、DHCP的报文格式

  • Message type:消息类型(1表示请求,2表示响应)
  • Hardware type:硬件类型
  • Hardware address length:硬件地址长度
  • Hops:DHCP报文经过中继的数目。
  • Transaction ID:事务ID,客户端发起请求是选择一个随机数,用来标识一次地址请求过程。
  • Seconds elapsed:客户端开始DHCP请求后所经过的时间,客户端从开始获取地址或地址续租更新后所用的时间,单位是秒,占用2字节
  • Bootp flags:保留标志字段,只有标志字段最高位才有意义,其余15位均被置为0,最高位被解释为单播或者广播相应标志位,0表示客户端请求服务器以单播形式发送相应报文;1表示客户端请求服务器以广播形式发送响应报文,占用2字节
  • Client IP address:客户机的IP
  • Your (client)IP address:服务器能够提供给客户机的IP地址
  • Next server IPaddress:DHCP 服务器的地址
  • Relay agent IP address:中继代理的IP
  • Client MAC address:客户端的MAC地址
  • Client hardware addresspadding:客户端MAC地址的填充。
  • Server host name :服务器名称
  • Boot file name:启动文件的名称
  • Magic cookie:这个字段是一个固定的字节流,一般都为DHCP。
  • Options:不同的报文会有不同的Options
    • Options:(53)DHCPMessage Type(ACK)
      Length:1
      DHCP:ACK(5)
    • Options:(58)Renewal Time Value
      Length:4
      Renewal Time Value:(345600s)4 days
    • Options:(59)Rebinding Time Value
      Length:4
      Rebinding Time Value:(604800s)7 days
    • Options:(51)IP Address Lease Time
      Length:4
      IP Address Lease Time:(691200s)8 days
    • Options:(54)DHCP Server Identifier(192.168.120.100)
      Length:4
      DHCP Server Identifier:192.168.120.100
    • Option:(1)Subnet Mask(255.255.255.0)
    • Option:(81)Client Fully Qualified Domain Name
      Length:3
      Flags:0x00
      A-RR result:255
      PTR-RR result:255
    • Option:(3)Router
      Length:4
      Router:192.168.50.254
    • Option:(6)Domain Name Server
      Length:8
      Domain Name Server:8.8.8.8
      Domain Name Server:114.114.114.114
    • Option:(255)End
      Padding :0000000000

二、实施DHCP欺骗

1、DHCP欺骗原理

使用一台kali作为攻击主机,向我们的DHCP服务器发起DHCP Discover请求,让服务器给我们的攻击主机分配IP地址。当它的IP地址分配完了就无法向正常的客户机提供IP,此时攻击主机把自己伪造成DHCP服务器,就可以向客户机提供IP,这就是DHCP欺骗。

2、实验配置

(1)网络拓扑图

(2)ping测试

使用kali去攻击DHCP服务器 ,配置完成后ping测试,看下能够访问到DHCP Server

kali配置TCP/IP参数:192.168.50.100 255.255.255.0 192.168.50.254

  523  vim /etc/network/interfaces 
  524  ifdown eth0
  525  ifup eth0
  526  ifconfig
  527  ping 192.168.120.100

3、攻击

(1)安装Yersinia

  • .图形化界面
  • 参数:-G   Graphical mode (GTK)

如果使用-G参数没反应,无法进入图形化界面,可尝试使用-I参数,yersinia攻击支持CDP、DHCP、802.1Q、802.1X、DTP、HSRP、ISL(思科私有的STP报文)、MRLS、STP、VTP

(2)DHCP地址分配情况

先看下DHCP服务器50网段的分配情况

50网段的IP地址池是192.168.50.22~192.168.50.33,地址总数,12个,使用中3个,可用还剩9个。

(3)实施攻击
  • 使用kali的yersinia实施攻击

  • 开始攻击之前先抓包,抓取DHCP Server到路由器的流量;
  • 开始攻击后,会不停的再发DHCP Discover报文;

(4)抓包分析 
  • DHCP中继R1->DHCP Server 的报文

抓到好多DHCP Discover报文,而且看不出来这DHCP Discover报文是真的假的,

这里source是192.168.120.254因为数据都是从DHCP 中继过来的。

  •  交换机SW到DHCP中继R1的数据流量

这边可以看到都是随机的MAC地址在发DHCP Discover请求,因为发的广播包没有IP地址,所以这里不需要去产生随机的IP。

  • DHCP Serve->R1的响应报文

查看响应报文(在DHCP中继到DHCP Server这条链路)直接去找源IP为192.168.120.100的

ip.src==192.168.120.100 

 从DHCP Offer报文的Your(Client)IP address可以看到刚好是DHCP Server上面我们为50网段设置的地址池的IP中剩余的9个IP地址,从192.168.50.25到192.168.50.33, 其实就是把DHCP50网段可以提供的IP全部响应了。

  • DHCP Server资源占用情况

我们再去看DHCP服务器上50网段的统计信息,地址总数12个,使用中12个。

地址租用这里是不会有记录的,因为客户机没有响应,没有发送DHCP Request,只有客户机响应完了才会把客户机的信息记录在这里。

即使服务器已经把这个IP地址留给客户机了,但实际客户机没有使用。所以在显示统计信息这儿会显示使用中有12个,就服务器已经认为把IP地址预留给客户机了。

4、伪造 

(1)伪造的配置过程

DHCP地址池中的地址已经没有了,有的分配有的预留给客户机了。

 kali上面使用yersinia伪造DHCP服务器,选creating  DHCP rogue server。

Server ID:DHCP服务器,可以填本地IP 192.168.50.100

Start IP  可以写一个非本网段的,192.168.10.10~192.168.10.20
Lease Time:租约时间,随便填的 720

Renew Time:更新租约时间 随便写的 720

Subnet Mask:255.255.255.0

Router:来个假的 192.168.10.254

DNS Server 9.9.9.9

domain写一个woniu.com

先不要直接点OK,因为你前面的DHCP攻击还没有停,它是广播发的,你点了OK就相当于把你的kali伪造成了DHCP服务器,因为DHCP Discover攻击报文是广播,所以你自己伪造的DHCP服务器也会受到DHCP攻击报文。

(2)先停掉DHCP攻击

先停掉DHCP Discover攻击 

(3)开启伪造DHCP Server

(4)伪造成功

回到Win10虚拟机上,先release一下再renew一下,回到DHCP服务器查看到50网段是被占满的,

这里Win10虚拟机也从kali伪造的DHCP Server获取到了新的IP地址。

 

5、总结 

以下是我听课之后,对过程的大致描述,如有错误,欢迎指正!

这个过程应该是:kali发起DHCP Discover广播使得DHCP服务器的50网段的IP地址全部被占用,然后kali伪造成DHCP服务器,由于之前Win10这台主机我们有通过DHCP服务器动态获取IP地址且租约还未到期,kali攻击并伪造DHCP服务器后,Win10发现有更近的DHCP服务器,所以想kali伪造的DHCP Server发起DHCP Discover请求获取新的IP地址,但此时真正的DHCP Server的Ip地址是处于占满状态的,50网段那儿有个感叹号表示50网段是无法正常工作的,即使Win10从kali伪造的DHCP Server获取新的IP后,原来的DHCP Server也不会释放IP,因为租约并没有到期。

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

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

相关文章

树莓派部署Nginx服务结合内网穿透实现远程访问本地站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Ngi…

springboot mongodb简单教程

(1)依赖 compile(org.springframework.boot:spring-boot-starter-data-mongodb) (2)application.properties配置文件 spring.data.mongodb.host127.0.0.1 spring.data.mongodb.port27017 spring.data.mongodb.databasetest &a…

如何成为一个更好的沟通者?

新年伊始,我想跟大家分享9条我给自己定下的「沟通准则」。 这9条准则,是我对自己的要求,也是我身体力行践行了许多年的做法。我可能也没能践行得非常完美,但这也是我一直在努力的目标。 如果你希望能够跟别人「好好说话」&#xf…

Linux——磁盘和文件系统(一)

Linux——磁盘和文件系统 磁盘机械式磁盘固态硬盘 机械式磁盘结构磁盘,磁道,扇区柱面 文件系统的初始化划卷(划盘) 挂载C盘放了什么东西Boot Block(启动模块) 0号组放了什么东西Super Block(超级…

[m1pro ] ssh: connect to host localhost port 22: Connection refused

在学习Hadoop 的时候,使用 ssh localhost 遇到以下问题 原因: 本地没有打开远程登录 解决办法:打开远程登录 成功结果

leetcode刷题(剑指offer) 191.位1的个数

191.位1的个数 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 提示: 请注意,在某些语言(…

【Linux网络编程】网络编程套接字(1)

【Linux网络编程】网络编程套接字(1) 目录 【Linux网络编程】网络编程套接字(1)源IP地址和目的IP地址端口号端口号和进程ID的关系 网络通信TCP协议UDP协议网络字节序socket编程接口简单的UDP网络程序 作者:爱写代码的刚子 时间:2024.1.29 前言&#xff1…

时序预测 | Python基于Multihead-Attention-TCN-LSTM的时间序列预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 时序预测 | Python基于Multihead-Attention-TCN-LSTM的时间序列预测 Multihead-Attention-TCN-LSTM(多头注意力-TCN-LSTM)是一种结合了多个注意力机制、时序卷积网络(TCN&#xff0…

ORB-SLAM策略思考之RANSAC

ORB-SLAM策略思考之RANSAC 1. 初始化器的RANSAC ORB-SLAM中的初始化器是一个端到端的地图初始化策略,即不需要人的参与双线程同时计算本质矩阵和单应性矩阵使用基于RANSAC和卡方检验的评价方法 为了保证两种算法评价的一致性,计算本质矩阵F和单应性矩阵…

ETCD监控方法以及核心指标

文章目录 1. 监控指标采集1.1 监控指标采集1.2 配置promethues采集和大盘 2. 核心告警指标3. 参考文章 探讨etcd的监控数据采集方式以及需要关注的核心指标,便于日常生产进行监控和巡检。 1. 监控指标采集 etcd默认通过/metrics指标暴露相关指标,因此不…

引入 js 文件报错: Uncaught SyntaxError: Unexpected token <

文章目录 问题分析问题 在开发中引入 Cesium.js 文件时报错如下 分析 我是这么引入的<body><noscript><strong>Were sorry but <%= htmlWebpackPlugin.options.title %> doesnt work properly without JavaScript enabled.Please enable it to c

C++仿函数、万能头文件、transform学习

这是网上的一个代码,里面的一些东西以前没用过; #include <bits/stdc++.h> using namespace std;// A Functor class increment { private:int num; public:increment(int n) : num(n) { }int operator () (int arr_num) const {return num + arr_num;} };// Driver …

Python列表中的append功能及用法举例

Python列表中的append功能及用法举例 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;append()&#x1f333;&#x1f340;功能介绍&#x1f340;&#x1f340;语法&#x1f340;&#x1f340;示例&#x1f340;&#x1f340;注意事项&#x…

Spark3内核源码与优化

文章目录 一、Spark内核原理1、Spark 内核概述1.1 简介1.2 Spark 核心组件1.3 Spark 通用运行流程概述 2、Spark 部署模式2.1 YARN Cluster 模式(重点)2.2 YARN Client 模式2.3 Standalone Cluster 模式2.4 Standalone Client 模式 3、Spark 通讯架构3.1 Spark 通信架构概述3.2…

江科大stm32学习笔记5——蜂鸣器

目录 一、接线 二、代码部分 三、查看库函数的方法 一、接线 蜂鸣器选择有源高电平触发蜂鸣器。 GND——GND VCC——正极 I/O——B12 注意&#xff1a;32上的PA15、PB3、和PB4是默认调试端口&#xff0c;如果使用需要进行额外配置&#xff0c;一般避开这三个端口。 二、…

二手交易|校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)

校园二手交易小程序目录 目录 基于微信小程序的闲置物品交易平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕…

5天!软件开发考试该如何准备?

作者&#xff1a;统信UOS技术团队 意外的早晨 那是一个阳光明媚的早晨&#xff0c;我正走早上班的路上&#xff0c;慢悠悠地享受着早餐。忽然&#xff0c;我的手机发出了提示音。一条来自领导的消息突然打破了宁静的早餐时光。它通知我&#xff0c;五天后将有一场考试——离线…

算法39:统计全 1 子矩形(力扣1504)----单调栈

题目: 给你一个 m x n 的二进制矩阵 mat &#xff0c;请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[1,0,1],[1,1,0],[1,1,0]] 输出&#xff1a;13 解释&#xff1a; 有 6 个 1x1 的矩形。 有 2 个 1x2 的矩形。 有 3 个 2x1 的矩…

申万宏源基于 StarRocks 构建实时数仓

作者 &#xff1a;申万宏源证券 实时数仓项目组 小编导读&#xff1a; 申万宏源证券有限公司是由新中国第一家股份制证券公司——申银万国证券股份有限公司与国内资本市场第一家上市证券公司——宏源证券股份有限公司&#xff0c;于 2015 年 1 月 16 日合并组建而成&#xff0c…

error: failed to open index: Database already open. Cannot acquire lock报错解决办法

ordinals节点数据同步出现报错 error: failed to open index: Database already open. Cannot acquire lock.问题分析&#xff1a; 出现问题的原因是btcoin core节点数据没有同步完我们就开始进行ordinals数据同步&#xff0c;导致/root/.local/share/ord/index.redb 文件数据…