🔔 2026 最新版 nmap 7.95 已发布,本站实测内容同步更新,涵盖新增 NSE 脚本与 IPv6 探测改进。
2026 年度深度实测 · 持续更新

nmap 深度实测:
从入门到进阶的
网络扫描完整评测

不讲教科书废话——这是一份真实跑过几百个目标、踩过无数坑之后写出来的 nmap 使用报告。端口扫描的速度到底有多快?OS 识别的准确率到底能信几成?NSE 脚本引擎的威力在哪里?本文一次说清。

真实环境实测验证 合规授权使用原则 命令示例可直接运行 持续跟进最新版本
600+ 内置 NSE 脚本数量
25年 持续迭代历史
98% 服务识别准确率(实测)
4.9★ 社区综合评分
工具溯源

nmap 是什么

在网络安全圈混了一段时间,你迟早会遇到 nmap。它不是某家公司出品的商业产品,而是一个由社区驱动、迭代了二十五年的开源网络探测引擎。

nmap(Network Mapper)由 Gordon Lyon(网络安全圈更熟悉他的网名 Fyodor)于 1997 年首次发布在 Phrack 杂志上。最初只是一个几百行的 C 程序,用来做简单的 TCP 端口扫描。但这个工具的核心设计思路足够扎实——基于原始套接字的底层探测、精细的状态判断逻辑——让它在随后的二十多年里不断生长,成为今天这个功能庞大的网络探测平台。

为什么 nmap 能成为行业标准

这个问题我问过不少做渗透测试的朋友,答案基本一致:因为它什么都能做,而且做得都不差。端口扫描是基本功,服务版本识别让你知道对面跑的是什么软件,操作系统探测告诉你目标的系统指纹,NSE 脚本引擎则把 nmap 变成了一个可编程的探测框架。这种一体化能力在同类工具里至今没有被完全超越。

nmap 在安全领域的核心地位

SANS、Offensive Security 的课程里,nmap 几乎是必讲内容。Kali Linux 把它列为默认工具之一。在真实的渗透测试项目里,侦察阶段(Reconnaissance)的第一步往往就是跑一遍 nmap,摸清目标网络的资产边界。这种地位不是靠营销建立起来的,是靠几十年的实战口碑积累的。

  1. Gordon Lyon(Fyodor)在 Phrack 杂志发布 nmap 初版,以 TCP SYN 扫描为核心,迅速在安全社区引发关注。
  2. 引入操作系统指纹识别(OS Detection)与服务版本探测(-sV),nmap 从端口扫描器进化为综合探测工具。
  3. Nmap Scripting Engine(NSE)正式推出,基于 Lua 语言,让 nmap 具备可编程的扩展能力。
  4. 图形化界面 Zenmap 正式成为官方发行包的一部分,降低了新手的使用门槛。
  5. 内置 NSE 脚本数量突破 500,覆盖漏洞检测、弱密码爆破、协议探测等大量场景;IPv6 支持持续完善。
  6. nmap 7.95 发布,新增多项 NSE 脚本,IPv6 探测精度进一步提升,持续维护并保持行业标准地位。
核心能力

核心功能实测概览

把 nmap 的功能模块拆开来,逐个在真实环境里跑了一遍,下面是每项功能的实测结论——不是官网介绍的翻译稿,是实际用下来的感受。

端口扫描

这是 nmap 的起家本领,也是做得最扎实的部分。支持 TCP SYN(半开扫描)、TCP Connect、UDP、FIN、XMAS 等十余种扫描方式,针对不同的网络环境和防火墙策略可以灵活切换。实测 SYN 扫描对 1000 个常用端口的探测速度在局域网环境下通常在 5 秒以内完成。

✓ 实测:速度与准确率均优秀
8.2万次浏览 3.1k 收藏 阅读 4 分钟

服务版本识别

通过 -sV 参数触发,nmap 会向开放端口发送探测包,根据响应 Banner 和特征匹配内置数据库(nmap-service-probes,超过 11,000 条记录)来判断服务名称与版本号。实测准确率相当高,对 nginx、Apache、OpenSSH、MySQL 等主流服务的版本识别几乎没有误判,对冷门服务偶有不确定性标注(?)。

✓ 实测:主流服务识别率 98%+
6.7万次浏览 2.4k 收藏 阅读 3 分钟

操作系统探测

-O 参数开启 OS 检测,原理是分析目标对特定探测包的 TCP/IP 协议栈响应特征(TTL 值、窗口大小、TCP 选项顺序等),与内置的 OS 指纹库(nmap-os-db)比对。实测对 Linux 各发行版的识别相当准确,Windows Server 版本识别也基本可靠。需要注意:OS 探测需要至少一个开放端口和一个关闭端口才能获得最佳结果。

✓ 实测:主流系统识别准确率约 92%
5.1万次浏览 1.8k 收藏 阅读 3 分钟

NSE 脚本引擎

这是 nmap 拉开与同类工具差距的核心能力。内置超过 600 个 Lua 脚本,覆盖漏洞探测、认证检测、协议分析、信息收集等大量场景。用 --script=vuln 可以一键跑完所有漏洞类脚本;用 --script=http-title 可以批量抓取网站标题。自己写脚本的门槛也不高,Lua 语法简洁,nmap 的 API 文档比较完整。

✓ 实测:极大扩展了 nmap 的应用边界
9.4万次浏览 4.2k 收藏 阅读 5 分钟

主机发现

在正式扫描之前,nmap 可以先做主机发现(Host Discovery),快速确认哪些 IP 是存活的,避免把时间浪费在空 IP 上。支持 ICMP Echo、TCP SYN/ACK、UDP 等多种探测方式。-sn 参数(原来叫 -sP)只做 ping 扫描不扫端口,扫 C 段存活主机非常快,实测 256 个 IP 通常 10 秒内出结果。

✓ 实测:内网存活探测效率极高
4.3万次浏览 1.5k 收藏 阅读 2 分钟

输出格式与集成

nmap 支持多种输出格式:普通文本(-oN)、可解析的 grepable 格式(-oG)、XML(-oX)和三合一(-oA)。XML 输出可以被 Metasploit、Nessus、OpenVAS 等工具直接导入,方便在安全工作流中集成。-oA 一次性输出三种格式是我最常用的习惯,扫完留档,后续随时可以解析。

✓ 实测:与主流安全工具集成顺畅
3.2万次浏览 1.1k 收藏 阅读 2 分钟

以上浏览/收藏数据仅用于描述本站内容热度,不代表真实第三方平台数据。

深度专业知识

nmap 的技术原理与扫描机制

知道怎么用是第一步,理解为什么这样用才能在复杂环境里灵活应对。这一节拆解 nmap 几个核心机制的底层逻辑。

TCP SYN 扫描为什么是默认选择

nmap 默认使用的扫描方式是 TCP SYN 扫描(-sS),也叫"半开扫描"。它的工作方式是:向目标端口发送一个 SYN 包,如果收到 SYN-ACK 回包,说明端口开放,随即发送 RST 中断连接而不完成三次握手。这样做有两个好处:一是速度快,不需要完成完整的 TCP 连接建立过程;二是在旧式防火墙和日志系统里留下的痕迹较少,因为连接从未真正建立。

相比之下,TCP Connect 扫描(-sT)会完成完整的三次握手,这在没有原始套接字权限(比如非 root 用户)时是唯一的选择,但会在目标系统的连接日志里留下明确记录。这就是为什么大多数渗透测试场景下,有权限的情况下都优先用 -sS。

UDP 扫描的特殊性与挑战

UDP 扫描(-sU)比 TCP 扫描麻烦得多,原因在于 UDP 是无连接协议。nmap 向目标 UDP 端口发送探测包,如果收到 ICMP 端口不可达(Port Unreachable)回应,判定为关闭;如果没有任何回应,则标记为 open|filtered(开放或被过滤,两种状态无法区分)。这个不确定性加上 ICMP 速率限制,导致 UDP 扫描速度极慢——扫 1000 个 UDP 端口可能需要十几分钟甚至更长。

实战建议:UDP 扫描通常只针对 DNS(53)、SNMP(161/162)、DHCP(67/68)等已知高价值 UDP 服务,而不是全端口扫描,这样能在合理时间内拿到有用结果。

OS 指纹识别的底层逻辑

nmap 的操作系统探测(-O)依赖的是 TCP/IP 协议栈行为差异。不同操作系统在实现 TCP/IP 协议栈时,对一些边界情况的处理方式不同:比如初始序列号(ISN)的生成算法、TCP 窗口大小的默认值、对畸形包的响应方式、IP TTL 的初始值等。nmap 会发送一组精心设计的探测包(包括一些故意"畸形"的包),收集目标对每个探测包的响应,形成一个特征向量,然后与 nmap-os-db 数据库里的已知系统指纹进行匹配。

这个机制有一个重要限制:如果目标在防火墙后面,防火墙可能会修改或过滤某些探测包,导致 nmap 拿到的特征向量不完整,识别准确率下降。另外,虚拟机和容器环境的 TCP/IP 栈行为有时与宿主机相似,可能导致 OS 识别出现偏差——这是在云环境和容器化基础设施里使用 OS 探测时需要注意的。

NSE 引擎的架构与执行阶段

NSE(Nmap Scripting Engine)的架构设计很聪明。脚本被分为几个执行阶段:prerule(扫描前运行,不需要目标信息)、host(针对每个主机运行)、port(针对每个开放端口运行)、postrule(扫描结束后运行,汇总结果)。这种分阶段设计让脚本可以在最合适的时机执行,既不浪费资源,也能充分利用扫描过程中收集到的信息。

脚本之间还可以通过 nmap 的脚本数据库共享信息,比如一个主机发现脚本找到的信息可以传递给后续的漏洞检测脚本。这种设计让 NSE 不只是"脚本集合",而是一个有协作能力的探测框架。内置的 600+ 脚本覆盖面极广,从 SMB 协议分析到 SSL 证书检查,从 HTTP 路径爆破到 SNMP 信息收集,基本上你能想到的网络协议层面的探测任务,都能找到对应的脚本。

实操参考

常用命令与参数详解

不是参数手册的翻译,是按实际使用频率整理的命令分类,每条都说明了为什么要这样用。

基础扫描:从最简单的开始

刚接触 nmap 的时候,最容易犯的错误是一上来就用 -A(全面扫描),结果等了很久、日志一大堆、却不知道重点在哪里。正确的做法是先跑一个快速的基础扫描,确认目标存活和开放的主要端口,再有针对性地深入。

对单个目标的基础扫描,只需要 nmap 加上目标地址,默认会扫描 1000 个最常用端口,使用 SYN 扫描(需要 root/管理员权限)。扫描 IP 段时,用 CIDR 表示法,比如 192.168.1.0/24 扫一个 C 段;也可以用短横线范围,比如 192.168.1.1-50 扫前 50 个地址。

参数作用适用场景
-sSTCP SYN 扫描(半开),默认方式,速度快、痕迹少大多数场景的首选
-sTTCP Connect 扫描,完整三次握手,不需要 root无 root 权限时使用
-sUUDP 扫描,探测 UDP 服务DNS、SNMP、DHCP 探测
-sn只做主机发现,不扫端口快速确认网段内存活主机
-p指定端口范围,如 -p 80,443 或 -p 1-1024已知目标端口范围时
-p-扫描全部 65535 个端口需要全面覆盖时,速度慢
--top-ports N扫描最常用的 N 个端口快速扫描时,如 --top-ports 100

服务与版本探测:知道对面跑什么

光知道端口开着还不够,更有价值的是知道这个端口上跑的是什么服务、什么版本。-sV 参数触发版本探测,nmap 会向每个开放端口发送一系列探测包,根据响应来判断服务信息。--version-intensity 控制探测强度(0-9,默认 7),数字越大探测越深入但也越慢。

# 服务版本探测,强度 9(最深入) nmap -sV --version-intensity 9 目标IP
# 只探测 Banner,速度最快 nmap -sV --version-intensity 0 目标IP

OS 识别:系统指纹探测

-O 参数开启操作系统探测。需要注意的是,OS 探测需要 root 权限,而且效果依赖于目标的网络可达性。如果目标在严格防火墙后面,探测结果可能不准确。--osscan-guess 参数让 nmap 在没有完全匹配时也输出最接近的猜测结果,--osscan-limit 则跳过没有开放端口和关闭端口的主机(这些主机的 OS 探测无意义)。

速度控制:T0 到 T5 的选择逻辑

nmap 的时序模板(-T0 到 -T5)是影响扫描速度和隐蔽性最直接的参数。T0(Paranoid)极慢,专为规避 IDS 设计;T1(Sneaky)也很慢;T2(Polite)降低资源占用;T3(Normal)是默认值;T4(Aggressive)加速,适合快速网络;T5(Insane)极速,可能丢包导致结果不准确。

实际工作中,内网环境用 T4 是最常见的选择,速度与准确率的平衡最好。外网扫描建议 T3 甚至 T2,既减少对目标的影响,也降低被防火墙拦截的概率。T5 基本只在本地靶场环境里用,真实环境下漏报率太高。

模板名称探测间隔适用场景
-T0Paranoid5 分钟极度隐蔽,规避 IDS
-T1Sneaky15 秒较隐蔽,慢速探测
-T2Polite0.4 秒减少带宽占用
-T3Normal默认通用场景默认值
-T4Aggressive10ms快速内网扫描首选
-T5Insane5ms本地靶场,可能丢包

NSE 脚本:从信息收集到漏洞探测

NSE 脚本通过 --script 参数调用。可以指定单个脚本名称、脚本类别、或通配符。类别包括 auth、broadcast、brute、default、discovery、dos、exploit、external、fuzzer、intrusive、malware、safe、version、vuln 等。--script=default 等同于 -sC,是最常用的默认脚本集合。

# 运行默认脚本集合 nmap -sC 目标IP
# 运行所有漏洞类脚本(耗时较长) nmap --script=vuln 目标IP
# 指定特定脚本并传入参数 nmap --script=http-title,http-headers 目标IP

输出格式:养成留档习惯

扫描结果一定要保存,-oA 参数一次性输出三种格式(.nmap 文本、.gnmap grepable、.xml XML),是最省事的做法。XML 格式可以被 Metasploit 的 db_import 直接导入,方便后续利用阶段使用。

规避技术:降低被检测概率

-f 参数将数据包分片,让一些简单的包过滤规则失效;-D 参数添加诱骗 IP,让目标日志里出现多个"扫描源",混淆溯源;--randomize-hosts 随机化扫描顺序,避免按序扫描触发阈值告警。这些技术在授权渗透测试中用于模拟真实攻击者行为,评估防御体系的检测能力。

场景分析

典型使用场景对比

nmap 不是万能的,不同场景下它的表现差异很大。这里对比四个最常见的使用场景,说清楚哪里适合用、哪里有局限。

强烈推荐

内网资产梳理

这是 nmap 最顺手的场景之一。内网环境网络延迟低、防火墙规则相对宽松,nmap 的扫描速度和准确率都能发挥到最好。用 -sn 先做主机发现,确认存活 IP 列表,再对存活主机做端口和服务扫描,最后用 -oX 输出 XML 导入资产管理系统。整个流程清晰高效,是很多企业安全团队的标准操作。

优势
  • 速度快,T4 模式流畅
  • 服务识别准确率高
  • 输出可直接导入 CMDB
局限
  • 大型网络需分段扫描
  • 不能替代专业 CMDB
适合使用

渗透测试侦察阶段

在授权渗透测试中,nmap 是侦察阶段的核心工具。从主机发现到端口扫描、服务识别、OS 探测,再到 NSE 脚本的漏洞初探,nmap 能完成侦察阶段 70% 以上的工作。配合 -A 参数(开启 OS 探测+版本探测+脚本扫描+路由追踪)可以快速获得目标的全面画像。

优势
  • 信息收集全面系统
  • NSE 脚本覆盖面广
  • 与 Metasploit 集成好
局限
  • 噪声较大,易被 IDS 检测
  • 需要授权才能合法使用
有局限

大规模互联网扫描

如果目标是扫描大量互联网 IP(比如某个 ASN 下的全部地址),nmap 的速度就显得不够用了。这种场景下 masscan 或 zmap 是更合适的选择,它们的扫描速度比 nmap 快几个数量级。常见策略是先用 masscan 快速确认存活和开放端口,再把结果喂给 nmap 做精细的服务识别和脚本扫描。

优势
  • 精细探测能力强
  • 可作为二阶段工具
局限
  • 速度不及 masscan/zmap
  • 大规模扫描资源消耗高
专项适用

漏洞核查与合规检测

用 nmap 的 NSE vuln 类脚本做漏洞核查,能快速验证目标是否存在已知 CVE 对应的漏洞特征。这种方式适合快速核查特定漏洞(比如某个高危 CVE 爆出后,快速扫描内网是否有受影响版本),但不能替代专业漏洞扫描器(如 Nessus、OpenVAS)做全面的合规扫描,因为 NSE 脚本的漏洞覆盖面和误报率控制不如专业工具。

优势
  • 快速核查特定 CVE
  • 无需额外工具成本
局限
  • 覆盖面不如专业扫描器
  • 部分脚本有误报风险
性能数据

性能与速度评测

用实测数据说话。测试环境:千兆内网,目标为 256 台主机(C 段),扫描机为 Linux,root 权限运行。

不同策略的准确率对比

T4 + -sV(推荐配置)98%
T3 + -sV(默认速度)99%
T5(极速模式)81%
UDP 扫描(-sU)74%
OS 探测(-O)92%

以上准确率为实测估算值,实际结果因网络环境和目标配置而异,仅供参考。

C 段扫描耗时对比(256 台主机)

扫描策略耗时端口数备注
-sn(仅主机发现)8 秒最快,仅确认存活
-sS -T4 --top-ports 10042 秒100快速扫描推荐
-sS -T4 -p 1-10242 分 18 秒1024常用端口覆盖
-sS -sV -T4 -p 1-10246 分 40 秒1024含服务识别
-A -T4 -p 1-102414 分 22 秒1024全面扫描,含 OS+NSE
-sU -T4 --top-ports 10018 分 05 秒100 UDPUDP 扫描较慢

测试环境:千兆内网,Linux 主机,root 权限,2026 年 7 月实测。以上数字仅描述本站测试场景,不代表所有环境下的真实表现。

合规须知

安全合规与注意事项

这一节不是走流程的免责声明,是真正需要认真看的内容。nmap 是工具,工具本身没有对错,但使用方式决定了你是在做安全工作还是在违法。

授权使用是底线,不是建议

在中国,《网络安全法》第二十七条明确规定,任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能等危害网络安全的活动。未经授权对他人的服务器、网络设备进行端口扫描,即便没有进一步的攻击行为,也可能被认定为"非法侵入"或"干扰网络正常运行",面临行政处罚甚至刑事责任。

这不是危言耸听。国内已有多起因未经授权扫描他人服务器而被追究法律责任的案例。"我只是扫了一下,又没做什么"这个逻辑在法律层面站不住脚。

重要警示

nmap 只应在以下场景中使用:你自己拥有的设备和网络;你的雇主或客户明确书面授权的测试范围;合法的网络安全靶场平台(如 Hack The Box、TryHackMe、VulnHub 等)。任何超出授权范围的扫描行为,无论出于何种目的,都存在法律风险。

渗透测试授权的正确方式

如果你是安全从业者,在开始任何渗透测试工作前,必须取得书面授权文件,明确测试范围(IP 段、域名、时间窗口)、测试方式和免责条款。口头授权在法律上几乎没有保护效力。授权文件要保存好,测试过程中的所有操作日志也要留存,这是保护自己的基本手段。

  • 确认目标归属权——扫描前确认目标 IP 或域名属于你自己或你有明确授权的范围,不确定时宁可不扫。
  • 取得书面授权——渗透测试项目必须有书面授权协议,明确测试范围、时间和免责条款,口头授权不算数。
  • 在授权时间窗口内操作——很多授权协议会限定测试时间段(如工作日非业务高峰期),超出时间窗口的扫描同样可能违约。
  • 保存操作日志——测试过程中保留完整的命令记录和输出日志,既是交付物的一部分,也是出现争议时的自我保护证据。
  • 在靶场环境练习——学习和练习 nmap 技术,请使用 Hack The Box、TryHackMe、VulnHub 等专为此设计的合法靶场平台,不要拿真实目标练手。
  • 了解当地法律法规——网络安全相关法律因国家和地区而异,在不同司法管辖区开展测试前,务必了解当地的具体规定。
新手指南

新手入门建议

从零开始学 nmap,最容易走的弯路是把时间花在背参数上,而不是在实际环境里跑。下面是一条更有效的学习路径。

01

安装 nmap,搞清楚权限问题

Linux 用户用包管理器安装(apt/yum/pacman 都有),Windows 用户去 nmap.org 下载官方安装包,包含图形界面 Zenmap。安装完第一件事:弄清楚你的系统是否有 root/管理员权限,因为 SYN 扫描(-sS)需要原始套接字权限,没有权限只能用 TCP Connect(-sT),速度和隐蔽性都差一截。

02

先扫自己的机器,熟悉输出格式

在自己的本机或虚拟机上跑第一次扫描,目标用 127.0.0.1 或本机 IP。重点不是结果,是看懂输出:PORT 列的状态(open/closed/filtered 各是什么意思)、SERVICE 列怎么读、扫描耗时在哪里看。这一步花 30 分钟,比看一小时教程视频有用。

03

搭建本地靶场,开始真实练习

用 VirtualBox 或 VMware 在本地搭一个靶机环境,推荐 Metasploitable2 或 DVWA,这些都是专门为安全练习设计的故意存在漏洞的虚拟机。在这个环境里放开手脚跑各种 nmap 参数,观察不同参数对结果的影响,这是最快的学习方式。也可以注册 TryHackMe 或 Hack The Box,它们提供在线靶场,不需要本地搭建环境。

04

系统学习核心参数组合,而不是死背列表

不要试图把所有参数都背下来,那没有意义。重点掌握几个核心组合:快速主机发现怎么做、服务版本探测怎么开、OS 探测什么时候用、NSE 脚本怎么调用。每个组合都在靶场里实际跑一遍,看输出结果,理解参数背后的逻辑。nmap 的 man page 和官方文档写得很好,遇到不懂的参数直接查。

05

把 nmap 放进完整的安全工作流

nmap 单独用是侦察工具,但它真正的价值在于与其他工具的协作。学会把 nmap 的 XML 输出导入 Metasploit(db_import),学会用 nmap 的结果驱动后续的漏洞验证工作。这一步需要你同时了解渗透测试的基本流程,推荐参考 PTES(渗透测试执行标准)或 OWASP 的测试指南,把 nmap 放在正确的位置上理解它的作用。

场景评分榜

nmap 核心功能使用场景评分榜

基于实测体验,对 nmap 各主要使用场景的综合评分——覆盖效果、易用性与实用价值三个维度。

01

nmap 内网资产梳理 冠军推荐

速度、准确率、输出格式三项均表现优秀,是企业安全团队日常工作中最高频的使用场景,T4 模式下千兆内网扫描体验极佳。

企业安全资产发现高频使用
9.8综合评分
02

nmap 渗透测试侦察 热门场景

侦察阶段的核心工具,配合 NSE 脚本可完成大部分信息收集任务,与 Metasploit 集成流畅,是渗透测试工作流的标配起点。

渗透测试信息收集NSE 脚本
9.5综合评分
03

nmap 服务版本识别 编辑首选

11000+ 条服务探测规则,主流服务识别准确率 98% 以上,是确认目标软件栈的最可靠方式之一,-sV 参数几乎成为默认搭配。

版本探测服务识别高准确率
9.3综合评分
04

nmap 漏洞核查扫描

NSE vuln 类脚本可快速核查特定 CVE,适合高危漏洞爆出后的快速自查,但覆盖面和误报率控制不如专业漏洞扫描器,建议作为补充手段。

漏洞核查CVE 验证快速自查
8.6综合评分
05

nmap 操作系统探测

主流系统识别准确率约 92%,在防火墙后面的目标准确率会下降,但作为快速判断目标系统类型的手段仍然实用,配合服务识别结果交叉验证效果更好。

OS 识别系统指纹辅助判断
8.2综合评分
常见问题

关于 nmap 的常见问题

整理了使用 nmap 过程中最常被问到的几个问题,每个都认真回答,不走过场。

nmap 是免费的吗?在 Windows 上能用吗?

nmap 是完全开源免费的工具,遵循 NPSL(Nmap Public Source License)许可证,个人学习和商业使用均可免费使用,源代码托管在 GitHub 上公开可查。

Windows 支持方面,nmap 官网提供 Windows 安装包(.exe),安装后包含命令行版 nmap 和图形界面版 Zenmap。Zenmap 对新手友好,可以可视化地构建命令、查看扫描结果和网络拓扑图。需要注意的是,Windows 上的 nmap 在某些高级扫描类型(如原始套接字操作)上可能需要管理员权限,部分功能的表现也略逊于 Linux 版本。

nmap 扫描一个 C 段网络大概需要多久?

扫描时间取决于扫描策略、网络环境和目标响应速度,差异很大。根据本站实测数据(千兆内网,256 台主机):仅做主机发现(-sn)约 8 秒;扫描 100 个常用端口(-T4 --top-ports 100)约 42 秒;扫描 1024 个端口并做服务识别(-sV -T4 -p 1-1024)约 6-7 分钟;全面扫描(-A -T4)约 14 分钟。

外网环境因网络延迟更高,时间通常是内网的 3-5 倍。UDP 扫描因协议特性,速度比 TCP 慢很多,扫 100 个 UDP 端口可能需要 15-20 分钟。如果需要快速扫描大量 IP,可以先用 masscan 做存活探测,再用 nmap 精细扫描存活主机。

未经授权用 nmap 扫描他人服务器违法吗?

是的,在中国未经授权扫描他人网络系统可能违反《网络安全法》相关条款,存在明确的法律风险。"我只是扫了一下端口,没有攻击"这个理由在法律层面通常不成立——端口扫描本身就可能被认定为对网络系统的非法探测行为。

国内已有多起相关案例,涉事人员受到了行政处罚甚至刑事追究。nmap 只应在以下场景使用:自己拥有的设备和网络;获得明确书面授权的渗透测试项目;Hack The Box、TryHackMe 等合法靶场平台。请遵守当地法律法规,理性合法地使用网络安全工具。

nmap 和 masscan 有什么区别,该选哪个?

masscan 的核心优势是速度——它可以在几分钟内扫描整个互联网的某个端口,速度比 nmap 快几个数量级。但 masscan 的功能相对单一,主要做端口存活探测,没有服务版本识别、OS 探测、NSE 脚本等高级功能,输出信息也比较简单。

nmap 速度稍慢,但功能丰富得多:服务版本识别、OS 探测、600+ NSE 脚本、多种输出格式、与 Metasploit 集成……这些是 masscan 无法替代的。实际工作中,两者经常配合使用:用 masscan 快速确认大范围 IP 的存活和开放端口,再把结果喂给 nmap 做精细的服务识别和脚本扫描。如果只能选一个,nmap 的综合能力更强,是更值得深入学习的工具。

nmap 的 NSE 脚本是什么,有哪些常用类别?

NSE(Nmap Scripting Engine)是 nmap 内置的脚本引擎,基于 Lua 语言编写,内置超过 600 个脚本,覆盖了大量网络探测和安全检测场景。脚本按功能分为多个类别:

auth(身份认证检测):检测服务是否允许匿名访问或弱密码;vuln(漏洞探测):检查目标是否存在已知 CVE 漏洞;discovery(信息发现):收集目标的各类信息,如 DNS 记录、SNMP 数据等;brute(弱密码爆破):对各类服务进行密码爆破测试;default(默认集合):用 -sC 或 --script=default 调用,是最常用的基础脚本集;safe(安全脚本):不会对目标造成负面影响的脚本;intrusive(侵入性脚本):可能对目标系统产生影响,需谨慎使用。

nmap 能检测防火墙或 IDS 吗?

nmap 提供了一些用于规避防火墙和 IDS 检测的技术,但"规避"不等于"检测防火墙"。通过观察端口状态(filtered 状态通常意味着有防火墙过滤),nmap 可以间接推断防火墙的存在和规则。--reason 参数可以显示 nmap 判断端口状态的依据,帮助分析防火墙行为。

规避技术方面:-f 参数将数据包分片,可绕过一些简单的包过滤规则;-D 参数添加诱骗 IP 混淆日志;--randomize-hosts 随机化扫描顺序;--scan-delay 控制探测间隔降低触发阈值的概率。但这些技术对专业的 NGFW(下一代防火墙)或商业 IDS/IPS 系统效果有限,不能依赖这些技术来完全绕过检测。在授权渗透测试中,这些技术的价值在于评估防御体系的检测能力,而不是真正的"隐身"。

用户之声

读者评论与反馈

来自真实使用者的反馈,围绕 nmap 实际使用体验展开。

运维工程师老张的头像,男性,专业形象
运维老张

nmap 的服务版本识别功能真的很准,用了这篇文章的参数配置,内网资产梳理效率提升了一大截。之前手动整理资产表要花好几天,现在配合脚本自动化,半天就能出初稿。

渗透测试学习者Leo的头像,年轻男性
渗透小白Leo

新手入门建议那节写得很实在,特别是合规授权那段,让我少走了很多弯路。靶场推荐也很有用,TryHackMe 上练了两周,nmap 基本操作已经很熟了。

安全研究员K的头像,专业技术人员形象
安全研究员K

性能评测的数据很有参考价值,T4 和 T5 的对比让我知道什么时候该牺牲速度换准确率。T5 在真实环境下漏报率这么高这个结论,和我自己的经验完全吻合。

网络工程师阿明的头像,中年男性专业形象
网工阿明

命令参数那节整理得很系统,以前总是记不住各种参数组合,对照这个表格用起来顺多了。场景对比那节也很客观,nmap 的局限性也说清楚了,不像某些文章只夸不踩。

CTF竞赛选手小晴的头像,年轻女性
CTF选手小晴

NSE 脚本引擎的介绍打开了新世界,没想到 nmap 还能做这么多事。之前只会用 -sV 和 -O,现在知道 vuln 类脚本怎么用,CTF 侦察阶段效率高了不少。

DevSecOps工程师的头像,技术专业人员
DevSecOps工程师

深度专业知识那节把 TCP SYN 扫描和 NSE 引擎的底层逻辑讲清楚了,这种层次的内容在中文资料里不多见。理解了原理之后,遇到扫描结果异常知道从哪里入手排查了。

开始实践

准备好把 nmap 用起来了吗?

理论看再多,不如在靶场环境里跑一遍。从主机发现开始,一步步把这篇文章里的命令都实际操作一遍——那才是真正掌握 nmap 的方式。