寻找开放的 UDP 端口

NmapBeginner
立即练习

介绍

在本次挑战中,你将通过扫描服务器上的异常 UDP 服务来调查一起潜在的安全漏洞。挑战内容包括设置一个监听在 9995 端口的异常 UDP 服务器,然后使用 Nmap 对本地主机(localhost)进行 UDP 扫描,专门针对 9990-10000 端口范围。Nmap 的扫描结果将保存到 ~/project/udp_scan_results.txt

你的任务是识别并报告指定范围内开放的 UDP 端口号,并将其打印到控制台。你将使用 grep 解析 Nmap 的输出,并使用 awksed 提取端口号。如果未发现开放的 UDP 端口,则应打印「No open UDP port found」。挑战还包括验证步骤,以确保 Nmap 扫描结果文件存在并包含预期的输出。

这是一个「挑战」项目,它与「引导实验」的不同之处在于,你需要尝试独立完成挑战任务,而不是按照实验步骤一步步学习。挑战通常具有一定的难度。如果你觉得困难,可以与 Labby 讨论或查看解决方案。历史数据显示,这是一个针对初学者级别的挑战,通过率为 100%。它在学习者中获得了 99% 的好评率。

寻找开放的 UDP 端口

通过扫描服务器上的异常 UDP 服务来调查潜在的安全漏洞。

任务

  • 使用 Nmap 对本地主机进行 UDP 扫描,专门针对 9990-10000 端口,并将结果保存到 ~/project/udp_scan_results.txt
  • 识别指定范围内开放的 UDP 端口号,并将其存储在名为 OPEN_UDP_PORT 的环境变量中。

要求

  1. 使用 nmap 命令执行 UDP 扫描。
  2. 将 Nmap 扫描结果保存到 ~/project 目录下名为 udp_scan_results.txt 的文件中。
  3. Nmap 命令必须扫描本地主机(127.0.0.1)的 9990 到 10000 端口。
  4. 使用 grep 解析 udp_scan_results.txt 文件并识别开放端口。
  5. 将最小的开放端口号存储在名为 OPEN_UDP_PORT 的环境变量中。如果没有端口开放,请将该变量设置为「NONE」。

示例

如果 1234 端口开放:

echo $OPEN_UDP_PORT
1234

如果在指定范围内没有 UDP 端口开放:

echo $OPEN_UDP_PORT
NONE

提示

  • 运行 Nmap 进行 UDP 扫描时,请记得使用 sudo
  • 在 Nmap 中使用 -sU 选项来指定 UDP 扫描。
  • 使用 grep 在 Nmap 输出文件中查找包含 open 的行。
  • 使用 awksedgrep 的输出中提取端口号。
  • 使用 export OPEN_UDP_PORT=value 来设置环境变量。
✨ 查看解决方案并练习

总结

在本次挑战中,目标是识别本地主机上 9990-10000 范围内的开放 UDP 端口,模拟对异常 UDP 服务的安全调查。这涉及使用 Python 设置异常 UDP 服务器,使用带有 -sU 选项的 Nmap 执行 UDP 扫描,并将扫描结果保存到文件中。

解决方案要求使用 grep 解析 Nmap 输出文件以查找指示开放端口的行,然后使用 awksed 提取端口号。最后,将识别出的开放端口号打印到控制台,如果在指定范围内未检测到开放端口,则打印「No open UDP port found」。本次挑战强调了使用 Nmap 进行 UDP 扫描以及使用文本处理工具分析扫描结果的方法。