Windows 中如何编写 PowerShell脚本 检测局域网内的非法 DHCP 服务器

胖瑶酱_9675

胖瑶酱_9675

2026-07-25

903人浏览

原创

可通过powershell脚本探测局域网非法dhcp服务器:以管理员身份发送dhcpdiscover广播,监听dhcpoffer响应,排除已知合法ip后标记可疑服务器。

在 windows 中,可通过 powershell 脚本主动探测局域网内响应 dhcp 请求的设备,识别非授权(非法)dhcp 服务器。核心思路是:构造并发送 dhcp 发现(dhcpdiscover)广播包,监听来自不同 ip 的 dhcpoffer 响应,排除已知合法服务器后,其余即为可疑/非法 dhcp 服务。

准备前提:启用必要权限与模块

PowerShell 默认不提供原生 DHCP 协议栈,需借助 .NET Socket 手动构造 UDP 数据包。脚本需以管理员身份运行(因需绑定 67/68 端口、发送广播、绕过防火墙限制),且建议关闭本地 Windows 防火墙临时测试(或添加入站 UDP 68 规则)。

  • 确保执行策略允许本地脚本:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • 无需额外安装模块,纯 PowerShell + .NET Framework 4.5+ 即可运行(Windows 10/11 默认满足)
  • 记录已知合法 DHCP 服务器 IP(如域控制器、专用 DHCP 设备),用于后续比对排除

构造并发送 DHCPDISCOVER 广播请求

脚本使用 UDP socket 向 255.255.255.255:67 发送标准 DHCPDISCOVER(DHCP 消息类型 1),源端口固定为 68,包含随机 xid 和客户端标识。关键点在于设置 socket 选项:$socket.SetSocketOption('IP', 'Broadcast', 1) 允许广播;$socket.EnableBroadcast = $true。

  • 构造最小可行 DHCP 报文:OP=1(BOOTREQUEST)、HTYPE=1(Ethernet)、HLEN=6、XID=随机 4 字节
  • 必须填充 chaddr(客户端 MAC 地址,从网卡获取)、flags=0x8000(广播响应标记)
  • 不设 ciaddr/yiaddr/siaddr/giaddr,全部置零;option 53(DHCP Message Type)= 1(Discover)

监听并解析 DHCPOFFER 响应

在同一脚本中开启异步接收线程(或循环轮询),监听 0.0.0.0:68,超时建议设为 3–5 秒。收到 UDP 包后,按 DHCP 报文格式解析:检查 OP=2(BOOTREPLY)、确认 option 53=2(Offer)、提取 siaddr(DHCP Server IP)和 yiaddr(提议 IP)。

亿图脑图
亿图脑图

亿图脑图是一款AI思维导图工具,万兴科技推出的跨端AI思维导图助手。

下载
  • 过滤掉源 IP 为本机或已知合法 DHCP 服务器的响应
  • 同一 IP 多次响应只记录一次,避免重复告警
  • 可进一步解析 option 54(Server Identifier),它应与 siaddr 一致——若不一致,属异常实现,需重点标记

输出结果与简单告警

脚本最终输出发现的非法 DHCP 服务器列表,含 IP、响应时间、是否匹配 option 54。支持导出 CSV 或触发 Windows 通知(通过 [System.Windows.Forms.MessageBox]::Show())。

  • 示例输出:⚠️ 发现非法 DHCP 服务器:192.168.1.233(未登记,siaddr=192.168.1.233, option54=192.168.1.233)
  • 可选增强:调用 Test-Connection -Count 1 -Quiet 验证 IP 是否在线;用 Get-NetIPAddress -AddressFamily IPv4 自动获取本机子网,限定扫描范围
  • 注意:该方法无法穿透 VLAN,仅限当前广播域;交换机启用了 DHCP Snooping 时可能拦截非法响应

不复杂但容易忽略细节,比如广播权限、端口复用冲突、MAC 地址字节序、option 解析偏移。实际部署前建议在测试网络小范围验证,避免误报干扰生产环境。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

shell脚本

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

920

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2892

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

976

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

869

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2616

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4892

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

787

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
尚观shell视频教程
尚观shell视频教程

共8课时 | 1.9万人学习

Linux开发视频教程
Linux开发视频教程

共18课时 | 4.6万人学习

Perl 入门教程
Perl 入门教程

共29课时 | 31.3万人学习