游乐游手机版
首页/网络安全/文章详情

如何使用Nmap及脚本引擎高效发现网络服务

时间:2026-08-18 06:29
{ "position ":0, "title ": "介绍 ", "layout ": "doc-fullscreen ", "text ": " 介绍 n n本实验将带你了解 Nmap 脚本引擎,也就是 Nmap Scripting Engine(NSE)。它是 Nmap 网络扫描工具中非常重要的组成部分,能够进一步
{"position":0,"title":"介绍","layout":"doc-fullscreen","text":"## 介绍\n\n本实验将带你了解 Nmap 脚本引擎,也就是 Nmap Scripting Engine(NSE)。它是 Nmap 网络扫描工具中非常重要的组成部分,能够进一步扩展 Nmap 的能力,让高级网络发现、漏洞检测以及服务枚举等任务执行得更加高效。\n\n在当前的网络安全环境中,NSE 的价值非常突出。无论是网络管理员、安全工程师,还是道德黑客,都常常需要借助 Nmap 脚本引擎来梳理网络拓扑、识别潜在安全风险,并尽可能获取更全面的网络服务信息。在本实验中,你将先搭建一个本地网络服务,然后使用 Nmap 对其进行发现、扫描与分析。完成本实验后,你将为后续使用 Nmap 与 NSE 开展网络服务探测和信息收集打下坚实基础。\n","need_verify":false,"has_solution":false},{"position":1,"title":"设置用于扫描的本地网络服务","layout":"doc-workbench-split","text":"## 设置用于扫描的本地网络服务\n\n在这一步中,我们将先搭建一个简单的本地网络服务。这样做的原因很直接:在真实的网络安全与运维场景中,常见任务之一就是发现并分析网络中正在运行的服务。先创建这个基础服务,后续就可以使用 Nmap 对它进行端口扫描和服务识别,使整个实验过程更贴近实际的网络扫描场景。\n\n首先,打开终端。终端是一个基于文本的操作界面,你可以通过输入命令与计算机进行交互。打开终端后,先确认当前位置在项目目录中。项目目录可以理解为专门存放当前实验相关文件的文件夹。要切换到该目录,请在终端中输入以下命令:\n\n```bash\ncd /home/labex/project\n```\n\n接下来,需要创建一个简单的 HTML 文件。HTML,即超文本标记语言(HyperText Markup Language),用于创建网页。这个文件将由我们启动的服务器提供访问,就像你在互联网中浏览到的网页一样。该文件的内容可以模拟真实 Web 服务器向用户返回的页面内容。要创建这个文件,请使用以下命令:\n\n```bash\necho \"

Welcome to the hidden treasure chamber

\" > treasure.html\n```\n\n这个命令完成了两件事。首先,它生成了一段包含 HTML 标题的字符串;然后,它将这段内容重定向写入名为 `treasure.html` 的文件中。为了确认文件已经正确创建,你可以使用 `cat` 命令查看文件内容。`cat` 命令用于显示文件的文本内容。在终端中输入以下命令:\n\n```bash\ncat treasure.html\n```\n\n如果操作成功,你将看到刚刚写入的 HTML 内容:\n\n```\n

Welcome to the hidden treasure chamber

\n```\n\n现在,我们要启动一个简单的 HTTP 服务器。HTTP 是超文本传输协议(HyperText Transfer Protocol),也是网页在网络中传输时使用的基础协议。这里我们将使用 Python 的内置模块来启动这个服务器。该服务器会监听 8000 端口。你可以把端口理解为计算机上的一扇网络通信入口,数据流量通过它进出。服务器会从当前目录(也就是前面进入的项目目录)对外提供文件访问。请在终端中输入以下命令启动服务器:\n\n```bash\npython3 -m http.server 8000\n```\n\n运行该命令后,你应该会看到类似下面的输出:\n\n```\nServing HTTP on 0.0.0.0 port 8000 (https://0.0.0.0:8000/) ...\n```\n\n这段输出说明 HTTP 服务器已经成功运行,并正在 8000 端口等待连接请求。请务必保持这个终端窗口处于打开状态。如果关闭该窗口,服务器就会停止运行,之后也就无法继续使用 Nmap 对它进行扫描与分析了。\n","need_verify":true,"has_solution":false},{"position":2,"title":"使用 Nmap 发现网络服务","layout":"doc-workbench-split","text":"## 使用 Nmap 发现网络服务\n\n既然我们已经成功搭建了一个本地网络服务,接下来就可以使用 Nmap 来发现并分析它。Nmap 是 Network Mapper 的缩写,是一款功能强大且广泛使用的开源网络扫描工具。它常用于网络发现,也就是识别网络中有哪些设备和服务正在运行,同时也常被用于安全审计,帮助发现潜在的安全问题。\n\n首先,打开一个新的终端窗口。请确保之前运行 HTTP 服务器的终端不要关闭,因为服务器仍在后台提供服务。打开新的终端后,你需要切换到项目目录。这一步很重要,因为本实验中的相关命令都将在该目录下执行。请使用以下命令进入目录:\n\n```bash\ncd /home/labex/project\n```\n\n我们先从基础的端口扫描开始。端口扫描是一种用于检测目标设备上哪些端口处于开放状态、以及这些端口上是否运行服务的常见技术。端口可以理解为网络流量进入或离开系统的通道。在这个实验中,我们将扫描本地主机(也就是当前这台机器)上的 8000 端口。运行以下命令:\n\n```bash\nnmap -p 8000 localhost\n```\n\n这个命令表示让 Nmap 仅扫描本地机器的 8000 端口。执行后,你应该会看到类似如下的输出:\n\n```\nStarting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX\nNmap scan report for localhost (127.0.0.1)\nHost is up (0.000016s latency).\n\nPORT STATE SERVICE\n8000/tcp open http-alt\n\nNmap done: 1 IP address (1 host up) scanned in X.XX seconds\n```\n\n从输出结果可以看出,8000 端口处于开放状态,这说明有服务正在该端口上运行。其中,“http-alt” 是 Nmap 对替代 HTTP 服务的默认识别名称。\n\n接下来,我们希望进一步收集该服务的详细信息。这里将使用 Nmap 的 `-sV` 参数。这个参数用于启用服务版本探测,让 Nmap 尝试识别目标端口上运行的具体服务及其版本。对于网络安全分析来说,服务版本信息非常关键,因为它有助于判断该版本是否存在已知漏洞。请运行以下命令:\n\n```bash\nsudo nmap -sV -p 8000 localhost > /home/labex/project/nmap_output_service_version.txt\n```\n\n这个命令会对 8000 端口执行服务版本检测。`sudo` 表示以管理员权限运行命令,因为某些 Nmap 扫描操作可能需要更高权限。`>` 符号会将扫描结果重定向保存到名为 `nmap_output_service_version.txt` 的文件中,便于后续查看和分析。\n\n要查看扫描结果,请使用以下命令:\n\n```bash\ncat /home/labex/project/nmap_output_service_version.txt\n```\n\n你应该会看到关于 HTTP 服务的更多详细信息,包括可能识别出的软件名称和版本。输出示例如下:\n\n```\nStarting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX\nNmap scan report for localhost (127.0.0.1)\nHost is up (0.000016s latency).\n\nPORT STATE SERVICE VERSION\n8000/tcp open http Python http.server 3.10.X (Python 3.10.X)\n\nService detection performed. Please report any incorrect results at https://nmap.org/submit/ .\nNmap done: 1 IP address (1 host up) scanned in X.XX seconds\n```\n\n这段输出确认了目标服务是一个由 Python 驱动的 HTTP 服务器,与我们在上一步中部署的测试服务完全一致。通过这一步,你已经完成了基础的端口发现与服务版本识别,这也是使用 Nmap 进行网络服务探测的核心能力之一。\n","need_verify":true,"has_solution":false},{"position":3,"title":"使用 Nmap 脚本引擎 (NSE)","layout":"doc-workbench-split","text":"## 使用 Nmap 脚本引擎 (NSE)\n\nNmap 脚本引擎(Nmap Scripting Engine,NSE)是 Nmap 中非常强大的扩展能力,它允许你通过 Lua 脚本来增强 Nmap 的功能。Lua 是一种轻量级编程语言,而这些 NSE 脚本可以执行多种网络安全任务。例如,它们可以用于更深入的服务检测,更准确地识别目标主机上运行的网络服务;也可以用于漏洞扫描,帮助发现系统中可能存在的安全弱点。\n\n下面,我们使用 NSE 来收集这个 HTTP 服务器的更多信息。NSE 脚本通常会按照不同用途划分为多个类别,例如“default”(常用且安全的默认脚本)、“discovery”(用于网络发现)、“safe”(不会对目标系统造成破坏)以及“vuln”(用于漏洞扫描)等。\n\n首先,我们先查看系统中有哪些与 HTTP 相关的 NSE 脚本可用。为此,请运行以下命令:\n\n```bash\nls /usr/share/nmap/scripts/http*\n```\n\n这个命令会列出 `/usr/share/nmap/scripts/` 目录下所有以 `http` 开头的 NSE 脚本文件。执行后,你会看到一系列专门用于与 HTTP 服务交互的脚本。这些脚本可以完成不同类型的任务,从基础信息收集(例如获取网页标题)到更深入的检测(例如检查 HTTP 服务中的潜在漏洞)都有覆盖。\n\n现在,我们使用 `http-title` 脚本提取网页标题。`http-title` 是一个常用的 Nmap NSE 脚本,主要用于访问 HTTP 服务并识别其返回页面的标题信息。运行以下命令:\n\n```bash\nsudo nmap --script=http-title -p 8000 localhost > /home/labex/project/nmap_script_output.txt\n```\n\n在这条命令中,`sudo` 用于以管理员权限运行命令,因为部分 Nmap 功能可能需要提升权限。`nmap` 是主命令,`--script=http-title` 表示调用 `http-title` 脚本;`-p 8000` 指定目标端口为 8000,也就是我们的 HTTP 服务器所在端口;`localhost` 表示扫描目标是本机。最后,`>` 符号会将输出结果保存到 `/home/labex/project/nmap_script_output.txt` 文件中。\n\n接下来,查看脚本扫描结果。请运行以下命令:\n\n```bash\ncat /home/labex/project/nmap_script_output.txt\n```\n\n`cat` 命令用于显示文件内容。执行后,你应该会看到包含网页标题信息的输出。示例结果如下:\n\n```\nStarting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX\nNmap scan report for localhost (127.0.0.1)\nHost is up (0.000040s latency).\n\nPORT STATE SERVICE\n8000/tcp open http-alt\n|_http-title: Directory listing for /\n\nNmap done: 1 IP address (1 host up) scanned in X.XX seconds\n```\n\n现在,让我们尝试使用多个脚本执行更全面的扫描。“default” 类别中包含一组安全且常用的脚本,通常可以提供关于目标服务的实用信息。要针对 8000 端口上的 HTTP 服务运行“default”类别中的所有脚本,请使用以下命令:\n\n```bash\nsudo nmap --script=default -p 8000 localhost > /home/labex/project/nmap_default_scripts.txt\n```\n\n这条命令与前面的脚本扫描方式类似,不同之处在于这里不是指定某一个单独脚本,而是让 Nmap 一次性执行 “default” 类别中的全部默认脚本。\n\n接着,查看本次扫描结果。你可以再次使用 `cat` 命令:\n\n```bash\ncat /home/labex/project/nmap_default_scripts.txt\n```\n\n输出结果会包含多个默认 NSE 脚本收集到的服务信息,从而帮助你更全面地了解这个 HTTP 服务器的特征。\n\n最后,我们再了解一下脚本帮助功能,以便查询特定 NSE 脚本的说明文档。如果你想进一步查看 `http-title` 脚本的详细信息,可以运行以下命令:\n\n```bash\nnmap --script-help=http-title\n```\n\n这个命令会显示 `http-title` 脚本的帮助文档,包括脚本用途、使用方式以及输出格式等内容。在实际使用 Nmap 脚本引擎执行网络服务探测、信息收集或漏洞检测任务时,理解脚本文档非常重要,因为它能够帮助你准确掌握脚本功能,并正确应用到具体的扫描场景中。\n","need_verify":true,"has_solution":false},{"position":4,"title":"总结","layout":"doc-fullscreen","text":"## 总结\n\n在本次实验中,你学习了如何使用 Nmap 脚本引擎(NSE)进行网络服务发现、端口扫描和服务分析。你首先搭建了一个本地 HTTP 服务器,随后使用多种 Nmap 命令对该服务进行扫描,并逐步收集相关信息。\n\n通过本实验,你掌握了以下关键技能:搭建用于测试的基础网络服务;使用 Nmap 扫描开放端口并识别正在运行的服务;借助 `-sV` 参数进行服务版本探测;配合 NSE 脚本进一步获取更完整的服务信息;以及根据 Nmap 扫描结果分析目标服务具备哪些特征。对于网络管理员、安全研究人员和道德黑客来说,这些能力都十分重要。随着你对网络安全与服务探测工作的理解不断加深,Nmap 及其脚本引擎将在网络发现、安全评估和漏洞分析中发挥越来越重要的作用。\n","need_verify":true,"has_solution":false}
来源:https://labex.io/zh/tutorials/nmap-discover-network-services-with-nmap-and-its-scripting-engine-415931
上一篇Kali Linux与Metasploitable2网络安全环境搭建指南 下一篇Wireshark界面自定义与功能布局优化指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
DDoS攻击的三大主要形式:原理、特征与防御重点
网络安全 · 2026-08-31

DDoS攻击的三大主要形式:原理、特征与防御重点

DDoS攻击主要分为基于流量(Volume)、基于应用层(Application)和基于协议(Protocol)三种形式。流量型攻击通过海量数据淹没带宽;应用层攻击利用Web漏洞耗尽服务器资源;协议层攻击则利用TCP握手缺陷导致系统挂起。了解这些原理是制定针对性防御策略的基础。

如何有效预防和缓解DDoS攻击:5大核心策略详解
网络安全 · 2026-08-31

如何有效预防和缓解DDoS攻击:5大核心策略详解

面对DDoS攻击,单纯增加带宽已非长久之计。本文详解5大核心防护策略:优化网络硬件配置、建立DNS冗余机制、部署透明缓解技术、引入负载平衡器及专用Anti-DDoS模块。通过合理组合这些技术手段,可有效抵御SYN泛洪、Slowloris等常见攻击,保障业务连续性与网站可用性。

DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析
网络安全 · 2026-08-31

DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析

许多企业误以为CDN、防火墙或黑名单能完全抵御DDoS攻击。本文深入解析四大常见误区:CDN仅提供部分缓解、静态黑名单易失效、防火墙算力有限且可能成为目标、阈值警报仅具滞后性。了解这些局限性,有助于构建更立体的防御体系,避免在攻击发生时措手不及。

常见DDoS攻击类型详解:原理、特征与防御策略
网络安全 · 2026-08-31

常见DDoS攻击类型详解:原理、特征与防御策略

本文详细解析四种常见DDoS攻击类型:SYN Flood利用TCP三次握手缺陷耗尽资源;UDP Flood通过海量数据包造成带宽拥塞;ICMP Flood利用Ping请求消耗系统算力;应用层Flood针对Web脚本进行高频请求。了解其原理是制定有效防御策略的基础。

如何有效抵御DDOS攻击:4种核心防护方案解析
网络安全 · 2026-08-31

如何有效抵御DDOS攻击:4种核心防护方案解析

面对DDOS攻击,企业需构建多层防护体系。本文详解四大核心策略:利用反向路由器查询进行流量清洗,通过GCDN智能分配节点隐藏源站IP,部署负载均衡硬件分担压力,以及接入高防机房抵御数百G恶意流量。掌握这些技术,可最大程度保障业务连续性。