【内网攻击】DHCP协议概念——地址池耗尽攻击

news2024/10/6 2:25:21

目录

前言

DHCP 服务概念

1)客户端发送DHCP Discovery广播包

2)服务器响应DHCP Offer广播包

3)客户机发送DHCP Request广播包

4)服务器发送DHCP ACK广播包

部署DHCP服务器

dhcp地址池消耗攻击

攻击防御


前言

现在思考我们的主机IP是如何得到的?[新手向]

如下图 不使用静态配置的方式,改成自动获的IP地址的方式。我们会获取一个动态的临时IP地址!

这期间发生了什么?

本次我会介绍dhcp的基本概念,且从抓包的形式上从流量上来理解dhcp服务端和客户端的通信细节。为了显示dhcp服务攻击,我将采用win2008来部署dhcp服务器,最后用通信流量分析攻击的细节。

DHCP 服务概念

dhcp即可以说是一个协议也可以说是一个服务,他的主要目的就是帮助主机获取一个IP。我们可以自己抓一下包看一看dhcp做了做了那些事情,下图就是DHCP的工作流程。

 

DHCP原理

也是DHCP租约过程,分为4个步骤:

1)客户端发送DHCP Discovery广播包

可以看到此刻的客户端(没有ip故)用0.0.0.0作为源地址,由于也不知道dhcp服务的地址及mac地址,故发送广播报文,目的ip为255.255.255.255目的mac地址为ff:ff:ff..。发送“discover”试图寻找dhcp找可用IP。

2)服务器响应DHCP Offer广播包

服务器收到dhcp discovery 包后响应Offer包。此包的源mac为自己,目的mac为客户端主机(之前发送discovery 服务器记录了mac)。根据ip地址此刻服务器已经当主机为分配的ip地址218.133了,当客户端收到这个包后正常来说会检查目的mac,目的ip是否为自己,如果不是自己则会丢弃。但此刻情况不同!自己还没有ip加之这是一个dhcp的offer包,因此处理逻辑自然也不会相同。这也是一个单播地址。

看看offer包的数据

根据上图服务端向客户端提供了一个IP地址,还有这个ip的使用期限(30)分钟。子网掩码也有。

当时间50%过后,会牵扯到续约的问题。如果客户端不续约服务端会回收这个ip地址。

这个时候,客户端已经知道了服务端的mac和IP地址,因此在接下来的通信中客户端即可以向服务端发单播也可以发广播。但考虑到有多个dhcp的offer情况下,发广播的方式是合理的,并且大部分的主流设备也是这样的做的。

3)客户机发送DHCP Request广播包

这个Request为一个广播包,向服务端218.254 请求IP 218.133这个地址。

4)服务器发送DHCP ACK广播包

再次确定了租期时间和子网掩码。此刻dhcp的工作流程全部完成,客户端获取218.133地址,服务端地址池的ip会减一。

从流程上,用不常规思想想一想,如果我们改变自己mac地址,短时间内反复向服务器租借地址,直到服务器可提供的ip耗尽,至此正常的用户还能获得ip地址吗!

部署DHCP服务器

为了复现本次dhcp地址池消耗的攻击,本次我采windows2008r2服务器搭建dhcp服务,用kali进行攻击。

注意:添加之前请确保自己的windows服务器有一个静态ip,并且之后分配的ip处于这个网段。

本次计划:内网网段为192.168.100.1/24 DHCP服务器ip为192.168.100.253 。欲192.168.100.254 为网关地址

1.服务器添加新角色

2.选择DHCP 服务器一直点下一步

3.新建作用域;本次我在地址池设置了100个ip地址用来测试。

4.本次测试不涉及dhcpv6 ,选禁用,下一步。

5.安装完成

6.服务测试

在打开新的虚拟机置为同一个网络下,测试dhcp自动获取是否能够成功。(可以打开抓包软件,在学习下dhcp协议的流程)

win7已经过了ip,查看服务器地址池。

服务器这边地址租用果然也有了记录。

dhcp地址池消耗攻击

本次我们用kali 提供一款用具dhcpig

如果你的kali没有,那就安装一下

┌──(kali㉿kali)-[~] └─$ sudo dhcpig -h option -? not recognized

enhanced DHCP exhaustion attack.

Doc: GitHub - kamorin/DHCPig: DHCP exhaustion script written in python using scapy network library

Usage: pig.py [-h -v -6 -1 -s -f -t -a -i -o -l -x -y -z -g -r -n -c ] <interface>

Options: -h, --help <-- you are here :) -v, --verbosity ... 0 ... no (3) 1 ... minimal 10 ... default 99 ... debug

-6, --ipv6                     ... DHCPv6 (off, DHCPv4 by default)
-1, --v6-rapid-commit          ... enable RapidCommit (2way ip assignment instead of 4way) (off)
​
-s, --client-src               ... a list of client macs 00:11:22:33:44:55,00:11:22:33:44:56 (Default: <random>)
-O, --request-options          ... option-codes to request e.g. 21,22,23 or 12,14-19,23 (Default: 0-80)
​
-f, --fuzz                     ... randomly fuzz packets (off)
​
-t, --threads                  ... number of sending threads (1)
​
-a, --show-arp                 ... detect/print arp who_has (off)
-i, --show-icmp                ... detect/print icmps requests (off)
-o, --show-options             ... print lease infos (off)
-l, --show-lease-confirm       ... detect/print dhcp replies (off)
​
-g, --neighbors-attack-garp    ... knock off network segment using gratious arps (off)
-r, --neighbors-attack-release ... release all neighbor ips (off)
-n, --neighbors-scan-arp       ... arp neighbor scan (off)
​
-x, --timeout-threads          ... thread spawn timer (0.4)
-y, --timeout-dos              ... DOS timeout (8) (wait time to mass grat.arp)
-z, --timeout-dhcprequest      ... dhcp request timeout (2)
​
-c, --color                    ... enable color output (off)

sudo dhcpig eth1 -r -c

  • -c 彩色输出信息。

  • -r 释放全部已经分配的IP地址。

此刻kali会不断向dhcp服务端请求ip地址

此时的流量情况,(和此前分析的略有不同,服务端回的offer包是一个广播 不是单播,这也可见不同厂商有着不同的见解,不过这不影响dhcp的工作通信),有不断的dhcp请求。

也可以看出这款工具的默认设置的源Mac地址是以dead开头的

在回头看看windows服务器这边的情况

地址租用已经是满了。

此后再开网卡,试试能不能获取ip

可以看到我新开的主机一直请求dhcp discover,但是一直没有响应

攻击防御

1)攻击DHCP服务器:频繁的发送伪装DHCP请求,直到将DHCP地址池资源耗尽

防御:在交换机(管理型)的端口上做动态MAC地址绑定

2)伪装DHCP服务器攻击:hack通过将自己部署为DHCP服务器,为客户机提供非法ip地址

防御:在交换机上(管理型),除合法的DHCP服务器所在接口外,全部设置为禁止发送dhcp offer包

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

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

相关文章

[论文分享] EnBinDiff: Identifying Data-Only Patches for Binaries

EnBinDiff: Identifying Data-Only Patches for Binaries [TDSC 2021] 在本文中&#xff0c;我们将重点介绍纯数据补丁&#xff0c;这是一种不会引起任何结构更改的特定类型的安全补丁。作为导致假阴性的最重要原因之一&#xff0c;纯数据补丁成为影响所有最先进的二进制差分方…

spring security 认证授权详解

spring security简介 Spring Security 是 Spring家族中的一个安全管理框架&#xff0c;它提供了更丰富的功能做认证授权 认证&#xff1a;当前用户有没有权限登录&#xff0c;是否为本系统用户授权&#xff1a;当前登录的用户有没有操作功能的权限 spring security的搭建 引入…

SqlServer安装教程

百度网盘地址: 链接&#xff1a;https://pan.baidu.com/s/1ntqoK9uVc6fBVTm7twh8kw 提取码&#xff1a;grdt 安装: 双击:SQLEXPRADV_x64_CHS.exe ,等待;点击计划,系统配置检查器,根据要求修改(我被要求重启了)点击安装,全新SQL Server独立安装或向现有安装添加功能,接受功能选…

颜色特征和sift算法结合的指示类交通标志识别

目录 摘 要...................................................................................... 3 第一章 绪论........................................................................ 6 1.1 研究课题背景...................................................…

fatal error C1083: 无法打开包括文件: “ta_libc.h”: No such file or directory

用python做交易数据分析时&#xff0c;可以用talib库计算各类指标&#xff0c;这个库通过以下命令安装&#xff1a; pip install TA-Lib -i https://pypi.tuna.tsinghua.edu.cn/simple windows安装时可能出现本文标题所示的错误&#xff0c;可按如下步骤解决&#xff1a; 1、去…

【Docker 内核详解】namespace 资源隔离(四):Mount namespace Network namespace

namespace 资源隔离&#xff08;四&#xff09;&#xff1a;Mount namespace & Network namespace 1.Mount namespace mount namespace 通过隔离文件系统挂载点对隔离文件系统提供支持&#xff0c;它是历史上第一个 Linux namespace&#xff0c;所以标识位比较特殊&#x…

云开发校园宿舍/企业/部门/物业故障报修小程序源码

微信小程序云开发校园宿舍企业单位部门物业报修小程序源码&#xff0c;这是一款云开发校园宿舍报修助手工具系统微信小程序源码&#xff0c;适用于学校机房、公司设备、物业管理以及其他团队后勤部&#xff0c;系统为简单云开发&#xff0c;不需要服务器域名即可部署&#xff0…

[HNCTF 2022 WEEK2]ez_ssrf题目解析

这题主要是引入ssrf这个漏洞攻击&#xff0c;本质上没有更深入的考察 本题是需要我们去伪造一个ssrf的请求头去绕过 题目开始给了我们信息让我们去访问index.php fsockopen函数触发ssrf fsockopen() 函数建立与指定主机和端口的 socket 连接。然后&#xff0c;它将传入的 bas…

nginx的location的优先级和匹配方式

nginx的location的优先级和匹配方式 在http模块中有server&#xff0c;server模块中有location&#xff0c;location匹配的是uri 在一个server中&#xff0c;会有多个location&#xff0c;如何来确定匹配哪个location niginx的正则表达式 ^ 字符串的起始位置 $ 字符串的…

Mybatis用Byte[]存图片,前端显示图片

前端页面 static下 也就是说byte[] 转成JSON字符串后,和用BASE64编码后是一摸一样的,那么SpringBoot会自动将实体类转JSON字符串,也就是说根本不需要Base64编码 注意:两个值并非一摸一样,一个多了个双引号 byte[]的值前后有个双引号 有一点点区别 一个有双引号,一个没有…

7.定时器

定时器资源 CC2530有四个定时器TIM1~TIM4和休眠定时器 TIM1 定时器1 是一个独立的16 位定时器&#xff0c;支持典型的定时/计数功能&#xff0c;比如输入捕获&#xff0c;输出比较和PWM 功能。定时器有五个独立的捕获/比较通道。每个通道定时器使用一个I/O 引脚。定时器用于…

NewStarCTF2023week2-Unserialize?

代码审计&#xff1a; 定义了一个eval类&#xff0c;该类下有一个私有变量cmd和公有成员函数destruct()&#xff0c;该函数在对象的所有引用都被删除或类被销毁时会自动调用&#xff1b; 调用该函数则会执行一个正则表达式进行正则匹配&#xff0c;过滤掉了一些常用命令和bas…

机器人技术研究现状

随着科技的不断进步&#xff0c;机器人技术在制造业中的应用越来越广泛。本文将综述机器人技术的研究现状&#xff0c;主要包括机器人控制技术、机器人感知技术、机器人智能化技术、柔性机器人技术、协作机器人技术以及云机器人技术六个方面。 一、机器人控制技术 机器人控制技…

2023年中国云计算软件市场规模、市场结构及市场份额情况分析[图]

云计算是分布式计算的一种&#xff0c;指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序&#xff0c;然后&#xff0c;通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算软件类型分为三类&#xff0c;即基础设施即服务、平台即服…

调试工具:应用程序验证器Application Verifier(配合WinDbg)

1.应用程序验证器&#xff08;Application Verifier&#xff09;简介 说明&#xff1a;Application Verifier是来自微软官方的一款应用程序验证工具&#xff0c;主要用于帮助用户检测和调试内存损坏、危险的安全漏洞、Run-time检测等&#xff1b;是一款辅助开发工具&#xff0…

NIO教程

一&#xff0c;概述 原本的java是基于同步阻塞式的i/o通信&#xff08;bio) 性能低下&#xff0c;所以出现了nio这种非阻塞式的 二&#xff0c;Java 的I/O演进之路 2.1 i/o模型基本说明 i/o模型&#xff1a;就是用什么样的通道或者说通信模式和架构进行数据的传输和接收&am…

GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案

GPT实战系列-ChatGLM2部署UbuntuCuda11显存24G实战方案 自从chatGPT掀起的AI大模型热潮以来&#xff0c;国内大模型研究和开源活动&#xff0c;进展也如火如荼。模型越来越大&#xff0c;如何在小显存部署和使用大模型&#xff1f; 本实战专栏将评估一系列的开源模型&#xf…

MSVC编译dcmtk库

官网 https://www.dcmtk.org/en/dcmtk/ 下载源码和支持包 支持包在support文件夹下,选择适合你的MSVC版本 到官网下载cmake,官网cmake.org 解压源码 支持库 打开cmake-gui,填写源码目录(dcmtk解压的源码目录)和编译目录(自定义的目录) 点下面的configure,弹出选…

Maika 与越南童模们受邀请参加中国上海时装周 hanakimi 品牌开幕

金风送爽&#xff0c;秋高气和。2024中国上海时装周以“活力互链”为主题&#xff0c;于10月8日正式启幕。 魅力四射的越南童模身着著名时尚品牌MLB、Hana Kami、Jacadi的精美设计&#xff0c;迈着有力、专业但又不失优雅的步伐走上时尚舞台上海大型现场。无论是拍摄造型照还是…

机器学习的原理是什么?

训过小狗没? 没训过的话总见过吧? 你要能理解怎么训狗&#xff0c;就能非常轻易的理解机器学习的原理. 比如你想教小狗学习动作“坐下”一开始小狗根本不知道你在说什么。但是如果你每次都说坐下”然后帮助它坐下&#xff0c;并给它一块小零食作为奖励&#xff0c;经过多次…