关于UDP端口扫描概述

news2025/4/18 6:15:17

尽管互联网上大多数流行服务都基于 TCP 协议运行,但 UDP 服务也广泛部署。DNS、SNMP 和 DHCP(注册端口 53、161/162 和 67/68)是最常见的服务之一。

由于 UDP 扫描通常比 TCP 扫描更慢、更困难,一些安全审计人员可能会忽略这些端口。这是一个错误,因为可利用的 UDP 服务非常普遍,攻击者也不会忽视整个协议。幸运的是,Nmap 可以帮助清查 UDP 端口。

通过 -sU 选项激活 UDP 扫描。它可以与 TCP 扫描类型(如 SYN 扫描 -sS)结合使用,在同一次运行中检查两种协议。

UDP 扫描通过向每个目标端口发送 UDP 数据包来工作。对于大多数端口,这个数据包将是空的(没有负载),但对于一些更常见的端口,会发送特定于协议的负载。根据响应(或没有响应),端口被分配到四种状态之一,如下表所示。

表 1.1. Nmap 如何解释 UDP 探测响应

探测响应分配状态
来自目标端口的任何 UDP 响应(不寻常)open(开放)
没有收到响应(即使经过重传)open|filtered(开放或被过滤)
ICMP 端口不可达错误(类型 3,代码 3)closed(关闭)
其他 ICMP 不可达错误(类型 3,代码 1、2、9、10 或 13)filtered(被过滤)

这个表格中最令人好奇的元素可能是 open|filtered 状态。它是 UDP 扫描最大挑战的症状:开放端口很少响应空探测。那些 Nmap 有特定协议负载的端口更有可能收到响应并被标记为 open,但对于其余端口,目标 TCP/IP 栈只是将空数据包传递给监听应用程序,后者通常会立即丢弃它作为无效数据。如果所有其他状态的端口都会响应,那么可以通过排除法推断出开放端口。不幸的是,防火墙和过滤设备也已知会在没有响应的情况下丢弃数据包。因此,当 Nmap 在多次尝试后没有收到响应时,它无法确定端口是 open 还是 filtered

在 Nmap刚 发布时,过滤设备比较少见,以至于 Nmap 可以(并且确实)假设端口是 open。现在随着互联网更好的进行防护,所以 Nmap 在 2004 年(版本 3.70)改变为将无响应的 UDP 端口报告为 open|filtered

 nmap -sU -v 192.168.1.123
 ​
 Starting Nmap ( https://nmap.org )
 Nmap scan report for 192.168.1.123
 (The 997 ports scanned but not shown below are in state: closed)
 PORT    STATE         SERVICE
 53/udp  open|filtered domain
 67/udp  open|filtered dhcpserver
 111/udp open|filtered rpcbind
 MAC Address: 00:02:E3:14:11:02 (Lite-on Communications)
 ​
 Nmap done: 1 IP address (1 host up) scanned in 999.25 seconds

扫描展示了 open|filtered 模糊问题以及另一个问题:UDP 扫描可能很慢。

Nmap 提供了绕过这两个问题的方法,如下两节所述。

区分开放和被过滤的 UDP 端口

案例中,除了三个 open|filtered 端口外,其他所有端口都是 closed。因此,扫描成功地将可能开放的端口缩小到少数几个。情况并非总是如此。如下展示了针对192.168.1.223的 UDP 扫描。

 krad# nmap -sU -T4 192.168.1.223
 ​
 Starting Nmap ( https://nmap.org )
 All 1000 scanned ports on 192.168.1.223 are open|filtered
 ​
 Nmap done: 1 IP address (1 host up) scanned in 5.50 seconds

在这种情况下,扫描并未缩小开放端口的范围。所有 1000 个端口都是 open|filtered。需要新的策略。

表 1.1,“Nmap 如何解释 UDP 探测响应” 显示 open|filtered 状态发生在 Nmap 向特定端口发送 UDP 探测后未收到任何响应时。它还显示,当 Nmap 收到 open|filtered 端口的响应时,状态将更改为 open。原因这些服务很少响应是因为 Nmap 发送的空数据包被认为是无效的。不幸的是,UDP 服务通常定义自己的数据包结构,而不是遵循 Nmap 可以始终发送的某种通用格式。一个 SNMP 数据包与 SunRPC、DHCP 或 DNS 请求数据包完全不同。

为了向每个流行的 UDP 服务发送正确的数据包,Nmap 需要一个大型数据库来定义探测格式。幸运的是,Nmap 有 nmap-service-probes,这是服务和版本检测子系统的一部分,将在第 7 章,“服务和应用程序版本检测” 中描述。

当通过 -sV(或 -A)启用版本扫描时,它将向每个 open|filtered 端口(以及已知的 open 端口)发送 UDP 探测。如果任何探测从 open|filtered 端口收到响应,状态将更改为 open。在 192.168.1.123扫描中添加 -sV 的结果如下所示。

 krad# nmap -sUV -F 192.168.1.123
 ​
 Starting Nmap ( https://nmap.org )
 Nmap scan report for 192.168.1.123
 Not shown: 997 closed ports
 PORT    STATE         SERVICE    VERSION
 53/udp  open          domain     ISC BIND 9.2.1
 67/udp  open|filtered dhcpserver
 111/udp open          rpcbind    2 (rpc #100000)
 MAC Address: 00:02:E3:14:11:02 (Lite-on Communications)
 ​
 Nmap done: 1 IP address (1 host up) scanned in 1037.57 seconds

这个新的扫描显示端口 111 和 53 肯定是开放的。系统并不完美——端口 67 仍然是 open|filtered

我们可以推测,端口是开放的,但 Nmap 没有适用于 DHCP 的有效版本探测。

另一个棘手的服务是 SNMP,它通常只有在提供正确的Community(社区字符串)时才会响应。许多设备配置了社区字符串 public,但并非全部。虽然这些结果并不完美,但能够确定两个测试端口中的两个的真实状态仍然很有帮助。

而对于192.168.11.230,使用版本检测改进 UDP 扫描结果:

 nmap -sUV -T4 192.168.11.230
 ​
 Starting Nmap ( https://nmap.org )
 Nmap scan report for 192.168.11.230
 Not shown: 999 open|filtered ports
 PORT   STATE SERVICE VERSION
 53/udp open  domain  ISC BIND 9.3.4
 ​
 Nmap done: 1 IP address (1 host up) scanned in 3691.89 seconds

提示信息:

之前端口扫描192.168.11.230花费了5秒,使用版本检测改进UDP扫描花费了1个小时。Nmap 版本 5.10BETA1 及更高版本有一个负载系统,如果选择进行端口扫描或主机发现,它会向 30 多个知名的 UDP 端口发送正确的服务协议请求。虽然它不如版本检测全面,但它会迅速识别192.168.11.230中的开放端口 53。

提高 UDP 扫描速度

UDP 扫描的另一个主要挑战是提高其速度。开放和被过滤端口很少发送响应,导致 Nmap 超时并进行重传,以确保数据包未丢失。关闭端口往往是一个更大的问题,它们通常会发送 ICMP 端口不可达错误。但与 TCP 中关闭端口对 SYN 或 connect 扫描发送 RST 数据包不同,许多主机默认对 ICMP 端口不可达消息进行速率限制。Linux 和 Solaris 在这方面尤为严格。例如,192.168.1.123上的 Linux 2.4.20 内核将目的地不可达消息限制为每秒一个(在 net/ipv4/icmp.c 中)。这解释了为什么示例 5.4 中的扫描如此缓慢。

Nmap 检测到速率限制并相应地降低速度,以避免发送网络无法处理的无用数据包。然而,对于 Linux 风格的每秒一个数据包限制,扫描 65,536 个端口需要超过 18 小时。以下是一些提高 UDP 扫描性能的建议。此外,第 6 章“优化 Nmap 性能”中还提供了更详细的讨论和一般性建议

  • 增加主机并行性

如果 Nmap 从单个目标主机每秒仅收到一个端口不可达错误,它可以通过同时扫描多个主机(例如 100 个)来每秒接收 100 个响应。通过向 --min-hostgroup 传递大值(例如 100)来实现这一点。

  • 先扫描常见端口

非常少的 UDP 端口号被广泛使用。使用 -F 选项扫描最常见的 100 个 UDP 端口将快速完成。你可以在后台启动对网络的多天 65K 端口扫描,同时处理这些结果。

在版本检测扫描中添加 --version-intensity 0

如前所述,版本检测(-sV)通常需要区分开放和被过滤的 UDP 端口。版本检测相对缓慢,因为它涉及向每个 openopen|filtered 端口发送大量特定于应用程序协议的探测。指定 --version-intensity 0 可以指示 Nmap 仅尝试最有可能对特定端口号有效的探测。它通过使用 nmap-service-probes 文件中的数据来实现这一点。这种选项的性能影响是显著的,如本节后面的示例所示。

  • 从防火墙内部扫描

与 TCP 一样,包过滤器会显著减慢扫描速度。许多现代防火墙使设置包速率限制变得容易。如果可以通过从防火墙内部而不是跨防火墙发起扫描来绕过此问题,请这样做。

  • 使用 --host-timeout 跳过慢速主机

受到 ICMP 速率限制的主机可能比那些对每个探测都快速响应的主机需要多个数量级的时间来扫描。指定最大扫描时间(例如 15m 表示 15 分钟)会导致 Nmap 在超出该时间后放弃扫描单个主机。这使你可以快速扫描所有响应迅速的主机。你可以在后台处理这些慢速主机。

  • Use -v and chill out

启用冗长输出(-v)后,Nmap 会提供每个主机的预计扫描完成时间。无需密切监视它。去睡一觉,去你最喜欢的酒吧,看书,完成其他工作,或者以其他方式娱乐自己,同时让 Nmap 不知疲倦地为你扫描。

一个完美的提高 UDP 扫描速度的例子是示例 如下,我们再次运行了该扫描。这次添加了 -F --version-intensity 0 选项,将一个小时的扫描时间缩短至 13 秒!然而,同样的关键信息(53 端口上的 ISC Bind 守护进程)被检测到。

 nmap -sUV -T4 -F --version-intensity 0 192.168.11.230
 ​
 Starting Nmap ( https://nmap.org )
 Nmap scan report for 192.168.11.230
 Not shown: 99 open|filtered ports
 PORT   STATE SERVICE VERSION
 53/udp open  domain  ISC BIND 9.3.4
 ​
 Nmap done: 1 IP address (1 host up) scanned in 12.92 seconds

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328899.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lettuce与Springboot集成使用

一、Lettuce核心优势与Spring Boot集成背景 Lettuce特性 基于Netty的非阻塞I/O模型,支持同步/异步/响应式编程线程安全:共享单连接实现多线程并发操作,性能衰减低原生支持Redis集群、哨兵、主从架构,自动重连机制保障高可用Spring…

《系统分析师-基础篇-1-6章总结》

第1章 绪论 系统分析师角色 职责:需求分析、系统设计、项目管理、技术协调。 能力要求:技术深度(架构设计、开发方法) 业务理解(企业流程、行业知识) 沟通能力。 系统开发生命周期 传统模型&#xf…

【YOLO系列(V5-V12)通用数据集-电梯内电动车检测数据集】

YOLO格式的电梯内电动车检测数据集,适用于YOLOv5-v11所有版本,可以用于本科毕设、发paper、做课设等等,有需要的在这里获取: 电梯内电动车检测数据集 数据集专栏地址:https://blog.csdn.net/qq_41304809/category_1290…

算法题(114):矩阵距离

审题: 本题需要我们找出所有0距离最近的1的曼哈顿距离 思路: 方法一:多源bfs 分析曼哈顿距离: 求法1:公式法,带入题目公式,利用|x1-x2||y1-y2|求出 求法2:曼哈顿距离就是最短距离 本…

0102-web架构网站搭建-基础入门-网络安全

文章目录 1. 常规2 站库分离3 前后端分离4 集成环境5 docker6 分配站结语 1. 常规 结构:源码数据都在同服务器 影响:无,常规安全测试手法 2 站库分离 结构:源码和数据库不在同服务器 存储:其他服务器上数据库或者…

Linux系统编程:进程管理、内存对比与树莓派应用

一、认识进程和线程,在Linux系统下查看系统中各进程的编号pid并终止一个进程pid 1.进程和线程 ​​进程​​:操作系统分配资源(如内存、CPU时间片)的基本单位。每个进程有独立的内存空间,进程间通信需要较复杂的机制…

ue5 仿鬼泣5魂类游戏角色和敌人没有碰撞

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题原因二、设置碰撞2.读入数据 总结 前言 ue5 仿鬼泣5魂类游戏角色和敌人没有碰撞 一、问题原因 在UE5中,角色和敌人没有碰撞可能是由多种原因导致的,以下是一些可能的原因及解决方法&#xff1a…

基于Flask的MBA考生成绩查询系统设计与实现

基于Flask的MBA考生成绩查询系统设计与实现 序言 2024年吉林大学MBA在职研究生考试成绩公布后,考生收到的成绩单为PDF格式文档。为方便考生快速查询个人成绩及排名信息,笔者基于Python Flask框架开发了本查询系统。该系统支持关键词模糊查询、序号范围…

DHCP之报文格式

字段说明: op (op code): 表示报文的类型,取值为 1 或 2,含义如下 1:客户端请求报 2:服务器响应报文 Secs (seconds):由客户端填充,表示从客户端开始获得 IP 地址或 IP 地址续借后所使用了的秒数,缺省值为 3600s。 F…

React 文件上传新玩法:Aliyun OSS 加持的智能上传组件

文件上传是前端开发中的“老朋友”,但如何让它既简单又强大,还能无缝对接云端存储?今天,我要带你认识一个超酷的 React 组件 AliUploader,它不仅支持拖拽上传、批量编辑和文件排序,还直接把文件传到 Aliyun…

群体智能优化算法-变色龙优化算法(Chameleon Swarm Algorithm, CSA,含Matlab源代码)

摘要 变色龙优化算法(Chameleon Swarm Algorithm, CSA)是一种受变色龙行为启发的群体智能优化算法。该算法模拟了变色龙在自然界中通过变换颜色来适应环境的能力,以此为基础,设计了一个适应性强、搜索能力广泛的优化算法。CSA 通…

使用 React 和 Konva 实现一个在线画板组件

文章目录 一、前言二、Konva.js 介绍三、创建 React 画板项目3.1 安装依赖3.2 创建 CanvasBoard 组件 四、增加画布控制功能4.1 清空画布4.2 撤销 & 重做功能 五、增加颜色和画笔大小选择5.1 选择颜色5.2 选择画笔大小 六、最终效果七、总结 一、前言 在线画板是许多应用&…

NVR接入录像回放平台EasyCVR视频系统守护舌尖上的安全,打造“明厨亮灶”云监管平台

一、方案背景 近年来,餐饮行业食品安全和卫生等问题频发,比如后厨卫生脏乱差等,持续引发关注,这些事情导致连锁反应,使其收益遭受损失。同时,给消费者造成了心理和生理上的伤害。 加强餐饮行业的监管成为…

Cribl 导入文件来检查pipeline 的设定规则(eval 等)

Cribl 导入文件来检查pipeline 的设定规则(eval 等) 从这个页面先下载,或者copy 内容来创建pipeline: Reducing Windows XML Events | Cribl Docs

一周学会Pandas2 Python数据处理与分析-Jupyter Notebook安装

锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Jupyter (Project Jupyter | Home)项目是一个非营利性开源项目,于2014年由IPython项目中诞生…

deepseek v3-0324 Markdown 编辑器 HTML

Markdown 编辑器 HTML 以下是一个美观的 Markdown 编辑器 HTML 页面&#xff0c;支持多种主题切换和实时预览功能&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&q…

视频设备轨迹回放平台EasyCVR如何搭建公共娱乐场所远程视频监控系统

一、背景介绍 由于KTV、酒吧、足疗店等服务场所人员流动频繁、环境复杂&#xff0c;一直是治安管理的重点区域。为有效打击 “黄赌毒”、打架斗殴、寻衅滋事等违法犯罪的活动&#xff0c;打造安全有序的娱乐消费环境&#xff0c;我国相关部门将加大对这类场所的清查与管控力度…

网络安全基础知识总结

什么是网络安全 采取必要措施&#xff0c;来防范对网络的攻击&#xff0c;侵入&#xff0c;干扰&#xff0c;破坏和非法使用&#xff0c;以及防范一些意外事故&#xff0c;使得网络处于稳定可靠运行的状态&#xff0c;保障网络数据的完整性、保密性、可用性的能力(CIA)。 举例…

【工具】在 Visual Studio 中使用 Dotfuscator 对“C# 类库(DLL)或应用程序(EXE)”进行混淆

在 Visual Studio 中使用 Dotfuscator 进行混淆 Dotfuscator 是 Visual Studio 自带的混淆工具&#xff08;Dotfuscator Community Edition&#xff0c;简称 CE&#xff09;。它可以混淆 C# 类库&#xff08;DLL&#xff09;或应用程序&#xff08;EXE&#xff09;&#xff0c…

积分赛——获取环境温度

设计要求 从DS18B20温度传感器上获取环境温度&#xff0c;并将其温度值显示到数码管上&#xff08;保留两位小数&#xff09;。 当“S4”定义为发送按键&#xff0c;按键S4按下时&#xff0c;串口向PC端发送当前采集的温度值&#xff1b; 串口发送格式&#xff1a; Temp:26.…