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 地址不断请求 IP,DHCP 服务器仍然认为这些是“真实客户”,不会立刻回收这些 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 协议的安全隐患,从而更有效地加强网络防御体系。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。