为什么 UDP 不能跳过
UDP 没有连接握手,扫描只能依靠 ICMP 报错与超时来推断端口状态,速度天然慢得多。但 DNS(53)、SNMP(161)、NTP(123)、NetBIOS(137/138)、mDNS(5353)等服务只在 UDP 扫描中可见,只做 TCP 扫描意味着这些风险从未进入评估范围。
基本信息
| 命令形式 | sudo nmap -sU(构造原始包需要 root) |
|---|---|
| 常用端口 | 53、123、161、500、1900、5353 |
| 状态判定 | ICMP port unreachable 为关闭,无响应为开放或被过滤 |
| 耗时控制 | --max-retries、--host-timeout、--top-ports 缩小范围 |
| 配套验证 | 对关键服务用服务层查询确认 |
典型使用场景
- 暴露面评估:确认是否存在可写的 SNMP 或开放的 DNS 递归
- 边界核查:确认 NTP 是否对外提供可被滥用的模式 6 查询
- 内网盘点:发现 NetBIOS 与 mDNS 广播泄露的主机名与服务
- 复测:TCP 端口收敛后,验证 UDP 侧的暴露是否同步处理
- 排障佐证:确认某服务到底是 UDP 未开还是被边界丢弃
UDP 扫描示例
UDP 扫描示例
sudo nmap -sU --top-ports 50 --max-retries 2 192.0.2.10 # 先扫高频端口
sudo nmap -sU -p 53,123,161,500,1900,5353 192.0.2.0/28 # 指定端口段
sudo nmap -sU -sV -p 161 192.0.2.10 # 结合服务识别
snmpwalk -v2c -c public 192.0.2.10 system # 服务层确认(本方资产)响应判定与含义
| 响应 | 端口状态 | 说明 |
|---|---|---|
| ICMP port unreachable | 关闭 | 最明确的一种结果 |
| 无任何响应 | 开放或被过滤 | 两者难以区分,需要服务层验证 |
| 返回应用层数据 | 开放 | 可直接读取响应内容确认服务 |
| ICMP 权限禁止 | 被防火墙拦截 | 说明中间设备存在策略 |
UDP 结果的不确定性高于 TCP:关闭与过滤难以区分,因此对重点端口(如 SNMP、DNS)应配合服务层查询确认,而不是只看扫描结论。
扫描范围要先按资产清单收敛:UDP 扫描对广播类服务敏感,向办公网全网段发起探测容易触发大量无关响应,也会给网络带来额外负担。
常见可发现的服务风险
- SNMP:团体字为默认值时可读取系统信息与接口列表
- DNS:开放递归会被用于放大攻击与解析滥用
- NTP:模式 6 查询可被用于放大流量
- NetBIOS 与 mDNS:泄露主机名、共享与服务信息
UDP 扫描建议安排在维护窗口执行:超时等待与响应风暴会同时占用网络带宽与扫描客户端的时间资源,与业务高峰叠加时体验很差。